Buscar

Algoritmos Prof. Adriano Tech_EA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 107 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 107 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 107 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Universidade de São Paulo 
Faculdade de Zootecnia e Engenharia de Alimentos 
Disciplina: ZAB0264 – Introdução à Computação 
Curso: Engenharia de Alimentos (2014) 
Prof. Dr. Adriano Rogério Bruno Tech 
Créditos Aula: 4 
Créditos Trabalho: 0 
Carga Horária Total: 60 h 
Tipo: Semestral 
Início: 
 
Término: 
03/08/2014 
 
01/12/2014 
Objetivos 
 Introduzir noções de algoritmos, de computadores e de 
computação. Estudar uma linguagem de alto nível. Treinamento 
prático de utilização de computadores pessoais. Disciplina de 
formação básica. 
Algoritmos. Computadores. Conceitos de linguagens algorítmicas: 
expressões; comandos seqüenciais, seletivos e repetitivos; 
entrada/saída; variáveis estruturadas; Procedimentos. Ensino de 
uma linguagem de programação algorítmica. 
Programa Resumido 
Bibliografia 
FARRER, H., BECKER, C. G.; FARIA, E. C.; MATOS, H. F. M. L. Maia 
Algoritmos Estruturados 3a. edição LTC (2001). 
SAVITCH, W. C++ absoluto. Editora Addison Wesley 2003. 
ADAMS, J. C++ An introduction to computing. Ed. Prentice Hall, 1998. 
IRVINE, K.R., C++ And object programming. Ed. Prentice Hall, 
MANZANO, J.A.N. & OLIVEIRA, J.F. Algoritmos - lógica para 
desenvolvimento de programação. Ed. Érica, 1996. 
GOMES. Fundamentos de programação da linguagem. Ed. Érica, 1991. 
STROUSTRUP, B. Linguagem de programação C++, A. Ed. Brookman, 2000. 
FORBELLONE, André. Lógica de programação. Ed. Makron Books, 2000. 
FORBELLONE, André; EBERSPÄCHER, Henri F. Algoritmos e 
Programação. 3ª ed. Pearson Education, 2008. 
KOTANI, A.M., SOUZA, R.L. & UCCI, W. Lógica de programação. Ed. Érica, 
1991. 
PACITTI, T. Programação - princípios. Ed. Livro Técnico e Científico, 1986 
Algoritmos e Programação 
de Computadores 
Universidade de São Paulo 
Faculdade de Zootecnia e Engenharia de Alimentos 
Prof. Dr. Adriano Rogério Bruno Tech 
Tópicos Preliminares 
Objetivo: 
• Apresentar os tipos básicos de dados a serem adotados na 
 construção dos Algoritmos; 
• Definir constantes e variáveis, explicando sua utilização; 
• Explicar as expressões aritméticas e as lógicas; 
• Conceituar o processo de atribuição (inicialização); 
• Apresentar a importância e a aplicação dos comandos de 
 entrada e saída de dados; 
• Conceituar blocos lógicos. 
Antes de iniciarmos alguns conceitos devem ser 
relembrados, dentre eles: 
 
 1- O que é Lógica? 
 
 2- O que é Lógica de Programação? 
 
 3- O que é um Algoritmo? 
 
 4- Por que é importante construir um ALGORITMO? 
 
Universidade de São Paulo 
Faculdade de Zootecnia e Engenharia de Alimentos 
Respondendo: 
 
1- A LÓGICA é a arte de bem pensar, que é a ciência das formas 
do pensamento. Visto que a forma mais complexa do pensamento 
é o raciocínio, a LÓGICA estuda a “correção do raciocínio”. 
Podemos ainda dizer que a lógica tem em vista a “ordem da 
razão”. Isso dá a entender que a nossa razão pode funcionar 
desordenadamente. 
Por isso, a LÓGICA estuda e ensina a colocar “ordem no 
pensamento”. 
Universidade de São Paulo 
Faculdade de Zootecnia e Engenharia de Alimentos 
Respondendo: 
 
2- A LÓGICA DE PROGRAMAÇÃO significa o uso correto das leis 
do pensamento, da “ordem da razão” e de processos de raciocínio 
e simbolização formais na programação de computadores, 
objetivando a racionalidade e o desenvolvimento de técnicas que 
cooperem para a produção de soluções logicamente válidas e 
coerentes, que resolvam com qualidade os problemas que se 
deseja programar. 
Universidade de São Paulo 
Faculdade de Zootecnia e Engenharia de Alimentos 
Respondendo: 
 
3- ALGORITMO é uma seqüência de instruções organizadas de 
forma lógica e estruturada (sem desvios), expressas em linguagem 
natural (Português estruturado), que tem por finalidade resolver um 
problema ou descrever uma tarefa. 
Ou 
Um ALGORITMO pode ser definido como uma seqüência de 
passos que visam a atingir um objetivo bem definido. 
 
 
 
Universidade de São Paulo 
Faculdade de Zootecnia e Engenharia de Alimentos 
Respondendo: 
 
4- Um ALGORITMO tem por objetivo representar mais fielmente o 
raciocínio envolvido na Lógica de Programação e, dessa forma, 
permite-nos abstrair de uma série de detalhes computacionais, que 
podem ser acrescentados mais tarde. Assim, podemos focalizar 
nossa atenção naquilo que é importante: a lógica da construção de 
algoritmos. 
Universidade de São Paulo 
Faculdade de Zootecnia e Engenharia de Alimentos 
Respondendo: 
 
Outra importância da construção de algoritmos é que uma vez 
concebida uma solução algorítmica para um problema, esta pode 
ser traduzida para qualquer linguagem de programação e ser 
agregada das funcionalidades disponíveis nos diversos ambientes, 
costumamos denominar esse processo de CODIFICAÇÃO. 
 
 
Universidade de São Paulo 
Faculdade de Zootecnia e Engenharia de Alimentos 
Representando um Algoritmo 
Os algoritmos podem ser representados de várias formas, como por 
exemplo: 
 
a) Através de uma língua (português, inglês, etc.): forma utilizada nos 
manuais de instruções, nas receitas culinárias, bulas de 
medicamentos, etc. 
 
b) Através de uma linguagem de programação (Pascal, C, Delphi, etc.): 
esta forma é utilizada por alguns programadores experientes, que 
"pulam" a etapa do projeto do programa (algoritmo) e passam direto 
para a programação em si. 
 
