Você está na página 1de 11

Codificao de Algoritmos em Pascal Comandos Bsicos

Algoritmo
Entrada Sada

Introduo Cincia da Computao Rosane Minghim


Co-autoria: Guilherme P. Telles Apoio na confeco: Rogrio Eduardo Garcia

Processo Codificao
Descrio dos passos

Cdigo Fonte

Pascal
Desenvolvida com o intuito de facilitar a estruturao de programas de fcil aprendizado. Outras linguagem da mesma famlia introduzem elementos que so confusos para o programador inexperiente. A sua sintaxe clara e consistente, facilitando o aprendizado dos primeiros conceitos algortmicos.

Exemplo:
Algoritmo Razes varivel a,b,c: real delta: real x1,x2: real leia(a,b,c) delta \atr b*b - 4*a*c se (delta < 0) ento escreva('Esta equao no possui razes reais.') seno x1 \atr (-1*b - raiz(delta,2)) / 2*a x2 \atr (-1*b + raiz(delta,2)) / 2*a escreva('As razes so ',x1,' e ', x2) fim se fim

Exemplo:
PROGRAM raizes; VAR a,b,c: real; delta: real; x1,x2: real;

Caractersticas
Semelhana com o pseudo-cdigo; Alguns comandos foram adicionados, mas estruturalmente o algoritmo e o programa so muito parecidos;

begin write('Digite o valor de a '); readln(a); write('Digite o valor de b '); readln(b); write('Digite o valor de c '); readln(c); delta := b*b - 4*a*c; if (delta < 0) then writeln('Esta equacao nao possui raizes reais.') else begin x1 := (-b - sqrt(delta)) / (2*a); x2 := (-b + sqrt(delta)) / (2*a); writeln('As raizes sao ',x1:6:3,' e ', x2:6:3) end; readln; end.

O que muda
A sintaxe torna-se mais rgida, restrita ao vocabulrio especfico da linguagem de programao; A pontuao torna-se necessria; No algoritmo a capacidade de representao (tamanho) e a preciso das variveis numricas so infinitos. Eventualmente alguma construo que fazemos em algoritmos pode no ser eficiente na linguagem de programao (melhorar a eficincia)

O que muda
Devemos nos preocupar com erros e situaes excepcionais, como diviso por zero e variveis com valores inadequados fornecidos pelo usurio. Os comentrios que identificam o algoritmo e que esclarecem sua construo devem ser transcritos na codificao. A a forma de interao do programa com as pessoas deve ser planejada e includa no programa. Os clculos devem ser codificados de forma a tornlos rpidos e precisos conforme os recursos apresentados pela linguagem.

Cdigo Fonte
Demanda por legibilidade e compreensibilidade
a possibilidade de ser modificado eficientemente e de evoluir

Recomendaes
Procure estabelecer e manter um padro de documentao. Comente o objetivo do programa, a autoria do programa, os trechos menos bvios de cdigo, e o significado das variveis menos bvias. Escolha mensagens claras, e procure definir bons casos de teste para o seu programa. Revise o cdigo desenvolvido pelo menos uma vez para programas pequenos, e pelo menos duas para programas maiores.

Pascal
Ambiente Turbo Pascal

Pascal

Pascal

Pascal

Pascal

Pascal

Estrutura de um programa Pascal


Definio das constantes Definio dos tipos Declarao das variveis Definio de subprogramas
Depois das sees de definio vm os comandos, entre as palavras begin e end.

Identificadores
Um identificador pode ter qualquer tamanho, mas apenas os 63 primeiros caracteres so considerados pelo compilador. Os demais so ignorados. Podem ser utilizados apenas os dgitos numricos, as letras minsculas, as letras maisculas e o caractere de sublinha ('_').

Identificadores
nome idade1 preco kW VALOR _valido

Caracteres acentuados no so vlidos em Pascal.

O identificador deve comear com letra ou caractere de sublinha.

Identificadores
Exemplos NO Vlidos
preo dia$/$mes vlido 2idades

Exemplos Vlidos:

No h diferena entre maisculas e minsculas


VALOR = valor = Valor = ...

Palavras reservadas no podem ser utilizadas

Tipos de Dados Numricos


Inteiros

Preciso

shortint, integer, longint, word e byte

Ponto flutuante

single, real, double, extended e comp

Dados tipo Caracter


Um caracter em Pascal representado pelo tipo char; Valores vlidos para os caracteres so dados pela tabela ASCII padro Pascal prov a funo chr(n) que retorna o caractere cujo cdigo ASCII n e a funo ord(c) que retorna o cdigo ASCII do caractere.

Tipos de Dados Lgico e Enumerado


Boolean

valores TRUE ou FALSE.

Tipo de Dados Enumerado


Como em pseudo-cdigo, dados enumerados em Pascal so dados que podem assumir um valor ou smbolo dentre vrios listados em uma seqncia de valores. Ex: (feminino, masculino) (segunda, terca, quarta, quinta, sexta)

Tipos de Dados Definidos


Em Pascal, a definio de novos tipos feita atravs da clusula TYPE Exemplo:
TYPE meses = 1..12; dias = 1..31; intervalo= 1 .. 100;

Variveis e Atribuio
As variveis so definidas em uma seo especfica: VAR

var
variavel1,...,variveln : TIPO;

Definio de Constantes
Utiliza-se a clusula CONST: Exemplo:

A atribuio :=
idade := 23;

Expresses Aritmticas

CONST IDADE_MINIMA = 31; MASCULINO = 'M'; SALARIO_MINIMO = 240.00; DIARISTA_TEM_BASE = TRUE; ERRO = 5E-6;

