Você está na página 1de 26

Universidade Federal da Bahia

Departamento de Cincia da Computao














I NT RODUO LGI CA DE

PROGRAMAO

MAT 146











Revisada em Janeiro de 2004

Claudia Gama
claudiag@ufba.br
UFBa - Introduo Lgica de Programao MAT 146

Caro Aluno:

Esta apostila foi elaborada a partir das minhas notas de aula e dos livros da
bibliografia recomendada. Ela visa auxiliar na compreenso dos conceitos
abordados ao longo do curso, bem como promover a prtica de algoritmos com
exerccios de fixao e exerccios propostos. Nela voc vai encontrar:
Resumo dos principais tpicos
Referncias bibliogrficas
Exerccios de fixao
Exerccios propostos (alguns incluem soluo)

Mas ateno: esta apostila deve ser usada somente como material complementar e
nunca como nica fonte de estudo.

Prof. Claudia Gama



Legenda

Na apostila so usados alguns smbolos para chamar a ateno de partes relevantes
e ajudar na organizao do contedo da apostila. Veja os smbolos e seus
significados abaixo.


Sugesto de leitura de captulo ou sees de um livro. A leitura sugerida para
obter-se um entendimento completo do tpico apresentado na apostila.

Sugestes de pesquisas na Internet de assuntos complementares ou
curiosidades.

Exerccios de Fixao: so exerccios simples para verificao do entendimento
de conceitos.

> Sugesto de Exerccios Complementares em livros da bibliografia.

h Exerccios Propostos: exerccios para solidificar o entendimento. Altamente
recomendveis!



Texto Complementar e Exerccios
2
UFBa - Introduo Lgica de Programao MAT 146
NDICE


Parte I - Introduo Lgica de Programao


1. Algoritmos ---------------------------------------------------------------------- 6
1.1. Exemplo: Construindo um Algoritmo ------------------------------- 6
h Exerccios Propostos----------------------------------------------------- 8
2. Resoluo de Problemas atravs de Computadores ----------------------- 9
2.1. Programao ------------------------------------------------------------ 9
3. Algoritmos Computacionais -------------------------------------------------11
3.1. Diretrizes para Elaborao de Algoritmos -------------------------11
3.2. Descrio de Algoritmos ---------------------------------------------12
3.3. Estruturas de Dados --------------------------------------------------13
3.4. Operaes Bsicas ----------------------------------------------------15
Exerccios de Fixao----------------------------------------------------17
3.5. Estruturas de Controle ------------------------------------------------18
Exerccios de Fixao----------------------------------------------------21
3.6. Consideraes sobre o Uso de Variveis em Algoritmos --------22
3.7. Tcnicas de Elaborao e Verificao de Algoritmos ------------24
Exerccios de Fixao----------------------------------------------------25
h Exerccios Propostos----------------------------------------------------25


Apndices Parte I


1. SOLUES DE EXERCCIOS

2. NOTAO PARA FLUXOGRAMAS


Texto Complementar e Exerccios
3
UFBa - Introduo Lgica de Programao MAT 146
Parte II - Lgica de Programao com Pascal

4. Linguagens de Programao de Alto Nvel--------------------------------27
4.1. Tipos de Linguagens de Programao ------------------------------28
4.2. Compilao e Execuo de Programas -----------------------------28
Exerccios de Fixao---------------------------------------------------29
5. A Linguagem de Programao Pascal --------------------------------------30
5.1. Estrutura Geral ---------------------------------------------------------30
5.2. Estruturas de Dados em Pascal --------------------------------------30
5.2.1. Tipos simples de dados----------------------------------------30
5.2.2. Tipos simples definidos pelo usuario------------------------31
5.3. Estruturas de Controle ------------------------------------------------32
h Exerccios Propostos----------------------------------------------------35
5.4. Estruturas de Dados : Tipos de Dados Estruturados --------------36
5.4.1. Vetores ----------------------------------------------------------36
Exerccios de Fixao---------------------------------------------------39
5.4.2. Matrizes ---------------------------------------------------------40
Exerccios de Fixao---------------------------------------------------41
5.5. Algoritmos de Classificao e Busca -------------------------------42
5.6. Procedimentos e Funes---------------------------------------------44
Exerccios de Fixao---------------------------------------------------46
5.7. Registros e Tabelas----------------------------------------------------49
5.8. Arquivos Diretos e Seqenciais -------------------------------------51
Exerccios de Fixao---------------------------------------------------53
5.9. Variveis Dinmicas: Ponteiros -------------------------------------55


Apndices Parte II


3. SOLUES DE EXERCCIOS - PROGRAMAS PASCAL
Texto Complementar e Exerccios
4
UFBa - Introduo Lgica de Programao MAT 146


Referncias Bibliogrficas


Forbellone, Andr L. V. Eberspcher, Henri F. Lgica de Programao - A Construo de
Algoritmos e Estruturas de Dados; Makron Books. 1993.

Gottfried, Byron B. Programao em Pascal; Schaum / McGraw Hill, 1988.

Tremblay, Jean-Paul; Bunt, Richard B. Cincia dos Computadores - Uma Abordagem
Algoritmica; McGraw Hill. 1983.

Guimares; Lages Algoritmos e Estruturas de Dados; Livros Tcnicos e Cientficos Editora.
1985