c) Através de representações gráficas: são bastante recomendáveis, já 
que um "desenho" (diagrama, fluxograma, etc.) muitas vezes 
substitui, com vantagem, várias palavras. 
 
Representando um Algoritmo 
Cada uma dessas formas de representar um algoritmo, tem suas 
vantagens e desvantagens, cabe a pessoa escolher a forma que 
melhor lhe convir. Nesta disciplina serão apresentadas três formas 
de representação de algoritmos (que são algumas das mais 
utilizadas), são elas: 
 
1- Diagrama de Nassi-Shneiderman (Diagrama de Chapin) 
2- Fluxograma (Diagrama de Fluxo) 
3- Português Estruturado (Pseudocódigo, Portugol ou 
 Pseudolinguagem) 
 
Português Estruturado 
início 
 <instruções> 
 se <condição> então 
 <instruções> 
 senão 
 <instruções> 
 fim_se 
fim 
Exemplo de Fluxograma 
Exemplo de Diagrama de Chapin 
Tipos Primitivos 
Tipos básicos que usaremos na construção de 
algoritmos: 
• Inteiro: todo e qualquer dado (informação) numérica que 
pertença ao conjunto dos números inteiros relativos (negativa, nula 
ou positiva); 
• Real: todo e qualquer dado (informação) numérica que pertença 
ao conjunto dos números reais (negativa, nula ou positiva); 
• Caracter: todo e qualquer dado (informação) composta de um 
conjunto de caracteres alfanuméricos: numéricos (0..9), alfabéticos 
(A..Z, a..z) e especiais (por exemplo, #, $, ?, !, @); 
• Lógico: todo e qualquer dado (informação) que pode assumir 
apenas duas situações (biestável) – Verdadeiro ou Falso, 0 ou 1, V 
ou F. 
Constantes 
 Um dado é constante quando não sofre alterações ou variações no 
decorrer do tempo, ou seja, seu valor é constante do início da 
execução do algoritmo até o final. 
 Para diferenciar os dados constantes de tipo caracter dos outros 
tipos, usaremos aspas duplas (“ ”) para delimitá-los. 
 Convencionaremos que as informações do tipo lógica poderão 
assumir um dos dois estados ou valores constantes: Verdade (V) ou 
Falsidade (F). 
 
Exemplos: “PARE”, 2345, -0.58, V. 
Variável 
 Como o próprio nome diz, ela é variável no tempo, ou seja, um 
dado é classificado como variável quando tem a possibilidade de ser 
alteradoou modificado em algum instante no decorrer do tempo. 
 Durante a execução do algoritmo em que é utilizado, o valor do 
dado sofre alteração ou o dado é dependente da execução em um 
certo momento ou circunstância. 
 
Exemplos: A cotação do EURO, o peso de um animal ou 
a inflação mensal. 
Ilustração da diferença entre CONSTANTE E VARIÁVEL 
 Um exemplo típico que ilustra bem essa diferença é o cálculo da 
área de uma circunferência, onde temos a seguinte fórmula: πr2. 
Nesta fórmula temos a caracterização de uma constante e de uma 
variável, observe: 
 π = constante (pois seu valor é 3,141596...); 
r2 = variável (pois o valor de r (raio), varia de acordo com o tamanho da 
circunferência). 
Formação de Identificadores 
 Os nomes das variáveis ou constantes também são chamados de 
identificadores, ou seja, um elemento que identifica uma variável 
ou constante durante a construção de um algoritmo. 
Exemplo: xnome = significa que está variável ou constante 
representa o nome de um elemento do mundo real (xnome = 
“Adriano”, xidade = 20). 
Assim, xnome e xidade identificam “alguém ou alguma coisa” 
do mundo real, ou seja, os elementos ou procedimentos que estão 
sendo manipulados pelo algoritmo. 
Formação de Identificadores 
 Regras de criação: 
 1 – Devem começar por um caracter alfabético. 
 2 – Podem ser seguidos por mais caracteres alfabéticos ou 
 numéricos. 
 3 – Não devem ser usados caracteres especiais e espaços entre 
 as letras. 
O diagrama de sintaxe a seguir resume graficamente essas regras: 
identificador letra 
letra 
dígito 
Formação de Identificadores 
 Exemplos: 
 1 – Identificadores válidos: 
 a) Alpha, Beta, CX234, J8, Média, ISS, FGTS, XNOME. 
 
 2 – Identificadores inválidos: 
 a) 8C, A(15), A:B, X-Y, AB, Nota / 2, AB C, C&T 
 
Declaração de Variáveis 
No ambiente computacional, os dados são armazenados em 
variáveis e estas são guardadas em dispositivos eletrônicos, 
analogamente chamados de memória. 
Podemos imaginar essa “memória” como sendo um armário repleto 
de gaveta, no qual as gavetas seriam os locais físicos responsáveis 
por armazenar objetos. 
Os objetos (que podem ser substituídos) seriam os dados e as 
gavetas as variáveis. 
Declaração de Variáveis 
Visto que na memória (armário) existem inúmeras variáveis 
(gavetas), precisamos diferenciá-las, o que é feito através dos 
identificadores (etiquetas ou rótulos). 
Cada variável (gaveta), no entanto, pode guardar apenas um dado 
(objeto) de cada vez, sendo sempre de mesmo tipo primitivo 
(material). 
Portanto, precisamos definir nomes (identificadores) que serão 
responsáveis por armazenar dados em seu interior. 
Regra Sintática para criação de variáveis 
Declaração de variáveis tipo : identificador ; 
, 
tipo inteiro 
real 
caracter 
lógico 
Declaração de Variáveis 
 Exemplos: 
 
 inteiro: X, Xidade; 
 caracter: Xnome, Endereço, Data; 
 real: ABC, XPTO, Valor, Medida; 
 lógico: Resposta, F01; 
Expressões Aritméticas 
 Denominamos expressão aritmética aquela cujos 
operadores são aritméticos e cujos operandos são constantes ou 
variáveis do tipo numérico (inteiro ou real). 
expressão aritmética operando 
operador 
aritmético 
operando 
operando constante numérica 
constante numérica 
Operadores Aritméticos 
 Recebem o nome de operadores aritméticos o conjunto de 
símbolos que representam as operações básicas da matemática, 
conforme tabela 1, que são: 
Operador Função Exemplos 
* Multiplicação 3 * 4, A * B 
/ Divisão 10 / 2, X1 / X2 
+ Adição 2 + 3, X + Y 
- Subtração 4 – 2, n - M 
Operadores Aritméticos 
 Para representar as operações de radiciação e 
