AED1-07-PORTUGOL

32
PORTUGOL PORTUGOL Introdu Introdu ç ç ão ão

Transcript of AED1-07-PORTUGOL

Page 1: AED1-07-PORTUGOL

PORTUGOLPORTUGOL

IntroduIntroduççãoão

Page 2: AED1-07-PORTUGOL

A Sintaxe do PORTUGOL apresentada aqui está baseada

no trabalho G-Portugol.

A Sintaxe do PORTUGOL apresentada aqui está baseada

no trabalho G-Portugol.

Page 3: AED1-07-PORTUGOL

Elementos básicos de um algoritmo

<declarações de variáveis><declara<declaraçções de variões de variááveis>veis>

<comandos><comandos><comandos>

algoritmo <nome_do_algoritmo>;variáveis

fim-variáveisinício

fim

Page 4: AED1-07-PORTUGOL

Elementos básicos de um algoritmo

Exemplo

/*Nosso primeiro programa

*/algoritmo olamundo;inícioimprima("Olá mundo!");

fim

/*Nosso primeiro programa

*/algoritmo olamundo;inícioimprima("Olá mundo!");

fim

Page 5: AED1-07-PORTUGOL

Elementos básicos de um algoritmo

Exemplo

algoritmo teste_variaveis;variáveisx : inteiro;nome : literal;

fim-variáveisinício....fim

algoritmo teste_variaveis;variáveisx : inteiro;nome : literal;

fim-variáveisinício....fim

Page 6: AED1-07-PORTUGOL

Elementos básicos de um algoritmoExemploalgoritmo perimetro_circunferência;

// declaração de variáveis

variáveis

pi, raio, perim: real;

fim-variáveis

// comandos

início

pi := 3,1415;

raio := leia();

perim = 2 * pi * raio;

imprima (perim);

fim

Page 7: AED1-07-PORTUGOL

Elementos básicos de um algoritmo

�Dados (variáveis e constantes)

�Tipos de dados

�Operadores

�Comandos

�Funções

�Comentários

Page 8: AED1-07-PORTUGOL

Elementos básicos de um algoritmoExemploalgoritmo perimetro_circunferência;

// declaração de variáveis

variáveis

pi, raio, perim: real;

fim-variáveis

// comandos

início

pi := 3,1415;

raio := leia();

perim := 2 * pi * raio;

imprima (perim);

fim

tipo de dado

comentário

declaração variável

função

atribuição dado variáveloperador

função

atrib. dado constante

Page 9: AED1-07-PORTUGOL

Elementos básicos de um algoritmo:: Dados

� Dados Variáveis

�Elemento que têm a função de associar um nome a uma porção da memória onde um dado pode ser armazenado.

� Dados Constantes

�G-Portugol não tem definição explícita de constantes

�O valor de uma constante não se altera após sua definição.

�Exemplos (usando variáveis):�N_NEPERIANO := 2,7182

�UNIVERSIDADE := 'UFAM'

Page 10: AED1-07-PORTUGOL

Elementos básicos de um algoritmo:: Tipos de dados

�Definem a natureza do dado, as operações que podem ser realizadas com o dado e o espaço a ser ocupado na memória.

Page 11: AED1-07-PORTUGOL

Elementos básicos de um algoritmo:: Operadores

�Atribuição

�Aritméticos

�Relacionais

�Lógicos

Page 12: AED1-07-PORTUGOL

�Utilizado para atribuir um valor a uma variável

�Notação:

x1 := 23;

temp := x2;

nome da variável

nome da variável ValorValor

Elementos básicos de um algoritmo:: Operador Atribuição

Page 13: AED1-07-PORTUGOL

Elementos básicos de um algoritmo:: Operadores Aritméticos

�Dados de entrada: tipo inteiro ou real

�Resultado: tipo inteiro ou real

�Exemplos:�x_2 := 2 + 3;

�alfa := 1 / 5;

�ang := 1 / 5.0;

�resto := 10 % 3;

�resto := 1 % 4;

�delta := 5 * 5 – 4 * 1 * 4;

Page 14: AED1-07-PORTUGOL

Elementos básicos de um algoritmo:: Operadores Relacionais

�Dados de entrada: tipo inteiro ou real�Resultado: tipo lógico

�Exemplos:�cond1 := 2 == 3;

�cond2 := 1.6 ≠ 5.0;

�cond3 := 1 > 5;

�cond4 := (1 + 2) < 5;

�cond5 := 10 ≥ 3;

�cond6 := 1 ≤ (– 4 / 3);

Page 15: AED1-07-PORTUGOL

Elementos básicos de um algoritmo:: Operadores Lógicos

�Dados de entrada: tipo lógico

�Resultado: tipo lógico

�Exemplos:

�cond1 := verdadeiro e falso;

�cond2 := falso ou falso;

�cond3 := não cond1;

�cond4 := (verdadeiro e falso) ou (5 > 3);

Page 16: AED1-07-PORTUGOL

Elementos básicos de um algoritmo:: Precedência de Operadores

1. não

2. * / %

3. + –

4. < > >=<=

5. = <>

6. e

7. ou

8. :=

Page 17: AED1-07-PORTUGOL

�d + y - z * a / p

�d / y

�y / a

�b / z

�r % q

�y % d

�((z / a) + b*a ) - d

y = 2

z = 4.0

