Você está na página 1de 34

FIT - Faculdade de Informtica de Taquara

Curso de Sistemas de Informao

Apostila de Lgica de Programao


- ALGORITMOS -

Profa. Flvia Pereira de Carvalho

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

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 2


1 Introduo

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) Estudo da Viabilidade (Estudos Iniciais)


2) Anlise detalhada do sistema (Projeto Lgico)
3) Projeto preliminar do sistema (Projeto Fsico)
4) Projeto detalhado do sistema (Algoritmos)
5) Implementao ou Codificao do sistema (na Linguagem de Programao escolhida)
6) Testes do sistema
7) Instalao e Manuteno do sistema

No desenvolvimento de um sistema, quanto mais tarde um erro detectado, mais dinheiro e


tempo se gasta para repar-lo. Assim, a responsabilidade do programador maior na criao dos
algoritmos do que na sua prpria implementao, pois quando bem projetados no se perde tempo
tendo que refaz-los, reimplant-los e retest-los, assegurando assim um final feliz e no prazo previsto
para o projeto [BUF03].
Pode-se encontrar na literatura em informtica vrias formas de representao das etapas que
compem o ciclo de vida de um sistema. Essas formas de representao podem variar tanto na
quantidade de etapas quanto nas atividades a serem realizadas em cada fase [MAR03].
Como pode-se observar, nesse exemplo de ciclo de vida de um sistema (com sete fases)
apresentado acima, os algoritmos fazem parte da quarta etapa do desenvolvimento de um programa.
Na verdade, os algoritmos esto presentes no nosso dia-a-dia sem que saibamos, pois uma receita
culinria, as instrues de uso de um equipamento ou as indicaes de um instrutor sobre como
estacionar um carro, por exemplo, nada mais so do que algoritmos.
Um algoritmo pode ser definido como um conjunto de regras (instrues), bem definidas, para
soluo de um determinado problema. Segundo o dicionrio Michaelis, o conceito de algoritmo a
"utilizao de regras para definir ou executar uma tarefa especfica ou para resolver um problema
especfico."
A partir desses conceitos de algoritmos, pode-se perceber que a palavra algoritmo no um
termo computacional, ou seja, no se refere apenas rea de informtica. uma definio ampla que
agora que voc j sabe o que significa, talvez a utilize no seu cotidiano normalmente.
Na informtica, o algoritmo o "projeto do programa", ou seja, antes de se fazer um programa
(software) na Linguagem de Programao desejada (Pascal, C, Delphi, etc.) deve-se fazer o algoritmo
do programa. J um programa, um algoritmo escrito numa forma compreensvel pelo computador
(atravs de uma Linguagem de Programao), onde todas as aes a serem executadas devem ser
especificadas nos mnimos detalhes e de acordo com as regras de sintaxe1 da linguagem escolhida.

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

Um algoritmo no a soluo de um problema, pois, se assim fosse, cada problema teria um


nico algoritmo. Um algoritmo um 'caminho' para a soluo de um problema e, em geral, existem
muitos caminhos que levam a uma soluo satisfatria, ou seja, para resolver o mesmo problema pode-
se obter vrios algoritmos diferentes.
Nesta disciplina estudaremos os passos bsicos e as tcnicas para a construo de algoritmos
atravs de trs mtodos para sua representao, que so alguns dos mais conhecidos. O objetivo ao
final da disciplina, que voc tenha adquirido capacidade de transformar qualquer problema em um
algoritmo de boa qualidade, ou seja, a inteno que voc aprenda a Lgica de Programao dando
uma base terica e prtica suficientemente boa, para que voc domine os algoritmos e esteja habilitado
a aprender uma Linguagem de Programao posteriormente [BUF03].
Para resolver um problema no computador necessrio que seja primeiramente encontrada uma
maneira de descrever este problema de uma forma clara e precisa. preciso que encontremos uma
seqncia de passos que permitam que o problema possa ser resolvido de maneira automtica e
repetitiva. Esta seqncia de passos chamada de algoritmo [GOM04].
A noo de algoritmo central para toda a computao. A criao de algoritmos para resolver
os problemas uma das maiores dificuldades dos iniciantes em programao em computadores
[GOM04].
Uma das formas mais eficazes de aprender algoritmos atravs de muitos exerccios. Veja na
Tabela 1 algumas dicas de como aprender e como no aprender algoritmos:

Algoritmos no se aprende Algoritmos se aprende


