Sie sind auf Seite 1von 19

APÊNDICE I

Codificação de Algoritmos
em Linguagens de Programação:
Pascal, Fortran e Modula-2

SUMÁRIO

I.1 Conversão de algoritmos I.2 Práticas de programação

I.1 CONVERSÃO DE ALGORITMOS

Para converter um algoritmo escrito em linguagem natural em algumas das ferramentas de programa-
ção: diagramas de fluxo, diagramas N-S e pseudocódigo, poderão ser utilizadas as tabelas seguintes,
que consideramos as equivalências correspondentes. Para sua correta conversão, deveremos buscar na
coluna de instruções o elemento correspondente do algoritmo e nas seguintes colunas suas equivalentes
ferramentas de programação.
.


Tabela I.1 Conversão de algoritmos em ferramentas de programação

Instruções (ações) Pseudocódigo Diagrama de fluxo Diagrama N-S

Estrutura do algoritmo algoritmo identificador


[seção de declaração início algoritmo identificador
de variáveis
e constantes]
início
.
.
. fim fim
fim

Declaração de variáveis Modelo 1 (dentro do Escrevemos as variáveis e os tipos Escrita de uma tabela de variáveis.
algoritmo na seção na tabela de variáveis juntamente
de declaração). com o diagrama de fluxo.
var nome11,
nome12, ...:
tipo1; nome21,
nome22...: tipo2
Modelo2.
Descrição de variáveis
e tipos na tabela de
variáveis
mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

Atribuição V ← E V ← E / V = E V ← E
V = variável
E = expressão
(constante, variável
ou expressão)

Entrada de dados ler lista de variáveis

ler lista ler lista


de variáveisde variáveis ler lista de variáveis
ler lista de variáveis

(Continua)
Tabela I.1 Conversão de algoritmos em ferramentas de programação (cont.)

Instruções (ações) Pseudocódigo Diagrama de fluxo Diagrama N-S

Saída de dados escrever lista de


expressões

escrever escrever
escrever lista variáveis
escrever lista variáveis
lista variáveis lista variáveis

Instrução combinada S1
S2
S1
S1 S1
S1
S3
S2
S2
S1
S1 ..
.
..
. ..
.
Sn
Sn Sn
Sn
Sn

Comentários 1. {fase descritiva


do comentário} fase
descritiva
do algoritmo
2. {fase descritiva
do comentário}

Bifurcação ir_a etiqueta


incondicional
AA 11
ir_a
ir_aetiqueta
etiqueta
Codificação de algoritmos em linguagens de programação: Pascal, Fortran e Modula-2mm

(Continua)
Tabela I.1 Conversão de algoritmos em ferramentas de programação (cont.)

Instruções (ações) Pseudocódigo Diagrama de fluxo Diagrama N-S

Seletiva alternativa Modelo 1:


simples se condição
então
Condição Condição
S1 Sim Condição
Sim Condição
S2 Sim Sim Não Não
. Não Não
. S1 S1 S1 S1
* *
Sn
fim_se S2 S2
S2 S2
Modelo 2:
se condição então
S1 Sn Sn
S2 Sn Sn
.
.
Sn * Seta ou Branco
* Seta ou Branco
fim_se
Modelo 3:
se condição então S1

Seletiva alternativa Modelo 1:


dupla se condição
então
mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

S11
S12 Condição
Condição
. Sim Condição Não Não
Sim Condição
Sim Não
Sim Não
.
S1n S11 S21 S11 S21
S11 S21 S11 S21
se não
S21 S12 S12 S22 S22
S22 S12 S12 S22 S22 . . . .
. . . . .
. . . . .
S2n S1n S1n S2n S2n
S1n S1n S2n S2n
fim_se
Modelo 2:
se condição então S1
se não S2
fim_se

(Continua)
Tabela I.1 Conversão de algoritmos em ferramentas de programação (cont.)

Instruções (ações) Pseudocódigo Diagrama de fluxo Diagrama N-S

Seletiva alternativa conforme_seja expressão fazer


