Está en la página 1de 52

Representação de

Algoritmos em
Pseudocódigo

Marcelo Duduchi
Objetivos
 Como representar algoritmos usando
uma notação própria em pseudocódigo
que considera:
 a manipulação de variáveis;
 entradas e saídas;
 estruturas de controle de fluxo de
execução;
 tipos estruturados;
 subrotinas;
Tópicos Abordados
 Estrutura de um algoritmo representado em
pseudocódigo;
 Tipos de dados e variáveis;
 Operadores;
 Instruções de entrada e saída de dados;
 Estruturas de controle seqüencial;
 Estruturas de controle de decisão;
 Estruturas de controle de repetição;
 Subrotinas e passagem de parâmetros;
Estrutura de algoritmos
var lista de variáveis : tipo da variável;
declaração de subrotinas;
início
comandos;
fim;
Tipos de Dados

 Inteiro;
 Real;
 Caracteres;
 Lógico;
Identificadores
 Nomes que são criados para representar
elementos diversos dentro do algoritmo;
 São usados no pseudocódigo e algoritmos
em geral para novos tipos de dados,
variáveis e subrotinas;
Identificadores
 Pode ter qualquer tamanho;
 Pode utilizar os caracteres de:
‘0’ a ‘9’, ‘A’ a ‘Z’, ‘a’ a ‘z’ e ‘_’
 Deve ser diferente das palavras
reservadas do pseudocódigo;
 As palavras reservadas do pseudocódigo
devem ser sublinhadas ou grafadas em
negrito);
 Não pode começar por número;
Variáveis
 Espaço cujo conteúdo pode ser alterado
por meio de seu nome;
 É utilizada para guardar valores
temporários do algoritmo;
 Funciona como uma memória de trabalho
do mesmo modo que são usadas nas
calculadoras;
 Seu conteúdo pode ser alterado durante a
execução do programa;
Declaração de Variáveis
 Deve-se indicar a palavra var seguida do
nome, “:” e o tipo de dados a ser
armazenado por ela;
 var nome : tipo de dado;
 Exemplos: var nota:inteiro;
var N1, N2, N3:real;
var Nome: caracteres;
Declaração de Variáveis
 Alternativamente podem ser
representadas indicando a palavra var, o
tipo de dados a ser armazenado por ela e
“:” seguido do nome das variáveis;
 var tipo de dado: nome;
 Exemplos: var inteiro: nota;
var real: N1, N2, N3;
var caracteres: Nome;
Operadores Lógicos

 NÃO: identificado por não;


 E: identificado por e;
 OU: identificado por ou;
Operadores Aritméticos
 +: adição;
 -: subtração;
 *: multiplicação;
 / : divisão real;
 div : divisão inteira;
 mod: resto da divisão;
Operadores Relacionais
 < , <= : menor e menor ou igual;
 > , >= : maior e maior ou igual;
 = : valor igual;
 ≠ : valor diferente;
Comando de Escrita (saída)
 Pode ser usada a palavra escreva e entre
parênteses o que deve ser apresentado;
 Caso a saída seja literal usamos o símbolo “
’ ” para indicar o que deve ser apresentado e
caso seja o conteúdo de uma variável só
colocamos o seu nome;
 Formato:
escreva ( variável ou conteúdo );
Comando de Escrita (saída)

 Exemplos:
escreva (custo);
escreva (‘João’);
escreva (‘Valor = ’,x);
escreva (x+y);
Comando de Leitura (entrada)
 Pode ser usado leia colocando entre
parênteses a variável a receber o valor
digitado pelo usuário;
 Formato:

leia (variável1, variável2);


Comando de Leitura (entrada)
 Exemplos:
leia (a,b,c);
leia (nome);
leia (turma);
Controle de fluxo de execução
 Para que se controle a seqüência de