Copiando algoritmos Construindo algoritmos
Estudando algoritmos prontos Testando algoritmos
Tabela 1: Dicas de como aprender e como no aprender algoritmos

O aprendizado da Lgica essencial para a formao de um bom programador, servindo como


base para o aprendizado de todas as Linguagens de Programao, estruturadas ou no. De um modo
geral esses conhecimentos sero de supra importncia, pois ajudaro no cotidiano, desenvolvendo um
raciocnio rpido [COS04].

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 4


Apostila de Lgica de Programao - Algoritmos

2 Formas de Representao de Algoritmos

Os algoritmos podem ser representados de vrias formas, como por exemplo:

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:

- Diagrama de Nassi-Shneiderman (Diagrama de Chapin)


- Fluxograma (Diagrama de Fluxo)
- Portugus Estruturado (Pseudocdigo, Portugol ou Pseudolinguagem)

No existe consenso entre os especialistas sobre qual a melhor maneira de representar um


algoritmo. Eu aconselho a utilizao do Diagrama Nassi-Shneiderman, mais conhecido como
Diagrama de Chapin, por achar que a forma mais didtica de aprender e representar a lgica dos
problemas e durante a disciplina usarei esse diagrama nos exemplos e exerccios. Mas, fica a critrio
de cada um escolher a forma que achar mais conveniente ou mais fcil de entender. Nos prximos
captulos so apresentadas breves explicaes sobre cada uma dessas trs formas de representar
algoritmos e alguns exemplos.

2.1 Diagrama Nassi-Shneiderman

Os Diagramas Nassi-Shneiderman, tambm conhecidos como Diagramas de Chapin, surgiram nos


anos 70 [YOU04] [SHN03] [CHA02] [NAS04] como uma maneira de ajudar nos esforos da
abordagem de programao estruturada. Um tpico diagrama Nassi-Shneiderman apresentado na
Figura 1 abaixo. Como voc pode ver, o diagrama fcil de ler e de entender, cada "desenho"
representa uma ao (instruo) diferente.

Figura 1: Exemplo de Diagrama Nassi-Shneiderman

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 5


Apostila de Lgica de Programao - Algoritmos

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

Os Fluxogramas ou Diagramas de Fluxo, so uma representao grfica que utilizam formas


geomtricas padronizadas ligadas por setas de fluxo, para indicar as diversas aes (instrues) e
decises que devem ser seguidas para resolver o problema em questo.
Eles permitem visualizar os caminhos (fluxos) e as etapas de processamento de dados possveis
e, dentro destas, os passos para a resoluo do problema. A seguir, na Figura 2, apresentado um
exemplo de fluxograma [GOM04] [MAR03].

Figura 2: Exemplo de Fluxograma

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 6


Apostila de Lgica de Programao - Algoritmos

2.3 Portugus Estruturado

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.

Figura 3: Exemplo de Portugus Estruturado

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 7


Apostila de Lgica de Programao - Algoritmos

3 Conceitos Importantes

Neste captulo so apresentados e explicados trs conceitos fundamentais para a construo de


algoritmos, so eles: Constante, Varivel e Atribuio.

3.1 Constantes

So chamadas de constantes, as informaes (dados) que no variam com o tempo, ou seja,


permanecem sempre com o mesmo contedo, um valor fixo (invarivel). Como exemplos de
constantes pode-se citar: nmeros, letras, palavras etc.

3.2 Variveis

O bom entendimento do conceito de varivel fundamental para elaborao de algoritmos e,


conseqentemente de programas. Uma varivel, um espao da memria do computador que
"reservamos" para guardar informaes (dados). Como o prprio nome sugere, as variveis, podem
conter valores diferentes a cada instante de tempo, ou seja, seu contedo pode variar de acordo com as
instrues do algoritmo.
As variveis so referenciadas atravs de um nome (identificador) criado por voc durante o
desenvolvimento do algoritmo. Exemplos de nomes de variveis: produto, idade, a, x, nota1, peso,
preo, etc. O contedo de uma varivel pode ser alterado, consultado ou apagado quantas vezes forem
necessrias durante o algoritmo. Mas, ao alterar o contedo da varivel, a informao anterior
perdida, ou seja, sempre "vale" a ltima informao armazenada na varivel. Uma varivel armazena
'apenas' um contedo de cada vez.
Uma varivel pode ser vista como uma caixa com um rtulo (nome) colado nela, que em um
dado momento guarda um determinado objeto. O contedo desta caixa no algo fixo, permanente. Na
verdade, essa caixa pode ter seu contedo alterado diversas vezes. No exemplo abaixo, a caixa
(varivel) rotulada como FATOR, contm o valor 5. Em outro momento essa caixa poder conter
qualquer outro valor numrico. Entretanto, a cada instante, ela conter um, e somente um, valor
[TON04].