múltipla
E1:S11
S12
. Em outro
Em outro Modelo
Modelo
1: 1:
E1 E1 expres-
expres- caso caso
. E2 E2 são são En En
. E1 E1
E3 E3 expressão
expressão
S1n E2 E2
E2:S21 S11 S11S21 S21S31 S31Sn1 Sn1Sx1 Sx1 S11 S11 Em Em
S12 S12S22 S22S32 S32Sn2 Sn2Sx2 Sx2 S12 S12 E3 E3
22 S21 S21 outrooutro
S1n S1nS2n S2nS3n S3nSnn SnnSxn Sxn
. S22. S22 E4 E4 casocaso
. . . . S31
. S31
. . . . S32 S41 S41Sx1 Sx1
. S32
. . . . S42
. S42Sx2 Sx2
S1n S1n . .. . . .
S2n S2n S2n . .. . . .
En:Sn1 . . . .
Sn2 S3n S3n
S4n S4nSx1 Sx1
.
.
S1n
em_outro­_caso
Sx1
Sx2
.
.
Sxn Modelo
Modelo
2: 2:
fim_conforme
S4n S4n

E1 E1
E2 E2
. . . . . . En En Ex Ex
S11 S11
S21 S21 Sx1 Sx1
Sn1 Sn1
S12 S12
S22 ..
.. S22 Sx2 Sx2
Sn2 Sn2
. .. . . .. .
. .. . . .. .
. . . .. .
S1n S1n
S2n S2n Sxn Sxn
Snn Snn
Codificação de algoritmos em linguagens de programação: Pascal, Fortran e Modula-2mm

(Continua)
Tabela I.1 Conversão de algoritmos em ferramentas de programação (cont.)

Instruções (ações) Pseudocódigo Diagrama de fluxo Diagrama N-S

repetitiva iterar iterar


S1
S2
.
. Modelo
Modelo1:
1:
sair_se condição
iterar
iterar
. S1
S1
. S1
S1
S3 S2
S2
.
. S2
S2 Condição
Condição
Sn Sim
Sim Não
Não
fim_iterar
S3
S3
Sim
Sim Condição
Condição

Não
Não

S3
S3 Sn
Sn

Sn
Sn
mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

Modelo
Modelo2:
2:

Sair
Sair

Sair_se
Sair_secondição
condição
repetir
repetir

Ações
Ações

(Continua)
Tabela I.1 Conversão de algoritmos em ferramentas de programação (cont.)

Instruções (ações) Pseudocódigo Diagrama de fluxo Diagrama N-S

repetitiva enquanto enquanto condição


S1
S2 enquanto
enquanto condição
condição
Condição
Não Não
. Condição
.
Sn
Sim Sim
fim_enquanto
S1 S1

<ações>
<ações>
repetir

repetir

S2 S2

S3 S3

repetitiva repetir repetir Modelo 1:


S1 Modelo 1:
S2
.
S1
. S1
. <ações>
<ações>
repetir

Sn
repetir

até_que condição S2
S2

até_que condição
Sn até_que condição
Sn

Condição
Condição
Não
NãoSim
Sim
Codificação de algoritmos em linguagens de programação: Pascal, Fortran e Modula-2mm

(Continua)
Tabela I.1 Conversão de algoritmos em ferramentas de programação (cont.)

Instruções (ações) Pseudocódigo Diagrama de fluxo Diagrama N-S

repetitivas desde Modelo 1:


desde V=Vi até Vf [incremento x] fazer

S1
Modelo
Modelo 1: 1:
S2 desdedesde
.
V← Vi V← Vi
.
Sn
<ações>
<ações>
fim_desde S1 S1

Modelo 2: S2 S2
para V de Vi a Vf fazer = Vi
V = ViVaté Vfaté Vf
S1
x Vi + x
V ← Vi V+ ←
S2
.
. Condição
Condição
V = Vf V = Vf
Sn Não Não Sim Sim

fim_para

Modelo
Modelo 2: 2:
mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

V=Vf V=Vf
Sim Sim
V>Vf V>Vf
V=Vf+xV=Vf+x
Não Não

S1 S1

S2 S2

Sn Sn

(Continua)
Codificação de algoritmos em linguagens de programação: Pascal, Fortran e Modula-2mm

Sim
V>Vf

Não

V=Vi Vf=x
Repetir

Sn
S2
S1
Sn
S1