comandos a serem executados
permitindo que seja criada uma lógica
que correspondo ao algoritmo
desejado usamos as estruturas de
controle:
 seqüencial;
 de decisão ou condicional;
 de repetição ou de loop;
Estrutura de controle seqüencial
 Usada para agrupar conjunto de
comandos;
 Faz com que o bloco seja tratado como
uma única instrução;
 Formato: início
comandos
fim;
Estrutura de controle de decisão
 se é usada quando se deve tomar uma
decisão de qual grupo de rotinas o
programa deve executar;
 Não permite por sí só que comandos
voltem a executar de forma repetitiva;
 Pode ser usada de forma a encadear
uma estrutura de decisão dentro de
outra (ninho de se ’s);
Estrutura de controle de decisão

 Formatos: se decisão então


comandos;
se decisão então senão
comandos; comandos;
fimse; fimse;
Estrutura de controle de decisão

 Exemplos: ...
leia(nota);
... se nota >= 5.0 então
se nota >= 5.0 então escreva(‘aprovado’)
escreva(‘aprovado’); senão
fimse; escreva(‘reprovado’);
... fimse;
...
Estrutura de controle de decisão
 Exemplos: ...
se x <= y então
... escreva(‘pode ser:’);
se nota >= 5.0 então escreva(‘x < ou = y’);
escreva(‘exame:’); senão
leia(nota); escreva(‘x é maior’);
fimse; fimse;
...
Estrutura de controle de decisão
 Caso é usada quando se deve tomar
uma decisão entre mais de duas
opções para uma variável enumerável;
 Usada só com inteiros, caracteres e
variáveis do tipo lógico;
 Pode ter opção senão caso nenhuma
das anteriores for aceita;
 Possui um fimcaso no final;
Estrutura de controle de decisão

 Formato: caso expressão seja


constante1: comandos1;
constante2: comandos2;
constante3: comandos3;
senão
comando n;
fim;
Estrutura de controle de decisão

 Exemplo: caso idade seja


1,2,3:escreva(‘bebê’);
4..12:escreva(‘criança’);
13..22:escreva(‘adolesc.’);
senão
escreva(’adulto’);
fimcaso;
Estrutura de controle de repetição
 enquanto é usado quando o teste deve
ser feito no início e não se tem um
valor contável determinado;
 repita é usado quando o teste deve ser
feito no final;
 para é usado quando a iteração utiliza
um evento contável tendo controle
automático da variável de controle;
Estrutura de controle de repetição

 Formato 1: enquanto decisão faça


comandos;
fimenquanto;
 Formato 2: repita
comandos;
até decisão;
Estrutura de controle de repetição
 Exemplo 1: ct:=1;
enquanto ct<11 faça
escreva(‘4*’,ct,’=’,ct*4);
ct←ct+1;
fimenquanto;
...
Estrutura de controle de repetição
 Exemplo 2: ct←1;
repita
escreva(‘4*’,ct,’=’,ct*4);
ct←ct+1;
até ct >10;
...
Estrutura de controle de repetição

 Formato 3: para ct:= v.i. até v.f. faça


comandos;
fimpara;
Estrutura de controle de repetição

 Exemplo 3: para ct:= 1 até 10 faça


escreva(‘4*’,ct,’=’,ct*4);
fimpara;
Tipos estruturados homogêneos
 Conjunto de elementos do mesmo tipo
que ocupam uma área contínua de
memória e são referenciados através
de um nome e um índice;
 Também denominados de:
 Arranjo, Vetores, Matrizes e Tabelas;
 Podem ser:
 Unidimensionais ou Multidimensionais;
Tipos estruturados homogêneos
 Declaração (unidimensional):
var nome [tamanho]: tipo de dados;
onde:
nome: rótulo dado do vetor;
tamanho: tamanho do vetor;
tipo de dados: tipo de dados dos
elementos do vetor;
Tipos estruturados homogêneos
 Utilização (unidimensional):
utilizar o nome seguido da posição
entre colchetes que deseja considerar
tanto para atribuição de valores quanto
para a recuperação:

nome [ posição ]
Tipos estruturados homogêneos
 Exemplo (unidimensional):
...
var notas [4] inteiro;
...
para i:=1 a 4 faça
leia(notas [ i ]);
...
Tipos estruturados homogêneos
 Declaração (multidimensional):
var nome [tamanho] : tipo de dados;
onde:
nome: rótulo dado ao vetor;
[tamanho ]: podem ser substituídos por
[tamanho1,tamanho2,...,tamanhoN]
tipo de dados: tipo de dados dos
elementos do vetor;
Tipos estruturados homogêneos
 Utilização (multidimensional):
utilizar o nome seguido das posições
entre colchetes que deseja considerar
tanto para atribuição de valores
quanto para a recuperação.
 Não omitir nenhuma dimensão;

nome [ posições entre vírgulas ]


Tipos estruturados homogêneos
 Exemplo (multidimensional):
var vet [50,4]: real;
...
para i:=1 a 50 faça
para j:=1 a 4 faça
leia(vet [ i , j ]);
...
Tipos estruturados heterogêneos
 Conjunto de elementos de tipos
diferentes agrupados por estarem
relacionados entre si de acordo com a
lógica do programa;
 Também denominados de:
 registros ou records;
 São sempre unidimensionais e podem
estar atrelados a declaração de
vetores e arquivos;
Tipos estruturados heterogêneos
 Declaração:

Utilizar o nome, “:”, a palavra


reservada registro seguido da
definição dos elementos que o compõe
através da declaração destes da
mesma forma que as variáveis com um
fim no final;
Tipos estruturados heterogêneos
 Declaração:
var nome: registro
nome1:tipo de dados;
nome2:tipo de dados;
...
nomeN:tipo de dados;
fim;
Tipos estruturados heterogêneos
 Exemplo de declaração:

var aluno: registro


ca:inteiro;
nome:caracteres;
notafinal:real;
fim;
Criação de novos tipos de dados
 Podemos criar nossos próprios tipos
de dados usando:
tipo nome= declaração;
 Exemplo:
tipo aluno = registro
Nome:caracteres;
nt1,nt2:reais;
fim;
Tipos estruturados heterogêneos
 Utilização:
utilizar o nome seguido de “.” (ponto) e
o nome do elemento do registro que
deseja considerar tanto para atribuição
de valores quanto para a recuperação;
 Não omitir o elemento a referenciar;

nome . elemento
Tipos estruturados heterogêneos
 Exemplo de utilização:
...
leia(aluno.ca);
leia(aluno.nome);
leia(aluno.notafinal);
...
considerando a declaração
do exemplo anterior...
Subrotinas
Rotina que executa uma tarefa
específica que pode ser:

 Procedimento: Não retorna valor à


rotina chamadora de forma explícita;
 Função: Retorna um único valor à
rotina chamadora de forma explícita;
Subrotinas (Procedimento)
Sintaxe:

procedimento nome (parâmetros);


var variáveis locais;
início
comandos;
fim;
Subrotinas (Procedimento)
Exemplo:

procedimento linha (tamanho:inteiro);


var i:inteiro;
início
para i:= 1 até tamanho faça
escreva(´-´);
escreva;
end;
Subrotinas (função)
Sintaxe:

função nome (parâmetros):tipo;


var variáveis locais;
início
comandos;
retorne valor de retorno;
fim;
Subrotinas (função)
Exemplo:

função soma (n1,n2:inteiro):inteiro;


var total: inteiro;
início
total:=n1+n2;
soma:=total;
fim;
Parâmetros (valor e referência)
 Valor (ou cópia): As alterações dentro da
rotina não alteram as variáveis da rotina
chamadora passadas como parâmetro;
 Referência: As alterações dentro da rotina
alteram as variáveis da rotina chamadora
passadas (basta usar o var antes da
declaração dos parâmetros);