Figura 4: Ilustrao de Varivel [TON04]

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 8


Apostila de Lgica de Programao - Algoritmos

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:

Atribuies Possveis Exemplos


varivel constante idade 12 (l-se: idade recebe 12)

varivel varivel preo valor

varivel expresso A B+C

Tabela 2: Exemplos de Atribuies

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

Esta operao apresentada acima no possvel, no est correta esta atribuio.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 9


Apostila de Lgica de Programao - Algoritmos

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.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 10


Apostila de Lgica de Programao - Algoritmos

5 Operadores Aritmticos

Muitas vezes, ao desenvolvermos algoritmos, comum utilizarmos expresses matemticas para a


resoluo de clculos. Neste captulo so apresentados os operadores aritmticos necessrios para
determinadas expresses. Veja a Tabela 3 a seguir.

Operao Smbolo Prioridade


Multiplicao (Produto) * 1a.
Diviso / 1a.
Adio (Soma) + 2a.
Subtrao (Diferena) - 2a.
Tabela 3: Operadores Aritmticos

Nas linguagens de programao e, portanto, nos exerccios de algoritmos que iremos


desenvolver, as expresses matemticas sempre obedecem s regras matemticas comuns, ou seja:

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.

Desta forma, veja os seguintes exemplos e os respectivos resultados:

ExemploA: 2 + (6 * (3 + 2)) = 32

ExemploB: 2 + 6 * (3 + 2) = 32

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 11


Apostila de Lgica de Programao - Algoritmos

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.

A instruo Ler utilizada quando deseja-se obter informaes do teclado do computador, ou


seja, um comando de entrada de dados. Para simplificar, usa-se a instruo Ler, quando necessita-se
que o usurio do algoritmo digite algum dado (e posteriormente do programa).
Tanto no Diagrama de Chapin quanto em Portugus Estruturado representa-se a entrada de
dados atravs da palavra Ler (ou Leia). J em Fluxogramas a representao da entrada de dados feita
atravs de uma forma geomtrica especfica [GOM04] [MAR03].

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

Para o desenvolvimento de algoritmos que possuam clculos matemticos, as expresses aritmticas


devem estar horizontalizadas, ou seja, linearizadas e tambm no esquecendo de utilizar os operadores
corretamente. Na Tabela 4 a seguir, apresentado um exemplo de uma expresso aritmtica na forma
tradicional e como deve ser utilizada nos algoritmos e em programao em geral (linearmente).

Matemtica Tradicional Algoritmo

M (N1 + N2) / 2

Tabela 4: Exemplo de Horizontalizao de Expresses Aritmticas

As expresses matemticas na forma horizontalizada no so apenas utilizadas em algoritmos,


mas tambm na maioria das linguages de programao.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 12


Apostila de Lgica de Programao - Algoritmos

8 Algoritmos com Seleo

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.

8.1 Estrutura de Seleo Aninhada

A estrutura de seleo aninhada normalmente utilizada quando estivermos fazendo vrias


comparaes (testes) sempre com a mesma varivel. Esta estrutura chamada de aninhada porque na
sua representao (tanto em Chapin quanto em Portugus Estruturado) fica uma seleo dentro de
outra seleo.
Vamos utilizar a resposta do exerccio nmero 27 da nossa lista de exerccios como exemplo
destes dois tipos de estruturas. Abaixo apresentada a resposta do exerccio 27 em Chapin utilizando-
se a estrutura aninhada:

Exemplo de Estrutura de Seleo Aninhada: Resposta do Exerccio 27

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 13


Apostila de Lgica de Programao - Algoritmos

8.2 Estrutura de Seleo Concatenada

A estrutura de seleo concatenada normalmente utilizada quando estivermos comparando


(testando) variveis diferentes, ou seja, independentes entre si. Esta estrutura chamada de
concatenada porque na sua representao (tanto em Chapin quanto em Portugus Estruturado) as
selees ficam separadas uma da outra (no existe o lado "falso" do Chapin, ou o "Seno" do
Portugus).
Abaixo apresentada a resposta do exerccio nmero 27 da nossa lista de exerccios, utilizando
a estrutura de seleo concatenada em Chapin:

Exemplo de Estrutura de Seleo Concatenada: Resposta do Exerccio 27

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?

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 14