Wirth, Niklaus Algoritmos e Estruturas de Dados; Editora PHB, 1986.

Ziviani, Nivio Projeto de Algoritmos; Livraria Pioneira Editora

Saliba, Walter L. C. Tcnicas de Programao - Uma Abordagem Estruturada; Makron
Books

Carvalho, Srgio E. R. Introduo Programao com Pascal; Editora Campus

Farrer, Harry et al. Pascal Estruturado; Editora Guanabara Dois. 1985.

Shmitz, Eber; Teles, Antnio Pascal e Tcnicas de Programao; Livros Tcnicos e
Cientficos Editora. 1986.
Texto Complementar e Exerccios
5
UFBa - Introduo Lgica de Programao MAT 146
PARTE I. INTRODUO LGICA DE PROGRAMAO


1. ALGORITMOS

Leitura: Lgica de Programao - Forbellone Cap. 01

Definimos Algoritmo como a seqncia de passos que visam atingir um objetivo bem
definido.
Os algoritmos so utilizados no dia-a-dia para a soluo dos mais diversos problemas.

E Alguns exemplos genricos de algoritmos usados no nosso cotidiano so: uma
coreografia, um manual de instrues, uma receita de bolo, a soluo de uma equao do 2
grau, uma pesquisa na lista telefnica, etc.
O que todas essas coisas tem em comum?
Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que, quando
realizadas, atingem um objetivo previamente definido.
Assim, outra definio para algoritmos poderia ser:

Algoritmo a descrio de um conjunto de aes que, obedecidas, resultam numa
sucesso finita de passos, atingindo um objetivo esperado.

Dessa forma, vemos que, o que importa no algoritmo o efeito das aes para a obteno do
resultado esperado.
So propriedades de algoritmos:
aes simples e bem definidas (no ambguas);
seqncia ordenada de aes;
seqncia finita de passos.

1.1 Exemplo: Construindo um Algoritmo

Considere o seguinte problema:
Temos trs hastes. Uma das hastes serve de suporte para trs discos de tamanhos diferentes.
Os discos menores so sempre colocados sobre os discos maiores. A figura abaixo mostra
uma possvel situao inicial das hastes e discos.

Texto Complementar e Exerccios
6
UFBa - Introduo Lgica de Programao MAT 146
Desejamos mover todos discos para outra haste, porm s podemos movimentar um disco de
cada vez e um disco maior nunca pode ser colocado sobre um disco de menor tamanho.
Soluo: Em forma narrativa
Nomeamos as hastes como 1, 2 e 3 e os discos como p, m e g. Considera-se que inicialmente
os discos esto na haste 1. Os passos so:
1. move o disco p para a haste 2.
2. move o disco m para a haste 3.
3. move o disco p para a haste 3.
4. move o disco g para a haste 2.
5. move o disco p para a haste 1.
6. move o disco m para a haste 2.
7. move o disco p para a haste 2.

Podemos tambm representar a soluo em forma grfica, desenhando as hastes e a posio
dos discos a cada momento (ou passo).

Como podemos ver, com 3 discos precisamos de, no mnimo, 7 passos para solucionar o
problema. Quantos passos seriam necessrios para se mover 4 discos? E para n discos?

Curiosidade: Este problema foi criado m 1883 pelo matemtico francs Edouard Lucas
(1842-1891), que tambm criou uma lenda curiosa para enunciar o problema. Deixo para
vocs procurarem na Internet a lenda das Torres de Hani.

Texto Complementar e Exerccios
7
UFBa - Introduo Lgica de Programao MAT 146
hExerccios Propostos

P1. Temos trs recipientes de tamanhos distintos: o primeiro com capacidade para 8 litros,
outro para 5 litros e o terceiro com capacidade para 3 litros. O recipiente de 8 litros est
totalmente cheio. Deseja-se colocar 4 litros em dois recipientes. Considere que os recipientes
no sejam graduados.

P2. Numa determinada noite, acontece uma queda de energia. Voc sabia que poderia
encontrar uma vela na gaveta da cozinha, um lampio embaixo da cama, fusveis de reserva
no armrio da sala e fsforos na estante da cozinha. Descreva a seqncia de passos que
poderia ser utilizada para diagnosticar e resolver o problema, o que pode ser previsto em duas
possibilidades:
a) o fusvel queimou;
b) a queda na estao da companhia eltrica.

> Exerccios Complementares

Faa pelo menos 02 Exerccios Propostos do Livro do Forbellone Cap. 1


Visite o site da disciplina e tente resolver os problemas de logica sugeridos:
http://www.im.ufba.br /mat146/ProblemaLogica

Texto Complementar e Exerccios
8
UFBa - Introduo Lgica de Programao MAT 146
2. RESOLUO DE PROBLEMAS ATRAVS DE COMPUTADORES

Os computadores podem ser usados de forma eficiente na soluo de certos tipos de
problemas. Os problemas que suportam tratamento por computador, em geral, envolvem
grandes quantidades de dados ou so problemas de natureza complexa, exigindo a execuo
de um grande nmero de passos para alcanar a soluo. Basicamente so problemas na rea
de processamento de dados e na rea cientfica.
O Computador uma ferramenta que permite a realizao do processamento
automtico (ou eletrnico) de dados.
Define-se por Processamento de Dados qualquer atividade que, utilizando informaes (ou
dados), efetua transformaes para obter novas informaes (ou dados) como resultado.