potenciação, usaremos as palavras-chave rad e pot, 
conforme tabela 2: 
Operador Função Significado Exemplos 
pot(x,y) Potenciação x elevado a y pot(2,3) 
rad(x) Radiciação Raiz quadrada de x rad(9) 
Operadores Aritméticos 
 Usaremos outras operações matemáticas não-
convencionais, porém muito úteis na construção de 
algoritmos, que são o resto da divisão e o quociente da 
divisão inteira, conforme a tabela 3: 
Operador Função Exemplos 
mod Resto da Divisão 9 mod 4 resulta 1 
div Quociente da 
Divisão 
9 div 4 resulta 2 
Prioridades nas expressões matemáticas 
 Na resolução das expressões aritméticas, as 
operações guardam uma hierarquia entre si, conforme a 
tabela 4: 
Prioridade Operadores 
1ª Parênteses mais internos 
2ª pot e rad 
3ª * / div mod 
4ª + - 
Observação: Em caso de empate (operadores de mesma prioridade), 
devemos resolver da esquerda para a direita, conforme a seqüência 
existente na expressão aritmética. Para alterar a prioridade da tabela, 
utiliza-se parênteses mais internos. 
Expressões Lógicas 
 Denominamos expressão lógica é aquela cujos 
operadores são lógicos ou relacionais e cujos operandos 
são relações ou variáveis ou constantes do tipo lógico: 
expressão lógica operando lógico operando lógico 
operando lógico 
não 
constante lógica 
variável lógica 
expressão relacional 
Operadores Relacionais 
 Utilizamos os operadores relacionais para realizar 
comparações entre dois valores de mesmo tipo primitivo. 
Tais valores são representados por constantes, variáveis 
ou expressões aritméticas, conforme tabela 5: 
Operador Função Exemplos 
= Igual a 3 = 3, X = Y 
> Maior que 5 > 3, X > Y 
< Menor que 3 < 5, X < Y 
>= Maior ou igual a 5 >= 3, X >= Y 
<= Menor ou igual a 3 <= 5, X <= Y 
<> Diferente de 9 <> 10, X <> Y 
Operadores Relacionais 
 O resultado obtido de uma relação é sempre um valor 
lógico. Por exemplo, analisando a relação numérica 
A + B = C, o resultado será verdade ou falsidade à 
medida que o valor da expressão A + B seja igual ou 
diferente do conteúdo da variável C, respectivamente. 
Operadores Relacionais 
 Exemplos: 
a) 2 * 4 = 24 / 3 b) 15 mod 4 < 19 mod 6 
 8 = 8 3 < 1 
 V F 
 
c) 3 * 5 div 4 <= pot(3,2)/0,5 d) 2 + 8 mod 7 >= 3 * 6 - 15 
 15 div 4 <= 9/0,5 2 + 1 >= 18 - 15 
 3 <= 18 3 >= 3 
 V V 
 
Operadores Lógicos 
 Utilizaremos três operadores básicos para a formação 
de novas proposições lógicas compostas a partir de 
outras proposições lógicas simples. Os operadores 
lógicos estão descritos na tabela 6. 
Operador Função 
não Negação 
e Conjunção 
ou Disjunção 
Tabelas-Verdade 
 Tabela Verdade é o conjunto de todas as possibilidades 
combinatórias entre os valores de diversas variáveis 
lógicas, as quais se encontram em apenas duas 
situações (V ou F), e um conjunto de operadores lógicos. 
Operação de Negação 
A não A 
F V 
V F 
Tabelas-Verdade 
Operação de Conjunção 
A B A e B 
F F F 
F V F 
V F F 
V V V 
Observação: A operação de conjunção é representado por “e” ou “^” ou 
“*”, assim a conjunção significa multiplicar um elemento pelo outro. 
O valor correspondente ao V (Verdadeiro) é “1” e para o F (Falso) é “0”. 
Tabelas-Verdade 
Operação de Disjunção não-exclusiva 
A B A ou B 
F F F 
F V V 
V F V 
V V V 
Observação: A operação de conjunção é representado por “ou” ou “v” ou 
“+”, assim a disjunção significa somar um elemento com outro. 
O valor correspondente ao V (Verdadeiro) é “1” e para o F (Falso) é “0”. 
Prioridades 
Precedência entre os operadores lógicos 
Prioridade Operadores 
1ª não 
2ª e 
3ª ou 
Entre os operadores lógicos: 
Precedência entre os operadores lógicos 
Prioridade Operadores1ª não 
2ª e 
3ª ou 
Entre todos os operadores: 
Exemplos 
a. não ((5 <> 10 / 2) ou V e 2 – 5 > 5 - 2 ou V) 
 não (5 <> 5 ou V e -3 > 3 ou V) 
 não (F ou V e F ou V) 
 não (F ou F ou V) 
 não (F ou V) 
 não (V) 
 F 
b. pot(2,4) <> 4 + 2 ou 2 + 3 * 5 / 3 mod 5 < 0 
 16 <> 6 ou 2 + 15 / 3 mod 5 < 0 
 16 <> 6 ou 2 + 5 mod 5 < 0 
 16 <> 6 ou 2 + 0 < 0 
 16 <> 6 ou 2 < 0 
 V ou F 
 V 
Comando de Atribuição 
 Um comando de atribuição permite-nos fornecer um valor a uma variável, 
em que o tipo do dado deve ser compatível com o tipo da variável, isto é, 
somente podemos atribuir um valor lógico a uma variável capaz de comportá-
lo, ou seja, uma variável declarada como sendo do tipo lógico. 
O comando de atribuição possui a seguinte sintaxe: 
atribuição identificador expressão 
expressão expressão aritmética 
expressão lógica 
expressão literal 
; ← 
Exemplos 
 Esses comandos atribuem às variáveis A, X e B os valores fornecidos à 
direita do símbolo de atribuição. Vale ressaltar que à esquerda do comando 
de atribuição deve existir apenas um identificador. 
 
lógico: A, B; 
inteiro: X; 
A  B; 
X  8 + 13 div 5; 
B  5 = 3; 
X  2; 
Comandos de Entrada e Saída 
 Os algoritmos precisam ser “alimentados” com dados provenientes do 
meio externo, ou seja, do mundo real, para efetuarem as operações e 
cálculos que são necessários a fim de alcançar o resultado desejado. Com 
essa finalidade, utilizaremos os comandos de entrada e saída. 
Entrada de 
dados 
Processamento dos 
dados 
Saída dos 
dados 
Entrada de Dados 
 Para que o algoritmo possa receber os dados de que necessita, 