Expresses Lgicas

Exemplo
program seguro; VAR idade: integer; valor: real; fator: real; segurado: boolean; begin idade := 28; valor := 1000.00; fator := 0,05; segurado := idade < 30 AND valor*fator <= 500.00 end.

Operadores Lgicos: AND, OR, NOT

Entrada e Sada de Dados


A entrada de dados pelo teclado para um programa em Pascal:
read e readln

Entrada e Sada de Dados


As funes (write, writeln, read e readln) funcionam em modo texto

A sada de dados pelo teclado para um programa em Pascal:

write e writeln

A tela tratada como um conjunto de linhas divididas em colunas. Cada caractere impresso usando write ou writeln ou digitado no teclado impresso na tela e ocupa uma coluna em uma linha. O cursor desloca-se para a direita medida que os caracteres vo sendo impressos e muda de linha voltando primeira coluna de acordo com as funes de entrada e sada.

Formato Geral
Formato geral de sada:

Comandos de Sada
Quando usamos a funo write, aps a impresso da lista de parmetros o cursor de tela fica posicionado na primeira coluna vazia da ltima linha impressa; Exemplo:

write(expresso, expresso, ...); writeln(expresso, expresso, ...);

Exemplos:

write('mensagem de escrita 1'); writeln(' mensagem de escrita 2'); mensagem de escrita 1 mensagem de escrita 2

writeln('numero de funcionarios com idade superior a',5,':',func_superior); writeln('Para um salario base =', salario_base,'o valor do salario calculado passa a ser ',salario); write('digite o valor do coeficiente a:');

O comando writeln muda de linha aps a impresso de seus parmetros.


writeln('mensagem de escrita 1'); writeln(' mensagem de escrita 2'); mensagem de escrita 1 mensagem de escrita 2

Formatao de Nmeros
valora := 6.0; valorb := 5.389; valorc := 44.0; writeln(valora); writeln(valorb); writeln(valorc);

Entrada de Dados
Para a leitura de dados, a lista de parmetros das funes read e readln pode incluir apenas variveis, que recebero os valores digitados pelo usurio. Tais variveis podem ser de qualquer tipo simples, exceto o enumerado.

6.0000000000E+00 5.3890000000E+00 4.4000000000E+01

writeln(valora:6:2); writeln(valorb:6:2); writeln(valorc:6:2);

6.00 5.39 44.00

Entrada de Dados
Formato Geral
read(varivel, varivel, ...); readln(varivel, varivel, ...);]

Comentrios e Terminao de Comandos


Incio e fim de um comentrio em Pascal so expressos pelos caracteres { e }, respectivamente.

Um comentrio pode compreender mais de uma linha.

Exemplo:

readln(i,j); write('digite o nmero de funcionrios diaristas: '); readln(nro_funcionarios); write('digite o valor do coeficiente a: '); read(a); write('e do coeficiente b: '); readln(b);

Comandos e blocos de comandos em Pascal so finalizados com o caracter ';. Ele opcional apenas em comandos que precedem as palavras reservadas que delimitam o incio e o fim de um bloco de comandos e no deve ser utilizado imediatamente antes da palavra else.

Tratamento de Erros e Excees: Dilogos com o Usurio


Tornar a leitura de dados consistente com o objetivo do programa; Utilizar controle de fluxo para evitar entrada de dados indevida.

Exemplo
PROGRAM raizes; {Programa para calcular as raizes de uma equacao de segundo grau} VAR a,b,c: real; {coeficientes da equacao} delta: real; {auxiliar no calculo das raizes} x1,x2: real; {raizes calculadas} begin {le os dados} write('Digite o valor de a '); readln(a); {a deve ser diferente de zero} while (a=0) do begin write('a deve ser diferente de 0, por favor digite novamente', 'o valor de a '); readln(a); end;

10

Exemplo
write('Digite o valor de b '); readln(b); write('Digite o valor de c '); readln(c); delta := b*b - 4*a*c; {verifica condicao de existencia de raizes} if (delta < 0) then writeln('Esta equacao nao possui raizes reais.') else begin {calcula as raizes} x1 := (-b - sqrt(delta)) / (2*a); x2 := (-b + sqrt(delta)) / (2*a); writeln('As raizes sao ',x1:6:3,' e ', x2:6:3) end; readln; end.

Exemplo: Programa do Tringulo Algoritmos


Algoritmo lados_tringulo {Este algoritmo calcula o valor dos lados de um tringulo retngulo, dados um de seus ngulos menores e a hipotenusa} varivel lado_oposto, lado_adjacente: real hipotenusa, alfa: real leia(alfa) leia(hipotenusa) lado_oposto seno(alfa)*hipotenusa lado_adjacente cosseno(alfa)*hipotenusa escreva(lado_oposto) escreva(lado_adjacente) fim

Exemplo: Programa do Tringulo Algoritmo PROGRAM lados_tri;


VAR lado_oposto, lado_adjacente: real; hipotenusa, alfa: real; angulo_em_rad:real; begin write('digite o valor do angulo:'); readln(alfa); write('digite o valor da hipotenusa:'); readln(hipotenusa); angulo_em_rad:=alfa*PI/180; lado_oposto:=sin(angulo_em_rad)*hipotenusa; lado_adjacente:=cos(angulo_em_rad)*hipotenusa; writeln('lado oposto = ',lado_oposto:6:2); writeln('lado adjacente = ',lado_adjacente:6:2); readln; end.

Codificao
Introduo Computao Rosane Minghim

11

Você também pode gostar