Dados de
Entrada
Dados de
Sada
Processamento
(transformao)

Porm , a tarefa desempenhada pelos computadores apenas parte do processo de soluo de
problemas.
As etapas na soluo de problemas so:
i) Entendimento do problema;
ii) Criao de uma seqncia de operaes (ou aes) que, quando executadas,
produzem a soluo para o problema;
iii) Execuo desta seqncia de operaes.
iv) Verificao da adequao da soluo.

As etapas de entendimento do problema, criao de seqncia de aes e verificao da
adequao da soluo so tarefas desempenhadas por pessoas. J a execuo das operaes
pode ser desempenhada por computadores.
Os computadores tem a capacidade de executar processos complicados e com grande
quantidade de informaes com rapidez e confiabilidade.

2.1 Programao

Programao a seqncia de planejamento, projeto, escrita e testes de instrues
desempenhadas pelo computador. uma arte e uma cincia. Arte porque existem muitas
maneiras de se realizar o trabalho de programao. Existe espao para uma considervel dose
de criatividade. tambm uma cincia, porque existem algumas regras que devem ser
seguidas, porque necessrio o uso de lgica e porque existem alguns mtodos rigorosos de
programao que asseguram a eficincia, economia e a utilidade dos programas gerados.
O trabalho de programao pode se tornar mais fcil se o dividirmos sistematicamente em
partes menos complexas (esta tcnica denomina-se dividir para conquistar).
Texto Complementar e Exerccios
9
UFBa - Introduo Lgica de Programao MAT 146
Um programa considerado confivel quando conseguir fazer com que o computador cumpra
com o objetivo proposto. Os programas construdos devem ser eficazes, realizando a tarefa
definida e eficientes, utilizando os melhores meios para realiz-la.

O maior problema na construo de programas a complexidade; esta complexidade
representa a quantidade de situaes diferentes que um problema pode apresentar e que
devem ser previstas na soluo do mesmo. Portanto, ao se construir um programa, o objetivo
principal vencer a complexidade do problema a ser solucionado.

A fim de lidar com esta complexidade, podemos dividir a programao em duas fases
distintas:

Problema
Soluo na forma
de Algoritmo
Soluo como
um programa
de computador
1
2
Fase de Resoluo do Problema
Fase de Implementao (ou Codificao) do
Algoritmo em alguma Ling. de Programao



C Modelizao (ou Resoluo) do Problema : determinao do modelo de soluo para o
problema proposto na forma de um algoritmo computacional.
Assim, a elaborao de um algoritmo o primeiro passo para a preparao de um programa
de computador. Este algoritmo deve ser independente da linguagem de programao que ser
utilizada.
C Implementao: a transformao (ou codificao) do algoritmo em alguma Linguagem
de Programao adequada ao modelo elaborado.

Leitura complementar: definio de Programao no livro Algoritmos e Estruturas de
Dados (Wirth)

Definies Importantes:
"Programas so formulaes completas de algoritmos abstratos, baseados em representaes
especficas de dados." [Wirth]
"Programao Estruturada a arte ou tcnica de construir e formular algoritmos de forma
sistemtica." [Wirth]
Texto Complementar e Exerccios
10
UFBa - Introduo Lgica de Programao MAT 146

Quem foi Nicklaus Wirth? Em 1984 ele recebeu o mais prestigioso prmio tcnico da
ACM (Association for Computing Machinery) o A.M. Turing Award por sua valiosa
contribuio para a computao. O resto deixo para vocs pesquisarem. Aproveite e procure
saber tambm sobre a ACM. Qual a relevncia dessa associao? O que ela faz?

3. ALGORITMOS COMPUTACIONAIS

O algoritmo uma seqncia de instrues, onde cada instruo representa uma AO que
deve ser entendida e realizada. Surge ento uma Questo:

Como saber se j temos detalhes suficientes em um algoritmo
para que a AO possa ser entendida e realizada ?

Vai depender do agente que ir executar o Algoritmo. No caso de algoritmos
computacionais, sabemos que o computador possui um conjunto limitado de instrues e o
algoritmo deve ser expresso nos termos destas instrues.
O computador utiliza dois conceitos bsicos para construir e interpretar algoritmos:
- Estruturas de Dados = para manipulao das informaes
- Estruturas de Controle = para manipulao das aes

3.1 Diretrizes para a Elaborao de Algoritmos

As diretrizes apresentadas abaixo so genricas e podem ser usadas ou adaptadas na
organizao dos passos que comporo a soluo de um determinado problema (ou seja, na
criao de um algoritmo para atingir um objetivo determinado).
1. Identificao do problema: determinar o que se quer resolver ou qual objetivo a ser
atingido.
2. Identificao das entradas de dados: informaes fornecidas, a partir das quais se
desenvolvero os clculos.
3. Identificao das sadas de dados: as informaes a serem geradas como resultado.
4. Identificao das regras e limitaes do problema ou das limitaes do agente
executante (ex: se o agente fosse uma calculadora no-cientfica, iriam existir
limitaes no clculo de funes, por exemplo).
5. Determinao do que deve ser feito para transformar as entradas em sadas. Neste
ponto deve ser determinada a seqncia de aes que leve soluo do problema. Para
isto preciso:
5.1. observar as regras e limitaes j identificadas;
5.2. determinar aes possveis de serem realizadas pelo agente.
Texto Complementar e Exerccios
11
UFBa - Introduo Lgica de Programao MAT 146
6. Construo do Algoritmo, utilizando uma das formas de representao de algoritmos
(ver Tpico 3.2)
7. Teste da soluo - execuo de todas as aes do algoritmo, seguindo o fluxo
estabelecido para verificar se ele est realmente gerando os resultados esperados ou
detectar possveis erros em sua descrio (veja detalhes sobre Teste de Algoritmos no
Tpico 3.7)