Apostila de Lgica de Programao - Algoritmos

9 Operadores Relacionais

Operaes relacionais so as comparaes permitidas entres valores, variveis, expresses e


constantes. A Tabela 5 a seguir, apresenta os tipos de operadores relacionais.

Smbolo Significado
> maior
< menor
= igual
>= maior ou igual
<= menor ou igual
<> diferente
Tabela 5: Operadores Relacionais

A seguir, na Tabela 6, so apresentados alguns exemplos de comparaes vlidas:

Comparao Vlida Exemplo


varivel e constante X=3

varivel e varivel A<>B

varivel e expresso Y=W+J

expresso e expresso (X + 1) < (Y + 4)

Tabela 6: Exemplos de Comparaes Vlidas

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 15


Apostila de Lgica de Programao - Algoritmos

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

Exemplos de Testes utilizando Operadores Lgicos:

 Exemplos usando operadores lgicos [KOZ06]:

Expresso Quando eu no saio?


Somente quando chover e relampejar ao mesmo
Se chover e relampejar, eu no saio.
tempo (apenas 1 possibilidade).
Somente quando chover, somente quando
Se chover ou relampejar, eu no saio. relampejar ou quando chover e relampejar ao
mesmo tempo (3 possibilidades).
Somente quando chover, ou somente quando
Se chover xou relampejar, eu no saio.
relampejar (2 possibilidades).

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 16


Apostila de Lgica de Programao - Algoritmos

Exemplos A, B e C abaixo so apresentados em Portugus Estruturado:

A) Se (salario > 180) e (salrio < 800) Ento


Escrever 'Salrio vlido para financiamento'
Seno
Escrever 'Salrio fora da faixa permitida para financiamento'
FimSe

B) Se (idade < 18) ou (idade > 95) Ento


Escrever 'Voc no pode fazer carteira de motorista'
Seno
Escrever 'Voc pode possuir carteira de motorista'
FimSe

C) Se (idade > = 18) e (idade < = 95) e (aprovado_exame = 'sim') Ento


Escrever 'Sua carteira de motorista estar pronta em uma semana'
Seno
Escrever 'Voc no possui idade permitida ou no passou nos testes'
FimSe

 Exemplos de expresses utilizando operadores lgicos [KOZ06]:

Para A = V, B = F e C = F , as expresses abaixo fornecem os seguintes resultados:

Expresso Resultado
a) no A no V = F

b) A e B V e F = F

c) A ou B xou B ou C (V ou F) xou (F ou F) = V xou F = V

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

Exemplo utilizando Operadores Lgicos em Chapin:

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.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 17


Apostila de Lgica de Programao - Algoritmos

11 Algoritmos com Repetio

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:

Escreva um algoritmo para comer um cacho de uva.

 A resposta apresentada (em Chapin e em Portugus Estruturado) est correta?

Na soluo do exemplo 6 apresentada na Seo de Respostas dos Exemplos (Captulo 17), no


foi utilizada uma estrutura de repetio, por isto o algoritmo no est correto. Nesse exemplo
nmero 6 necessria uma estrutura de repetio, pois a instruo "comer 1 uva" precisa ser repetida
vrias vezes.
Existem trs tipos de estruturas de repetio: Repita-At, Enquanto-Faa e Para-At-Faa,
cada uma com suas peculiaridades e apropriada para cada problema, normalmente possvel resolver
um mesmo problema usando qualquer uma das estruturas de repetio, mas, na maioria das situaes,
haver uma mais adequada. Neste captulo veremos as caractersticas de cada uma destas estruturas.
Mas antes, veja a resposta do exemplo nmero 6 utilizando uma estrutura de repetio (Repita-At):

Chapin Portugus Estruturado

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 18


Apostila de Lgica de Programao - Algoritmos

11.1 Estrutura de Repetio: REPITA-AT

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.

Figura 6: Estrutura Repita-At em Portugus


Figura 5: Estrutura Repita-At em Chapin
Estruturado

Observaes da estrutura de repetio REPITA-AT:

1) A repetio (o lao) se encerra quando a condio (teste) for verdadeira.


2) As instrues a serem repetidas so executadas pelo menos 1 vez, porque o teste no final da
repetio.

Pergunta: No exemplo 6 anterior, utilizando uma estrutura de repetio, que no caso utilizou-se a
estrutura Repita, o algoritmo ficou correto?

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 19


Apostila de Lgica de Programao - Algoritmos

11.2 Estrutura de Repetio: ENQUANTO-FAA

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.