adotaremos um comando de entrada de dados denominado “leia”, cuja 
finalidade é atribuir o dado a ser fornecido à variável identificada. 
entrada de dados leia ( identificador ) ; 
Exemplos: 
 leia (X); 
 leia (A, XVAR, VALOR); 
Saída de Dados 
 Para que o algoritmo possa mostrar os dados que calculou, como resposta 
ao problema que resolveu, adotaremos um comando de saída de dados 
denominado “escreva”, cuja finalidade é exibir o conteúdo da variável 
identificada. 
saída de dados escreva ( identificador ) ; 
Exemplos: 
 escreva (Y); 
 escreva (A, XVAR, VALOR / 4); 
 escreva (“Boa Tarde”, XNOME); 
 escreva (“Você tem de altura”, H, “cm”); 
, 
expressão 
Blocos 
 Um bloco pode ser definido como um conjunto de ações com uma função 
definida; nesse caso, um algoritmo pode ser visto como um bloco. Ele serve 
também para definir os limites nos quais as variáveis declaradas em seu 
interior são conhecidas. 
Para delimitar um bloco, utilizamos os delimitadores início e fim. 
blocos início ação fim ; 
Exemplos: 
 início // início do bloco (algoritmo) 
 // declaração de variáveis 
 // seqüência de ações 
 fim. // fim do bloco (algoritmo) 
; 
Observação: o uso de // serve para 
descrever um evento. O que vier após o // 
não será executado, é usado apenas como 
um comentário. 
Exercícios 
1- Assinale os identificadores válidos: 
a) (X) b) U2 c) AH! d) “Aluno” e) #55 
f) KM/L g) YUT h) ASDRUBAL i) AB*C j) 0&0 
 
2- Encontre os erros das seguintes declarações de variáveis: 
 inteiro: Endereço, NFilhos; 
 caracter: Idade, X; 
 real: XPTO, C, Peso, R$; 
 lógico: Lâmpada, C; 
Exercícios 
3- Supondo que A, B e C são variáveis de tipo inteiro, com valores iguais a 5, 
10 e -8, respectivamente, e uma variável real D, com valor de 1,5, quais os 
resultados das expressões aritméticas a seguir? 
 a) 2 * A mod 3 – C 
 b) rad(-2 * C) div 4 
 c) ((20 div 3) div 3) + pot(8,2) / 2 
4- Determine os resultados obtidos na avaliação das expressões lógicas 
seguintes, sabendo que A, B, C contêm, respectivamente, 2, 7, 3.5, e que 
existe uma variável lógica L cujo valor é falsidade (F): 
 a) B = A * C e (L ou V) 
 b) não L ou V e rad(A + B) >= C 
 c) L ou pot(B,A) <= C * 10 + A * B 
Exercícios 
5- Encontre os erros dos seguintes comandos de atribuição: 
 
 lógico: A; 
 real: B, C; 
 inteiro: D; 
 A  B = C; 
 D  B; 
 C + 1  B + C 
 C e B  3.5; 
 B  pot(6,2) / 3 <= rad(9) * 4 
Estruturas de Controle 
Objetivos 
 
1. Apresentar o conceito de estrutura seqüencial de fluxo de execução 
e ilustrar a construção de algoritmos através de etapas lógicas; 
2. Explicar a aplicabilidade das estruturas de seleção, suas variantes, 
combinações e equivalências; 
3. Apresentar as estruturas de repetição, suas particularidades, 
aplicações e equivalências. 
Estruturas de Controle 
Roteiro de atividades 
 
1. Estruturas de controle do fluxo de execução; 
2. Estrutura seqüencial; 
3. Estrutura de seleção; 
4. Estrutura de repetição; 
5. Aplicações específicas de cada estrutura. 
Estruturas de Controle 
 Na criação de algoritmos, utilizamos os conceitos de bloco lógico, 
entrada e saída de dados, variáveis, constantes, atribuições, expressões 
lógicas, relacionais e aritméticas, bem como comandos que traduzam 
esses conceitos de forma a representar o conjunto de ações a serem 
executadas. 
 Para que esse conjunto de ações se torne viável, deve existir uma 
perfeita relação lógica intrínseca ao modo pelo qual essas ações são 
executadas, ao modo pelo qual é regido o FLUXO DE EXECUÇÃO do 
algoritmo. 
 Por meio das estruturas básicas de controle de fluxo de execução – 
seqüenciação, seleção, repetição – e da combinação delas, poderemos 
criar algoritmos para solucionar nossos problemas. 
 
Estrutura Seqüencial 
 A estrutura seqüencial de um algoritmo corresponde ao fato de que o 
conjunto de ações primitivas será executado em uma seqüência linear de 
cima para baixo e da esquerda para a direita, isto é, na mesma ordem em 
que forma escritas. 
 
 Convencionaremos que as ações serão seguidas por um ponto-e-vírgula 
(;), que objetiva separar uma ação da outra e auxiliar a organização 
seqüencial das ações, pois após encontrar um (;) deveremos executar o 
próximo comando da seqüência ou linha de comando. 
Estrutura Seqüencial 
 O algoritmo a seguir ilustra o modelo básico que usaremos para escrever 
os algoritmos. Identificamos o bloco, colocando início e fim, e dentro dele 
iniciamos com a declaração das variáveis e depois o corpo do algoritmo. 
1. início // identificação do início do bloco correspondente ao algoritmo 
2. 
3. // declaração das variáveis ou constantes 
4. 
5. // corpo do algoritmo 
6. Ação 1; 
7. Ação 2; 
8. Ação 3; 
9. . 
10. . 
11. . 
12. Ação n; 
13. 
14. fim. // fim do algoritmo 
 
Exemplo 1 
 Construa um algoritmo que calcule a média aritmética entre quatro notas 
bimestrais quaisquer fornecidos por um aluno. 
 Dados de entrada: quatro notas bimestrais (N1, N2, N3, N4). 
 Dados de saída: média aritmética anual (MA). 
Resolução 
1. início // começo do algoritmo 
2. // declaração de variávies 
3. real: N1, N2, N3, N4, MA; // notas bimestrais 
4. leia(N1, N2, N3, N4); // entrada de dados 
5. MA  (N1 + N2 + N3 + N4) / 4; // processamento 
6. escreva (MA); // saída de dados 
7. fim. // término do algoritmo 
 
