You are on page 1of 38

Apostila de Algoritmo

2

SUMÁRIO
1. O QUE É ALGORITMO?.......................................................................................................... 4
1.1. ALGORITMO COMPUTACIONAL..................................................................................................4
1.2. ESTRUTURA DE UM ALGORITMO COMPUTACIONAL.................................................................4
2. TIPOS DE DADOS, VARIÁVEIS E CONSTANTES.............................................................. 6
2.1. TIPOS DE DADOS PRIMITIVOS.....................................................................................................6
2.1.1. INTEIRO......................................................................................................................................6
2.1.2. REAL..........................................................................................................................................6
2.1.3. CARACTERE................................................................................................................................6
2.1.4. LÓGICO.......................................................................................................................................6
2.2. VARIÁVEL.....................................................................................................................................7
2.2.1. REGRAS PARA FORMAÇÃO DE NOMES PARA VARIÁVEIS...........................................................7
2.2.2. DECLARAÇÃO DE VARIÁVEIS.....................................................................................................8
2.3. CONSTANTE..................................................................................................................................9
2.3.1. DECLARAÇÃO DE CONSTANTES.................................................................................................9
3. INSTRUÇÕES BÁSICAS........................................................................................................... 9
3.1. ENTRADA DE DADOS (COMANDO DE LEITURA).......................................................................10
3.2. SAÍDA DE DADOS (COMANDO DE ESCRITA)..............................................................................10
3.3. COMANDO DE ATRIBUIÇÃO.......................................................................................................12
4. OPERADORES......................................................................................................................... 14
4.1. OPERADORES ARITMÉTICOS.....................................................................................................14
4.2. OPERADORES RELACIONAIS.....................................................................................................15
4.3. OPERADORES LÓGICOS.............................................................................................................15
4.3.1. TABELAS VERDADE..................................................................................................................15
4.3.1.1. Tabela Verdade do Operador Lógico E...............................................................................16
4.3.1.2. Tabela Verdade do Operador Lógico OU...........................................................................16
4.3.1.3. Tabela Verdade do Operador Lógico NÃO........................................................................16
5. ESTRUTURAS DE CONTROLE............................................................................................ 17
5.1. ESTRUTURAS DE SELEÇÃO........................................................................................................17
5.1.1. SELEÇÃO SIMPLES....................................................................................................................17
5.1.2. SELEÇÃO COMPOSTA...............................................................................................................18
5.1.2.1. O Comando Entao..............................................................................................................19
5.1.2.2. O Comando Senao..............................................................................................................19
5.1.3. SELEÇÃO DE MÚLTIPLA ESCOLHA...........................................................................................20
5.2. ESTRUTURAS DE REPETIÇÃO....................................................................................................22
5.2.1. ESTRUTURA DE REPETIÇÃO PARA............................................................................................22
5.2.2. ESTRUTURA DE REPETIÇÃO ENQUANTO..................................................................................23
5.2.3. ESTRUTURA DE REPETIÇÃO REPITA.........................................................................................25

3

6. ESTRUTURAS DE DADOS HOMOGÊNEAS....................................................................... 26
6.1. VETOR........................................................................................................................................27
6.1.1. DECLARAÇÃO DE UM VETOR....................................................................................................27
6.1.2. ACESSANDO UMA POSIÇÃO DO VETOR....................................................................................27
6.2. CADEIA.......................................................................................................................................29
6.2.1. LEITURA, ESCRITA E ATRIBUIÇÃO DE CADEIAS......................................................................30
6.3. MATRIZ......................................................................................................................................31
6.3.1. DECLARAÇÃO DE UMA MATRIZ...............................................................................................32
6.3.2. ACESSANDO UMA POSIÇÃO DA MATRIZ..................................................................................32
7. ESTRUTURAS DE DADOS HETEROGÊNEAS................................................................... 35
7.1. REGISTROS.................................................................................................................................35
7.1.1. DECLARAÇÃO DE UM REGISTRO..............................................................................................35
7.1.2. ACESSANDO UM REGISTRO......................................................................................................36
8. REFERÊNCIAS BIBLIOGRÁFICAS..................................................................................... 38

Os algoritmos são comuns no cotidiano das pessoas. pela própria natureza do instrumento utilizado. ESTRUTURA DE UM ALGORITMO COMPUTACIONAL Um algoritmo computacional. visando atingir um objetivo bem definido em um tempo finito. algoritmo "semnome" { área de declarações (variáveis. é dividido em duas partes. constantes e tipos) } inicio { instruções } fimalgoritmo . assim como uma receita culinária. ou seja. uma seqüência de diversos passos . SZWARCFITER & MARKENZON (1994).ações . 1. como por exemplo. De acordo com SZWARCFITER & MARKENZON (1994). um algoritmo é um processo sistemático para a resolução de um problema. está descrita uma série de ingredientes necessários. programar é basicamente construir algoritmos. O QUE É ALGORITMO? É uma seqüência de passos que devem ser executados sequencialmente.2.a serem executados para que se consiga fazer determinado tipo de bolo. uma receita de bolo. ALGORITMO COMPUTACIONAL É o algoritmo que é construído para ser executado por um computador. afirmam que o desenvolvimento de algoritmos é particularmente importante para problemas a serem solucionados em um computador. programas são formulações concretas de algoritmos abstratos. uma área de declarações e outra de instruções a serem executadas. 1. que é o objetivo definido. Segundo WIRTH (1978).4 1.1. Por isso. Em uma receita.

