Escolar Documentos
Profissional Documentos
Cultura Documentos
Maro de 2007
Apostila de Lgica de Programao - Algoritmos
Sumrio
Pgina
1 INTRODUO ..................................................................................................................................................................3
2 FORMAS DE REPRESENTAO DE ALGORITMOS ..............................................................................................5
2.1 DIAGRAMA NASSI-SHNEIDERMAN .................................................................................................................................5
2.2 FLUXOGRAMA ................................................................................................................................................................6
2.3 PORTUGUS ESTRUTURADO ...........................................................................................................................................7
3 CONCEITOS IMPORTANTES .......................................................................................................................................8
3.1 CONSTANTES .................................................................................................................................................................8
3.2 VARIVEIS .....................................................................................................................................................................8
3.3 ATRIBUIO ..................................................................................................................................................................9
4 INSTRUO ESCREVER .............................................................................................................................................10
5 OPERADORES ARITMTICOS...................................................................................................................................11
6 INSTRUO LER...........................................................................................................................................................12
7 HORIZONTALIZAO.................................................................................................................................................12
8 ALGORITMOS COM SELEO .................................................................................................................................13
8.1 ESTRUTURA DE SELEO ANINHADA ..........................................................................................................................13
8.2 ESTRUTURA DE SELEO CONCATENADA ...................................................................................................................14
9 OPERADORES RELACIONAIS ...................................................................................................................................15
10 OPERADORES LGICOS...........................................................................................................................................16
11 ALGORITMOS COM REPETIO...........................................................................................................................18
11.1 ESTRUTURA DE REPETIO: REPITA-AT..............................................................................................................19
11.2 ESTRUTURA DE REPETIO: ENQUANTO-FAA...................................................................................................20
11.3 ESTRUTURA DE REPETIO: PARA-AT-FAA .....................................................................................................21
12 DIZER SIM PARA CONTINUAR OU NO PARA FINALIZAR ...........................................................................21
13 CONTADORES E ACUMULADORES.....................................................................................................................22
13.1 CONTADORES .............................................................................................................................................................22
13.2 ACUMULADORES (OU SOMADORES)...........................................................................................................................23
14 DETERMINAO DO MAIOR E/OU MENOR VALOR EM UM CONJUNTO DE VALORES .......................24
15 REPETIO ANINHADA ...........................................................................................................................................25
16 VETORES .......................................................................................................................................................................26
16.1 COMO LER UM VETOR (PREENCHER)........................................................................................................................27
16.2 COMO ESCREVER UM VETOR..................................................................................................................................28
17 RESPOSTAS DOS EXEMPLOS ..................................................................................................................................29
REFERNCIAS BIBLIOGRFICAS................................................................................................................................34
Nesta apostila estudaremos Lgica de Programao e, para isto, importante ter uma viso geral do
processo de desenvolvimento de programas (softwares), visto que o objetivo final ter um bom
embasamento para a prtica da programao de computadores [MAR03].
Para o desenvolvimento de qualquer programa, deve-se seguir basicamente as seguintes etapas,
conhecidas como Ciclo de Vida do Sistema [BUF03]:
1
Sintaxe: segundo o dicionrio Aurlio, a parte da gramtica que estuda a disposio das palavras na frase e a das frases
no discurso, bem como a relao lgica das frases entre si. Cada Linguagem de Programao tem a sua sintaxe
(instrues, comandos, etc) que deve ser seguida corretamente para que o programa funcione. O conjunto de palavras e
regras que definem o formato das sentenas vlidas chama-se de sintaxe da linguagem.
Apostila de Lgica de Programao - Algoritmos
a) Atravs de uma lngua (portugus, ingls, etc.): forma utilizada nos manuais de instrues, nas
receitas culinrias, bulas de medicamentos, etc.
b) Atravs de uma linguagem de programao (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 programao em si.
c) Atravs de representaes grficas: so bastante recomendveis, j que um "desenho" (diagrama,
fluxograma, etc.) muitas vezes substitui, com vantagem, vrias palavras.
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 sero apresentadas trs formas de
representao de algoritmos (que so algumas das mais utilizadas), so elas:
A idia bsica deste diagrama representar as aes de um algoritmo dentro de um nico retngulo,
subdividindo-o em retngulos menores, que representam os diferentes blocos de seqncia de aes do
algoritmo. Para saber mais sobre o histrico desses diagramas e conhecer os seus criadores acesse o
site: http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/. Para ter acesso ao primeiro artigo
elaborado pelos autores do Diagrama de Chapin, escrito em 1973, acesse o seguinte endereo onde
voc pode fazer o download do artigo: http://fit.faccat.br/~fpereira/p12-nassi.pdf.
2.2 Fluxograma
O Portugus Estruturado, uma forma especial de linguagem bem mais restrita que a Lngua
Portuguesa e com significados bem definidos para todos os termos utilizados nas instrues
(comandos).
Essa linguagem tambm conhecida como Portugol (juno de Portugus com Algol [ALG96]
[PRO04]), Pseudocdigo ou Pseudolinguagem. O Portugus Estruturado na verdade uma
simplificao extrema da lngua portuguesa, limitada a pouqussimas palavras e estruturas que tm
significado pr-definido, pois deve-se seguir um padro. Emprega uma linguagem intermediria entre
a linguagem natural e uma linguagem de programao, para descrever os algoritmos.
A sintaxe do Portugus Estruturado no precisa ser seguida to rigorosamente quanto a sintaxe
de uma linguagem de programao, j que o algoritmo no ser executado como um programa
[TON04].
Embora o Portugus Estruturado seja uma linguagem bastante simplificada, ela possui todos os
elementos bsicos e uma estrutura semelhante de uma linguagem de programao de computadores.
Portanto, resolver problemas com portugus estruturado pode ser uma tarefa to complexa quanto a de
escrever um programa em uma linguagem de programao qualquer s no to rgida quanto a sua
sintaxe, ou seja, o algoritmo no deixa de funcionar porque esquecemos de colocar um ';' (ponto-e-
vrgula) por exemplo, j um programa no funcionaria. A Figura 3 apresenta um exemplo de algoritmo
na forma de representao de portugus estruturado.
3 Conceitos Importantes
3.1 Constantes
3.2 Variveis
3.3 Atribuio
A atribuio uma notao utilizada para atribuir um valor a uma varivel, ou seja, para armazenar um
determinado contedo em uma varivel. A operao de atribuio, normalmente, representada por
uma seta apontando para a esquerda, mas existem outros smbolos para representar a atribuio,
depende da forma de representao do algoritmo. Na Tabela 2 a seguir, so apresentados alguns
exemplos de atribuies possveis:
Uma observao importante a ser feita em relao a atribuies que na parte esquerda (a que vai
"receber" algo) no pode haver nada alm da varivel, ou seja, s varivel que "recebe" algum
contedo, no possvel ter um clculo por exemplo, ou uma constante, recebendo alguma coisa. Veja
por exemplo, esta notao:
nota1 + nota2 valor
4 Instruo Escrever
Existem basicamente duas instrues principais em algoritmos (e em programao em geral) que so:
Escrever e Ler. Neste captulo veremos como funciona a instruo Escrever.
A instruo Escrever utilizada quando deseja-se mostrar informaes na tela do computador,
ou seja, um comando de sada de dados. Para simplificar, usa-se a instruo Escrever, quando
necessita-se mostrar algum dado para o usurio do algoritmo (e posteriormente do programa).
Tanto no Diagrama de Chapin quanto em Portugus Estruturado representa-se a sada de dados
atravs da palavra Escrever (ou Escreva). J em Fluxogramas a representao da sada de dados feita
atravs de uma forma geomtrica especfica [GOM04] [MAR03].
Exemplos:
1) Escreva um algoritmo para armazenar o valor 20 em uma varivel X e o valor 5 em uma varivel Y.
A seguir, armazenar a soma do valor de X com o de Y em uma varivel Z. Escrever (na tela) o valor
armazenado em X, em Y e em Z. (Captulo 17: Respostas dos Exemplos).
2) Escreva um algoritmo para armazenar o valor 4 em uma varivel A e o valor 3 em uma varivel B.
A seguir, armazenar a soma de A com B em uma varivel C e a subtrao de A com B em uma
varivel D. Escrever o valor de A, B, C e D e tambm escrever a mensagem 'Fim do Algoritmo'.
Observao:
Note que quando queremos escrever alguma mensagem na tela (letra, frase, nmero etc.)
literalmente, devemos utilizar aspas para identificar o que ser escrito, pois o que estiver entre aspas
no algoritmo, ser exatamente o que aparecer na tela do computador. Diferente de quando queremos
escrever o contedo de uma varivel, pois neste caso no utiliza-se aspas.
5 Operadores Aritmticos
As expresses dentro de parnteses so sempre resolvidas antes das expresses fora dos
parnteses. Quando existem vrios nveis de parnteses, ou seja, um parntese dentro de outro,
a soluo sempre inicia do parntese mais interno at o mais externo (de dentro para fora).
Quando duas ou mais expresses tiverem a mesma prioridade, a soluo sempre iniciada da
expresso mais esquerda at a mais direita.
ExemploA: 2 + (6 * (3 + 2)) = 32
ExemploB: 2 + 6 * (3 + 2) = 32
6 Instruo Ler
Como vimos no captulo 4 Instruo Escrever, existem basicamente duas instrues principais em
algoritmos (e em programao em geral) que so: Escrever e Ler. No captulo 4, foi apresentada a
instruo Escrever, agora, neste captulo, veremos como funciona a instruo Ler.
Exemplo 3:
Escreva um algoritmo para ler dois valores e armazenar cada um em uma varivel. A seguir,
armazenar a soma dos dois valores lidos em uma terceira varivel. Escrever o resultado da soma
efetuada.
7 Horizontalizao
M (N1 + N2) / 2
At agora estvamos trabalhando com algoritmos puramente seqenciais, ou seja, todas as instrues
eram executadas seguindo a ordem do algoritmo (normalmente, de cima para baixo). Neste captulo
comearemos a estudar estruturas de seleo. Uma estrutura de seleo, como o prprio nome j diz,
permite que determinadas instrues sejam executadas ou no, dependendo do resultado de uma
condio (teste), ou seja, o algoritmo vai ter mais de uma sada, uma opo que ser executada de
acordo com o teste realizado.
Exemplo 4:
Escreva um algoritmo para ler um valor. Se o valor lido for igual a 6, escrever a mensagem 'Valor lido
o 6', caso contrrio escrever a mensagem 'Valor lido no o 6'.
Quando estivermos utilizando algoritmos com seleo, podemos utilizar dois tipos de estruturas
diferentes, dependendo do objetivo do algoritmo, chamadas de "Seleo Mltipla", cujos tipos so:
Estrutura Aninhada e Estrutura Concatenada. Os captulos 8.1 e 8.2 a seguir, apresentam estas duas
estruturas com suas caractersticas.
Como pode ser observado nessas duas respostas apresentadas para o exerccio 27 (estrutura
aninhada e estrutura concatenada), existe uma grande diferena entre as duas estruturas, ou seja, uma
caracterstica de execuo do algoritmo. Voc saberia dizer qual esta diferena?
9 Operadores Relacionais
Smbolo Significado
> maior
< menor
= igual
>= maior ou igual
<= menor ou igual
<> diferente
Tabela 5: Operadores Relacionais
10 Operadores Lgicos
Os operadores lgicos permitem que mais de uma condio seja testada em uma nica expresso, ou
seja, pode-se fazer mais de uma comparao (teste) ao mesmo tempo. A Tabela 7 a seguir, apresenta
os operadores lgicos que utilizaremos nesta disciplina.
Operao Operador
Negao no
Conjuno e
Disjuno (no-exclusiva) ou
xou
Disjuno (exclusiva)
(l-se: "ou exclusivo")
Tabela 7: Operadores Lgicos
Note que a Tabela 7 acima, apresenta os operadores lgicos j ordenados de acordo com suas
prioridades, ou seja, se na mesma expresso tivermos o operador ou e o operador no, por exemplo,
primeiro devemos executar o no e depois o ou.
De uma forma geral, os resultados possveis para os operadores lgicos podem ser vistos na
Tabela 8 abaixo, conhecida como Tabela Verdade:
A B AeB A ou B no A A xou B
F F F F V F
F V F V V V
V F F V F V
V V V V F F
Tabela 8: Possveis Resultados dos Testes Lgicos - Tabela Verdade
Expresso Resultado
a) no A no V = F
b) A e B V e F = F
d) no (B ou C) no (F ou F) = no F = V
e) no B ou C (no F) ou F = V ou F = V
5) Escreva um algoritmo para ler um valor e escrever se ele est entre os nmeros 1 e 10 ou no est.
Ao verificar as respostas (errada e correta) do exemplo nmero 5 acima, pode-se constatar que
quando precisamos fazer mais de um teste ao mesmo tempo, deve-se utilizar os operadores lgicos
apresentados neste captulo na tabela 7.
Nos exemplos e exerccios que vimos at agora, sempre foi possvel resolver os problemas com uma
seqncia de instrues que eram executadas apenas uma vez. Existem trs estruturas bsicas para a
construo de algoritmos, que so: algoritmos seqenciais, algoritmos com seleo e algoritmos com
repetio. A combinao dessas trs estruturas permite-nos a construo de algoritmos para a
resoluo de problemas extremamente complexos [MAR03]. Nos captulos anteriores vimos a
estrutura puramente seqencial e algoritmos com seleo (captulo 8). Neste captulo veremos as
estruturas de repetio possveis em algoritmos e existentes na maioria das Linguagens de
Programao.
Uma estrutura de repetio permite que uma seqncia de instrues (comandos) seja
executada vrias vezes, at que uma condio (teste) seja satisfeita, ou seja, repete-se um conjunto de
instrues sem que seja necessrio escrev-las vrias vezes. As estruturas de repetio tambm so
chamadas de Laos ou Loops [MAR03].
Para sabermos quando utilizar uma estrutura de repetio, basta analisarmos se uma instruo
ou uma seqncia de instrues precisa ser executada vrias vezes, se isto se confirmar, ento deve-se
utilizar uma estrutura de repetio. As estruturas de repetio, assim como a de deciso (seleo),
envolvem a avaliao de uma condio (teste). Ento as estruturas de repetio permitem que um
trecho do algoritmo (conjunto de instrues) seja repetido um nmero determinado (ou indeterminado)
de vezes, sem que o cdigo correspondente, ou seja, as instrues a serem repetidas tenham que ser
escritas mais de uma vez [TON04].
Exemplo 6:
Na estrutura Repita-At as instrues a serem repetidas so executadas, no mnimo uma vez, j que o
teste (a condio) fica no final da repetio. Nesta estrutura, a repetio finalizada quando o teste for
Verdadeiro (V), ou seja, o algoritmo fica executando as instrues que estiverem dentro do lao at
que o teste seja verdadeiro. Nas Figuras 5 e 6 abaixo, apresentada a forma geral da estrutura Repita-
At em Chapin e em Portugus Estruturado, respectivamente.
Pergunta: No exemplo 6 anterior, utilizando uma estrutura de repetio, que no caso utilizou-se a
estrutura Repita, o algoritmo ficou correto?
Na estrutura Enquanto-Faa as instrues a serem repetidas podem no ser executadas nenhuma vez,
pois o teste fica no incio da repetio, ento a execuo das instrues (que esto "dentro" da
repetio) depende do teste. Nesta estrutura, a repetio finalizada quando o teste Falso (F), ou
seja, enquanto o teste for Verdadeiro as instrues sero executadas e, quando for Falso, o lao
finalizado. Veja nas Figuras 7 e 8 abaixo a forma geral da estrutura Enquanto-Faa em Chapin e em
Portugus Estruturado.
2) As instrues a serem repetidas podem nunca ser executadas, porque o teste no incio da repetio.
A estrutura de repetio Para-At-Faa um pouco diferente das outras duas (Repita-At e Enquanto-
Faa), pois possui uma varivel de controle, ou seja, com esta estrutura possvel executar um
conjunto de instrues um nmero determinado de vezes. Atravs da varivel de controle, define-se a
quantidade de repeties que o lao far.
Exemplo 7:
Cada vez que a varivel incrementada (aumenta +1) as instrues de dentro da repetio so
executadas, ento a varivel, no caso o X, inicia com o valor 1 e a cada execuo (repetio) ele
aumenta +1 ( incrementado) at chegar ao valor final, que tambm determinado (no caso o 5).
ATENO: Voc saberia dizer qual a grande diferena entre a estrutura de repetio Para e as
estruturas Repita e Enquanto?
Exemplo 8:
Escreva um algoritmo para ler dois valores. Aps a leitura deve-se calcular a soma dos valores lidos e
armazen-la em uma varivel. Aps o clculo da soma, escrever o resultado e escrever tambm a
pergunta 'Novo Clculo (S/N)?'. Deve-se ler a resposta e se a resposta for 'S' (sim), deve-se repetir
todos os comandos (instrues) novamente, mas se a resposta for 'N' (no), o algoritmo deve ser
finalizado escrevendo a mensagem 'Fim dos Clculos'.
13 Contadores e Acumuladores
Em algoritmos com estruturas de repetio (Repita, Enquanto ou Para) comum surgir a necessidade
de utilizar variveis do tipo contador e/ou acumulador. Neste captulo so apresentados esses conceitos
detalhadamente.
13.1 Contadores
Um contador utilizado para contar o nmero de vezes que um evento (uma instruo) ocorre, ou seja,
contar a quantidade de vezes que uma instruo executada.
Exemplo: X X + 1
Explicao: um contador uma varivel (qualquer) que recebe ela mesma mais um valor (uma
constante), no caso do exemplo acima, a varivel X est recebendo o valor dela mesma mais 1.
Normalmente a constante que ser somada no contador o valor 1, para contar de 1 em 1, mas pode
ser qualquer valor, como por exemplo 2, se quisermos contar de 2 em 2.
1) A varivel (do contador) deve possuir um valor inicial conhecido, isto , ela deve ser inicializada.
Normalmente inicializa-se a varivel do contador com zero, ou seja, zera-se a varivel antes de utiliz-
la. Para zerar uma varivel basta atribuir a ela o valor zero: VARIVEL 0
2) A constante (que geralmente o valor 1) determina o valor do incremento da varivel (do contador),
ou seja, o que ser somado (acrescido) a ela.
Exemplo 9:
Escreva um algoritmo para ler a nota de 10 alunos e contar quantos foram aprovados, sendo que, para
ser aprovado, a nota deve ser maior ou igual a 6,0. Escrever o nmero de aprovados.
Exemplo: X X + Y
Explicao: um acumulador (somador) uma varivel (qualquer) que recebe ela mesma mais uma
outra varivel, no caso do exemplo acima, a varivel X est recebendo o valor dela mesma mais o
valor da varivel Y. A varivel Y representa o valor a ser somado, acumulado na varivel X.
1) A varivel1 (do acumulador) deve possuir um valor inicial conhecido, isto , ela deve ser
inicializada. Normalmente inicializa-se a varivel do acumulador com zero, ou seja, zera-se a varivel
antes de utiliz-la. Para zerar uma varivel basta atribuir a ela o valor zero: VARIVEL1 0
2) A varivel2 indica o valor a ser acumulado, somado e armazenado na varivel1.
Exemplo 10:
Altere o exemplo 9 para calcular tambm a mdia geral da turma e, depois de calculada, escrever a
mdia.
ATENO: Normalmente inicializa-se as variveis que sero utilizadas como contador ou como
acumulador com o valor zero, mas pode-se inicializ-las com o valor que desejarmos de acordo com a
necessidade.
Em muitos algoritmos surge a necessidade de determinarmos qual o maior ou o menor valor dentro de
um conjunto de valores e, para isto, no existe uma estrutura especial, apenas utilizamos os
conhecimentos que j aprendemos, como mostrado no exemplo a seguir.
Exemplo 11:
Escreva um algoritmo para ler a nota de 10 alunos e escrever a nota mais alta, ou seja, a maior nota
entre as 10 notas lidas.
IMPORTANTE: Quando sabe-se os limites dos valores possveis, ou seja, por exemplo com as notas
sabemos que os valores sero de 0 a 10, ento sabe-se quais so os valores limites (o valor mnimo e o
valor mximo), no teremos nota menor que 0 e nem nota maior que 10. Nesses casos mais fcil
descobrir o maior ou o menor valor, pois pode-se inicializar a varivel Maior, por exemplo, com o
valor 0 e a varivel Menor com o valor 10 que funcionar perfeitamente. Acontece que se no sabe-se
os valores dos limites a complica um pouco, pois no sabemos com que valor vamos inicializar as
variveis para comparao. Ento temos que inicializar tanto a varivel Maior quanto a Menor com o
primeiro valor lido e depois vamos comparando os prximos valores lidos com o primeiro! (os
nomes Maior e Menor, so apenas exemplos, pode-se denominar as variveis que sero usadas
para os testes como quiser).
15 Repetio Aninhada
Assim como vimos que possvel ter uma Seleo dentro de outra, tambm podemos ter uma
Repetio dentro de outra, dependendo do problema a ser resolvido. Pode ser necessria uma estrutura
de Repita dentro de um Enquanto, por exemplo, ou vice-versa. Ou um Repita dentro de outro Repita,
enfim, as combinaes so inmeras. A seguir veremos um exemplo de uma estrutura de repetio
Para dentro de outro Para, que bastante utilizado para leitura e escrita de Matrizes, por exemplo.
Exemplo 12:
Dado o algoritmo a seguir (Figura 9), representado em Chapin, diga o que ele faz, ou seja, o que seria
escrito na tela ao ser executado.
1) A execuo inicia pelo Para de fora (mais externo), depois desvia para o Para de dentro e s volta
para o Para de fora quando terminar toda execuo do Para de dentro (quando a varivel de controle
chegar no valor final).
2) Um Para fica "parado" enquanto o outro Para executado, ou seja, enquanto sua varivel de
controle varia at chegar no valor final determinado para ela.
16 Vetores
Podemos definir um Vetor como uma varivel dividida em vrios "pedaos", em vrias "casinhas",
onde cada pedao desses identificado atravs de um nmero, referente posio de uma determinada
informao no vetor em questo. O nmero de cada posio do vetor chamado de ndice.
Conceito: Vetor um conjunto de variveis, onde cada uma pode armazenar uma informao
diferente, mas todas compartilham o mesmo nome. So associados ndices a esse nome, que
representam as posies do vetor, permitindo assim, individualizar os elementos do conjunto.
Podemos imaginar que na memria do computador o vetor seja mais ou menos da seguinte forma:
nome
do
vetor
Esta instruo escreve na tela, o contedo da Posio 3 do Vetor chamado Nomes, ou seja, escreve a
palavra Maria.
ATENO: Sempre que estivermos nos referindo a um Vetor, devemos colocar o Nome do Vetor e
a Posio (o ndice) correspondente entre colchetes.
Esta instruo armazena (atribui) a palavra 'Andr' na posio 5 do Vetor chamado Nomes.
Esta instruo escreve o contedo da posio X do Vetor Nomes, ou seja, possvel utilizarmos
variveis para indicar a posio (o ndice) do Vetor. Neste exemplo 3, o que ser escrito depende do
valor da varivel X. Por exemplo, se antes da instruo Escrever, tivssemos a instruo: X 4.
Ento seria escrito o contedo da posio 4 do Vetor Nomes, neste caso, seria escrita a palavra Ana.
Esta instruo para mostrar que tambm pode-se utilizar clculos (expresses) para indicar a
posio (o ndice). Digamos que o X tenha recebido o valor 4, como no exemplo 3 acima, ento, neste
caso, seria escrita a palavra Alex.
Para Ler um vetor, ou seja, para preencher um vetor com informaes (dados) (armazenar
informaes em um vetor) necessria uma estrutura de repetio, pois um vetor possui vrias
posies e temos que preencher uma a uma. A estrutura de repetio normalmente utilizada para
vetores o Para-At-Faa, ento veja no exemplo abaixo como preencher (ler) um vetor de 10
posies:
Na Figura 11, acima, est demonstrado como preencher um vetor chamado A de 10 posies, ou seja,
sero lidas 10 informaes (valores, nomes, letras, etc.) e cada uma ser armazenada em uma posio
do vetor A. Sendo que utiliza-se a prpria varivel da repetio Para para representar a posio
(ndice) do vetor.
Para Escrever um vetor, ou seja, para escrever o contedo de cada posio de um vetor, tambm
precisamos utilizar uma estrutura de repetio, j que os vetores possuem mais de um contedo (mais
de uma posio). Como explicado no captulo anterior (16.1 Como Ler um Vetor), normalmente
utiliza-se a estrutura Para-At-Faa tambm para escrever o vetor. Veja no exemplo abaixo, como
escrever um vetor de 10 posies, isto , como escrever o contedo de cada uma das 10 posies do
vetor:
Na Figura 12, acima, est demonstrado como escrever um vetor chamado A de 10 posies, ou seja, ao
executar essa instruo seria escrito o contedo de cada uma das 10 posies do vetor A na tela do
computador.
Exemplo 13:
Escreva um algoritmo para ler a nota de 30 alunos, calcular a mdia geral da turma e escrever quantos
alunos tiveram a nota acima da mdia calculada.
Incio
soma 0
media 0
cont 0
Para x de 1 At 30 Faa
Ler nota [x]
soma soma + nota [x]
FimPara
Media soma / 30
Para n de 1 At 30 Faa
Se nota [n] > media Ento
cont cont + 1
FimSe
FimPara
Escrever cont
Fim
Exemplo 1:
Exemplo 2:
Exemplo 3:
Resposta em Fluxograma:
Exemplo 4:
Exemplo 5:
Resposta Errada:
Resposta Correta:
Exemplo 6:
Explicao:
Exemplo 7:
Resposta em Chapin:
Exemplo 8:
Exemplo 9:
Exemplo 10:
Exemplo 11:
Referncias Bibliogrficas
Para elaborao e construo desta apostila foram consultados vrios tipos de materiais, como por
exemplo: livros, outras apostilas, pginas web etc. Algumas das referncias consultadas esto
apresentadas neste captulo, mas grande parte do material disponibilizado na apostila, como exemplos
e exerccios foram utilizados das aulas que tive na disciplina de Algoritmos e Programao durante a
faculdade de Anlise de Sistemas, na UCPel - Universidade Catlica de Pelotas, com o Prof. Ricardo
Andrade Cava (http://lp.ucpel.tche.br, http://cpu.ucpel.tche.br, http://graphs.ucpel.tche.br).
[ALG96] The ALGOL Programming Language. Disponvel em:
http://www.engin.umd.umich.edu/CIS/course.des/cis400/algol/algol.html. Acesso em: Jun.
2006.
[BUF03] BUFFONI, Salete. Apostila de Algoritmo Estruturado - 4 edio. Disponvel em:
http://www.saletebuffoni.hpg.ig.com.br/algoritmos/Algoritmos.pdf. Acesso em: Mar. 2004.
[CHA70] CHAPIN, Ned. Flowcharting with the ANSI Standard: A Tutorial. ACM Computing
Surveys, Volume 2, Number 2 (June 1970), pp. 119-146.
[CHA74] CHAPIN, Ned. New Format for Flowcharts, SoftwarePractice and Experience.
Volume 4, Number 4 (October-December 1974), pp. 341-357.
[CHA02] CHAPIN, Ned. Maintenance of Information Systems. Disponvel em:
http://www.iceis.org/iceis2002/tutorials.htm. Acesso em: Jun. 2006.
[COS04] COSTA, Renato. Apostila de Lgica de Programao - Criao de Algoritmos e
Programas. Disponvel em: http://www.meusite.pro.br/apostilas2.htm. Acesso em: Jun.
2006.
[GOM04] GOMES, Abel. Algoritmos, Fluxogramas e Pseudo-cdigo - Design de Algoritmos.
Disponvel em: http://mail.di.ubi.pt/~programacao/capitulo6.pdf. Acesso em: Jun. 2006.
[KOZ06] KOZAK, Dalton V. Tcnicas de Construo de Algoritmos. Disponvel em:
http://minerva.ufpel.edu.br/~rossato/ipd/apostila_algoritmos.pdf. Acesso em: Jun. 2006.
[MAR03] MARTINS, Luiz E. G.; ZLIO, Valria M. D. Apostila da Disciplina Introduo
Programao. Disponvel em: http://www.unimep.br/~vmdzilio/apostila00.doc. Acesso em:
Jun. 2006.
[NAS73] NASSI, Ike; SHNEIDERMAN, Ben. Flowchart Techniques for Structured
Programming. ACM SIGPLAN Notices, Volume 8, Number 8 (August 1973), pp.12-26.
[NAS04] NASSI, Ike. Ike Nassi's Home Page. Disponvel em: http://www.nassi.com/ike.htm . Acesso
em: Jun. 2006.
[PRO04] Programming Languages. Disponvel em:
http://www.famed.ufrgs.br/disciplinas/inf_med/prog_ling.htm. Acesso em: Mar.2004.
[SAN04] SANTANA, Joo. Algoritmos & Programao. Disponvel em:
http://www.iesam.com.br/paginas/cursos/ec/1ano/aulas/08/joao/APunidade-1.pdf. Acesso
em: Mar. 2004.
[SHN03] SHNEIDERMAN, Ben. A short history of structured flowcharts (Nassi-Shneiderman
Diagrams). Disponvel em: http://www.cs.umd.edu/~ben/ Acesso em: Jun. 2006.
[TON04] TONET, Bruno; KOLIVER, Cristian. Introduo aos Algoritmos. Disponvel em:
http://dein.ucs.br/napro/Algoritmo/manuais/Manual 20Visualg.pdf. Acesso em: Mar. 2004.
[YOU04] YOURDON, Ed. Ed Yourdon's Web Site. Disponvel em:
http://www.yourdon.com/books/msa2e/CH15/CH15.html. Acesso em: Mar. 2004.