S2
V=Vf+x
V=Vf
Modelo 3:

Modelo 4:
Tabela I.2 Conversão de pseudocódigos em programas

Pseudocódigo Pascal FORTRAN Modula-2

Estrutura do algoritmo

algoritmo
identificador program identificador
(input-output) PROGRAM identificador
(opcional) MODULE nomemódulo;

[sessão de
declarações] const nome = valor; (declaração de variáveis <lista de importar>
e constantes) <declaração
início type nome = tipo de IMPLICIT de constantes>
S1 dados; <declaração de tipo>
S2 var nome, CHARACTER <declaração de
nome,...:tipo; PARAMETER variáveis>
(declaração de arrays)
procedure/function DIMENSION
. [definição do (declaração de <declaração de
. subprograma] funções) procedimentos>
Sn COMMON BEGIN
10mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

EQUIVALENCE <sentenças>
fim begin EXTERNAL
S1 INTRINSIC
S2 (inicialização de
. variáveis)
. DATA
(definição de
. funções de sentença)
Sn Instruções executáveis
. .
. .
. .
Sn END
end END nomemódulo

(Continua)
Tabela I.2 Conversão de pseudocódigos em programas (cont.)

Pseudocódigo Pascal FORTRAN Modula-2

Declaração de variáveis
VAR
var lista de nomes1: var lista nomes1: tipo lista de variáveis <lista de variáveis>: tipo
tipo 1 tipo1
lista de nomes2: lista nomes 2: tipo é INTEGER tipo é INTEGER
tipo 2 tipo2 REAL REAL
DOUBLE PRECISION BOOLEAN
LOGICAL CARDINAL
COMPLEX BITSET
CHARACTER * n CHAR
(n, comprimento da cadeia)

Atribuição

V ← E V: = E V = E V: = E

Leitura de dados
Read (c)
ler lista de read (lista de READ (n, f) lista de ReadString (s)
variáveis variáveis) variáveis ReadInt (i)
readln (lista de n número unidade entrada ReadReal (x)
variáveis) f etiqueta sentença c: tipo CHAR
FORMAT i = integer
READ (*,*) lista de s = tipo cadeia
variáveis x = tipo real
READ f, lista
Codificação de algoritmos em linguagens de programação: Pascal, Fortran e Modula-2mm11

(Continua)
Tabela I.2 Conversão de pseudocódigos em programas (cont.)

Pseudocódigo Pascal FORTRAN Modula-2

Escrita de dados
escrever lista write (lista de WRITE (n, f) lista de Write (c)
de expressões expressões) expressões
writeln (lista de WRITE (*,*) lista de WriteString (s)
expressões) expressões
WRITE f, lista de WriteInt (i, n)
expressões
PRINT f, lista de WriteReal (x, n)
expressões WriteLn

Comentários 1. {mensagem} 1. Isto é um comentário (*comentários*)


2. (*mensagem *) 2. * isto é um comentário
Nota: C ou * se escrevem
na primeira coluna

Seletivas 1. if condição 1. IF lógico IF condição THEN


Alternativa simples then begin IF (condição) S S1
S1 IF (condição) GOTO S2
etiqueta
12mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

se condição S2 .
então . .
S1 . Sn
S2 Sn END
. end
. 2. if condição then 2. IF de blocos
Sn begin IF condição THEN
fim_se S1 S1
S2 S2
. .
. .
Sn Sn
end END IF
3. if condição then
se else S2

(Continua)
Tabela I.2 Conversão de pseudocódigos em programas (cont.)

Pseudocódigo Pascal FORTRAN Modula-2

Alternativa dupla

1. if condição then IF condição THEN IF condição THEN


S11 S11 S11
se condição S12 S12 S12
então . . .
S11 . . .
S12 S1n S1n S1n
se não else ELSE ELSE
S21 begin S21 S21
S22 S21 S22 S22
fim_se S22 . .
. . .
. S2n S2n
S2n ENDIF END
end

2. if condição then
begin
S11
S12
.
.
S1n
end
else
begin
S12
S22
.
.
S2n
end
Codificação de algoritmos em linguagens de programação: Pascal, Fortran e Modula-2mm13

(Continua)
Tabela I.2 Conversão de pseudocódigos em programas (cont.)