Exemplo:
Imagine o seguinte problema: Calcular a mdia final dos alunos da 6 Srie. Os alunos
realizaro quatro provas: P1, P2, P3 e P4. A Mdia Final calculada por:
(P1 + P2 + P3 + P4) / 4.
Para montar o algoritmo proposto, faremos trs perguntas:
a) Quais so os dados de entrada?
R: Os dados de entrada so P1, P2, P3 e P4
b) Qual ser o processamento a ser utilizado?
R: O procedimento ser somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)/4
c) Quais sero os dados de sada?
R: O dado de sada ser a mdia final

3.2 Descrio de Algoritmos

A descrio de um algoritmo de forma clara e fcil de ser seguida ajuda no seu
desenvolvimento, depurao (correo de erros) e a subsequente transformao do mesmo
num programa.

O Descrio Narrativa
Especificao verbal dos passos em linguagem natural.
Desvantagens: a linguagem natural prolixa e imprecisa e freqentemente pouco confivel
como um veculo de transferir informao.
Sua utilizao pode ser adotada, entretanto, para a apresentao de comentrios sobre o
algoritmo (ou parte dele), esclarecendo ou realando pontos especficos.

O Fluxograma
Uso de ilustraes grficas para transmitir informaes (Ex. Gerais: mapas, diagramas
explicativo para montagem de aparelhos, etc.).
Um fluxograma mostra, de forma grfica, a lgica de um algoritmo, enfatizando passos
individuais e o fluxo de execuo.
Texto Complementar e Exerccios
12
UFBa - Introduo Lgica de Programao MAT 146
Desvantagens: utilizao questionvel de fluxogramas detalhados, pois obscurecem a
estrutura do programa.
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja
Apndice II no final ).

O Linguagem Algortmica ou Pseudolinguagem
Linguagem especial para expresso de algoritmos; funciona como uma "linguagem
simplificada de programao", utilizando expresses concisas e pr-definidas para representar
as aes e o fluxo de execuo. uma descrio textual, estruturada e regida por regras que
descrevem os passos executados no algoritmo. Utiliza-se palavras-chaves, indentao, apenas
um passo por linha, normalmente usa-se um smbolo para indicar o final de um passo (como
por exemplo o ponto-e-virgula ;), etc.

Usaremos o Portugol, pois ela possui uma estrutura similar ao Pascal.

E Exemplo: Duas representaes para o algoritmo do problema das medias dos alunos da 6
Srie.

1. Receba a nota da prova1
2. Receba a nota da prova2
3. Receba a nota da prova3
4. Receba a nota da prova4
5. Some todas as notas e divida
o resultado por 4
6. Mostre o resultado da diviso

3.3 Estruturas de Dados

Leitura: Lgica de Programao - Forbellone Cap. 02

Um aspecto fundamental na construo de algoritmos computacionais so as estruturas de
dados, que representam as informaes do problema a ser resolvido.
Tais estruturas esto organizadas em tipos distintos de informaes. Dentro do escopo das
estruturas de dados, definimos os termos CONSTANTE, VARIVEL e IDENTIFICADOR.

O Tipos Primitivos de Dados

Texto Complementar e Exerccios
13
UFBa - Introduo Lgica de Programao MAT 146
So os grupos de informaes que o computador manipula. Podem ser:
1. Numricos
a) inteiros Ex: 1 -4 100 0 -905 ...
b) reais Ex: 1,3 816,97 3,0 -0,0055 ...

1. No-numricos
a) alfanumricos Ex: CASA livro 18 R$ 55,36 ....
b) lgicos ou booleanos Ex: Falso, Verdadeiro (ou False, True)

E Obs: O delimitador usado para alfanumricos pode ser : ou

O Constantes

Representam valores constantes, ou seja, que no variam no decorrer do algoritmo.
Ex: 148, Opo:, -8.69, Tecle algo para continuar, Falso ...

O Variveis

Representam informaes cujos valores so modificados ao longo do tempo (Ex. Genrico: a
idade de um indivduo). Podemos definir variveis tambm como um local onde um
determinado valor (de um dos tipos definidos) armazenado. Assim, a varivel composta de
dois elementos bsicos:
- contedo - valor atual da varivel
- identificador - nome dado varivel para possibilitar sua manipulao

O conceito de varivel, na verdade, corresponde a posies de memria RAM, onde sero
armazenados os dados manipulados pelo programa quando este for implementado.


Endereo = Posio na memria
Contedo = Informao armazenada
Memria RAM ... Varivel
Identificador = Nome da varivel
Contedo da varivel
X


O Identificador

