A linguagem PASCAL ............................................................ 4 Estrutura do Programa ......................................................... 4 Prof. Eng Luiz Antonio Vargas Pinto 1 Declarando tipos [ Type ] ..................................................... 5 Declarando variveis [ Var ] .................................................. 5 Declarando Constantes [ Const ] ............................................... 5 Loop .......................................................................... 5 For ......................................................................... 6 Repeat ...................................................................... 6 While ....................................................................... 8 Comandos de deciso .......................................................... 10 Comando de atribuio ........................................................ 11 Comando de leitura ........................................................... 12 Comando de Leitura ........................................................... 12 Comando de posio de cursor em tela texto ................................... 13 Comando para limpar uma linha a partir do cursor ............................. 13 Comando para limpar a tela ................................................... 13 Funes Matemticas .......................................................... 13 Subrotina (Procedure) ........................................................ 15 Variveis Globais e Locais ................................................... 16 Parmetro .................................................................... 16 Funo ( Function ) .......................................................... 17 Registro ( Record ) .......................................................... 17 Estruturas de dados .......................................................... 17 Ponteiro ( Pointer ) ......................................................... 18 Exerccios ................................................................... 18 Programas exemplo ............................................................ 19 1- Fatorial ................................................................ 19 2- Razes por Newton-Raphson ............................................... 20 3- Fila encadead ........................................................... 21
Programar: Desenvolver uma seqncia ordenada de comandos para atingir um fim ou alguns; [O poder da programao mximo em tare- fas repetitivas ]
Criar - a capacidade de inventar novas maneiras aprimorando-as.
Prof. Eng Luiz Antonio Vargas Pinto 2
Varivel: Posio da memria RAM Utilizada para guardar dados. Em termos de com- putao o local onde armazenamos dados. Exemplo: A:=3 (Isto significa que foi guardado o valor 3 na varivel A). So usadas para operao l- gica ou aritmtica. Devem ser declaradas na forma:
Nome_da_varivel:Tipo_da_varivel;
Exemplo: Se A=7 e B=4 e fizermos A=B ,ento A=4 e B=4 pois apenas alteramos o destino e nunca a origem. Nessa situao, dizemos que A e B so adi- mensionais porqu servem para armazenar dados simples (nico).
Vetores: So variveis mais complexas que permite armazenar mais que uma infor- mao na mesma varivel, desde que estas sejam do mesmo tipo. Existem duas formas padronizadas para o tratamento de ndice de armazenamento em vetor.
Exemplo: Seja o vetor M com 6 posies onde guardamos letras:
Onde o acesso processado da seguinte forma:
Exemplo: M[6]:= A; write(Linha[3]);
Estas so denominadas de variveis dimensionais porqu requerem reserva de me- mria, isto , necessrio dimensionar a quantidade mxima de memria que ire- mos consumir, mesmo que no a utilizemos na totalidade. Um vetor uma matriz linha, isto , uma linha e n colunas ao passo que a matriz possui linhas e colu- nas.
Exemplo: Seja a matriz A com 4 linhas e 4 colunas, 4 x 4 (l-se 4 por 4) totali- zando 16 posies onde guardamos nmeros inteiros.
Prof. Eng Luiz Antonio Vargas Pinto 3 Onde o acesso processado da seguinte forma:
Exemplo: A[2,3]:=B; {trata-se de uma varivel de nome "B" cujo contedo um nmero inteiro } Write(Linha[7,1]);
Como o acesso feito por meio de ndices, tambm podemos acessar informa- es usando variveis como ndice:
Existem duas formas padro de controlar ndices de acesso de matrizes e vetores:
a)Pr-Indexada: Quando o ponteiro aponta para a ltima posio usada, isto , sempre que for preciso colocar um novo valor primeiro avanamos o ponteiro.
b)Ps-Indexada: Quando o ponteiro aponta para uma posio livre, e no armazena- mento, primeiro o dado entra e depois o ponteiro avana. A linguagem PASCAL
Prof. Eng Luiz Antonio Vargas Pinto 4
Criada por Nicklaus Wirth em 1968, na Sua com o propsi- to de instituir uma linguagem algortmica e estruturada de acordo com a nova gerao de computadores que estava em de- senvolvimento.
Estrutura do Programa
Prof. Eng Luiz Antonio Vargas Pinto 5 Declarando tipos [ Type ] Para que declarar um tipo? Para organizar melhor o programa. usual decla- rarmos matrizes e vetores, assim como registros com uso de tipos. Declaramos no incio do programa precedido da palavra reservada Type. Exemplo: Type X=Array [1..7] of Byte; Var S:x;
1-Byte: valores compreendidos entre 0 e 255 [numrico-inteiro] 2-Integer: valores compreendidos entre -32768 e 32767 [numrico-inteiro] 3-Word: valores compreendidos entre 0 e 65.535 [numrico - inteiro] 4-Shortint: valores compreendidos entre -128 e 127 [numrico - inteiro] 5-Longint: valores compreendidos entre -2.147.483.648 e 2.147.483.647 [numrico - inteiro] 6-Real: valores fracionrios e exponenciais entre 2.9E-39 a 1.7E38 [numrico - fracionrio] 7-Char: ocupa 1 byte, mas s guarda caractere. [alfanumrico] 8-Boolean: lgico - True/False [Booleano] Declarando variveis [ Var ] Exemplo:
Program Teste; Var X: Real; A,B,C: Integer; Nome: String [10]; Teste: Boolean; Declarando Constantes [ Const ] A grande diferena entre o uso de constantes e variveis reside no fato de que a varivel mantm os dados ali guardados indefinidamente, porm podem ser alterados infinitas vezes durante o curso de um programa. Quando precisamos de valores de referencia ento nos valemos de uma declarao ao compilador sobre este fato mencionando o valor de referncia. So sempre precedidas da palavra reservada Const.
Exemplo: Const Soma=40; Nome='Luiz'; Loop Um dos melhores momentos em que o computador aparentemente supera a mente humana reside justamente na sua capacidade de executar tarefas, mesmo elementa- res, muito rpida e eficientemente. Aqui tambm reside talvez o maior de seu desempenho. Computadores so extremamente eficientes em tarefas repetitivas, por esta mesma razo existem muitas opes de laos (LOOPs) nas linguagens de pro- gramao.
For Caractersticas: Automtico, step unitrio inteiro crescente/decrescente; Sintaxe: For varivel_contadora := incio to fim do Begin
end;
Fluxo:
Prof. Eng Luiz Antonio Vargas Pinto 6 Descrio: O comando For utilizado quando desejamos efetuar uma ou algumas ope- raes num certo nmero finito (limitado) de vezes sem interrupo o chamado Loop automtico, onde a atualizao da varivel contadora feito pelo prprio comando. No possvel a interrupo do loop, a menos aps o vencimento do limite final do contador. Em Pascal, o in- cremento unitrio positivo (crescente) ou negativo (decrescente). A varivel utilizada como contador deve ter seu nome declarado pelo programador no comando For e deve ser declarada no incio do programa como algum tipo numrico inteiro.
Exemplo:
Repeat Caractersticas: Manual, Step controlado pelo programador podendo ser inteiro, l- gico ou Fracionrio, busca condio de sada.
Sintaxe: Repeat
Until < condies > ;
Fluxo:
Descrio: Um dos comandos de repetio. manual porqu o controle sobre o nme- ro de vezes que este comando executa um ou uma srie de comandos est sob o controle do programador. Alm disso, por essa razo podemos in- terromper um lao apenas determinando a condio de sada. Note que, da prpria descrio do comando ele repete um nmero finito de coman- dos at encontrar uma condio de sada de lao e que esta condio estabelecida pelo programador.
Exemplo:
Prof. Eng Luiz Antonio Vargas Pinto 7
Exemplo: Ler "A" at que A seja diferente de ZERO (0).
While
Caractersticas: Manual, Step controlado pelo programador podendo ser inteiro, l- gico ou Fracionrio, busca condio de permanncia.
Sintaxe: While < condies > Do Begin
end; Fluxo:
Prof. Eng Luiz Antonio Vargas Pinto 8
Descrio: o outro comando de repetio manual. Semelhante ao Repeat porm com caractersticas prprias. O nmero de vezes que ele controla est sob o controle do operador. Sua principal caracterstica que o Loop testado na sua condio de permanncia no loop enquanto o Repeat pro- cura a condio de sada do loop. Inclusive, no primeiro encontro da linha de comando, este testa inclusive se existe condio de entrada no loop.
Exemplo:
Observe que se o contador foi iniciado com valor 11, por exemplo, o loop no ser executado porqu o teste permite a permanncia no loop somente enquanto i for diferente de 11 o que no seria o caso (pois i=11).
Podemos utilizar qualquer comando de repetio indistintamente, salvo quan- do certas condies assim exigirem. incorreto afirmarmos que um deles mais rpido que o outro. Na verdade o procedimento que podemos adotar deve respeitar os limites de cada comando. por essa razo que os comandos existem, e so trs:
Repeat Busca condio de encerramento do lao (loop) mas pode interromper [ Controle Manual ] While Busca condio de permanncia no lao mas pode interromper [ Controle Manual ] For Repete um nmero pr determinado de vezes e no pode interromper [ Controle Automtico ]
Exemplo: Colocar o valor A sendo que este deve ser diferente de zero. Veja que o comando For seria indicado para este loop, mas neste caso ele est comprometido, pois as condies exigem um nmero indefinido de tenta- tivas. Isto est de acordo com o descrito anteriormente na definio das condies. Prof. Eng Luiz Antonio Vargas Pinto 9
Comandos de deciso Como basicamente um programa consiste de uma seqncia lgica de "passos serem executados", em ordem tal que essas execues de comandos podem resultar num trabalho til, perfeitamente aceitvel que um programa "tome" ao longo de sua execuo decises lgicas. Alguma coisa assim como uma equao do 2 Grau, o teste do resulta maior ou menor que zero. Isto acarreta efeitos diferentes na seqncia de execuo. Note que o surgimento da deciso divide o programa. Aqui comeam os pro- blemas do programador: A velocidade em que a mente processa as informaes , com toda certeza, muito superior a aquele dos movimentos musculares, o que con- seqentemente faz com que pensar seja muito mais rpido que escrever. Claro que, desenvolver um programa no um caso de velocidade, afinal, eu posso parar para pensar. Mas acontece que o aparecimento da deciso, de forma anloga a velocida- de, impede o raciocnio formal. A deciso tornou-se o ponto fraco da programa- o. E o que se esperaria que este fizesse. Mas no o faz. Por qu? Qual o caminho a seguir? Prof. Eng Luiz Antonio Vargas Pinto 10 possvel verificar que ele incapaz de optar. Algo assim como se no fosse possvel optar por um dos ramos sem olhar os outros. Tec- nicamente denominamos a esse ramo da anlise o estudo do raciocnio humano. Padro comum em enxadris- tas, a viso externa, alm de mui- tos nveis a frente dessa primeira deciso: Eurstica, que a anlise da lgica da mente humana. Caso tpico do jogo da velha, Torres de Hani, Damas e Xadrez, e jogos e sistemas onde apenas a viso do n (situao) presente no suficiente. Assim considerando, claro que seguir esse tipo de raciocnio invivel para um algoritmo, pois enquanto o raciocnio se aprofunda na anlise, o algo- ritmo computacional conduz todas as decises ao fim do programa. Por essa razo tambm claro que a nica forma coerente de criar um fluxograma optar por um nico caminho em cada deciso ignorando o outro e seguir por este at a prxima deciso, se houver, ou at o final do programa. Aps ao qual devemos retornar aos nveis deixados em aberto e recomear este processo at que todos os ns estejam totalmente fechados. razovel que todo programa possui uma linha cen- tral de procedimento a qual chamamos de coluna vertebral do programa. Veja o seguinte diagrama:
Observe que existem trs solues para o fluxo de dados (as vezes muito mais). Mas observem que estes poderiam ter sido desenvolvidos por programadores diferentes. claro que a 1 soluo a melhor delas mas isto no significa que comear por alguma das outras duas seria errado. Pascal por ser uma linguagem estruturada adota com freqncia estruturas em rvore binria. Isto o mesmo que dizer que uma deciso tem somente duas alter- nativas como soluo e a ocorrncia de uma delas (condio) implica a adoo de uma das alternativas da mesma forma que a no satisfao da condio faa o flu- xo seguir pela outra alternativa. Isto a execuo de um comando else. Os co- mandos de decises podem ser:
Observe que a ocorrncia de x=0 implica no incremento unitrio da varivel Soma. Note tambm que o incremento um efeito de condicional em condio favo- rvel e que neste caso a no ocorrncia dessa condio favorvel no acarreta nenhuma atuao sobre a varivel Soma. Em outras palavras, a ocorrncia pode ser tratada como exclusividade.
Prof. Eng Luiz Antonio Vargas Pinto 11
Observe que neste caso o comando pura e simplesmente expressa um comando em estrutura de rvore binria. A condio favorvel causou um "desvio" no fluxo seguindo para o comando (1). Entretanto, caso esta condio no seja satisfeita, obrigatoriamente o fluxo desviado para o comando (2). Note que o comando (1) no executado Comando de atribuio Atribuir carregar um valor em uma ou algumas posies de memria dispon- veis. Cada posio de memria que equivale a um endereo de memria armazena um (01) Byte. Sintaxe: nome_do_destinatario := objeto;
Exemplo: S:=3;
Prof. Eng Luiz Antonio Vargas Pinto 12 Comando de leitura Este comando serve para passarmos uma informao ao computador atravs dos dispositivos de entrada. A sua condio default (leia "def") feita para te- clado. Em comandos de arquivo (breve) voltaremos a usar os comandos read.
Sintaxe: Read (varivel_l); ou varivel_1 := ReadKey; Exemplo: Read (a); { onde a varivel tipo char }
Esse comando, nessa condio (ainda), l o teclado e o aguarda a tecla <En- ter>. possvel passar diretamente sobre o teclado usando o parmetro "Kbd" (keyboard) ou com o comando ReadKey.
Exemplo: Read (kbd,a); { Opo vlida no Turbo Pascal com uso de USES Turbo3 } a:=ReadKey; { Opo vlida no Turbo Pascal com uso de USES CRT }
No aguarda o E e os caracteres no so ecoados no vdeo. H ainda a restrio de que o programa deve ser notificado disto com o uso da palavra re- servada "USES".
Exemplo: Program Teste; Uses Turbo 3; {Libera o uso do "kbd".}
Outra variao desse comando :
Sintaxe: ReadLn (varivel_1);
O efeito que ao receber o dado, coloca o cursor na linha seguinte, na primeira coluna.
Observao: Os comandos Read/Readln no possuem proteo, isto , se a varivel "a" do exemplo for de algum tipo numrico qualquer, e se o usurio ao dar entrada teclar uma letra ou qualquer caractere no numrico, o comando interrompido e o programa retorna ao DOS. E ainda mais, estes comandos apresentam problemas quando no uso de variveis tipo String. Quando um string lido, um flag interno sinaliza o compila- dor e qualquer outra leitura de outro String logo a seguir no ser efetuada. Comando de Leitura Sintaxe: Write (varivel_1); ou Writeln (varivel_1); Este comando foi destinado a escrita. E escrita no modo computacional, sig- nifica escrever um dispositivo (Tela, impressora, sada serial e disco). No modo default (leia "def") para escrita na tela. Quando desejamos escrever na im- pressora devemos:
1) Declarar os Uses correto: Program Teste; Uses Printer;
2) Usar o parmetro "Lst": Write(Lst,'Eu');
Observaes: Este comando tambm no possui proteo e, por exemplo, uma tenta- tiva de escrita em um dispositivo no liberado acarreta um erro grave e o retorno ao Dos inevitvel. Tanto o Read como o Write possuem comandos adicionais contra esses "acidentes" que veremos posteriormente. O comando Writeln (varivel_1); procede da mesma for- ma que o comando Readln quanto tela. Comando de posio de cursor em tela texto Sintaxe: GoToXY(Coluna,Linha); Posiciona o cursor em uma tela tipo texto com 25 linhas e 80 colunas. Comando para limpar uma linha a partir do cursor Sintaxe: ClrEol; Obs.: o cursor no sai da posio. Comando para limpar a tela Sintaxe: ClrScr; Obs.: o cursor reinicia na posio (1,1). Funes Matemticas 1- Operaes lgicas ou aritmticas: Pascal permite o uso de equaes matemticas. Por ser uma linguagem cientfi- ca pode executar operaes bsicas, binrias, e lgicas.
a) Soma: + b) Subtrao: - c) Diviso: / d) Multiplicao: *
A operao "/" necessariamente do tipo Real. Isto se deve ao fato de que uma diviso nem sempre resulta em valores inteiros. Dessa forma a varivel re- sultante em valores inteiros. Dessa forma a varivel resultante deve aceitar nmeros em ponto flutuante (Exponencial).
Exemplo: S:=A / B; { S necessariamente Real } S:=S / 4; { Se S <> Real o compilador recusa montar o programa } Um fato interessante que Pascal permite agrupamento, respeitando a hierarquia matemtica.
Exemplo:
Entretanto, algumas vezes necessrio obtermos apenas a parte inteira de uma diviso. Podemos usar:
e)DIV diviso real Exemplo:
Prof. Eng Luiz Antonio Vargas Pinto 13
e se usarmos DIV poderemos declarar S como: Integer, Word, LongInt.
f)MOD o resto da diviso
Exemplo:
g)SHR Shift Right (operao binria) - deslocamento para a direita.
h)SHL Shift Left (operao binria) - deslocamento para a esquerda. Exemplo:
i)AND executa a operao lgica AND e tem dois modos de operar:
i.1)AND binrio : Exemplo:
i.2)AND Lgico: Exemplo: : : If (A > 0) AND (S > 7) Then write('Ok'); : : Aplicado em condicionais.
j)OR executa a operao lgica OR (opera de modo anlogo ao AND) j.1)OR binrio: Exemplo:
j.2)OR Lgico: Exemplo: : : If (A > 0) OR (S > 7) Then write('Ok'); : :
Prof. Eng Luiz Antonio Vargas Pinto 14
k)NOT executa a operao lgica NOT k.1)NOT binrio: Exemplo:
k.2)NOT Lgico: Exemplo: : Repeat : : Until (Not Teste); {onde Teste uma varivel Booleana} :
l)XOR normalmente representa a operao lgica XOR, onde: Exemplo:
de onde podemos afirmar que se duas condies so verdadeiras (ambas) ou se am- bas so falsas ento sinalizado FALSO. Prof. Eng Luiz Antonio Vargas Pinto 15 Pascal possui uma biblioteca matemtica que aceita funes matemticas tais como: Seno .............................. Sin(x); Cosseno.......................... Cos(x); Tangente ........................ Tan(x); Raiz Quadrada................. SQRT(x); Logaritimo Neperiano........ Ln(x); X 2 .................................. SQR(x); Subrotina (Procedure) Definio: um conjunto de comandos separados do programa principal e que satis- fazem duas condies bsicas: 1- Reduzem os cdigos do programa fonte; 2- Permitem programao estruturada.
Estrutura:
Observao: O programa principal no consegue olhar dentro de suas procedures e function mas o contrrio vlido, isto , a procedure pode olhar para as variveis do programa principal. Variveis Globais e Locais Uma varivel dita Global quando declarada no programa principal e por- tanto de acesso universal por todas demais as partes componentes de um progra- ma. J aquela que declarada dentro de uma Procedure ou Function dita local, pois acessada exclusivamente pela prpria Procedure/Function ou elementos de- clarados dentro da mesma e no por partes do programa Principal. Muitas vezes necessrio que construamos uma ou mais procedures em um dado programa, no entan- to existe casos onde a diferena entre determinadas procedures pequena e para otimizarmos essas procedures tornando-a uma s, usamos o artifcio de passar mais informaes procedure que ser a nica englobando as outras antigas. A essas informaes extras chamamos parmetro. Tecnicamente falando, existem duas formas de passagem de parmetros: Com retorno e sem retorno. Parmetro Definio:So dados adicionais usados para simplificar uma function ou procedure, agrupando mais de uma function e/ou procedure e com isto melhorando o desempenho de uma dada function e/ou procedure.
Conforme j dissemos, parmetros em Pascal podem ser de dois tipos:
a)Sem retorno: As informaes adicionais so passadas a procedure e/ou function e o originante permanece inalterado. Prof. Eng Luiz Antonio Vargas Pinto 16
b)Com retorno: As informaes so passadas a procedure e/ou function e o origi- nante ser alterado.
Podemos tambm definir parmetro segundo o conceito computacional, ou seja: o uso de passagem de informao entre reas de programa. Vejamos agora atravs de um diagrama:
De acordo com a figura, a informao que desejamos passar colocada na va- rivel a na procedure_1. Em seguida essa informao transferida para a Proce- dure_2 na rea destacada como sendo a varivel b. Assim, podemos reafirmar que aps a chamada para a Procedure_2, b=a, isto , o mesmo valor de a. Aps a con- cluso da procedure as alteraes efetuadas b que uma varivel que pertence exclusivamente a procedure_2 pode ou no retornar a a no programa principal sob o controle do programador. E, nessa condio b chamada Local e a chamada Global. Em Pascal no permitido declarar variveis com o mesmo nome em um mesmo nvel. Por exemplo
Prof. Eng Luiz Antonio Vargas Pinto 17 duas variveis "A" Globais. Quando o compilador monta uma procedure, este veri- fica se as variveis pertencentes procedure foram declaradas nesta. Se afirma- tivo a compilao prossegue e em caso contrrio este verifica se a varivel esta declarada no programa principal. Se l estiver a compilao prossegue e caso contrrio para e informa que no conhece a varivel. Funo ( Function ) Estrutura similar a procedure, diferindo apenas na forma da chamada e na colocao no programa. Enquanto a procedure simplesmente substitui uma parte do programa, a function como o prprio nome diz, tem uma funo especfica. O uso de funes est relacionado ao processo de clculos sendo freqentemente empre- gado em programas cientficos. Da mesma forma que as procedures, as functions aceitam o uso de parmetros. Registro ( Record ) No uso de elementos de memria sempre surgem casos tipo:
a) Elementos de armazenamento so diferentes; b) No possvel determinar o nmero mximo de elementos que necessitaremos.
O uso de vetores e matrizes permite um controle mais aprimorado, mas apre- senta o inconveniente de exigir elementos iguais (mesmo tipo). Embora o uso de ndice facilite a elaborao de loops e lgica de acesso, ainda no permite in- sero de tipos diferentes no meio do vetor ou matriz. Entretanto, este ainda no o ponto crtico da questo, pois este pode ser solucionvel de forma sa- tisfatria da seguinte forma:
Tabela1 : Array [1..3] of String[40]; {nomes} Tabela2 : Array [1..3] of Real; {notas} Tabela3 : Array [1..3] of Byte; {idades}
Fazendo dessa forma podemos utilizar o ndice como se fosse o cdigo do a- luno e atravs dele obter as informaes necessrias. Considere o ndice como sendo uma varivel do tipo byte onde ndice=2. Dessa forma, se fizermos o acesso ao aluno nmero2 teremos todas as informaes sobre ele. At aqui, tudo est sob controle. Ocorre, que na prtica, ao declararmos uma matriz ou um vetor, obriga- toriamente o compilador reserva memria para todas suas variveis, mesmo que estas no sejam utilizadas. Isto limita o sistema e impossvel alterarmos isto "On Line". Assim devemos proceder "Reserva" pensando no mximo possvel, se pudermos. Pascal, permite a criao de uma estrutura que no somente resolve o problema de espao mas tambm a criao de um tipo de armazenador nico para vrios diferentes: "Record". Estruturas de dados a)Listas: Consistem de uma relao de algum tipo de objeto ou artigos ou quais- quer outras coisas relacionadas.
exemplos: - Lista de Compras - Lista Telefnica - Lista de Classificao.
Em computao uma lista torna-se bastante til quando serve para armazenar informaes, quer seja na forma matricial quer seja na forma de registros.
Prof. Eng Luiz Antonio Vargas Pinto 18 b)Fila: Caracterizada por uma estrutura tipo FIFO: First In First Out
c)Pilha: Caracterizada por uma estrutura tipo LIFO Last In First Out
A implementao de uma lista encadeada segue princpios rgidos de estrutu- ra de dados e programao. Como o conceito utiliza ponteiros de memria o que exige preciso nas rotinas sob a pena de perder o controle de sistema. Ponteiro ( Pointer ) O uso de ponteiros de memria alm da velocidade dinmica de memria, ocu- pando espao necessrio apenas ao seu uso, isto , se o armazenamento necessitar uma expanso da rea ocupada esta vai sendo ocupada na medida da necessidade, assim como se houver diminuio da memria consumida o "sistema se contrai" li- berando memria. Em Pascal o tipo Pointer e suas operaes so as novidades. Podemos declarar um Pointer para uso com Record e posteriormente uma lista enca- deada.
1) Faa um fluxograma para um programa que recebendo 3 notas, organiza-as em ordem crescente.
2) Faa o fluxograma para um programa que inverte a posio de um vetor, isto , o primeiro no ltimo e o ltimo no primeiro e isso sucessivamente. O ve- tor tm 1.000 posies.
3) Faa um fluxograma que identifica em uma lista de 2.000 nmeros o maior, o menor e calcula a mdia. Nmeros inteiros e maiores que zero. Obs:O maior nmero 65.535.
4) Faa um fluxograma para um programa que elimina os dados repetidos de dentro de um vetor com 200 posies. Sendo que esses dados so nmeros inteiros, positivos e maiores que zero.
5) Fazer um fluxograma para imprimir os dados de um vetor com 2.000 posies e que so maiores que zero ou mltiplos de 3.
6) Faa um fluxograma para calcular as razes da equao do 2 grau, mesmo com- plexas.
Prof. Eng Luiz Antonio Vargas Pinto 19
7) Faa um programa que contm uma subrotina que recebe o valor de (a) verifica se 0, e em caso positivo emite uma mensagem avisando o operador do erro. Considere o exerccio para clculo das razes da equao do 2 grau.
8) Refaa o exerccio 7 usando uma Function. Programas exemplo
1- Fatorial Definio: O Fatorial de um nmero obtido por:
N!=N.(N-1).(N-2).(N-3)...(N-M).1
onde N inteiro e positivo.
Exemplo: 3! = 3x2x1 = 6 5! = 5x4x3x2x1 = 120
Lgica: se queremos n! ento procedemos (n-1) multiplicaes.
Program Fat; Uses CRT; Var Fator:LongInt; N,i:Byte; Z:Char; Begin ClrScr; Fator:=1; GoToXY(4,2); write('Nmero:'); Readln(N); If N<0 Then Begin writeln('No existe !'); end else Begin If N>1 Then Begin For i:=1 to N do Fator:=Fator * i; end; end; writeln ('Fatorial de ',N,' = ',Fator); z:= Readkey; end.
2- Razes por Newton-Raphson Este algoritmo permite determinar com excelente preciso a raiz de uma funo con- tnua em um intervalo [a,b] desde que f(x) e f'(x) sejam no nulas nesse intervalo e que a raiz esteja nesse intervalo. Utilizamos este algoritmo pelo fato de que podemos a- plic-lo a clculo da funo raiz quadrada, que neste caso de nosso interesse alm do que este algoritmo vastamente utilizado pela maioria dos aparelhos de clculo e com- piladores de linguagens de programao exis- tentes. um processo de clculo numrico e portanto perfeitamente aplicvel computa- dores. Prof. Eng Luiz Antonio Vargas Pinto 20 Dada a curva:
ento x 2 =a de onde x 2 -a = 0 , e dado um ponto genrico P 0 pertencente a curva, resultante em f(x) e passando uma reta tangente ao pon- to P 0 (x 0 ,y 0 ) determinamos o tringulo APB re- tngulo, Da:
E portanto deduzimos que:
ou seja, x 1 obtido a partir de x 0 e esta mais prximo da raiz x. Este processo interativo repetido infinitas vezes, ou tanto quanto mais prximo do valor desejado (preciso). Todo processo numrico tratado dessa forma, isto , ns o processamos at obtermos um valor o mais prximo possvel do desejado, tantas vezes quanto for necessrio. um processo extremamente rpido, chegando ao re- sultado desejado em poucas interaes.
Program SQRoot; Uses CRT; Var Erro,X,Sup,Atual,Dif,Ref,Ant:Real; Z:Char; Begin ClrScr; GoToXY(5,2); write('Raz:'); Read(X); If X>0 Then Begin Erro:=0.00001; Ref:=4*X; Ant:=0; Dif:=1; While Dif>Erro do Begin Atual:=Ref-(Ref*Ref-X)/(2 * Ref);
Prof. Eng Luiz Antonio Vargas Pinto 21 Dif:=ABS(Atual-Ant); Ant:=ABS(Atual); Ref:=Ant; end; Atual:=ABS (Atual); Dif:=SQRT(X)-Atual; Writeln ('A raz de ',X:4:8,'= ',Atual:4:8); write ('A diferena do algortimo do compilador PASCAL de ',Dif); end else Begin write('No existe raz par de nmero negativo..'); end; z:=Readkey; end.
3- Fila encadead
Program fila_encadeada; Uses CRT; Const Max_Reg=3; Type Ponta = ^Pointer; Pointer = Record Apt:Ponta; Nome:String[10]; Code:Integer; end; Var Prilin,Newlin,NextLin,Freelin:Ponta; i:Byte; z:Char; Begin ClrScr; Prilin:=Nil; For i:=1 to Max_reg do Begin New(Newlin); Write('Product:..'); Readln(Newlin^.Nome); write('Code:.....'); Readln(Newlin^.Code); If Prilin=Nil Then Prilin:=Newlin else NextLin^.Apt:=Newlin; NextLin:=Newlin; NextLin^.Apt:=Nil; end; Freelin:=Prilin; Repeat write('Name of Product ='); writeln(FreeLin^.Nome); write('Code of Product ='); writeln(Freelin^.Code);
Prof. Eng Luiz Antonio Vargas Pinto 22 Freelin:=Freelin^.Apt; Until Freelin=Nil; Z:=ReadKey; end.