Pseudocódigo Pascal FORTRAN Modula-2

repetitiva (enquanto) 1. while condição do WHILE condição DO


enquanto begin S1
S1 S1 S2
S2 S2 .
. . .
. . Sn
Sn Sn
end
fim_enquanto 2. while condição do S1 END

repetitiva (repetir)
repetir repeat REPEAT
S1 S1 S1
S2 S2 S2
. . .
. . .
Sn Sn Sn
fim_repetir until condição UNTIL condição

repetitiva (desde para)


desde V = Vi até Vf 1. for v: = vi to vf do S1 DO n i = ml, m2, m3 FOR V: = Vi TO Vf [BY x] DO
[incremento x] fazer 2. for v: = vi downto Vf do S1 . S1
... 3. for v: = vi to Vf do . S2
14mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

fim_desde begin . .
S1 .
S2 Sn
. end
.
Sn
end
4. for v: = vi downto Vf do n CONTINUE
begin
S1
S2
. n etiqueta de linha
. m1 valor inicial
Sn m2 valor final
end m3 incremento
Notas: 1 e 3, incrementos positivos; 2 e 4, incrementos negativos

(Continua)
Tabela I.2 Conversão de pseudocódigos em programas (cont).

Pseudocódigo Pascal FORTRAN Modula-2

repetitiva iterar
iterar LOOP
S11 S11 S1
S12 S12 S2
. . .
. . .
Sn S1n
sair se condição while not condição do UNTIL condição
S21 begin LOOP
S22 S21 S11
. S22 S12
. . .
S2n . .
fim_iterar S2n EXIT
S11 S21
S12 S22
. END
.
end
Codificação de algoritmos em linguagens de programação: Pascal, Fortran e Modula-2mm15
16mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

I.2 PRÁTICAS DE PROGRAMAÇÃO

Exemplo I.1 Calcular o volume de um cilindro círculo

Análise
A fórmula do volume do cilindro é V = p · R² · H
Variáveis de entrada: RAIO, ALTURA de tipo real
Variáveis de saída: VOLUME de tipo real
Constantes: π = PI = 3,141592

Algoritmo
Os passos gerais do algoritmo são:

início
determinar os valores do raio R e altura H
o volume é obtido com a expressão V = p * R2 * H
calcular e escrever o valor de V
fim

Pseudocódigo
algoritmo volume
{declaração de variáveis e constantes}
var RAIO, ALTURA, VOLUME = real
constante PI = 3,141592
início
{leitura de dados}
ler RAIO, ALTURA
{processo}
VOLUME → PI * RAIO * ALTURA
{saída de dados}
escrever VOLUME
fim

Codificação em Visual BASIC


100 ‘programa volume
110 ‘cálculo do volume de um cilindro
120 ‘
130 ‘declaração de variáveis
140 DEFSNG RAIO, ALTURA, VOLUME
150 ‘início das sentenças executáveis
160 ‘entrada de dados
170 PI = 3,141592
180 INPUT RAIO, ALTURA
190 VOLUME = PI * RAIO ^ 2 * ALTURA
200 ‘saída de dados
210 PRINT ‘o volume é’, VOLUME
220 END

Codificação em FORTRAN
PROGRAM cilindro
C Calcular o volume de um cilindro
INTEGER SAÍDA
DATA ENTRADA, SAÍDA/5, 6/
Codificação de algoritmos em linguagens de programação: Pascal, Fortran e Modula-2mm17

DATA PI /3,141592/
READ (ENTRADA, 100) RAIO, ALTURA
VOLUME = PI * RAIO * RAIO * ALTURA
WRITE (SAÍDA, 200) VOLUME
STOP
100 FORMAT (2 F8.0)
200 FORMAT (‘o volume é’, F8.2)
END

NOTA: Os dispositivos físicos do teclado e tela são atribuídos aos números de dispositivos 5 e 6 respecti-
vamente.

Codificação em Pascal
program CILINDRO (INPUT, OUTPUT)
{calcular o volume de um cilindro}
const
PI = 3,141592
var
RAIO, ALTURA, VOLUME: real
begin
{leitura de dados}
read (RAIO, ALTURA)
VOLUME: = PI * SQR (RAIO) * ALTURA
write (‘o volume é’, VOLUME = 8:2)
end {fim de CILINDROS}