Figura 8: Estrutura Enquanto-Faa em


Figura 7: Estrutura Enquanto-Faa em Chapin
Portugus Estruturado

Observaes da estrutura de repetio ENQUANTO-FAA:

1) A repetio (o lao) se encerra quando a condio (teste) for falsa.

2) As instrues a serem repetidas podem nunca ser executadas, porque o teste no incio da repetio.

Ateno: Resolva o exemplo 6 anterior, utilizando a estrutura de repetio Enquanto-Faa!

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 20


Apostila de Lgica de Programao - Algoritmos

11.3 Estrutura de Repetio: PARA-AT-FAA

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:

Escreva um algoritmo para escrever 5 vezes a palavra FACCAT na tela.

Funcionamento da estrutura PARA:

Na resposta do exemplo 7 acima, o X a varivel de controle, ou seja, uma varivel qualquer


(com qualquer nome) que vai determinar o nmero de repeties do lao. O valor 1 o valor inicial
que ser atribudo varivel X e o valor 5 o valor final atribudo varivel X, com isto, tem-se 5
repeties da instruo (ou das instrues) que estiver dentro do lao.

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?

12 Dizer SIM para Continuar ou NO para Finalizar

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'.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 21


Apostila de Lgica de Programao - Algoritmos

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.

Forma Geral: VARIVEL VARIVEL + CONSTANTE

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.

Observaes dos Contadores:

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.

ATENO: Se quisssemos contar o nmero de reprovados tambm, no exemplo 9 acima, o que


deveria ser feito?

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 22


Apostila de Lgica de Programao - Algoritmos

13.2 Acumuladores (ou Somadores)

Um acumulador, tambm conhecido como Somador, utilizado para obter somatrios ( ).

Forma Geral: VARIVEL1 VARIVEL1 + VARIVEL2

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.

Observaes dos Acumuladores:

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.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 23


Apostila de Lgica de Programao - Algoritmos

14 Determinao do MAIOR e/ou MENOR valor em um Conjunto de Valores

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).

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 24


Apostila de Lgica de Programao - Algoritmos

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.

Figura 9: Exemplo de Repetio Aninhada

Funcionamento de "um PARA dentro de outro PARA":

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.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 25


Apostila de Lgica de Programao - Algoritmos

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

Figura 10: Exemplo de um Vetor na Memria do Computador

Exemplos de Manipulao de Vetores:

1) Escrever Nomes [3]

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.

2) Nomes [5] 'Andr'

Esta instruo armazena (atribui) a palavra 'Andr' na posio 5 do Vetor chamado Nomes.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 26


Apostila de Lgica de Programao - Algoritmos

3) Escrever Nomes [X]

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.

4) Escrever Nomes [X-2]

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.

16.1 Como LER um Vetor (Preencher)

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:

Figura 11: Exemplo para Ler um Vetor

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.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 27


Apostila de Lgica de Programao - Algoritmos

16.2 Como ESCREVER um 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:

Figura 12: Exemplo para Escrever um 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.

Resposta em Chapin Resposta em Portugus Estruturado

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

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 28


Apostila de Lgica de Programao - Algoritmos

17 Respostas dos Exemplos

Neste captulo so apresentadas as respostas de todos os exemplos encontrados no decorrer da apostila.

Exemplo 1:

Exemplo 2:

Exemplo 3:

Resposta em Chapin: Resposta em Portugus Estruturado:

Resposta em Fluxograma:

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 29


Apostila de Lgica de Programao - Algoritmos

Exemplo 4:

Resposta em Chapin: Resposta em Portugus Estruturado:

Exemplo 5:

Resposta Errada:

Resposta Correta:

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 30


Apostila de Lgica de Programao - Algoritmos

Exemplo 6:

Resposta em Chapin: Resposta em Portugus Estruturado:

Explicao:

Exemplo 7:

Resposta em Chapin:

Resposta em Portugus Estruturado:

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 31


Apostila de Lgica de Programao - Algoritmos

Exemplo 8:

Resposta em Chapin Resposta em Portugus Estruturado

Exemplo 9:

Resposta em Chapin Resposta em Portugus Estruturado

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 32


Apostila de Lgica de Programao - Algoritmos

Exemplo 10:

Resposta em Chapin Resposta em Portugus Estruturado

Exemplo 11:

Resposta em Chapin Resposta em Portugus Estruturado

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 33


Apostila de Lgica de Programao - Algoritmos

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.

Profa. Flvia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 34

Você também pode gostar