Exemplo 2 
 Construa um algoritmo que calcule a quantidade de latas de tinta 
necessárias e o custo para pintar tanques cilíndricos de combustível, emque são fornecidos a altura e o raio desse cilindro. 
 Sabendo que: 
 A lata de tinta custa R$ 50,00; 
 Cada lata contém 5 litros; 
 Cada litro de tinta pinta 3 metros quadrados. 
 Dados de entrada: altura (H) e raio (R). 
 Dados de saída: custo (C) e quantidade (QTDE). 
Lógica reversa (Construção do Pensamento) 
 Utilizando o planejamento reverso, sabemos que: 
1. O custo é dado pela quantidade de latas * R$ 50,00; 
2. A quantidade de latas é dada pela quantidade total de litros / 5; 
3. A quantidade total de litros é dada pela área do cilindro / 3; 
4. A área do cilindro é dada pela área da base + área lateral; 
5. A área da base é (PI * pot(R,2)); 
6. A área lateral é altura * comprimento: (2 * PI * R * H); 
7. Sendo que R (raio) e H (altura) são dados de entrada e PI é uma 
constante de valor conhecido: 3,141596, para nós PI = 3,14. 
Resolução 
1. início // começo do algoritmo 
2. // declaração de variávies e constantes 
3. const PI  3,14, Valor  50,00; 
3. real: H, R; // declaração das variáveis 
4. real: C, Qtde, Area, Litro; // declaração das variáveis 
5. leia(H, R); // entrada de dados 
6. AREA  (PI * pot(R, 2)) + (2 * PI * R * H); // processamento 
7. Litro  AREA / 3; // processamento 
8. Qtde  Litro / 5; 
9. C  Qtde * Valor; 
10. escreva (C, Qtde); // saída de dados 
7. fim. // término do algoritmo 
 
Exercícios 
1. Construa um algoritmo para calcular as raízes de uma equação do 2º 
grau (ax2 + bx + c), sendo que os valores de a, b e c são fornecidos pelo 
usuário (considere que a equação possui duas raízes reais). 
2. Construa um algoritmo que, tendo como dados de entrada dois pontos 
quaisquer do plano, P(x1, y1) e Q(x2, y2), imprima a distância entre eles. 
 A fórmula que efetua tal cálculo é: d= SQRT((x2 – x1)
2 + (y2 – y1)
2), que 
reescrita utilizando os operadores matemáticos adotados fica: 
 d = rad(pot(x2 – x1, 2) + pot(y2 – y1,2)) 
3. Faça um algoritmo para calcular o volume de uma esfera de raio R, em 
que R é um dado fornecido pelo usuário. O volume de uma esfera é dado 
por V = 4/3*PI*R3. 
Estruturas de Seleção 
 Quando precisamos testar uma certa condição antes de executar uma 
ação, usamos uma SELEÇÃO SIMPLES, que segue o seguinte modelo: 
 
 se <condição> então 
 C1; 
 fimse; 
<condição> é uma expressão lógica que, quando inspecionada, pode gerar 
um resultado (F) ou (V); 
Se <condição> for V, a ação será executada, caso contrário encerra-se a 
seleção (fimse), neste caso não será executado nenhum comando. 
 
Estruturas de Seleção 
 Pelo diagrama de sintaxe observamos que, quando existir apenas um 
comando a ser executado após a condição, basta escrevê-la em uma 
linha. Agora, quando precisamos colocar diversas ações (comandos) é 
necessário usar um bloco de comando delimitado por início e fim, 
conforme a sintaxe abaixo: 
se <condição> então 
 início 
 C1; 
 C2; 
 : 
 Cn; 
 fim; 
fimse; 
 
Estruturas de Seleção 
Se <condição> for V (verdadeira), então o “bloco verdade”, seqüência de 
comandos será executada, caso contrário, nada será executado, encerrando-
se a seleção fimse. 
A existência do bloco (início e fim) é necessária devido à existência de um 
conjunto de ações primitivas sob a mesma cláusula então. 
Exemplo 
Vamos ampliar o escopo do Algoritmo que calcula a Média Aritmética das 
notas. Supondo serem N1, N2, N3 e N4 as quatro notas bimestrais de um 
aluno, podemos avaliar sua situação quanto à aprovação, nesse sentido, 
obtida atingindo-se média superior ou igual a 7. 
Teríamos, então, como informações de saída a média anual e uma 
informação adicional, se o aluno for aprovado. 
Solução 
1. início 
2. real: N1, N2, N3, N4, MA; 
3. leia (N1, N2, N3, N4); 
4. MA  (N1+N2+N3+N4) / 4; 
5. escreva (MA); 
6. se (MA >= 7) então 
7. escreva (“Aluno Aprovado!”); 
8. fimse; 
9. fim. 
 
Seleção Composta 
Quando tivermos situações em que duas alternativas dependem de uma 
mesma condição, uma em caso de verdadeira e outra em caso de falsa, 
usamos a estrutura de seleção composta. 
Supondo que um conjunto de ações dependa da avaliação verdadeiro e 
uma única ação primitiva dependa da avaliação falso, usaremos uma 
estrutura de seleção semelhante ao seguinte modelo: 
Seleção Composta 
se <condição> 
 então 
 início 
 C1; 
 C2; 
 : 
 Cn; 
 fim; 
 senão 
 C; {ação primitiva} 
fimse; 
 
Seleção Composta 
Observamos que a existência do bloco verdade continua, sendo que ele 
será executado caso <condição> (expressão lógica) seja verdadeira. 
Porém, a seleção agora é composta, pois, caso o resultado seja falso, 
teremos a execução do comando C (ação primitiva) que segue a cláusula 
senão. 
No caso de existir um conjunto de ações que deveria ser executado quando 
o resultado da condição fosse falso, criaríamos um “bloco falsidade”, como 
apresentado no seguinte modelo: 
Seleção Composta 
se <condição> 
 então 
 início // início do bloco verdade 
 C1; 
 C2; 
 : 
 Cn; 
 fim; 
 senão 
 início // início do bloco falsidade 
 C1; 
 C2; 
 : 
 Cn; 
 fim; 
fimse; 
 