Nome de um local onde se pode colocar qualquer valor do conjunto de valores possveis de
um tipo bsico associado. Usado para manipular todos os dados variveis do algoritmo. Pode
tambm ser usado para rotular valores constantes (ex: uso do identificador PI para representar
o valor constante 3,14).

Regras para Definio de Identificadores em Pseudolinguagem (Portugol):
- devem comear por um caracter alfabtico (uma letra);
- pode ser seguido de letras e/ou dgitos;
- permitido o uso do caracter especial _ situado entre letras e/ou dgitos.

Ex. de identificadores vlidos: Operador, Nome, X, y, ENDEREO, Aluno_01

Texto Complementar e Exerccios
14
UFBa - Introduo Lgica de Programao MAT 146
E O identificador deve representar de forma significativa o contedo desejado, ou seja, deve
ser um MNEMNICO.

Procure a definio de mnemnico num dicionrio. Depois descubra como este termo
e empregado em programao. O que so variveis mnemnicas?

O Declarao de Variveis

a criao (ou definio) de locais na memria rotulados com o identificador da varivel (ou
constante) que ser utilizada no algoritmo para a manipulao de um determinado tipo de
informao.
Sintaxe Geral em Portugol:

Lista de Variveis : Tipo ;

O Tipo pode ser inteiro, real, caracter (alfanumrico) ou booleano.

Ex: NUM, X : inteiro;
parcela : real;
resposta : booleano;
PI : real; { definio de uma constante real }
NOME, ENDEREO : caracter;

E Neste momento, as variveis ainda no contm nenhum valor associado a elas.

E A declarao de variveis deve ser feita antes da definio das aes do algoritmo.

E Os comentrios representam qualquer texto que explique uma ao ou um dado usado no
algoritmo. Eles podem ser colocados em qualquer ponto do algoritmo, utilizando { } ou * *
como delimitadores.


3.4 Operaes Bsicas

O Comando de Atribuio

Serve para atribuir (ou associar) um valor a uma varivel ou constante.
Sintaxe Geral em Pseudolinguagem:

identificador expresso ;

onde expresso pode ser um(a): Constante, Varivel, Expresso matemtica, Funo
matemtica, Expresso booleana, etc.

Ex: NOME Fulano de Tal
PI 3.14
Erro Verdadeiro (ou, simplesmente, Erro T)
Media (P1 + P2)/2
Texto Complementar e Exerccios
15
UFBa - Introduo Lgica de Programao MAT 146

O Funes Matemticas

nome da funo (argumento)

E O argumento a informao que dada funo para que ela possa ser efetuada
adequadamente. Pode ser uma constante ou uma varivel.

Exemplos de Funes Matemticas que utilizaremos:

Sin (X) - Funo que calcula o seno da varivel X
SQRT (y) - Funo que calcula a raiz quadrada de y
int (z) - Funo que retorna a parte inteira da varivel z
(que deve ser do tipo real)

O Operadores Aritmticos + - (unrios)
** exponenciao
* multiplicao
/ diviso
+ - soma e subtrao (binrios)
div diviso truncada (ou inteira) (ex: x div y)
mod resto da diviso inteira

O Operadores Relacionais < <= > >= = < > (diferente)

O Operadores Lgicos not and or

** Podemos usar parnteses para alterar ordem de prioridade das operaes.

Ver resumo dos operadores e a ordem de prioridade das operaes em Lgica de
Programao Forbellone Cap. 02


O Comandos de Entrada e Sada de Dados

Representam as aes bsicas de algoritmos para recebimento e apresentao de dados,
respectivamente.
Entrada de Dados: informaes que so fornecidas ao programa pelo usurio durante a
resoluo do problema.
Representao em Portugol:

leia (identificador, identificador, ...) ;

Ex: leia (altura, idade, sexo);

Sada de Dados: informaes que so mostradas ao usurio como resposta ao problema.
Representao em Pseudolinguagem:

Escreva (expresso, expresso, ...) ;
Texto Complementar e Exerccios
16
UFBa - Introduo Lgica de Programao MAT 146

Ex: escreva ( Seu peso ideal eh : , peso_ideal) ;
escreva ( Media final = , (P1 + P2)/2) ;

O Esquema Genrico de Algoritmos em PseudoLinguagem

Declarao de Variveis / Constantes
INICIO
inicializao de variveis / constantes
{comentrios}
bloco de comandos de entrada de dados
{comentrios}
bloco de comandos de clculo
{comentrios}
bloco de comandos de sada de dados
FIM

Exemplo: Algoritmo em pseudolingugem para o problema do clculo da mdia final dos
alunos da 6 Srie.

* declarao de variveis
Real: P1, P2, P3, P4, Media;
Inicio
* comandos de entrada de dados
Leia (p1);
Leia (p2);
Leia (p3);
Leia (p4);
* processamento- Calculo da media
Media (P1 + P2 + P3 + P4)/4;
* sada de dados
Escreva ( Media final = , Media);
Fim

Exerccios de Fixao

F1. Faa 02 exemplos para cada um dos conceitos abaixo:
a) entrada de dados
b) sada de dados
c) declarao de variveis
d) inicializao de variveis
e) atribuio do resultado de uma expresso aritmtica a uma varivel

F2. Utilizando tipos primitivos de dados, crie declaraes de variveis, que armazenem as
seguintes informaes: o nome de uma figura geomtrica, a quantidade de lados, a rea, o
permetro e se a figura regular ou no.