é especificado o seu nome. instrução n } fimalgoritmo . pode-se chamar “calcula_media”.5 Na primeira linha do algoritmo.. por exemplo. são colocadas as instruções que serão executadas em uma seqüência linear de cima para baixo e da esquerda para direita.. na mesma ordem em que foram escritas. Entre os comandos “início” e “fimalgoritmo”. algo parecido com os ingredientes da receita de bolo. onde o mais recomendável é colocar um nome que diz respeito ao objetivo final do algoritmo. aparece a área de declarações. se o objetivo é calcular a média de um aluno. todas as variáveis e constantes utilizadas no algoritmo. A seguir. Observe o exemplo abaixo: algoritmo "calculaMedia" { variáveis } inicio { instrução 1 instrução 2 instrução 3 instrução 4 . onde se declaram. isto é.

VARIÁVEIS E CONSTANTES 2.1. que são inteiro.1. REAL Toda e qualquer informação numérica que pertença ao conjunto dos números reais.1. CARACTERE Toda e qualquer informação composta de apenas um caractere. INTEIRO Toda e qualquer informação numérica que pertença ao conjunto dos números inteiros. os tipos de dados se dividem em quatro. caractere e lógico. Para se aproximar da forma pela qual o computador manipula as informações. compreendendo qualquer símbolo da tabela ASCII. real. que é a matéria-prima que faz com que seja necessária a existência dos computadores. .1.4. pois são capazes de manipular e armazenar um grande volume de dados com grande eficiência. fracionários.2. TIPOS DE DADOS. que são VERDADEIRO e FALSO.1. TIPOS DE DADOS PRIMITIVOS Para o bom entendimento dos tipos de dados é importante a compreensão do conceito de informação. independendo de ser negativo ou positivo. 2.3.1. 2. 2. independendo de ser negativo ou positivo. LÓGICO Toda e qualquer informação que pode assumir apenas duas situações.6 2. 2.

Deve começar por uma letra. Então.2. VARIÁVEL A memória principal de um computador é organizada em uma seqüência de Bytes. desde que comtemple as regras descritas a seguir: 1. onde é possível armazenar ou ler valores armazenados. A tabela a seguir apresenta alguns exemplos de nomes válidos e nomes inválidos para variáveis. Para acessar essas posições de memória. números ou “_”. Nenhum outro símbolo pode ser utilizado.1. exceto os previstos em 1 e 2. .7 TIPO DE DADOS Inteiro Real Caractere Lógico PODEM CONTER Números inteiros Números inteiros e/ou com casas decimais Qualquer símbolo da tabela ASCII Verdadeiro (V) ou Falso (F) 2. 2. Poderá ser qualquer nome. Não pode conter espaço e acentos. Os demais caracteres devem ser letras. 4. cada um com seu endereço. 3. criam-se nomes que são associados a estas posições de memória. REGRAS PARA FORMAÇÃO DE NOMES PARA VARIÁVEIS Quando se cria uma variável é necessário dar um nome a ela. uma variável vai representar uma posição de memória.2. 2. Estes nomes são nomes do qual chamamos de variáveis. O conteúdo de uma variável será representado pelos valores que podem ser armazenados na posição de memória correspondente a variável.

prova: real sexo: caractere aprovado: logico Observe a declaração de variáveis no contexto de um algoritmo: algoritmo "calculaMedia" var matricula: inteiro teste.8 NOME I Número Numero Abc123 123abc Ab!cd CPF_Cliente xyz12abc CERTO/ERRADO Certo Errado Certo Certo Errado Errado Certo certo 2. prova: real sexo: caractere aprovado: logico inicio { instruções } fimalgoritmo . onde são definidos o nome e o tipo da variável. A sintaxe para a declaração das variáveis é a seguinte: var nome_variável: tipo de dado Observe o exemplo a seguir: var matricula: inteiro teste. DECLARAÇÃO DE VARIÁVEIS Antes que uma variável possa ser utilizada é necessário fazer uma declaração. trab.2. conc. trab. conc.2.

A sintaxe para a declaração das constantes é a seguinte: const nome_constante = valor da constante Observe o exemplo a seguir: const matricula = 5533 sexo = “M” aprovacao = VERDADEIRO Observe a declaração de constantes no contexto de um algoritmo: algoritmo "calculaMedia" const matricula = 5533 sexo = “M” aprovacao = VERDADEIRO var teste. 2.3. DECLARAÇÃO DE CONSTANTES Antes que uma constante possa ser utilizada é necessário fazer uma declaração. não sofre nenhuma variação no decorrer do algoritmo.9 2. CONSTANTE Uma informação é constante quando ao contrário das variáveis. prova: real inicio { instruções } fimalgoritmo 3. INSTRUÇÕES BÁSICAS .1.3. trab. conc. onde são definidos o nome e o conteúdo da constante.

Para isso.2. existem comandos de entrada e saída de dados em um algoritmo. é preciso manipula-las.10 Após ter declaradas as variáveis. ENTRADA DE DADOS (COMANDO DE LEITURA) A execução desta instrução realizará a leitura de um valor para uma variável. Sua sintaxe é a seguinte: escreva (nome_variavel) escreva (“mensagem de texto”) Observe o exemplo a seguir.1. prova) leia (conc) leia (sexo) leia (aprovado) 3. 3. com a escrita de conteúdo de variáveis: escreva (matricula) . teste. fazendo assim com que o valor digitado pelo usuário seja armazenado na posição de memória apontado por esta variável. Sua sintaxe é a seguinte: leia (nome_variável) Observe o exemplo a seguir: leia (matricula) leia (trab. SAÍDA DE DADOS (COMANDO DE ESCRITA) A execução desta instrução fará com que o valor contido em uma variável ou uma mensagem de texto seja impresso no dispositivo de saída. É preciso entrar com dados no programa para gerar os resultados.

trab. com a escrita de conteúdo de variáveis: escreva (“A matrícula é ”. teste. matricula) escreva (“A nota de trabalho é ”. trab) escreval (“A nota de teste é ”. conc) escreva (“O sexo é ”. com a escrita de mensagens de texto: escreva (“Digite a matrícula: ”) escreva (“Maior de idade”) Observe o exemplo a seguir. Observe o exemplo a seguir: escreval (“A matrícula é ”. teste) escreval (“A nota de prova é ”. trab) escreva (“A nota de teste é ”. conc. que faz com que o próximo texto impresso na tela venha na linha de baixo. prova: real sexo: caractere aprovado: lógico inicio . que é o escreval. prova) escreval (“A nota de conceito é ”. teste) escreva (“A nota de prova é ”. conc) escreval (“O sexo é ”. prova) escreva (“A nota de conceito é ”. sexo) escreval (“A aprovação é ”. aprovado) Existe ainda uma variação para o comando escreva. prova) escreva (conc) escreva (sexo) escreva (aprovado) Observe o exemplo a seguir.11 escreva (trab. aprovado) Observe os comandos de entrada e saída no contexto de um algoritmo: algoritmo "calculaMedia" var matricula: inteiro teste. matricula) escreval (“A nota de trabalho é ”. sexo) escreva (“A aprovação é ”.

1.12 escreva ("Digite a matrícula: ") leia (matricula) escreva ("Digite a notas de trabalho. teste.75 sexo <.8.4422 teste <. variável <.variável. conc) escreval ("O sexo é ".9 conc <. teste e prova: ") leia (trab. sexo) escreval ("A aprovação é ".valor. onde o tipo dessa informação deve ser compatível com o tipo de variável. Observe o exemplo a seguir: matricula <. matricula) escreval ("A nota de trabalho é ".3. trab) escreval ("A nota de teste é ".verdadeiro Observe o comando de atribuição no contexto de um algoritmo: algoritmo "calculaMedia" .5 trab <. teste) escreval ("A nota de prova é ". prova) escreva ("Digite a nota de conceito: ") leia (conc) escreva ("Digite o sexo: ") leia (sexo) escreva ("Digite a situação de aprovação: ") leia (aprovado) escreval ("A matrícula é ". COMANDO DE ATRIBUIÇÃO Um comando de atribuição permite fornecer um valor a certa variável.6 prova <."M" aprovado <. prova) escreval ("A nota de conceito é ". Sua sintaxe é a seguinte: variável <. aprovado) fimalgoritmo 3.

conc) escreval ("O sexo é ". saída e atribuição no contexto de um algoritmo: algoritmo "calculaMedia" var matricula: inteiro teste. trab) escreval ("A nota de teste é ".6 prova <.75 sexo <. teste. sexo) escreval ("A aprovação é ". conc.verdadeiro escreval ("A matrícula é ". prova: real sexo: caractere aprovado: logico inicio matricula <.8. trab) escreval ("A nota de teste é ". sexo) escreval ("A aprovação é ". trab.5 trab <.9 conc <. aprovado) fimalgoritmo .4422 teste <.4422 sexo <. prova) escreval ("A nota de conceito é ".13 var matricula: inteiro teste. teste) escreval ("A nota de prova é ".1. conc) escreval ("O sexo é ". aprovado) fimalgoritmo Observe os comando de entrada."M" escreva ("Digite a notas de trabalho. trab. prova) escreval ("A nota de conceito é ". conc."M" aprovado <. prova) escreva ("Digite a nota de conceito: ") leia (conc) escreva ("Digite a situação de aprovação: ") leia (aprovado) escreval ("A matrícula é ". prova: real sexo: caractere aprovado: logico inicio matricula <. teste) escreval ("A nota de prova é ". matricula) escreval ("A nota de trabalho é ". matricula) escreval ("A nota de trabalho é ". teste e prova: ") leia (trab.

armazena e imprime a média: algoritmo "calculaMedia" var nota1. nota2. (nota1 + nota2 + nota3)/3) fimalgoritmo Observe o exemplo a seguir. nota3. Os operadores aritméticos são: OPERADOR + * OPERAÇÃO Adição Subtração Multiplicação OPERADOR / div mod OPERAÇÃO Divisão Divisão inteira Resto da divisão Observe o exemplo a seguir. media: real inicio escreva ("Digite a primeira nota: ") . que realiza a leitura de 3 notas e calcula e imprime a média: algoritmo "calculaMedia" var nota1. OPERADORES 4. nota3: real inicio escreva ("Digite a primeira nota: ") leia (nota1) escreva ("Digite a segunda nota: ") leia (nota2) escreva ("Digite a terceira nota: ") leia (nota3) escreva ("A média é ". que realiza a leitura de 3 notas e calcula. OPERADORES ARITMÉTICOS Os operadores aritméticos representam um conjunto de símbolos que apresentam as operações básicas da matemática.14 4. permitindo a execução de operações aritméticas entre as variáveis. nota2.1.

Os operadores relacionais são: OPERADOR = <> > NOME Igual Diferente Maior OPERADOR < >= <= NOME Menor Maior ou igual Menor ou igual O exemplo da utilização de operadores relacionais será visto nas estruturas de seleção.15 leia (nota1) escreva ("Digite a segunda nota: ") leia (nota2) escreva ("Digite a terceira nota: ") leia (nota3) media <. 4.3.1.(nota1 + nota2 + nota3)/3 escreva ("A média é ". OPERADORES RELACIONAIS Utiliza-se os operadores relacionais para realizar comparações entre dois valores de mesmo tipo de dado. TABELAS VERDADE E Conjunção OU Disjunção NÃO Negação . OPERADORES LÓGICOS Os conectivos (operadores lógicos) permitem a construção de expressões condicionais compostas. media) fimalgoritmo 4.2.3. Os operadores lógicos são: SÍMBOLO FUNÇÃO 4.

1.3.16 Tabela verdade é o conjunto de todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas. Tabela Verdade do Operador Lógico NÃO condição 1 V F NÃO (condição 1) F V Observe os exemplos abaixo: EXPRESSÃO (i >= 10) E (j < 4) (num < 0) OU (NÃO (fim)) ((n >= 0.3. Tabela Verdade do Operador Lógico OU condição 1 V V F F condição 2 V F V F (condição 1) OU (condição 2) V V V F 4.0) OU (i <= 10.1. 4.3.1.5 VALOR DE j=5 fim = falso i=4 AVALIAÇÃO F V V .0) E (n <= 10.3.1. as quais se encontram em apenas duas situações.0)) VALOR DE i=4 num = 3 n = 10. Tabela Verdade do Operador Lógico E condição 1 V V F F condição 2 V F V F (condição 1) E (condição 2) V F F F 4. e um conjunto de operadores lógicos.2.

Estruturas de controle são instruções especiais permitem controlar a seqüência de execução de um algoritmo de acordo com o resultado de testes. entrada e saída de dados.1.17 5.1. variáveis. relacionais e aritméticos. representadas por expressões lógicas. SELEÇÃO SIMPLES Na seleção simples há uma condição.1. usados por essas instruções. que é uma expressão lógica. constantes. encerra a estrutura (fimse) sem executar nenhum comando. Se o resultado da condição for verdadeiro. bem como comandos que traduzam estes conceitos de forma a representar o conjunto de ações. Através das estruturas básicas de controle do fluxo de execução (seleção e repetição) e da combinação delas. as instruções contidas no comando “então” são executadas. em forma de expressões condicionais. 5. operadores lógicos. atribuições. Sua sintaxe é a seguinte: se <condição> entao {instruções} . pode gerar um resultado falso ou verdadeiro. quando inspecionada. deve existir uma perfeita relação lógica intrínseca ao modo pelos quais essas ações são executadas. pode-se criar um algoritmo para solucionar qualquer problema. são ou não satisfeitas. ao modo pelo qual é regido o fluxo de execução. utiliza-se os conceitos de bloco lógico. caso contrário. ESTRUTURAS DE CONTROLE Na criação de algoritmos. que. Para que esse conjunto de ações se torne viável. 5. ESTRUTURAS DE SELEÇÃO Uma estrutura de seleção permite a escolha de um grupo de ações e estruturas a ser executado quando determinadas condições.

com a estrutura de seleção simples no contexto de um algoritmo que realiza a leitura de uma idade e imprime se é maior de idade se for igual ou maior do que 18: algoritmo "verificaIdade" var idade: inteiro inicio escreva ("Digite a idade: ") leia (idade) se idade >= 18 entao escreva ("Maior de idade") fimse fimalgoritmo 5. imprime a mensagem “Maior de idade” e se for menor do que 18. que se o valor da variável idade for igual ou maior do que 18. ao invés de encerrar a estrutura. Sua sintaxe é a seguinte: se <condição> entao {instruções} senão {instruções} fimse . executa as instruções contidas no comando “senao”.2.18 fimse Observe o exemplo a seguir.1. com uma estrutura de seleção simples. não executa nada: se idade >= 18 entao escreva (“Maior de idade”) fimse Observe o exemplo a seguir. só que neste tipo de seleção. SELEÇÃO COMPOSTA Similar a seleção simples. quando o resultado da condição for falso.

O Comando Entao Destina-se a receber uma ou mais instruções.1. O Comando Senao Destina-se a receber uma ou mais instruções. com uma estrutura de seleção composta. com a estrutura de seleção simples no contexto de um algoritmo que realiza a leitura de uma idade e imprime se é maior de idade se for igual ou maior do que 18 ou menor de idade se for menor do que 18: algoritmo "verificaIdade" var idade: inteiro inicio escreva ("Digite a idade: ") leia (idade) se idade >= 18 entao escreva ("Maior de idade") senao escreva ("Menor de idade") fimse fimalgoritmo 5.2.19 Observe o exemplo a seguir.2. imprime a mensagem “Maior de idade” e se for menor do que 18. que serão executadas caso o resultado do teste seja verdadeiro. que se o valor da variável idade for igual ou maior do que 18. imprime a mensagem “Menor de idade”: se idade >= 18 entao escreva (“Maior de idade”) senao escreva (“Menor de idade”) fimse Observe o exemplo a seguir.1. .1. que serão executadas caso o resultado do teste seja falso.2. 5.

passa-se a execução das instruções desta parte. caso não exista. se houver alguma. Em seguida. Se o conteúdo da variável não for idêntico a qualquer dos valores dos comandos casos e a parte outrocaso (opcional) tiver sido utilizada. caso lista de valores n { instruções } outrocaso { instruções } fimescolha Observe o exemplo a seguir. passa-se à execução da instrução seguinte à estrutura (após a palavra fimescolha). SELEÇÃO DE MÚLTIPLA ESCOLHA Quando a execução de um algoritmo atinge o início da estrutura escolha. se houver alguma. vão sendo feitas comparações entre o conteúdo da variável utilizada e os valores listados em cada comando caso. ele imprime a mensagem “Dia inválido”: escolha dia caso 1 escreva ("Domingo") caso 2 escreva ("Segunda-feira") caso 3 .. ele imprime o nome do dia da semana correspondente ao número. Se o conteúdo da variável for idêntico a algum dos valores dos comandos casos.. serão executadas as instruções correspondentes. com uma estrutura de seleção de múltipla escolha. que verifica se existe algum comando caso com valor igual a da variável dia. caso exista.1.3. caso contrário. Sua sintaxe é a seguinte: escolha <variável> caso lista de valores 1 { instruções } caso lista de valores 2 { instruções } caso lista de valores 3 { instruções } . passa-se diretamente a execução da instrução após a estrutura (após a palavra fimescolha).20 5.

caso o número esteja fora do intervalo de 1 e 7: algoritmo "verificaDia" var dia: inteiro inicio escreva ("Digite o número do dia da semana: ") leia (dia) escolha dia caso 1 escreva ("Domingo") caso 2 escreva ("Segunda-feira") caso 3 escreva ("Terça-feira") caso 4 escreva ("Quarta-feira") caso 5 escreva ("Quinta-feira") caso 6 escreva ("Sexta-feira") caso 7 escreva ("Sábado") outrocaso escreva ("Dia inválido") fimescolha fimalgoritmo .21 escreva ("Terça-feira") caso 4 escreva ("Quarta-feira") caso 5 escreva ("Quinta-feira") caso 6 escreva ("Sexta-feira") caso 7 escreva ("Sábado") outrocaso escreva ("Dia inválido") fimescolha Observe o exemplo a seguir. com a estrutura de seleção de múltipla escolha no contexto de um algoritmo que realiza a leitura de um número e imprime o nome do dia da semana correspondente ao número lido ou imprime a mensagem “Dia inválido”.

basta inserir as instruções dentro de uma estrutura de repetição. Para solucionar este tipo de problema é só executar o algoritmo todo para cada aluno. armazenr e imprime a média de 10 alunos. ou seja. somente as instruções que calculam a média bimestral ao invés de executar o algoritmo todo. sendo elas: atribuição do valor inicial. não é necessário colocar o passo 1. Observe o exemplo a seguir. vi será o valor inicial do índice. que determinará que a estrutura de repetição terá início e fim. Existem três tipos de estrutura de repetição: para. que irá ler as 3 notas e calcular. enquanto e repita. se existirem 500 alunos. deve-se levar em consideração que essa média não será calculada para um aluno apenas. teste para interrupção da repetição e valor do incremento. vf será o valor final do índice e passo será a definição se o índice será crescente ou decrescente. . Pode ser uma solução simples. o algoritmo será executado 500 vezes.2.22 5. pois uma escola é um universo muito grande. por exemplo. ESTRUTURAS DE REPETIÇÃO Quando se constrói um algoritmo para calcular uma média bimestral.2. Sua sintaxe é a seguinte: para <variável> de vi ate vf passo faca { instruções que serão executadas várias vezes } fimpara Onde variável será o índice da repetição. no entanto. ESTRUTURA DE REPETIÇÃO PARA A estrutura de repetição “para” repete a execução de um bloco de instruções ou de uma única instrução um número definido de vezes. mas é inviável.1. 5. A estrutura para é composta por partes. se for crescente. Uma outra forma de resolver esse problema seria executar 500 vezes. Para isso. pois esta estrutura possui limites fixos.

2.(nota1 + nota2 + nota3)/3 escreval ("A média é ". que permite que um bloco de instruções ou mesmo uma única instrução seja repetida enquanto uma determinada condição seja verdadeira. utiliza-se a estrutura “enquanto”. nota2. nota3. com a estrutura de repetição para no contexto de um algoritmo que realiza a leitura das 3 notas e calcula. Para que essa repetição se realize. media) fimpara fimalgoritmo 5. verificando sempre. media) fimpara Observe o exemplo a seguir. armazena e imprime a média de 10 alunos: algoritmo "calculaMedia" var i: inteiro nota1. .2. ESTRUTURA DE REPETIÇÃO ENQUANTO Consiste em uma estrutura de controle de repetição que permite executar diversas vezes um mesmo trecho do algoritmo. media: real inicio para i de 1 ate 10 faca escreva ("Digite a primeira nota: ") leia (nota1) escreva ("Digite a segunda nota: ") leia (nota2) escreva ("Digite a terceira nota: ") leia (nota3) media <. antes de cada execução se é permitido repetir o mesmo trecho.(nota1 + nota2 + nota3)/3 escreval ("A média é ".23 para i de 1 ate 10 faca escreva ("Digite a primeira nota: ") leia (nota1) escreva ("Digite a segunda nota: ") leia (nota2) escreva ("Digite a terceira nota: ") leia (nota3) media <.

que irá ler as 3 notas e calcular. i <. media: real inicio i <. com a estrutura de repetição para no contexto de um algoritmo que realiza a leitura das 3 notas e calcula.24 Quando o resultado da condição for falso. Sua sintaxe é a seguinte: enquanto <condição> faca { instruções que serão executadas várias vezes } fimenquanto Observe o exemplo a seguir. a estrutura é abandonada. nota2. Se já da primeira vez o resultado for falso.1 enquanto i <= 10 faca escreva ("Digite a primeira nota: ") leia (nota1) . media) i <. armazena e imprime a média de 10 alunos: algoritmo "calculaMedia" var i: inteiro nota1. armazenr e imprime a média de 10 alunos. as instruções não serão executadas nenhuma vez.(nota1 + nota2 + nota3)/3 escreval ("A média é ".i + 1 fimenquanto Observe o exemplo a seguir.1 enquanto i <= 10 faca escreva ("Digite a primeira nota: ") leia (nota1) escreva ("Digite a segunda nota: ") leia (nota2) escreva ("Digite a terceira nota: ") leia (nota3) media <. nota3.

2. por que o teste condicional é feito após a execução das instruções. percebe-se que o bloco de instruções ou uma única instrução é executada pelo menos uma vez. Se observada a sintaxe desta estrutura. ESTRUTURA DE REPETIÇÃO REPITA Para realizar a repetição com teste condicional no final. Sua sintaxe é a seguinte: repita { instruções } ate <condição> Observe o exemplo a seguir.3. utiliza-se a estrutura “repita”. armazenr e imprime a média de 10 alunos. É necessário ainda que o conteúdo desta mesma variável seja adequadamente inicializada. Isto ocorre. 5.25 escreva ("Digite a segunda nota: ") leia (nota2) escreva ("Digite a terceira nota: ") leia (nota3) media <. Esta parte do algoritmo é chamada de etapa de inicialização da estrutura de controle. alguma instrução da parte repetitiva deve permitir a alteração do conteúdo da variável utilizada na montagem da expressão condicional. Isto deve ser feito antes de ser atingido o início da estrutura. media) i <. .i + 1 fimenquanto fimalgoritmo Afim de assegurar o término da repetição é necessário que a avaliação da expressão condicional torne-se falso. que irá ler as 3 notas e calcular.(nota1 + nota2 + nota3)/3 escreval ("A média é ". Para isso. que permite que um bloco de instruções ou até mesmo uma única instrução seja repetida até que uma determinada condição seja verdadeira. independente da validade da condição.

media) i <.(nota1 + nota2 + nota3)/3 escreval ("A média é ".(nota1 + nota2 + nota3)/3 escreval ("A média é ".26 i <. nota2. ESTRUTURAS DE DADOS HOMOGÊNEAS Uma estrutura de dados Homogênea é uma estrutura que tem a capacidade de armazenar vários dados em uma mesma variável. media) i <.i + 1 ate i > 10 fimalgoritmo 6. nota3. media: real inicio i <.i + 1 ate i > 10 Observe o exemplo a seguir.1 repita escreva ("Digite a primeira nota: ") leia (nota1) escreva ("Digite a segunda nota: ") leia (nota2) escreva ("Digite a terceira nota: ") leia (nota3) media <. sendo que todos esses dados devem ser de um mesmo tipo primitivo de dados. com a estrutura de repetição para no contexto de um algoritmo que realiza a leitura das 3 notas e calcula. armazena e imprime a média de 10 alunos: algoritmo "calculaMedia" var i: inteiro nota1. .1 repita escreva ("Digite a primeira nota: ") leia (nota1) escreva ("Digite a segunda nota: ") leia (nota2) escreva ("Digite a terceira nota: ") leia (nota3) media <.

1. var nome_variável: vetor [pi. as posições inicial e final. VETOR É uma variável com capacidade para armazenar diversos valores sendo todos eles de um mesmo tipo de dado. seguida da posição do vetor entre colchetes. pi é o índice da primeira posição.1.pf] de tipo_dado Onde nome_variável é o nome do vetor.5] de inteiro 6. vetor é a declaração de que é um vetor.2. ACESSANDO UMA POSIÇÃO DO VETOR Para leitura de valores em vetores.1. deve-se colocar no comando leia o nome da variável. Observe o exemplo a seguir: . Para ter acesso a cada um dos valores.1. deve-se criar um nome.. 6.27 6. que definirão a quantidade de posições e o tipo dos valores que serão armazenados no vetor. usamos um índice que permite selecionar qual dos valores será utilizado. DECLARAÇÃO DE UM VETOR Para se declarar uma variável como um vetor. pf é o índice da última posição e tipo_dado é o tipo de dados de todas as posições do vetor. a palavra reservada vetor. Observe o exemplo a seguir. com a declarção de um vetor com 5 posições que irão armazenar números inteiros: var n: vetor [1..

26 n[4] <.38 n[2] <. Observe o exemplo a seguir: n[1] <. deve-se colocar no comando escreva o nome da variável.28 leia(n[1]) leia(n[2]) leia(n[3]) leia(n[4]) leia(n[5]) Para impressão de valores de vetores. com a utilização de vetor no contexto de um algoritmo que realiza a leitura de 5 valores e armazena em um vetor e que imprime todos os valores do vetor: algoritmo "utilizacaoVetor" var n: vetor [1.5] de inteiro inicio escreva ("Digite um valor para a posição 1 do vetor: ") leia(n[1]) escreva ("Digite um valor para a posição 2 do vetor: ") . seguida da posição do vetor entre colchetes.3 Observe o exemplo a seguir. deve-se colocar o nome da variável.23 n[5] <. seguida da posição do vetor entre colchetes recebendo o valor..17 n[3] <. Observe o exemplo a seguir: escreva (n[1]) escreva (n[2]) escreva (n[3]) escreva (n[4]) escreva (n[5]) Para atribuição de valores em vetores.

2. n[2]) escreval ("O valor da posição 3 é ". utilizando estrutura de repetição: algoritmo "utilizacaoVetor" var n: vetor [1.29 leia(n[2]) escreva ("Digite um valor para a posição 3 do vetor: ") leia(n[3]) escreva ("Digite um valor para a posição 4 do vetor: ") leia(n[4]) escreva ("Digite um valor para a posição 5 do vetor: ") leia(n[5]) escreval ("O valor da posição 1 é ". É possível. n[5]) fimalgoritmo Observe o exemplo a seguir. i. n[i]) fimpara fimalgoritmo 6. CADEIA Como nos algoritmos reais é necessário lidar com a leitura de nomes e endereços de pessoas. n[3]) escreval ("O valor da posição 4 é ". com a utilização de vetor no contexto de um algoritmo que realiza a leitura de 5 valores e armazena em um vetor e que imprime todos os valores do vetor. " do vetor: ") leia(n[i]) fimpara para i de 1 ate 5 faca escreval ("O valor da posição ". por exemplo. é conveniente utilizar algum tipo de dado específico para armazenamento de seqüências de caracteres.5] de inteiro i: inteiro inicio para i de 1 ate 5 faca escreva ("Digite um valor para a posição ". " é ". n[4]) escreval ("O valor da posição 5 é ". então. criar dois novos tipos de dados para essa finalidade: .. n[1]) escreval ("O valor da posição 2 é ". i.

Observe a sintaxe a seguir: var nome_variável: cadeia[n] Cria uma variável do tipo cadeia de caracteres com capacidade para armazenar a quantidade de caracteres definida por n.1.30 cadeia cadeia[n] Onde n é um número que indica quantos caracteres serão armazenados. Observe o exemplo a seguir: leia(nome) leia(endereco) .2. ESCRITA E ATRIBUIÇÃO DE CADEIAS Para leitura de valores em cadeias. Observe a sintaxe a seguir: var nome_variável: cadeia Onde nome_variável uma variável do tipo cadeia de caracteres. com a declarção de uma variável que irá armazenar o nome de uma pessoa com até 30 caracteres e outra que irá armazenar o endereço com a quantidade máxima de caractere indefinida: var nome: cadeia[30] endereco: cadeia 6. deve-se colocar no comando leia o nome da cadeia. com capacidade para armazenar qualquer quantidade de caracteres que for necessário. Observe o exemplo a seguir. LEITURA.

deve-se colocar no comando escreva o nome da cadeia. é uma variável com capacidade para armazenar diversos valores sendo todos eles de um mesmo tipo de dado. MATRIZ Assim como os vetores.“Gabriel Duarte” endereco <.“Jardim Primavera. DC” Observe o exemplo a seguir. nome) escreval ("O endereço é ".3. mas nas matrizes para cada posição existe uma nova divisão em novas posições. . Observe o exemplo a seguir: nome <. endereco) fimalgoritmo 6. Observe o exemplo a seguir: escreva (nome) escreva (endereco) Para atribuição de valores em cadeias.31 Para impressão de valores de cadeias. deve-se colocar o nome da cadeia recebendo o valor. com a utilização de cadeias no contexto de um algoritmo que realiza a leitura do nome e endereço de uma pessoa e que imprime esses valores: algoritmo "utilizacaoCadeia" var nome: cadeia[30] endereco: cadeia inicio escreva ("Digite o nome: ") leia (nome) escreva ("Digite o endereço: ") leia (endereco) escreval ("O nome é ".

3. DECLARAÇÃO DE UMA MATRIZ Para se declarar uma variável como uma matriz. as posições inicial e final da coluna e o tipo dos valores que serão armazenados na matriz. Observe o exemplo a seguir: leia(n[1. 2]) .3.2] de inteiro 6. um que permite selecionar a linha da matriz e outro que permite acessar valores daquela linha. seguida da posição da linha e da coluna separada por vírgula e entre colchetes.32 É necessário declarar a quantidade de posições que representão as linhas da matriz e a quantidade de posições que representarão a quantidade de colunas.. com a declarção de uma matriz 3x2. a palavra reservada vetor. deve-se colocar no comando leia o nome da variável. var nome_variável: vetor [pi. usam-se dois índices.1. ou seja. 6. 1. deve-se criar um nome. ACESSANDO UMA POSIÇÃO DA MATRIZ Para leitura de valores em matrizes.. vírgula. tendo no total 6 posições que irão armazenar números inteiros: var n: vetor [1. vetor é a declaração de que é um vetor que será uma matriz.pf] de tipo_dado Onde nome_variável é o nome da matriz. Observe o exemplo a seguir. Para ter acesso a cada um dos valores. pi é o índice da primeira posição. pi. pf é o índice da última posição da linha e da coluna e tipo_dado é o tipo de dados de todas as posições da matriz.2.. uma matriz com 3 linhas e 2 colunas.3. as posições inicial e final da linha. 1]) leia(n[1..pf.

38 n[1. 2]) Para atribuição de valores em matrizes. deve-se colocar o nome da variável.. 1. 1] <.26 n[2. 1]) leia(n[3. 2] <.33 leia(n[2. seguida da posição da linha e da coluna separada por vírgula e entre colchetes. 1]) leia(n[2. com a utilização de matriz no contexto de um algoritmo que realiza a leitura de valores e armazena em uma matriz 3x2 e que imprime todos os valores da matriz: algoritmo "utilizacaoMatriz" var n: vetor[1. 2]) escreva (n[3.2] de inteiro inicio escreva ("Digite o valor para a posição 1. 1] <. 2] <. 1] <. seguida da posição da linha e da coluna separada por vírgula e entre colchetes recebendo o valor. 1]) escreva (n[2. 2]) escreva (n[2.23 n[3. Observe o exemplo a seguir: escreva (n[1. 1]) escreva (n[3. 1]) escreva (n[1. 2] <.17 n[2.. 2]) Para impressão de valores de matrizes. Observe o exemplo a seguir: n[1.3 n[3.1 da matriz: ") leia (n[1. deve-se colocar no comando escreva o nome da variável. 1]) . 2]) leia(n[3.42 Observe o exemplo a seguir.3.

1 é ".1 da matriz: ") leia (n[3. n[1.2] de inteiro i. utilizando estrutura de repetição: algoritmo "utilizacaoMatriz" var n: vetor[1.2 é ". n[2. 2]) fimalgoritmo Observe o exemplo a seguir.". ". j: inteiro inicio para i de 1 ate 3 faca para j de 1 ate 2 faca escreva ("Digite o valor para a posição ". 1]) escreva ("Digite o valor para a posição 3. i.2 da matriz: ") leia (n[2.2 da matriz: ") leia (n[3. 1]) escreval ("O valor da posição 3. n[i. 1]) escreval ("O valor da posição 1. 2]) escreval ("O valor da posição 1. n[3.1 é ". j. com a utilização de matriz no contexto de um algoritmo que realiza a leitura de valores e armazena em uma matriz 3x2 e que imprime todos os valores da matriz. i. 2]) escreval ("O valor da posição 3. 2]) escreval ("O valor da posição 2.". j]) fimpara fimpara para i de 1 ate 3 faca para j de 1 ate 2 faca escreval ("O valor da posição ". " da matriz: ") leia (n[i. j. ".2 é ". 1]) escreval ("O valor da posição 2.. n[2.2 da matriz: ") leia (n[1. 2]) escreva ("Digite o valor para a posição 2. 1.34 escreva ("Digite o valor para a posição 1.1 da matriz: ") leia (n[2. n[3.2 é ".. j]) fimpara fimpara fimalgoritmo . " é ". n[1.1 é ". 2]) escreva ("Digite o valor para a posição 3.3. 1]) escreva ("Digite o valor para a posição 2.

ESTRUTURAS DE DADOS HETEROGÊNEAS Uma estrutura de dados Heterogênea é uma estrutura que tem a capacidade de armazenar vários dados em uma mesma variável.1. Observamos que estes dados são de naturezas distintas.1. onde cada campo corresponde a um tipo de dados. onde esses dados podem ser de tipos primitivos de dados diferentes. Para isto. Esta estrutura é chamada de registro e é formada por campos. de representar dados sobre pessoas ou empresas. REGISTROS É comum a necessidade. criamos as variáveis necessárias ao funcionamento do algoritmo. nos algoritmos.1. isto é. cria-se uma estrutura de dados heterogênea. 7. Em seguida. Com este novo tipo de dados usa-se a palavra tipo para a criação de novos tipos de dados e a palavra registro para indicar que um tipo de dados é um registro. por exemplo.35 7. Para criar uma variável com tipos de dados registro é conveniente criarmos primeiramente um novo tipo de dado para servir de modelo para a criação de variáveis. uma estrutura formada por dados de diferentes tipos. tais como cadeia[30] para o nome de uma pessoa e inteiro para o número de dependentes de uma pessoa. 7. DECLARAÇÃO DE UM REGISTRO tipo cadastro = registro cpf: inteiro nome: cadeia[30] email: cadeia[25] telefone: inteiro fimregistro var pessoa: cadastro .

cadastro. ACESSANDO UM REGISTRO leia (pessoa.2.36 Onde tipo.nome) escreva (pessoa. Observe os exemplos abaixo: 7. não se pode ler ou escrever os dados de um registro de uma só vez. A manipulação de entrada e saída para variáveis de tipo registro somente pode ser feita por campo. Usaremos um ponto para permitir o acesso a cada campo de um registro. registro. indica o fim da declaração e pessoa é uma variável do tipo registro e é formada por quatro campos. cpf. define a criação de um novo tipo de dados. que são aqueles definidos na declaração de cadastro. inteiro e cadeia. Observação: tipos de dados não tem endereço de memória e a variável tem endereço de memória. fimregistro. email e telefone. indica que este tipo de dados é um registro.telefone) Combinação de registros tipo tendereco = registro rua: cadeia[20] numero: inteiro complemento: cadeia[30] bairro: cadeia[25] fim-registro cadastro = registro cpf: inteiro nome: cadeia[30] e_mail: cadeia[50] telefone: inteiro endereco: tendereco fim-registro var pessoa: cadastro . nome. são os tipos de dados dos campos. o nome do novo tipo de dados. são os nomes dos campos.1.cpf) leia (pessoa. isto é.

. 100] de cadastro i: inteiro início para i de 1 ate 100 faca escreva (“digite a matrícula”) leia (aluno[i].endereco.numero <. utilizando registro.endereco) fimpara fimalgoritmo . 100] de cadastro Como armazenar 987 no campo número do endereço do 17º registro de pessoa? pessoa[17].matricula) escreva (“digite o nome”) leia (aluno[i]. algoritmo “cadastramento” tipo cadastro = registro matricula: inteiro nome: cadeia[30] endereco: cadeia[35] fim-registro var aluno: vetor [1 .987 Construir um algoritmo para cadastrar em um vetor a matrícula.endereco.numero <..nome) escreva (“digite o endereço”) leia (aluno[i].123 Para criar um vetor ou uma tabela de registros: var pessoa: vetor [1 . nome e endereço de 100 alunos de uma escola.37 Como atribuir o valor 123 para número do endereço do registro cadastro? cadastro.

Algoritmos e Estruturas de Dados. . Lógica de Programação . São Paulo: Pearson Makron Books. Ângelo de Moura & Newton Alberto de Castilho. Dirceu Douglas & Lisbete Madsen. São Paulo: Makron Books. 1994. Algoritmos. GUIMARÃES & LAGES. SALVETTI & BARBOSA. 1998. Rio de Janeiro: LTC. André Luiz Villar & Henri Frederico. Jayme Luiz & Lilian. Estruturas de Dados e seus Algoritmos.A Construção de Algoritmos e Estrutura de Dados.38 8. 1994. SZWARCFITER & MARKENZON. Rio de Janeiro: LTC. 1996. REFERÊNCIAS BIBLIOGRÁFICAS FORBELLONE & EBERSPÄCHER.