Exemplo Seleção Composta 
Vamos inserir no exemplo anterior a informação que provém do resultado 
falso da condição (MA >= 7), ou seja, a reprovação do aluno. 
Exemplo Seleção Composta 
1. início 
2. real: N1, N2, N3, N4, MA; 
3. leia (N1, N2, N3, N4); 
4. MA  (N1+N2+N3+N4) / 4; 
5. escreva (MA); 
6. se (MA >= 7) 
7. então 
8. início 
9. escreva (“Aluno Aprovado!”); 
10. escreva (“Parabéns”); 
11. fim; 
12. senão 
13. início 
14. escreva (“Aluno Reprovado!”); 
15. escreva (“Estude mais!”); 
16. fim; 
17. fimse; 
18. fim. 
 
Seleção Encadeada 
Quando, devido à necessidade de processamento, agruparmos várias 
seleções, formaremos uma seleção encadeada. Normalmente, tal formação 
ocorre quando uma determinada ação ou bloco deve ser executado se um 
grande conjunto de possibilidades ou combinações de situações for satisfeito. 
Quando não conseguimos identificar um padrão lógico de construção em 
uma estrutura de seleção encadeada, dizemos que ela é uma estrutura de 
seleção encadeada heterogênea. 
O modelo a seguir expressa um exemplo de uma seleção deste tipo: 
se <condição 1> 
 então 
 se <condição 2> então 
 início // bloco verdade 1 
 C1; 
 : 
 C2; 
 fim 
 fimse; 
 senão 
 se <condição 3> 
 então 
 início // bloco verdade 2 
 
 C1; 
 
 
 : 
 
 C2; 
 
 fim 
 senão 
 se <condição 4> 
 então 
 se <condição 5> então 
 CV; // comando verdade 
 fimse; 
 senão 
 CF; // comando falsidade 
 fimse; 
 fimse; 
fimse 
 
 
Seleção Encadeada 
Podemos resumir todas as variações possíveis da seleção encadeada do 
modelo anterior em uma tabela de decisão, conforma tabela abaixo: 
Condição 1 Condição 2 Condição 3 Condição 4 Condição 5 Ação 
executada 
V V - - - BV 1 
F - V - - BV 2 
F - F V V CV 
F - F F - CF 
Observação:BV – Bloco Verdade; 
 CV – Comando Verdade; 
 CF – Comando Falsidade. 
Seleção Encadeada Heterogênea 
Uma tabela de decisão é uma construção tabular que apresenta todas as 
variações possíveis para uma certa estrutura de seleção. 
Usualmente, colocamos as condições em colunas, enquanto as linhas 
representam as situações possíveis. 
A última coluna indica qual ação será executada quando aquela 
combinações de resultados for satisfeita. 
Exemplos 
1) Dados três valores A, B e C, verificar se eles podem ser os comprimentos 
dos lados de um triângulo, se forem, verificar se compõem um triângulo 
eqüilátero, isósceles ou escaleno. Informar se não compuserem nenhum 
tipo de triângulo. 
 
 Dados de entrada: três lados de um suposto triângulo (A, B e C); 
 Dados de saída: mensagens: não compõem triângulo, triângulo 
 eqüilátero, triângulo isósceles ou triângulo escaleno. 
 
Exemplos 
Traduzindo as condições para expressões lógicas, temos: 
 
1) É triângulo: (A < B + C) e (B < A + C) e (C < A + B); 
2) É eqüilátero: (A = B) e (B = C); 
3) É isósceles: (A = B) ou (A = C) ou (B = C); 
4) É escaleno: (A <> B) e (B <> C) e (A <> C). 
Seleção Encadeada 
Montando a tabela de decisão, temos: 
É triângulo? É Eqüilátero? É Isósceles? É Escaleno? Ação 
Executada 
V V F F “Eqüilátero” 
V F V - “Isósceles” 
V F F V “Escaleno” 
F - - - “Não é 
triângulo” 
Tipo de Triângulo 
1. início 
2. inteiro: A, B, C; 
3. leia (A, B, C); 
4. se ((A < B + C) e (B < A + C) e (C < A + B)) 
5. então 
6. se ((A = B) e (B = C)) 
7. então 
8. escreva (“Triângulo Eqüilátero”); 
9. senão 
10. se ((A = B) ou (A = C) ou (B = C)) 
11. então 
12. escreva (“Triângulo Isósceles”); 
13. senão 
14. escreva (“Triângulo Escaleno”); 
15. fimse; 
16. fimse; 
17. senão 
18. escreva (“Estes valores não formam um triângulo!”); 
19. fimse; 
20. fim. 
Seleção encadeada Homogênea 
 Chamamos de seleção encadeada homogênea a construção de diversas 
estruturas de seleção encadeadas que seguem um determinado padrão 
lógico. 
 
 se então se 
 Vamos supor que, em um dado algoritmo, um comando genérico X 
deva ser executado apenas quando forem satisfeitas as condições 1, 
2, 3 e 4. Teríamos: 
Seleção encadeada Homogênea 
se <condição 1> 
 então se <condição 2> 
 então se <condição 3> 
 então se <condição 4> 
 então X; 
 fimse; 
 fimse; 
 fimse; 
fimse; 
 
Seleção encadeada Homogênea 
 Esta construção segue um padrão. Após cada então existe outro se, 
não existem senões; temos uma estrutura encadeada homogênea. 
Outro fator importante é que o comando X só será executado quando 
todas as condições forem ao mesmo tempo verdadeiras; portanto, seria 
equivalente a escrever, simplesmente: 
 
se (<condição 1> e <condição 2> e <condição 3> e <condição 4>) 
então X; 
fimse; 
Montando a tabela de decisão, temos: 
Condição 1 Condição 2 Condição 3 Condição 4 Ação Executada 
V V V V X 
Seleção encadeada Homogênea 
 Se senão se 
 Vamos supor que em determinadas situações uma variável X possa 
assumir apenas 4 valores, N1, N2, N3, N4, e que exista um comando 
diferente que será executado para cada valor de X. Teremos, por 
exemplo, a seguinte situação: 
 
se (X = N1) 
 então 
 C1; 
fimse; 
: 
se (X = N4) 
 então 
 C4; 
fimse; 
 