> Exerccios Complementares: Livro Forbellone - Cap. 02 - Exerccios Propostos

Texto Complementar e Exerccios
17
UFBa - Introduo Lgica de Programao MAT 146


3.5 Estruturas de Controle: Sequencial, Condicional e de Repetio



Leitura: Lgica de Programao - Forbellone Cap. 03


O Estrutura de Controle Seqencial

Conjunto de comandos que so executados numa seqncia linear, de cima para baixo, na
mesma ordem em que aparecem.

Sintaxe Geral:
Comando 1;
Comando 2;
Comando 3;
....


O Estrutura de Controle Condicional ou de Seleo

Permite a escolha de um grupo de aes para serem executadas de acordo com a aceitao ou
no de certas condies.

So testados parmetros e, a depender de seus valores, tomamos um caminho ou outro.
As condies que so testadas num Algoritmo so do tipo lgica (booleana), portanto podem
ter somente dois resultados: Verdadeiro ou Falso. Assim, a seleo de aes pode seguir, no
mximo, duas alternativas: uma se a condio for verdadeira e outra se a condio testada for
falsa. Existem selees mais simples e selees compostas outras selees.

Selees Simples

Opo 1: Sintaxe Geral

Se condio Ento
bloco de comandos 1
Fim se



Opo 2
Se condio Ento
bloco de comandos 1
seno
bloco de comandos 2
Fim se
Texto Complementar e Exerccios
18
UFBa - Introduo Lgica de Programao MAT 146


Selees Compostas: Aninhamento de condies

Se condio1 Ento
bloco de comandos 1
seno
Se condio2 Ento
bloco de comandos 2
Fim se
Fim se

E Observao: as palavras sublinhadas na Sintaxe Geral so chamadas de palavras
reservadas e sempre aparecem na estrutura. As palavras em itlico so indicaes do tipo de
expresso ou comando que devem ser usados.


O Estrutura de Repetio

Podemos ter repeties condicionais ( a repetio ocorre condicionada a uma condio lgica)
e incondicionais (que tem um nmero pr-definido de repeties).

a) Repetio Condicional: existem dois tipos distintos de Repetio Condicional.

Tipo 1 - Condio testada no incio da repetio

Sintaxe Geral:
Enquanto condio faa
bloco de comandos
Fim enquanto

Caractersticas:
Testa a condio antes da execuo do bloco.
Enquanto a condio for verdadeira, o bloco de comandos executado. Assim, o bloco
de comandos pode ser executado 0 ou mais vezes.
Pra a execuo do bloco quando a condio se tornar falsa.

E Exemplo:

Elabore um algoritmo para determinar o menor nmero fornecido de um conjunto de valores
inteiros positivos dados. Considere que o nmero zero indica o encerramento do conjunto de
dados de entrada.

valor, menor : inteiro
Incio
leia (valor)
menor valor * inicializao da varivel que vai guardar o menor valor *
Enquanto ( valor < > 0 ) faa
Se valor < menor ento
menor valor
Texto Complementar e Exerccios
19
UFBa - Introduo Lgica de Programao MAT 146
fim se
leia (valor) * entrada do prximo elemento do conjunto *
fim enquanto
escreva ( O menor valor do conjunto , menor)
Fim


Tipo 2 - Condio testada no final da repetio

Repita
bloco de comandos
at condio

Caractersticas:
Testa a condio aps da execuo do bloco.
Enquanto a condio for verdadeira, o bloco de comandos executado. Assim, o bloco
de comandos executado pelo menos uma vez.
Pra a execuo do bloco quando a condio se tornar verdadeira (denominada de
Condio de Parada).


b) Repetio Incondicional - N. pr-definido de repeties

Sintaxe Geral:
Para varivel de controle = valor inicial at valor final Faa
bloco de comandos
Fim para


Repete o bloco de comandos (valor final - valor-inicial + 1) vezes
Incrementa automaticamente a varivel de controle cada vez que o bloco
executado (incremento default de 1 at alcanar o valor final)
Se o valor final definido for menor que o valor inicial, o lao de repetio no
executado nenhuma vez.
A varivel de controle deve ser do tipo primitivo inteiro.
A varivel usada como controle da estrutura no pode ser modificada dentro do
bloco!
Texto Complementar e Exerccios
20
UFBa - Introduo Lgica de Programao MAT 146
E Exemplo:

Elabore um algoritmo para calcular o fatorial de N, onde N um nmero inteiro (maior ou
igual a zero).
Considere que: Se N > 0 ento N! = 1x 2 x 3 x .... x N
N= 0 ento N! = 1

Algoritmo em Pseudolinguagem

n, fat, acum : inteiro

{ acum e a varivel de controle }

Incio
leia (n)
* inicializao de fat
fat 1
Para acum = 2 at n faa
fat fat * acum
fim para
escreva ( o fatorial de , n ,
, fat )
Fim
... e em Fluxograma:



Teste da Soluo: Testando o algoritmo acima para os seguintes valores de n: 0, 1 e 3

N Fat acum Escreva ...
0 1 X fatorial = 1
1 1 X fatorial = 1
3 1 2
1*2 3
1*2*3 4 fatorial = 6


Exerccios de Fixao