a = 8

b = 6.0

d = 12

p = 4

q = 3

r = 10

Elementos básicos de um algoritmo:: Exercícios sobre Operadores

Page 18: AED1-07-PORTUGOL

� (B = A * C) e (LOG ou T)

� (B > A) ou (B = A)

�LOG ou (B / A >= C) e não(A >= C)

�não LOG ou T e (A + B >= C)

�não LOG ou (B * 2 - C = 0)

�LOG ou não (B * B <= C * 10 + A * B)A = 2

B = 7

C = 3.5

LOG = FF

Elementos básicos de um algoritmo:: Exercícios sobre Operadores

Page 19: AED1-07-PORTUGOL

Elementos básicos de um algoritmo:: Funções

� Pré-definidas

� Definidas pelo programador

� G-Portugol tem duas funções internas: “leia” e

“imprima”, que permitem entrada e saída.

� Exemplos:

�seno(angulo)

�pow(x,y)

�sqrt(resto)

�exp(tempo)

�var1 := leia()

� imprima()

Page 20: AED1-07-PORTUGOL

Elementos básicos de um algoritmo:: Comentários

�Utilizados para descrever o algoritmo, esclarecendo trechos do código

�Notação igual a linguagem C:

�//

�/* <comentário> */

Page 21: AED1-07-PORTUGOL

Algoritmos com qualidade

�Devem ser feitos para serem lidos por seres humanos!

�Escreva os comentários no momento em que estiver escrevendo o algoritmo.

Page 22: AED1-07-PORTUGOL

// Cálculo da área do retângulo:area ← b * h;

// C// Cáálculo da lculo da áárea do retângulo:rea do retângulo:

areaarea ←← b * h;b * h;

// Multiplicação de b por h:area ← b * h;

// Multiplica// Multiplicaçção de b por h:ão de b por h:

areaarea ←← b * h;b * h;

Algoritmos com qualidade

�Os comentários devem acrescentaralguma coisa, e não frasear o comando:

Page 23: AED1-07-PORTUGOL

/*****************************************UNIVERSIDADE FEDERAL DO AMAZONASFULANO DA SILVADATA: 25/11/2006ÚLTIMA MODIFICAÇÃO: 26/12/2007

ALGORITMO DE DEMONSTRAÇÃO*****************************************/

/*****************************************UNIVERSIDADE FEDERAL DO AMAZONASFULANO DA SILVADATA: 25/11/2006ÚLTIMA MODIFICAÇÃO: 26/12/2007

ALGORITMO DE DEMONSTRAÇÃO*****************************************/

Algoritmos com qualidade

�Use comentários no prólogo:

Page 24: AED1-07-PORTUGOL

hip := sqrt(cat1 * cat1 + cat2 * cat2);hip := sqrt(cat1 * cat1 + cat2 * cat2);

hip:=sqrt(cat1*cat1+cat2*cat2);hip:=sqrt(cat1*cat1+cat2*cat2);

Algoritmos com qualidade

�Use espaços em branco para melhorar a legibilidade:

Page 25: AED1-07-PORTUGOL

preco ← custo + lucro;preco ← custo + lucro;

p := c + l;p := c + l;

Algoritmos com qualidade

�Escolha nomes representativos para as variáveis:

Page 26: AED1-07-PORTUGOL

Algoritmos com qualidade

�Utilize um comando por linha.

�Utilize parênteses para melhorar a compreensão e evitar erros.

�Utilize identação (recuo de texto).

�Atenção: identação ≠ endentação

Page 27: AED1-07-PORTUGOL

Exercício

�Uma fábrica de arruelas precisa calcular o custo de envio de um conjunto de unidades. Escreva um pseudo-código para tal.

Page 28: AED1-07-PORTUGOL

Exercício:: Algoritmo inicial

1. Calcular área

2. Calcular volume (área × espessura)

3. Calcular peso (volume × densidade ×

unidades)

4. Calcular custo (peso × frete)

Page 29: AED1-07-PORTUGOL

Exercício:: Algoritmo inicial

1. Calcular área

d_extd_ext

d_intd_int

2

int2

=

d_intArea π

2

2

_

=

extdAreaext π

intAAArea ext −=

Page 30: AED1-07-PORTUGOL

Exercício:: Algoritmo inicial

2. Calcular volume:

3. Calcular peso:

4. Calcular custo (peso × frete)

espessuraAreaVolume ×=

unidadesdensidadeVolumePeso ××=

fretePesoCusto ×=

Page 31: AED1-07-PORTUGOL

Exercício:: Pseudo-códigoalgoritmo arruela;

// variáveis constantes

pi : real;

// Variáveis de entrada

d_ext, d_int, espes, dens, unid, frete: real;

// Variável de saída

custo : real;

// Variáveis do programa

area, area_ext, area_int, volume, peso : real;

...

Page 32: AED1-07-PORTUGOL

Exercício:: Pseudo-código (cont.)...

início

pi := 3,1415;

d_ext:= leia(); d_int := leia(); espes := leia();

dens := leia(); unid := leia(); frete := leia();

area_ext := pi * (d_ext/2) * (d_ext/2);

area_int := pi * (d_int/2) * (d_int/2);

area := area_ext – area_int;

volume := area * espes;

peso := volume * dens * unid;

custo := peso * frete;

imprima (custo);

fim