Seleção encadeada Homogênea 
Montando a tabela de decisão, temos: 
X = N1 X = N2 X = N3 X = N4 Ação Executada 
V F F F C1 
F V F F C2 
F F V F C3 
F F F V C4 
Portanto, somente uma condição ou comando poderá ser executado. 
Situações deste tipo não são consideradas estrutura encadeada, pois elas não 
estão interligadas, ou seja, ambas serão testadas e somente uma será executada. 
Desta forma, temos perda de eficiência no algoritmo, pois cada condição será 
testada independentemente de ser executada. 
Seleção encadeada Homogênea 
Para diminuir a quantidade de teste e colocá-la em uma estrutura encadeada, 
devemos realizar as seguintes alterações: 
 
 se (X = N1) 
 então C1; 
 senão se (X = N2) 
 então C2; 
 senão se (X = N3) 
 então C3; 
 senão se (X = V4) 
 então C4; 
 fimse; 
 fimse; 
 fimse; 
 fimse; 
Seleção encadeada Homogênea 
 Seleção de múltipla escolha 
 Quando um conjunto de valores discretos precisa ser testado e ações 
diferentes são associadas a esses valores, estamos diante de uma 
seleção encadeada homogênea do tipo se-então-se. Como essa 
situação é bastante freqüente na construção de algoritmos que 
dependem de alternativas, utilizaremos uma estrutura específica para 
estes casos, a seleção de múltipla escolha. 
escolha X 
 caso N1: C1; 
 caso N2: C2; 
 caso N3: C3; 
 caso N4: C4; 
 caso contrário: C5; 
fimescolha; 
Exemplo 
 Construa um algoritmo que, tendo como dados de entrada o preço de um 
produto e seu código de origem, mostre o preço junto de sua procedência. 
Caso o código não seja nenhum dos especificados, o produto deve ser 
encarado como importado. Siga a tabela de códigos a seguir: 
 
Código de origem Procedência 
1 Sul 
2 Norte 
3 Leste 
4 Oeste 
5 ou 6 Nordeste 
7, 8 ou 9 Sudeste 
10 até 20 Centro-Oeste 
25 até 30 Nordeste 
Algoritmo – Múltipla Escola 
1. início 
2. real: Preco; 
3. inteiro: Origem; 
4. leia (Preco, Origem); 
5. escolha Origem; 
6. caso 1: escreva (Preco, “ – produto do Sul”); 
7. caso 2: escreva (Preco, “ – produto do Norte”); 
8. caso 3: escreva (Preco, “ – produto do Leste”); 
9. caso 4: escreva (Preco, “ – produto do Oeste”); 
10. caso 7, 8, 9: escreva (Preco, “ – produto do Sudeste”); 
11. caso 10..20: escreva (Preco, “ – produto do Centro-Oeste”); 
12. caso 5, 6, 25..30: escreva (Preco, “ – produto do Nordeste”); 
13. caso contrário: escreva (Preco, “ – produto importado”); 
14. fimescolha; 
15. fim; 
Estrutura de Repetição 
1)- Repetição com teste no início - ENQUANTO 
 
 Consiste de uma estrutura de controle do fluxo de execução que permite 
repetir diversas vezes um mesmo trecho do algoritmo, sempre verificando antes 
de cada execução se é “permitido” executar o mesmo trecho novamente. 
 Para realizar a repetição com teste no início utilizamos a estrutura 
enquanto, que permite que um bloco ou uma ação primitiva seja repetida 
enquanto uma determinada <condição> for verdadeira. O modelo genérico desse 
tipo de repetição é o seguinte: 
Estrutura de Repetição com teste no início - ENQUANTO 
enquanto <condição> faça 
 C1; 
 C2; 
 C3; 
 : 
 Cn; 
fimenquanto; 
Estrutura de Repetição com teste no início – Exemplo 1 
1. início 
2. real: N1, N2, N3, N4, MA; 
3. inteiro: CON; 
4. CON  0; 
5. enquanto (CON < 50) faça 
6. leia(N1,N2, N3, N4); 
7. MA  (N1 + N2 + N3 + N4) / 4; 
8. escreva(“Média Anual = “, MA); 
9. se (MA >= 7) 
10. então 
11. início 
12. escreva(“Aluno Aprovado”); 
13. escreva(“Parabéns”); 
14. fim; 
15. senão 
16. início 
17. escreva(“Aluno Reprovado”); 
18. escreva(“Estude mais!!!”); 
19. fim; 
 
20. fimse; 
21. CON  CON + 1; 
22. fimenquanto; 
23. fim. 
 
 
Estrutura de Repetição com teste no início – Exemplo 2 
1. início 
2. real: MA, ACM, MAT; 
3. inteiro: CON; 
4. CON  0; 
5. ACM  0; 
6. enquanto (CON < 50) faça 
7. leia(MA); 
8. ACM  ACM + MA; 
9. CON  CON + 1; 
10. fimenquanto; 
11. MAT  ACM/50; 
12. escreva(“Média Anual da turma = “, MAT); 
13. fim. 
Estrutura de Repetição com teste no final - REPITA 
Para realizar a repetição com teste no final, utilizamos a estrutura repita, que 
permite que um bloco ou ação primitiva seja repetido até que uma determinada 
condição seja verdadeira. O modelo genérico desse tipo de repetição é: 
repita 
 C1; 
 C2; 
 C3; 
 : 
 Cn; 
até <condição>; 
Pela sintaxe da estrutura, observamos que o bloco é executado pelo menos uma 
vez, independentemente da validade da condição. Isto ocorre porque o teste ou 
validação é realizada no final do comando de repetição 
Estrutura de Repetição com teste no final - REPITA 
1. início 
2. real: MA, ACM, MAT; 
3. inteiro: CON; 
4. CON  0; 
5. ACM  0; 
6. repita 
7. leia(MA); 
8. ACM  ACM + MA; 
9. CON  CON + 1; 
10. até (CON >= 50); 
11. MAT  ACM/50; 
12. escreva(“Média Anual da turma = “, MAT); 
13. fim. 
Estrutura de Repetição com variável de controle - PARA 
Nas estruturas de repetição vistas até agora, ocorrem casos em que se torna 
difícil determinar o número de vezes em que o bloco será executado. Sabemos 
que ele será executado enquanto um condição for satisfeita – enquanto – ou até 
que uma condição seja satisfeita – repita. A estrutura para é diferente, já que 
repete a execução do bloco um número predeterminado de vezes, pois ela não 
prevê uma condição e possui limites fixos. 
O modelo genérico para a estrutura de repetição para é: 
para V de vi até vf passo p faça 
 C1; 
 C2; 
 C3; 
 : 
 Cn; 