F1. Faa 02 exemplos para cada um dos conceitos abaixo:
a) condio lgica composta
b) estrutura de seleo simples
c) estrutura de seleo encadeada
d) estrutura de seleo de mltipla escolha



Texto Complementar e Exerccios
21
UFBa - Introduo Lgica de Programao MAT 146
F2. Observe o algoritmo e responda:

X, N : inteiro
Inicio
leia (N , X)
Y 1
Enquanto ( X > 0 ) faa
inicio
Y Y * N
X X - 1
fim
Fim enquanto
escreva ( Y )
Fim

a) Qual o objetivo do algoritmo acima (i.e.: qual o problema que ele est solucionando)?
b) O algoritmo est correto? Como voc fez para test-lo?
c) Altere o algoritmo, utilizando a Estrutura Repita ... At
d) Altere o algoritmo, utilizando a Estrutura Para ... Faa
e) Qual das trs opes de algoritmo a melhor na sua opinio? Por que?


3.6 Consideraes sobre o Uso de Variveis em Algoritmos
Computacionais

As variveis representam a informao manipulada pelo algoritmo, e portanto, pode aparecer
em diversas situaes:

1.Armazenar dados que so fornecidos pelo usurio
Ex: leia (DIA, MES, ANO)

2. Armazenar resultados de expresses
Ex: RESULT (A + B * C) / (D - E)

3. Acumuladores: Acumular valores
Ex: ACUMULA 1
Enquanto ACUMULA < 100 faa
leia (NUM)
ACUMULA ACUMULA + NUM
Fim enquanto

4. Contadores: Contar valores
Ex: CONTA 0
Repita
CONTA CONTA + 1
escreva (Repeti o lao , CONTA, vezes )
at CONTA > 20

5. Finalizadores: Finalizar repeties
Texto Complementar e Exerccios
22
UFBa - Introduo Lgica de Programao MAT 146
Ex
1
: leia (NUM)
Enquanto NUM < > 0 faa {condio para parada NUM = 0 }
Seno SIN (NUM)
escreva (Seno)
leia (NUM)
Fim enquanto
Ex
2
: Repita
leia (oper1, oper2)
divis oper1/oper2
escreva ( Continuar (sim/nao) : )
leia (resp)
ate resp = nao {condio de parada}


6. Sinalizadores ou Flags: Sinalizar erros, condies de falha de teste, etc.
Varivel que informa que uma determinada situao foi alcanada.
Ex: INVALIDA 0
Se (dia<1 or dia>31) or (mes<1 or mes>12) ento
INVALIDA 1
seno
.....
fim se
Se INVALIDA = 0 ento
escreva ( Data vlida )
seno
escreva ( Data invlida )
fim se

E Muitas vezes so usadas variveis do tipo booleano como sinalizadores.
Ex: INVALIDA: booleano
...
Leia (dia, mes, ano)
* inicializa a variavel booleana com um valor False ou True
INVALIDA False
Se (dia<1 or dia>31) ento
* Muda o valor do flag para sinalizar um erro ou mudana de estado
INVALIDA True
seno
Se (mes<1 or mes>12) ento
INVALIDA True
fim se
* Note que a condio no usa operadores lgicos do tipo (Invalida = True)
Se INVALIDA ento
escreva ( Erro na Data - dia invalido ou mes invalido )
fim se
Texto Complementar e Exerccios
23
UFBa - Introduo Lgica de Programao MAT 146
3.7 Tcnicas de Elaborao e Verificao de Algoritmos

Leitura: Cincia dos Computadores - Uma abordagem algortmica - Tremblay
Cap. 07


O Refinamentos Sucessivos top-down

Esta uma tcnica de elaborao de algoritmos que divide o desenvolvimento do mesmo em
diferentes fases. O problema inicial subdividido em subproblemas menores, e estes em
partes ainda menores, e assim sucessivamente. A cada diviso so levados em conta mais
detalhes sobre a especificao do problema. Esta uma maneira de lidar com a complexidade
do problema. Mais adiante, quando falarmos de Procedimentos e Funes veremos na prtica
o uso de Refinamentos Sucessivos Top-Down.

O Regras para tornar seu algoritmo mais claro e legvel

a) Utilize comentrios.
Escreva os comentrios no momento que estiver escrevendo o algoritmo. Um programa mal
documentado um dos piores erros que um programador pode cometer. O melhor momento
para se escrever os comentrios aquele em que o programador tem maior intimidade com o
algoritmo, ou seja, durante a sua confeco. Existem 02 tipos de comentrios que devem ser
usados.
Prlogo ou Cabealho: so comentrios que contm uma identificao geral do algoritmo.
O que faz o algoritmo (programa ou mdulo);
Como cham-lo ou utiliz-lo;
Significado dos parmetros, variveis de entrada, de sada e variveis mais
importantes;
Arquivos utilizados;
Outros mdulos utilizados;
Mtodos especiais utilizados, com referncias nas quais possa se encontrar mais
informaes;
Autor, data de escrita e ltima atualizao;
Comentrios de linha: so comentrios de passos que podem ser mais obscuros para o leitor,
como o uso de variveis como acumuladores, contadores, flags, etc.

