Beruflich Dokumente
Kultur Dokumente
Codificação de Algoritmos
em Linguagens de Programação:
Pascal, Fortran e Modula-2
SUMÁRIO
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
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)
(Continua)
Tabela I.1 Conversão de algoritmos em ferramentas de programação (cont.)
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
(Continua)
Tabela I.1 Conversão de algoritmos em ferramentas de programação (cont.)
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.)
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.)
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.)
<ações>
<ações>
repetir
repetir
S2 S2
S3 S3
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.)
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
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.)
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.)
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
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.)
Alternativa dupla
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.)
repetitiva (repetir)
repetir repeat REPEAT
S1 S1 S1
S2 S2 S2
. . .
. . .
Sn Sn Sn
fim_repetir until condição UNTIL condição
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).
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
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 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:
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.