fimpara; 
V é a variável de controle; 
vi é o valor inicial da variável V; 
vf é o valor final da variável V, ou 
seja, o valor até o qual ela vai 
chegar; 
p é o valor do incremento dado à 
variável V. 
Estrutura de Repetição PARA 
1. início 
2. real: MA, ACM, MAT; 
3. inteiro: V; 
4. ACM  0; 
5. para V de 1 até 50 passo 1 faça 
6. leia(MA); 
7. ACM  ACM + MA; 
8. fimpara; 
9. MAT  ACM/50; 
10.escreva(“Média Anual da turma = “, MAT); 
11. fim. 
Estrutura de Dados (Vetor, Matrizes e Registros) 
 Assim como na Teoria dos Conjuntos, uma variável pode ser interpretada 
como um elemento e uma Estrutura de Dados, como um conjunto. 
 Quando uma determinada Estrutura de Dados é composta de variáveis 
com o mesmo tipo primitivo, temos um conjunto homogêneo de dados. 
 Exemplo: Temos um edifício com 10 andares, assim, temos uma Estrutura 
Composta Unidimensional vetor [lin..col]. 
 
 Declaração: 
 tipo classe = vetor [1..40] de reais; 
 tipo classe1 = vetor [1..20] de inteiros; 
 tipo classe2 = vetor [1.10] de caracteres; 
 
 Neste caso, temos uma estrutura composta homogênea unidimensional, 
portanto, a representação de vetores nos remete a uma Estrutura de 
Dados Unidimensional. 
 
 
Estrutura de Dados (Vetor, Matrizes e Registros) 
 Definindo um soma de vetores em português estruturado (soma de dois 
vetores): 
 
 inicio 
 tipo V = vetor[1..50] de inteiros; 
 V: VETA, VETB, VETR; 
 inteiro: X; 
 para X de q até 50 passo 1 faça 
 leia(VETA[X], VETB[X]); 
 VETR[X]  VETA[X] + VETB[X]; 
 escreva(VETR[X]); 
 fimpara; 
 fim. 
 
 
Estrutura de Dados (Vetor, Matrizes e Registros) 
 Variáveis compostas multidimensionais – Neste caso, utilizaremos a 
estrutura de matrizes que permitem o armazenamento de um maior 
número de dados. 
 Exemplo: Temos um edifício com 10 andares e com 4 salas cada andar, 
Estrutura Composta Multidimensional - classe [lin..col, lin..col]. 
 
 Declaração: 
 
 tipo classe = matriz [1..40, 1..20] de reais; 
 tipo classe1 = matriz [1..20, 1..14] de inteiros; 
 tipo classe2 = matriz [1..10, 1..5] de caracteres; 
 
 Neste caso, temos uma estrutura composta homogênea multidimensional, 
portanto, a representação de vetores nos remete a uma Estrutura de 
Dados Multidimensional. 
 
 
Estrutura de Dados (Vetor, Matrizes e Registros) 
 Definindo um soma de matrizes em português estruturado (soma de duas 
matrizes): 
 inicio 
 tipo M = matriz[1..5, 1..5] de inteiros; 
 M: MA, MB, MR; 
 inteiro: I, J; 
 enquanto (I <= 5) faça 
 leia(MA[I,J], MB[I,J]); 
 MR[I,J]  MA[I,J] + MB[I,J]; 
 J  J + 1; 
 fimenquanto; 
 J  1; 
 enquanto (J <= 5) faça 
 I  1; 
 enquanto (I <= 5) faça 
 escreva(MR[I,J]); 
 I  I + 1; 
 fimenquanto; 
 J  J + 1; 
 fimenquanto; 
 fim. 
 
Estrutura de Dados (Vetor, Matrizes e Registros) 
 Um registro permite a interação entre vários tipos de dados. Diferente dos 
vetores e matrizes que permitem uma estrutura de dados homogênea os 
registros permitem uma estrutura de dados heterogênea. 
 
 Exemplo: 
 tipo regEmbarque = registro 
 inteiro: NumPas, NumPoltrona, Idade; 
 caracter: Nome, Data, Origem, Destino, Hora; 
 fimregistro; 
 // declaração da variável composta do tipo registro definido 
 regEmbarque: Embarque; 
 
Estrutura de Dados (Vetor, Matrizes e Registros) 
 Quando acessamos o registro genericamente, estamos referenciando 
obrigatoriamente todos os campos por ele envolvidos. 
 Exemplo: 
 leia(Embarque); 
 escreva(Embarque); 
 
 Para utilizar um campo específico do registro devemos diferenciar esse 
campo. Para tal, utilizaremos o caracter “.” (ponto), a fim de estabelecer a 
separação do nome do registro do nome do campo. 
 
 Exemplo: 
 leia(Embarque.Poltrona); 
 escreva(Embarque.Data); 
Estrutura de Dados (Vetor, Matrizes e Registros) 
 Podemos também, interagir registro com vetores, ou seja, podemos utilizar 
um tipo primitivo vetor dentre de um registro. 
 Exemplo: 
 tipo vDias = vetor[1..6] de inteiros; // definição do tipo vetor 
 tipo regProduto = registro 
 inteiro: Cod; 
 caracter: Nome; 
 real: Preço; 
 vDias: Baixa; // do tipo vetor definido 
 fimregistro; 
 regProduto: Produto; 
Exemplo: Produto.Baixa[1]  10; 
Estrutura de Dados (Vetor, Matrizes e Registros) 
 Podemos também, interagir registro com matrizes, ou seja, podemos 
utilizar um tipo primitivo vetor dentre de um registro. 
 Exemplo: 
 tipo matDias = vetor[1..4, 1..6] de inteiros; // definição do tipo vetor 
 tipo regProduto = registro 
 inteiro: Cod; 
 caracter: Nome; 
 real: Preço; 
 matDias: Baixa; // do tipo matriz definido 
 fimregistro; 
 regProduto: Produto; 
Exemplo: Produto.Baixa[4,3]  10; 
Estrutura de Dados (Vetor, Matrizes e Registros) 
 Podemos também, tipo primitivo vetor com registro, ou seja, imagine que 
queremos controlar os dados de 45 passageiros de um ônibus. Neste caso 
teríamos vetores de registros.Exemplo: 
 //definição do tipo registro 
 tipo regEmbarque = registro 
 inteiro: NumPas, NumPoltrona, Idade; 
 caracter: Nome, Data, Origem, Destino, Hora; 
 fimregistro; 
 // definição do tipo vetor 
 tipo vetEmbarque = vetor [1..45] de regEmbarque; 
 vetEmbarque: Onibus; 
 
Exemplo: 
 Onibus[0].Nome  “José da Silva”;

Outros materiais