b) Utilize identificadores mnemnicos: escolha nomes representativos para variveis, funes,
constantes, tipos, etc. Evite usar letras quando a varivel representa algo concreto (ex: X
Y + Z muito menos claro que Preco Custo + Lucro). Tambm evite identificadores
longos (ex: use nome ou nAluno ao invs de nome_do_aluno para representar nome de
aluno).

c) Utilize indentao para mostrar a estrutura lgica do programa. Crie suas regras bsicas de
indentao e procure segu-las ao escrever um algoritmo. Uma boa regra indentar blocos de
comandos internos a uma estrutura de controle.

d) Utilize espaos em branco para melhorar a legibilidade. Os espaos em branco so valiosos
para melhorar a aparncia de um programa. Voc pode por exemplo:
Texto Complementar e Exerccios
24
UFBa - Introduo Lgica de Programao MAT 146
Deixar uma linha em branco entre as declaraes e o corpo do programa;
Separar grupos de comandos que executam funes lgicas distintas por uma ou mais
linhas em branco.
Um comando por linha suficiente. A utilizao de vrios comandos por linha prejudicial
por vrios motivos, dentre eles destacam-se o fato do programa tornar-se mais ilegvel e ficar
mais difcil de ser depurado.

O Testes

Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser
feito atravs de uma simulao do mesmo, aonde so dados valores para os dados de entrada e
vai-se preenchendo uma tabela aonde so colocadas todas as variveis e constantes do
algoritmo. Segue-se o fluxo de execuo (como se estivesse executando o algoritmo em um
computador imaginrio). A cada comando de atribuio ou clculo de expresso o valor das
variveis deve ser atualizado. Ao final do teste podemos ter as seguintes situaes:
- o resultado esperado foi alcanado; ou
- foram detectados erros nos comandos; ou
- foram detectados erros no fluxo de execuo - erro nas estruturas de controle.

Procure fazer testes relevantes como, por exemplo, aqueles que verificam casos extremos e
casos de excees. Com o teste possvel identificar se e em que ponto o algoritmo est
falhando e fazer a correo. Algoritmos errados podem gerar resultados errados ao serem
executados por um computador ou mesmo no gerar nada, se o computador detectar erros
graves na seqncia de operaes.



Exerccios de Fixao

Teste o algoritmo abaixo. Faa um Teste de Mesa, usando a tabela ao lado do algoritmo.
- lembre-se de testar os casos crticos (casos extremos e casos de excees)!

X, N : inteiro
Inicio
leia (N , X)
Y 1
Enquanto ( X > 0 ) faa
inicio
Y Y * N
X X - 1
fim
Fim enquanto
escreva ( Y )
Fim






N X Y ( X > 0 )





h Exerccios Propostos

P1. Elabore um algoritmo que verifique se um nmero positivo primo ou no. Faa um teste
exaustivo da soluo encontrada.

Texto Complementar e Exerccios
25
UFBa - Introduo Lgica de Programao MAT 146
P2. Elabore um algoritmo que calcule os 20 primeiros termos da Srie de Fibonacci. A srie
de Fibonacci formada pela seguinte seqncia: 1, 1 ,2, 3, 5, 8, 13, ... etc. Inclua um
teste de mesa do algoritmo.

P3. Determine o maior e o menor valor de um conjunto de nmeros inteiros positivos.
Considere que o conjunto de dados de entrada termina quando fornecido o nmero -5.

P4. Escreva um algoritmo que leia n nmeros inteiros e determine se cada um deles um
nmero da seqncia de Fibonacci ou no.

P5. O algoritmo abaixo tem como objetivo determinar o valor do somatrio S, dado pela srie
S = X - X
2

/ 3!
+ X
4

/ 5!
- X
6

/ 7!
+ ..... usando os 20 primeiros termos da srie, porm o
algoritmo no est correto. Corrija os erros encontrados (se preciso, rescreva o algoritmo)
e acrescente comentrios para aumentar a legibilidade do algoritmo. Faa um Teste de
Mesa.
inteiro : X , F , S
Inicio
leia ( X )
S 1
Fat 1
Para I = 1 at 20 faa
Para F = 1 at ( 2 * I ) faa
Fat = Fat * F
Fim Para
S ( S + (X ** (2 * I) ) ) / Fat
Fim Para
Escreva ( " O somatrio e' " , S )
Fim

P6. Elabore um algoritmo que leia uma massa de dados contendo SEXO , DATA DE
NASCIMENTO e ESTADO CIVIL (Casado/ Solteiro/ Divorciado/ Outros) de um grupo
de 100 pessoas e determine, ao final:
a) Mdia de Idade das mulheres
b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrncia

P7. Foi feita uma pesquisa de audincia de canal de TV em vrias casas numa certa cidade,
num certo dia. Para cada casa visitada fornecido o nmero do canal (4, 5, 7 ,11) e o
nmero de pessoas que estavam assistindo TV.
Elabore um algoritmo que leia um nmero indeterminado de dados (terminando quando
for lido um canal igual a zero) e calcule a percentagem de audincia para cada emissora,
mostrando ao final, o nmero de cada canal e sua respectiva audincia.

No Apndice I encontra-se a soluo de alguns dos exerccios propostos

> Exerccios Complementares

Livro do Forbellone - Cap. 03 Exerccios de Fixao e Exerccios Propostos
Texto Complementar e Exerccios
26

Você também pode gostar