Codificação em MODULA-2
MODULE cilindro
{calcular o volume de um cilindro}
FROM EasyInOut IMPORT ReadReal, WriteReal, WriteString;
CONST
PI = 3.14.1592
VAR
Raio, Altura, Volume: REAL
BEGIN
ReadReal (Raio); ReadReal (Altura)
Volume := PI * Raio * Raio * Altura
WriteString (‘o volume é ’); WriteReal (Volume, 8,2)
END cilindro

Exemplo I.2 Calcular a média aritmética de uma série indeterminada de números positivos

Análise
A média de uma série de números X1, X2..., Xn responde à fórmula:
X1 + X2 + ... + Xn
MÉDIA =
n
18mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

São necessários um somador que realize a soma dos números e um contador que conte o total de números:

Variáveis de entrada X: real.


Variáveis de saída MÉDIA: real.
Variáveis intermédias N: inteira; SOMA: real.

Consideremos como valor final de arquivo (FF) ou valor sentinela o número –99.

Pseudocódigo
algoritmo MÉDIA
{cálculo da média aritmética de N números positivos lidos
do teclado}
{variáveis inteiras = N; variáveis reais = X, MÉDIA, SOMA}
início
{inicialização de variáveis}
N ← 0
SOMA ← 0
{Leitura de dados}
ler X
enquanto X < > FF fazer {FF, fim de arquivo ou valor sentinela}
N ← N + 1
SOMA ← SOMA + X
ler X
fim_enquanto
MÉDIA ← SOMA/N
escrever ‘o total de números é ’, N
escrever ‘a média é = ’, MÉDIA
fim

BASIC
100 ‘Programa MÉDIA
110 ‘cálculo da medida aritmética de N números, lidos do teclado
120 ‘ variáveis inteiras = N; variáveis reais = X, MÉDIA, SOMA
130 DEFIN N
140 DEFSNG X, MÉDIA, SOMA
150 N = 0
160 SOMA = 0
170 INPUT X
180 WHILE X < > - 99
190 N = N + 1
200 SOMA = SOMA + X
210 INPUT X
220 WEND
230 MÉDIA = SOMA/N
240 PRINT “o total de números é”, N
250 PRINT “a média é = “, MÉDIA
260 END

PASCAL
program média (input, output);
{cálculo da média aritmética de N números lidos do teclado}
var X, SOMA, MÉDIA = real;
N : integer;
Codificação de algoritmos em linguagens de programação: Pascal, Fortran e Modula-2mm19

begin
N = 0;
SOMA : = 0;
read (X);
while not eof do
begin
N : = N + 1;
SOMA : = SOMA + X;
read (x)
end;
MÉDIA : = SOMA/N;
writeln (‘o total de números é’);
writeln (‘a média é’);
end.

Codificação em FORTRAN
PROGRAM MÉDIA
C Cálculo da média aritmética de N números lidos do teclado
INTEGER N
REAL X, SOMA, MÉDIA
N = 0
SOMA = 0
100 READ (5, * , END = 200) X
N = N + 1
SOMA = SOMA + X
GO TO 100
200 MÉDIA = SOMA/N
PRINT *, ‘o total de números é’, N
PRINT *, ‘a média é’, MÉDIA
END

Codificação em MODULA-2
MODULE Média
FROM RealInOut IMPORT ReadReal, Flag, WriteReal;
FROM InOut IMPORT WriteInt, WriteString, Writeln;
(*Cálculo da média aritmética de N números positivos
lidos do teclado *)
VAR X, SOMA, MÉDIA: REAL; n: INTEGER;

BEGIN
n:= 0
SOMA:= 0
WriteString (‘Ler uma série de números’); Writeln;
ReadReal (X); Writeln;
WHILE Flag DO
n:= M + 1
Soma:= Soma + X;
ReadReal (X); Writeln
END;
Média:= Soma/FLOAT (n8);
Writeln; WriteString (‘o total de número é’); WriteInt (n, 8);
Writeln; WriteString (‘a média é = ’); WriteReal (média, 10);
END Média.

Das könnte Ihnen auch gefallen