Você está na página 1de 102

Algoritmos e Lgica de Programao

Caderno de Contedo da Disciplina

Professor: Bruno Gomes Gonalves


Tutor: Thales Brant Ferreira
Centro Federal de Educao Tecnolgica de Minas Gerais

1
Algoritmos e Lgica
de Programao
Prof. Autor: Biancca Nardelli Schenatz
Adaptaes: Prof. Bruno Gomes Gonalves
e-Tec Brasil Matria da disciplina
1
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Objetivos

Ao final deste desta aula, o aluno dever ser capaz de:


Conhecer os conceitos de algoritmos, raciocnio lgico e lgica
de programao;
Entender a importncia da resoluo de problemas lgicos em
nosso dia-a-dia e principalmente na rea de informtica;
Compreender a estrutura de um programa;
Dar seus primeiros passos na construo de um algoritmo
utilizando o Portugol;
Aplicar as diferentes formas de representao de um
algoritmo por meio de diagramas de blocos/fluxogramas;
Realizar testes de mesa para comprovar a melhor aplicao
lgica em um algoritmo.
2
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

1.1. Conceitos Bsicos

Em nosso cotidiano, encontramos a todo instante, problemas a serem resolvidos.


Alguns resolvemos de forma automtica, pois j incorporamos um aprendizado anterior.
Outros podem levar horas e horas para serem resolvidos e outros tantos parecem no ter
soluo. Desde as tarefas mais simples, como tomar um banho, at controlar nossos gastos
pessoais, exigem o encadeamento e a ordenao de nossos pensamentos e o
estabelecimento da forma com que a soluo do problema ser buscada. Alm disto, a
forma de pensar, ou seja, o raciocnio, deve ser eficaz, de forma simples, buscando sempre a
melhor resposta ao problema com um nmero mnimo de instrues (menor tempo
possvel).

Podemos dizer ento que Raciocnio Lgico esta organizao de nossas idias em
um conjunto de procedimentos finitos a fim de solucionarmos um problema. Aplicamos este
conceito diariamente, sem nos darmos conta disso.

A Lgica definida basicamente como a aplicao correta de leis de raciocnio para a


demonstrao da verdade.

Cada pessoa pode analisar um problema de uma forma diferente e algumas tendem a
complicar a sua soluo. Sendo assim, quando buscamos solucionar um problema devemos
pensar muito na soluo desejada, analisando todas as possibilidades, ao invs de utilizar a
primeira soluo que vier cabea. Quando esta anlise de possibilidades no realizada,
mais tempo ser gasto para obtermos o resultado e muitas vezes teremos que voltar ao
incio do processo para modificar os passos a serem executados.

Podemos perceber a importncia da lgica em nossa vida, no s na teoria, como na


prtica, quando queremos transformar nossos pensamentos em ao. Imagine que voc
precise dar um recado e voc tem a informao que dentro de sua mochila existe caneta e
papel. Para que voc anote o recado necessrio:

a) Abrir a mochila.

b) Pegar caneta e papel.

c) Ouvir o recado e realizar a anotao.


3

No entanto, se voc confia absolutamente em sua capacidade de memorizao,


Pgina

poder dispensar os procedimentos anteriores e tentar se lembrar do recado a ser


repassado. Qual procedimento mais eficaz? Isso vai depender de pessoa para pessoa.

O termo Algoritmo normalmente causa certa estranheza a algumas pessoas, pois


muitas acreditam que est escrito ou pronunciado de forma incorreta. A palavra algoritmos
vem do latim, dos termos algorismos ou algorithmos que esto associados idia de
Centro Federal de Educao Tecnolgica de Minas Gerais

algarismos por influncia do idioma grego a partir do termo arithms associado idia de
nmeros. MANZANO e OLIVEIRA (2008).

A palavra Algoritmo aplicada e empregada, segundo o dicionrio Aurlio, em


informtica e matemtica. Na informtica est associada a um conjunto de regras e
operaes bem definidas e ordenadas, destinadas soluo de um problema, ou de uma
classe de problemas, em um nmero finito de passos. Na esfera matemtica est associada
a um processo de clculo, ou de resoluo de um grupo de problemas semelhantes, em que
se estipulam, com generalidade e sem restries, regras formais para a obteno do
resultado, ou da soluo do problema.

Um algoritmo uma seqncia finita e no ambgua de instrues para solucionar


um problema. Mais especificamente, em matemtica, constitui o conjunto de processos, e
smbolos que os representam, para efetuar um clculo. ASCENSIO e CAMPOS (2002).

Com a crescente utilizao das Tecnologias de Informao e Comunicao em nosso


dia-a-dia, em especial o uso de computadores para agilizar muitas tarefas por ns
desempenhadas, no podemos deixar de lado a definio de Lgica de Programao.

De acordo com FORBELLONE e EBERSPACHER (2000), Lgica de Programao o uso


correto das leis do pensamento, da ordem da razo e de processos de raciocnio e
simbolizao formais na programao de computadores, objetivando racionalidade e o
desenvolvimento de tcnicas que cooperem para a produo de solues logicamente
vlidas e coerentes, que resolvam com qualidade os problemas que se deseja programar.

Mas como automatizar estas tarefas dirias com o auxlio de um computador?


Utilizando o raciocnio lgico para desenvolver algoritmos eficientes, transformando este
raciocnio lgico em lgica de programao, ou seja aplicar um algoritmo em uma linguagem
de programao.

Segundo PINTO (2009), vrias so as linguagens de programao utilizadas no


desenvolvimento de aplicaes, tais como C, Delphi, Java, Visual Basic, entre outras. Para o
desenvolvimento de sites, as linguagens mais conhecidas so HTML, PHP e ASP. Uma
linguagem de programao dever possuir um tradutor do cdigo-fonte (instrues do
programa) para a linguagem de mquina, que poderia ser um interpretador ou um
compilador.

Compiladores traduzem as instrues descritas pelo programador para uma


inguagem de mquina, transformando no que tambm conhecido como programa objeto.
Como exemplo de tais compiladores temos os da linguagem Cobol, Fortran, Pascal e C.
4
Pgina

Os interpretadores so programas que, alm de traduzir para a linguagem de


mquina (compiladores), tambm executam outros programas, escritos em linguagem de
alto nvel, linha a linha, e devem estar presentes na memria RAM do computador junto
com o programa a ser utilizado. Alguns exemplos de linguagens interpretadas seriam o Basic
e a linguagem SQL, entre outros.
Centro Federal de Educao Tecnolgica de Minas Gerais

No caso dos interpretadores, o cdigo fonte no totalmente traduzido antes de ser


executado e no existe a etapa da gerao de um cdigo intermedirio (cdigo objeto), pois
um interpretador l e traduz o cdigo de forma seqencial.

Utilizar a lgica de programao um fator relevante a todos aqueles que desejam


exercer atividades na rea de informtica, como programadores, analistas, equipe tcnica,
gerentes e outros. fundamental aperfeioar os mtodos aplicados independente da
linguagem a ser utilizada.

Durante a disciplina de Algoritmos e Lgica de Programao estaremos


aprofundando os conceitos abordados at aqui. No entanto a utilizao de uma linguagem
de programao propriamente dita ser realizada em nossa prxima disciplina de Linguagem
de Programao I.

1.2. Algoritmos e Portugol

Quando construmos um algoritmo, na realidade o que buscamos, apresentar o


passoa-a-passo de como iremos resolver um determinado problema. Para tanto necessrio
realizar uma descrio narrativa apontando os dados necessrios antes de se resolver o
problema, as etapas do processo de resoluo e os objetivos a serem alcanados.

Este processo pode ser representado pela Figura 1.1.:

Figura 1.1: Etapas de resoluo de um problema.

Fonte: Autoria Prpria.

importante perceber que, na criao de um algoritmo ou programa, o problema


sempre ser resolvido nestas trs etapas. Na Entrada, devero ser apresentados todos os
dados necessrios para a resoluo de todo o problema. Muitas vezes teremos que buscar as
informaes para tal resoluo. No Processamento deveremos apresentar os procedimentos
a serem executados para que na Sada possamos encontrar a resoluo do problema
5

proposto. O nmero de procedimentos dever ser finito, pois estamos buscando uma
Pgina

resoluo de problema simples e rpida. Todo algoritmo dever, portanto, ter um Incio e
Fim.

Existem vrias formas de se resolver um mesmo problema. Formas mais simples e


outras mais complexas. Mas lembre-se sempre de usar o bom senso, pois o problema da
complexidade no est apenas na elaborao do algoritmo, mas tambm na sua codificao
quando voc for utilizar uma determinada linguagem de programao.
Centro Federal de Educao Tecnolgica de Minas Gerais

Vejamos agora as etapas de resoluo de um problema por meio de um exemplo:

Problema: analisar as notas de Ambientes Virtuais de Aprendizagem e


Microinformtica (Nota1), Matemtica Instrumental (Nota2) e Redao Tcnica (Nota3),
calcular a mdia do Mdulo 1 e identificar se o aluno foi aprovado (mdia maior ou igual a
60 pontos) ou reprovado (mdia inferior a 60 pontos) para o Mdulo 2.

Entrada: Nota1, Nota2 e Nota3.

Processamento: efetuar o clculo da mdia aritmtica, que ser representada pela


soma das trs notas (Nota1+Nota2+Nota3) dividido por 3. O resultado final dever ser
comparado com a nota 60.

Sada: aluno Aprovado ou Reprovado.

Utilizando o Portugol teramos:

Exemplo1

Figura 1.2: Algoritmo do Exemplo 1.

Fonte: Autoria Prpria.

Passos a serem executados:


6
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 1.2: Passos do Exemplo 1.

Fonte: Autoria Prpria.

Resultado do Problema:

Figura 1.3: Sada do Exemplo 1.


7
Pgina

Fonte: Autoria Prpria.

O que vimos aqui foi a construo de um algoritmo em portugus. Portugol


portanto, uma pseudo-linguagem de programao, criada para representar o uso de
algoritmos e programao estruturada na lngua portuguesa. Outra forma de apresentao
utilizar uma linguagem de programao. Vejamos como o mesmo problema seria resolvido
Centro Federal de Educao Tecnolgica de Minas Gerais

utilizando a Linguagem de Programao C (linguagem que utilizaremos em nossa prxima


disciplina):

Figura 1.4: Exemplo 1 representado na Linguagem C.

Fonte: Autoria Prpria.

Em nossa disciplina de Algoritmos e Lgica de Programao estaremos utilizando o


Portugol IDE 2.3 que um simulador de linguagem algortmica desenvolvido para apoio s
aulas de Introduo Programao dos Cursos de Engenharia da Escola Superior de
Tecnologia de Tomar do Instituto Politcnico de Tomar (em Portugal). Todas as informaes
sobre este simulador podem ser obtidas em http://orion.ipt.pt/~manso/Portugol/ e tambm
sero explicadas durante nossas aulas.
8

1.3. Diagramas de Bloco/Fluxogramas


Pgina

Uma outra forma de representar um algoritmo a utilizao de Diagramas de Bloco


ou Fluxogramas.
Centro Federal de Educao Tecnolgica de Minas Gerais

Um Diagrama de Bloco ou Fluxograma uma representao esquemtica de um


processo, feita atravs de grficos que ilustram de forma descomplicada a transio de
informaes entre os elementos que o compe. muito utilizado na rea de informtica,
mas tambm utilizado na rea industrial para a organizao de produtos e processos.

O Exemplo1, utilizando o FLUXOGRAMA IDE 1.0 (faz parte do PORTUGOL IDE 2.3)
ficaria assim representado:

Figura 1.5: Exemplo 1 representado no Fluxograma IDE 1.0.

Fonte: Autoria Prpria.


9
Pgina

Podem existir pequenas diferenas na literatura ou na utilizao dos diferentes


softwares presentes no mercado, mas de forma geral os smbolos utilizados e a finalidade de
cada um deles esto representados na Tabela 1.1.

Tabela 1.1: Simbologia dos diagramas de fluxo de dados.


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: PINTO (2009).


10
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

1.4. Teste de Mesa

Aps construirmos um algoritmo, preciso verificar se ele realmente est escrito da


forma correta, ou seja, se sua sintaxe e sua lgica esto corretas. A sintaxe depender da
ferramenta utilizada para elaborar o programa, ou seja, cada linguagem tem a sua prpria
sintaxe. J a lgica, mesmo cada pessoa tendo a sua, dever apresentar a soluo correta ao
problema proposto.

Para verificar se a lgica est correta o ideal realizar testes, verificando cada uma
das etapas aplicadas no algoritmo. Para isso, leia cada uma das instrues e anote o
resultado de cada tarefa/passo, verificando possveis erros ou outras formas de solucionar o
problema. Este teste conhecido como Teste de Mesa. Um exemplo de teste de mesa pode
ser verificado em http://www.brasilacademico.com/ed/testemesa.htm

O Teste de Mesa do Exemplo 1 est representado na Tabela 1.2.

Tabela 1.2: Teste de Mesa do Exemplo 1.

Fonte: Autoria Prpria.


11
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

2
Dados, Variveis
e Constantes
Prof. Autor: Biancca Nardelli Schenatz
Adaptaes: Prof. Bruno Gomes Gonalves
e-Tec Brasil Matria da disciplina
12
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Objetivos

Saber identificar quais os tipos bsicos de dados (inteiro, real,


lgico, caractere e texto) e em que situaes utilizar cada um dos
diferentes tipos;
Diferenciar varivel de constante;
Declarar corretamente uma varivel e fazer atribuio de
valores;
Representar corretamente a entrada e sada de dados em um
algoritmo, quais os comandos utilizados para isso, reconhecendo
tambm a sua representao em um fluxograma;
Conseguir desenvolver algoritmos de pequena complexidade.
13
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

2.1. Tipos Bsicos de Dados

Quando abrimos a geladeira de nossa casa podemos visualizar diferentes tipos de


embalagens utilizados para guardar diferentes tipos de produtos: lquidos, slidos, em
pequena ou grande quantidade. Cada uma destas embalagens serve no para guardar um
produto especfico, mas uma gama de produtos semelhantes. Uma garrafa de plstico pode
muito bem guardar gua, refrigerante ou suco. J seria difcil guardar nesta mesma garrafa
plstica um pedao de queijo ou bolo. Neste caso seria necessrio um pote nas dimenses
do queijo ou do bolo (redondo, quadrado, retangular).

Quando construmos um algoritmo devemos pensar nas etapas necessrias para se


chegar soluo de um problema (entrada de dados -> processamento de dados -> sada de
dados). Para que estas etapas sejam realizadas deve-se armazenar de alguma forma os
dados no computador, mesmo que momentaneamente, e para isso devemos identificar qual
a embalagem correta a ser utilizada. Os Tipos Bsicos de Dados representam estas
embalagens quando falamos de programao. Os Tipos Bsicos de Dados so: Inteiro, Real,
Lgico, Caracter e Texto.

Se desejarmos armazenar valores que no sejam fixos, devemos utilizar Variveis e


caso os valores devam permanecer sem serem alterados durante toda a execuo do
programa, devemos utilizar Constantes.

2.1.1. Inteiro

Inteiro pode ser definido com um dado numrico que pertena ao conjunto dos
nmeros inteiros (positivos, negativos ou nulo). No possuem componentes decimais ou
fracionrios. Ex: 1, -2, +3, 0.

Ao trabalharmos com dados inteiros, podemos realizar um conjunto de operaes


sobre eles, cujo resultado sempre ser tambm um valor inteiro, como apresentado na
14

Tabela 2.1.:
Pgina

Tabela 2.1: Operaes sobre Inteiros.


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: Autoria Prpria.

Para este exemplo podemos escrever o seguinte algoritmo:

Exemplo 2

Figura 2.1: Algoritmo do Exemplo 2.

Fonte: Autoria Prpria.

Veja que no algoritmo, utilizando o Portugol IDE 2.3, existe um smbolo pr-definido
para mudana de linha (enter), o \n ou new line. Deve ser utilizado sempre entre aspas e
no local onde se quer que haja um espao entre linhas, como no exemplo, espao entre A, B
15

e os Cs. Caso no tivesse sido utilizado o \n, o resultado na tela seria:


Pgina

Figura 2.2: Resultados do Exemplo 2, sem a utilizao do \n.


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: Autoria Prpria.

No esquea! Devemos utilizar dados numricos inteiros sempre que quisermos


representar valores como:

a) Tenho 2 irms (no posso ter 1 irms!);

b) Estou no Andar 5 do meu prdio e vou subir mais 2 andares, chegando ento ao

Andar 7 (no posso subir 2 andares, correto!?);

c) Meu marido quer comprar 3 motos novas e vender 1 moto usada. Teremos ento 2
motos em casa.

2.1.2. Real

Real pode ser definido com um dado numrico que pertena ao conjunto dos
nmeros reais, incluindo todos os valores decimais, fracionrios e inteiros (positivos,
negativos ou nulo). Ex: 1.0, -2.25, +3.75, 0.

Note que no Exemplo 1 da aula passada as notas das disciplinas foram todas
declaradas como do tipo real, pois poderiam ser notas com casas decimais. Na realizao do
teste de mesa, em que as notas inseridas foram 40, 60 e 70 o resultado foi Reprovado pois a
mdia resultou em 56.67.

Se no Exemplo 2 declarssemos os dados como do tipo real, veja o que aconteceria:


16
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 2.3: Algoritmo do Exemplo 2, utilizando dados do tipo real.

Fonte: Autoria Prpria.

Para a ltima instruo a%b, que representa o resto da diviso inteira, no haveria
resultado satisfatrio, pois a/b=3.333... e neste caso no haveria resto.

No esquea! Devemos utilizar dados numricos reais sempre que quisermos


representar valores como:

a) Tenho 1.65 metros de altura;

b) Depositei em uma caderneta de poupana R$ 500.00. Aps 2 meses, rendendo 1%


ao ms de juros, terei R$ 510.05;

c) Tenho 65 Kg e se emagrecer 10% do meu peso atual, ficarei com 58.5 Kg.

Obs: Ao utilizar um dado do tipo real, use sempre ponto (.) em vez de vrgula (,). Isto
evita erro de sintaxe na maioria das linguagens de programao.
17
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

2.1.3. Lgico

Um dado Lgico pode ser definido como a representao de valores binrios


(booleanos) do tipo Verdadeiro ou Falso, True or False, Sim ou No, 1 ou 0 em que somente
uma das situaes pode ser escolhida. Ex:

a) A janela do meu quarto no pode estar aberta e fechada ao mesmo tempo. Ou


est aberta, ou est fechada. Sei que ela est aberta, mas meu irmo diz para minha me
que ela est fechada. Qual a resposta para a pergunta feita por minha me antes de sairmos
de casa: Todas as janelas foram fechadas? Resposta: Falso.

b) Para a combinao de mais de uma sentena deveremos aplicar as Tabelas


Verdade:

Tabela 2.2: Tabelas Verdade.

Fonte: Autoria Prpria.

Mais detalhes sobre este assunto sero abordados em nossa prxima aula.
18
Pgina

2.1.4. Caractere

Caractere pode ser definido com um dado alfanumrico simples. Uma cadeia de
caracteres j considerada um dado do tipo Texto (String).
Centro Federal de Educao Tecnolgica de Minas Gerais

Os caracteres podem ser representados em um computador atravs de cdigos ASCII


- American Standard Code for Information Interchange, que em portugus significa Cdigo
Padro Americano para Intercmbio de Informao. uma codificao de caracteres de sete
bits baseada no alfabeto ingls. Os cdigos ASCII representam texto em computadores,
equipamento de comunicaes, entre outros dispositivos que trabalham com texto. Estes
dispositivos s percebem nmeros, sendo assim um cdigo ASCII uma representao
numrica de um caractere, tal como um a ou um s. A maioria dos atuais esquemas de
codificao modernos, com suporte para muitos caracteres, teve origem no cdigo ASCII.

A Tabela 2.3 apresenta uma Tabela de Cdigos ASCII e este assunto ser abordado
mais profundamente em nossa disciplina de Linguagem de Programao I:

Tabela 2.3: Cdigos ASCII.


19
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: LOPES (2002).

Como exemplo de dados do tipo caractere podemos citar:

a) Sexo de um aluno: F (feminino) ou M (masculino);

b) Turno em que estuda: M (matutino), V (vespertino) ou N (noturno).

2.1.5. Texto

Texto pode ser definido com um dado alfanumrico ou literal, ou seja, uma cadeia de
caracteres (String). Pode conter letras, dgitos e/ou smbolos especiais. Pode-se utilizar
nmeros como tipo texto, mas desta forma eles no podero ser utilizados em clculos.
20

Um dado do tipo texto poder ser armazenado em um computador como uma atriz
linha (vetor), sendo cada um dos caracteres uma posio diferente neste vetor. Como
Pgina

exemplo temos a Tabela 2.4:

Tabela 2.4: Dado do tipo Texto.


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: Autoria Prpria.

Como exemplo de dados do tipo texto temos:

a) Nome do Aluno: Roberto da Silva;

b) Endereo do CEFET-MG: Avenida Amazonas, 5558;

c) Disciplina: Algoritmos e Lgica de Programao.

2.2. Variveis

De acordo com FORBELLONE (2000), um dado classificado como varivel quando


tem a possibilidade de ser alterado em algum instante no decorrer do tempo, ou seja,
durante a execuo do algoritmo em que utilizado, o valor dado sofre a alterao ou o
dado dependente da execuo em um certo momento ou circunstncia.

Para MANZANO (2008), todo dado a ser armazenado na memria de um computador


deve ser previamente identificado segundo seu tipo, ou seja, primeiramente necessrio
saber o tipo de um dado para depois fazer seu armazenamento adequado.

Armazenado o dado desejado, ele pode ser utilizado e processado a qualquer


momento. O nome de uma varivel utilizado para a sua identificao e representao em
um programa de computador.

A Figura 2.4. mostra uma representao grfica da memria de um computador com


variveis:
21
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 2.4: Representao grfica da memria de um computador com variveis.

Fonte: MANZANO (2008).

Cada uma destas gavetas representa um endereo da memria RAM (Randomic


Access Memory) de um computador. Imagine que um computador possua milhes de
endereos de memria. Como saber exatamente onde est guardada uma determinada
varivel?

Para acessar o contedo destas gavetas (endereos de memria), utilizam-se


variveis de memria (nomes) que indicam ao computador sua localizao exata.

Note que nos algoritmos apresentados at agora a declarao das variveis


indicao do tipo bsico de dado a ser utilizado) sempre foi feita aps a palavra inicio. Qual o
motivo?

Como vimos na Aula 1, todo algoritmo dever comear com a palavra inicio e
terminar com a palavra fim. Entre estas duas palavras estaro todos os outros comandos
necessrios para a resoluo de um problema, como dados de entrada, dados de sada e
clculos, por exemplo. Caso queira resolver a expresso c=a+b terei que inicialmente
declarar os tipos das variveis a, b e c. Resumindo, para executar qualquer tipo de
processamento, inicialmente devo alocar um espao na memria do computador para
22

armazenar um certo valor de entrada. Este valor inicial poder ser modificado dependendo
Pgina

das instrues seqenciais que estaro sendo executadas no algoritmo, ou seja, o valor final
de uma varivel poder ser diferente do valor informado inicialmente.

No caso do Exemplo 2, informamos inicialmente que a=10, b=3. A expresso c=a+b,


nos resultou c=13. Na seqncia, informamos que a varivel c no mais guardaria o valor 13,
mas sim o resultado de c=a-b, passando neste momento a armazenar o valor 7. Continuamos
dizendo agora que c=a*b (valor 30), c=a/b (valor 3) e finalmente c=a%b (valor 1). Podemos
Centro Federal de Educao Tecnolgica de Minas Gerais

dizer ento que o valor inicial de c 13 e seu valor final 1. Caso quisssemos que os valores
no fossem sobrepostos, necessariamente teramos que ter declarado variveis com nomes
diferentes, um nome para cada expresso.

2.2.1. Declarao de Variveis

Dependendo da linguagem de programao que se utiliza, algumas regras devem ser


obedecidas ao nomear uma varivel:

a) Todo nome de varivel deve obrigatoriamente comear com uma letra. Ex: utilize
a2 (nome vlido) e no utilize 2a (nome invlido);

b) Evite utilizar caracteres especiais no nome de uma varivel, como ou palavras


acentuadas;

c) Nomes de variveis escritas com letras maisculas sero diferentes de letras


minsculas, ou seja, MEDIA diferente de media, a diferente de A.

d) Nenhuma palavra reservada poder ser nome de uma varivel. Palavras reservadas
so aquelas utilizadas por uma determinada linguagem de programao, como tipos de
dados e comandos de execuo. Por exemplo, no poderei criar uma varivel chamada real,
pois real uma palavra reservada, indicando um tipo bsico de dado.

e) No utilizar espaos no nome da varivel. Utilize MediaDoAluno ao invs de


Media do Aluno.

A sintaxe correta para a declarao de variveis :

[tipo de dado] [nome da varivel] ou

[tipo de dado] [nome da varivel] <- [expresso]

Exemplos:

inteiro idade // neste caso a idade inicial assumida nula, ou 0


23

inteiro idade <- 18 // neste caso a idade inicial assumida 18


Pgina

real peso // neste caso o peso inicial assumido nulo, ou 0

real peso <- 23.14 // neste caso o peso inicial assumido 23.14 Kg, gramas, toneladas
(conforme indicao do programador)
Centro Federal de Educao Tecnolgica de Minas Gerais

lgico repetente // poder ser verdadeiro ou falso

texto nome<-Antonio, sobrenome <-Sousa // o nome ser Antonio e o


sobrenome Sousa. Note aqui porque quando escrevemos um nmero devemos usar um
ponto (.) ao invs de vrgula. A vrgula pode indicar na linguagem um separador como
neste caso em que tenho duas variveis do tipo texto: nome e sobrenome.

caracter sexo // poder ser F ou M

A atribuio de valores tambm deve ser feita da esquerda para direita. Exemplos:

a) inteiro num<- -27 // num declarado do tipo inteiro e automaticamente iniciada


com o valor -27;

b) inteiro n1<-5, n2<-7 // n1 e n2 so declaradas e ficam com os valores 5 e 7


respectivamente;

c) inteiro a<-100, b, c<-345, d // a e c so automaticamente iniciadas com os valores


100 e -345, b e d ficam com um valor aleatrio (nulo) porque no foram iniciadas.

2.3. Constantes

Uma constante, assim como as variveis de memria, tambm se refere a um espao


reservado na memria do computador. A diferena entre ambas que, como o prprio
nome indica, uma varivel ter seu contedo alterado cada vez que a rotina for executada,
j a constante ter sempre o mesmo valor alocado em sua memria, do incio ao fim da
rotina, e no poder ser alterado (PINTO, 2009).

Sua declarao tambm dever ser efetuada ao iniciar o algoritmo e da mesma


forma:

constante inteiro meses<-12 // um ano possui 12 meses

constante real pi<-3.14


24

constante texto curso<-Planejamento e Gesto em Tecnologia da Informao


Pgina

A constante pode ser de qualquer um dos tipos bsicos de dados, ou seja, constante
numrica (inteiro ou real), lgica (lgico) ou literal (caractere ou texto).
Centro Federal de Educao Tecnolgica de Minas Gerais

2.4. Entrada e Sada de Dados

Os comandos de entrada e sada de dados servem para a comunicao entre o


usurio e o computador. No momento em que o usurio utiliza o teclado e digita algum
valor, este valor pode ser armazenado como um dado no computador. Aps o
processamento, necessria a exibio de algum resultado e atravs do vdeo ou
impressora que o usurio visualiza este resultado.

Como comandos de entrada podemos utilizar o verbos escrever e ler. O uso do verbo
escrever na entrada de dados se refere ao que o usurio dever executar inicialmente.
Por exemplo: escrever Nome do Aluno: , significa dizer que o usurio dever entrar com o
dado nome, por exemplo (uma vez declarada a varivel nome do tipo texto).

Mas no basta somente escrever o Nome do Aluno. necessrio tambm que o


computador armazene esta informao em uma varivel adequada (neste caso uma varivel
do tipo texto), para que futuramente este dado seja utilizado. Para fazer esta associao
utilizamos o verbo ler, ou seja, ler nome significa que o Nome do Aluno digitado pelo usurio
ser armazenado na varivel do tipo texto denominada nome. A entrada de dados tambm
pode ser feita atravs de uma atribuio.

Na sada de dados geralmente utilizamos o verbo escrever. Por exemplo, se ao final


do algoritmo quiser que seja exibido o Nome do Aluno, devo utilizar:

escrever "Nome do Aluno="

escrever nome

Os smbolos utilizados no Fluxograma IDE 1.0 para representar leitura (ler), processo
(atribuio) e escrita (escrever) so:
25
Pgina

Figura 2.5: Representao grfica dos comandos de leitura, processo e escrita no Fluxograma
IDE 1.0.

Fonte: Autoria Prpria.

Vejamos agora alguns exemplos de algoritmos utilizando os conceitos utilizados nesta


aula:
Centro Federal de Educao Tecnolgica de Minas Gerais

Exemplo 4: Escreva um algoritmo que apresente como sada os seguintes dados:


nome do aluno, idade e plo onde estuda.

Figura 2.5: Algoritmo do Exemplo 4.

Fonte: Autoria Prpria.

Exemplo 5: Construa um algoritmo para somar dois nmeros e multiplicar o resultado


pelo primeiro nmero.

Figura 2.6: Algoritmo do Exemplo 5.

Fonte: Autoria Prpria.

Exemplo 6: Crie um fluxograma que verifique a freqncia de um aluno em um curso.

Caso esteja abaixo de 75%, estar automaticamente reprovado.


26
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 2.7: Fluxograma do Exemplo 6.

Fonte: Autoria Prpria.


27
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

3
Operadores e
Expresses
Prof. Autor: Biancca Nardelli Schenatz
Adaptaes: Prof. Bruno Gomes Gonalves
e-Tec Brasil Matria da disciplina
28
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Objetivos

Ao final desta aula, voc dever ser capaz de:


Reconhecer os diferentes tipos de operadores e expresses:
aritmticos, relacionais e lgicos.
Identificar a ordem de prioridade de execuo dos operadores e a
importncia da utilizao de parnteses.
Avaliar corretamente uma expresso para visualizar seu resultado.
29
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

3.1. Definies

Operadores so smbolos usados em expresses matemticas que envolvem variveis


e constantes.

Segundo LOPES (2002), o conceito de expresso em termos computacionais est


intimamente ligado ao conceito de expresso (ou frmula) matemtica, onde um onjunto
de variveis e constantes numricas relaciona-se por meio de operadores compondo uma
frmula que, uma vez avaliada, resulta num valor.

Os operadores e expresses podem ser divididos em:

- Aritmticos (com operaes sobre nmeros inteiros e reais);

- Relacionais (que geram resultados lgicos pela comparao entre duas expresses);

- Lgicos (fornecem como resultado um valor lgico verdadeiro ou falso).

3.2. Operadores e Expresses Aritmticas

Os operadores aritmticos servem para relacionar variveis e constantes gerando


expresses numricas, cujo resultado tambm numrico.

Assim como na matemtica, as operaes e expresses aritmticas podem ser


divididas em:

Adio: representada pelo sinal de soma (+). Por exemplo:

Tabela 3.1: Operador de adio.


30
Pgina

Fonte: Autoria Prpria.

Subtrao: representada pelo sinal negativo (-). Por exemplo:

Tabela 3.2: Operador de subtrao.


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: Autoria Prpria.

Diviso: na matemtica representada pelo sinal () e em programao pelo sinal


barra ( / ).

Tabela 3.3: Operador de diviso.

Fonte: Autoria Prpria.

Multiplicao: em matemtica representada pelo sinal . (ponto) ou x (xis) e em


programao pelo sinal * (asterisco).

Tabela 3.4: Operador de multiplicao.

Fonte: Autoria Prpria.

Resto: representado pelo sinal (%) e em algumas linguagens por mod. Representa o
resto da diviso de dois nmeros inteiros.

Tabela 3.5: Operador de resto.

Fonte: Autoria Prpria.


31

Potenciao: em matemtica, a representao feita com uma Base e um expoente


Pgina

(Be) e em programao representada pelo acento circunflexo (^). Em algumas linguagens


tambm pode ser representada por dois sinais de asteriscos (**).

Tabela 3.6: Operador de potenciao.


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: Autoria Prpria.

Vejamos agora um exemplo de algoritmo utilizando o Portugol IDE 2.3 com


operaes e expresses aritmticas:

Figura 3.1: Algoritmo do Exemplo 7, utilizando dados do tipo inteiro.

Fonte: Autoria Prpria.

Figura 3.2: Algoritmo do Exemplo 8, utilizando dados do tipo real.

Fonte: Autoria Prpria.


32

Da mesma forma que temos uma ordem (prioridade) das operaes em matemtica,
temos prioridades de execuo em programao:
Pgina

Tabela 3.7: Ordem de prioridades em programao.


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: Autoria Prpria.

Podemos utilizar tambm os parnteses para alterao de prioridades nos clculos:

(4+6*(8-(16/8+(10+6)))+2)

1) (10+6)=16

2) (16/8+16)=(2+16)=18

3) (8-18+2)=-8

4) (4+6*(-8))=-44

Resultado da expresso = -44.

No podemos esquecer tambm que, como na matemtica, no podemos dividir


nenhum valor por zero (0).

3.3. Operadores e Expresses Relacionais

Os operadores relacionais servem para comparar variveis e constantes gerando


expresses relacionais, cujo resultado um valor lgico (verdadeiro ou falso).

De acordo com LOPES (2002), uma expresso relacional, ou simplesmente relao,


33

uma comparao realizada entre dois valores de mesmo tipo bsico. Estes valores so
representados na relao atravs de constantes, variveis ou expresses aritmticas.
Pgina

Vejamos na tabela a seguir (Tabela 3.8) os operadores relacionais e seu respectivo


uso na matemtica e em programao:

Tabela 3.8: Operadores relacionais.


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: Autoria Prpria.

Uma expresso que contenha um operador relacional sempre apresentar como


resultado o valor lgico Verdadeiro (1) ou Falso (0).

Obs: Em algumas linguagens de programao, como a Linguagem C o operador de


igualdade representado por (==). O operador de igualdade verifica se duas expresses so
iguais, enquanto o operador (=) utilizado para atribuir valores a variveis.

Vejamos agora um exemplo de algoritmo utilizando o Portugol IDE 2.3 com


operaes e expresses relacionais:

Figura 3.3: Algoritmo do Exemplo 9, utilizando expresses relacionais.

Fonte: Autoria Prpria.

A utilizao do \t serve apenas para tabulao.

3.4. Operadores e Expresses Lgicas


34
Pgina

Os operadores lgicos so os operadores que geram resultados lgicos (booleanos)


pela comparao de duas expresses lgicas.

Os operadores lgicos so representados pelas palavras E (binrio), OU (binrio) e


NO (unrio), conforme a Tabela 3.9:
Centro Federal de Educao Tecnolgica de Minas Gerais

Tabela 3.9: Operadores lgicos.

Fonte: Autoria Prpria.

As Tabelas-Verdade para estes operadores foram apresentadas na Aula 2 Tabela


2.2.

Em algumas linguagens de programao, veremos tambm a representao do


operador lgico E por && (And), o operador OU por || (Or) e o operador NO por ! (Not).

Vejamos agora exemplos de algoritmos utilizando o Portugol IDE 2.3 com operaes
e expresses lgicas:

Figura 3.4: Algoritmo do Exemplo 11, utilizando expresses lgicas.

Fonte: Autoria Prpria.


35
Pgina

Figura 3.4: Algoritmo do Exemplo 12, utilizando expresses lgicas.


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: Autoria Prpria.

Abaixo, na Tabela 3.10, os salrios obtidos no Exemplo 12 e seus respectivos


aumentos:

Tabela 3.10: Respostas obtidas a partir do Exemplo 12.

Fonte: Autoria Prpria.

Quando utilizamos expresses com operadores relacionais e lgicos tambm


encontramos prioridade de execuo nas operaes:

Tabela 3.11: Precedncia de execuo nas operaes de acordo com o operador.

Fonte: Autoria Prpria.


36
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

4
Estruturas de Deciso
Prof. Autor: Biancca Nardelli Schenatz
Adaptaes: Prof. Bruno Gomes Gonalves
e-Tec Brasil Matria da disciplina
37
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Objetivos

Ao final desta aula, voc dever ser capaz de:


Criar estruturas para tomada de deciso simples, verificando se uma
condio verdadeira;
Criar estruturas para tomada de deciso composta, em que existem
processamentos a serem realizados caso uma condio seja verdadeira e caso
seja falsa;
Verificar em que situao um algoritmo deve utilizar uma estrutura
por seleo, em que existem vrias classes de deciso que podem ser
tomadas;
Testar a funcionalidade de estruturas de deciso simples, composta e
por seleo em um algoritmo.
38
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

4.1. Estruturas de Deciso Simples

At o presente momento, a maioria dos algoritmos desenvolvidos tratava de


processamentos simples para pequenas tarefas. Mas muitas situaes do nosso dia a dia
exigem a tomada de deciso, ou seja, diante de determinado fato, realizar ou no uma
determinada ao.

Em algoritmos estaremos representando a tomada de deciso utilizando estruturas


condicionais ou de seleo para realizar determinado processamento, ou seja, aps a
verificao de uma condio ou resultado de um teste.

Uma estrutura de deciso simples aquela que utiliza a seguinte sintaxe:

Se [condio] ento

[instrues]

FimSe

Vejamos um exemplo de algoritmo utilizando uma estrutura de deciso simples:

Implemente um algoritmo que conceda um abono de R$ 100,00 ao salrio de um


funcionrio, caso este receba menos de R$ 1.000,00 como salrio.

Figura 4.1: Algoritmo do Exemplo 12, utilizando estrutura de deciso simples.

Fonte: Autoria Prpria.


39

Para este problema temos uma tomada de deciso: conceder R$ 100,00 de abono
Pgina

para os funcionrios que recebem menos de R$ 1.000,00 como salrio. Neste caso, se o
salrio informado fosse R$ 1.000,00 ou mais, nenhum novo processamento seria realizado.
Para que fique mais claro o fluxo de dados, veja o algoritmo representado no Fluxograma
IDE 1.0:
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 4.2: Algoritmo do Exemplo 12, utilizando o Fluxograma IDE 1.0.

Fonte: Autoria Prpria.

Como podemos perceber o algoritmo verifica se a condio salario<1000 e concede o


abono apenas se esta condio for verdadeira. Caso a condio seja falsa o programa ser
encerrado, sem apresentar nenhum resultado.

4.2. Estruturas de Deciso Compostas

Caso quisssemos que no Exemplo 12 fosse informado ao usurio que o funcionrio


no receberia nenhum abono, teramos mais de um processamento a ser realizado, neste
caso tambm para uma condio falsa.
40

Seria utilizada ento uma estrutura de deciso composta com a seguinte sintaxe:
Pgina

Se [condio] ento

[instruo1]

Seno
Centro Federal de Educao Tecnolgica de Minas Gerais

[instruo2]

FimSe

Para uma estrutura de deciso composta, uma condio ser analisada e, se


verdadeira, executar a instruo existente aps ENTO (instruo1). Caso contrrio,
realizar a condio designada aps SENO (instruo2).

Outra forma de escrever a estrutura de decises composta :

Se [condio] ento

[conjunto de instrues 1]

Seno

[conjunto de instrues 2]

FimSe

Nesse caso a condio ser avaliada e caso seja verdadeira, executar o conjunto de
instrues apresentadas aps ENTO (instrues1); caso a condio seja falsa, sero
realizadas as aes designadas aps SENO (instrues2). Aps realizar as instrues caso
verdadeira ou falsa, sero executadas todas as instrues que aparecem aps a instruo
FIM SE at o final da execuo do programa.

Vejamos agora o Exemplo 13, elaborado a partir do Exemplo 12, mas indicando ao
usurio que o funcionrio no receber nenhum abono por ter o salrio igual ou maior que
R$ 1.000,00.
41
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 4.3: Algoritmo do Exemplo 13, utilizando estrutura de deciso composta.

Fonte: Autoria Prpria.

Compare agora o Fluxograma do Exemplo 12 com o Fluxograma do Exemplo 13:

Figura 4.4: Algoritmo do Exemplo 13, utilizando o Fluxograma IDE 1.0.

Fonte: Autoria Prpria.

Para este algoritmo temos duas tarefas a serem processadas caso a condio avaliada
seja verdadeira e uma tarefa a ser executada caso a condio seja falsa. Vejamos mais alguns
exemplos de algoritmos utilizando estrutura de deciso composta:

No Exemplo 14 criaremos um algoritmo que indica se um nmero positivo (>=0) ou


negativo.
42
Pgina

Figura 4.5: Algoritmo do Exemplo 14, utilizando estrutura de deciso composta.

Fonte: Autoria Prpria.


Centro Federal de Educao Tecnolgica de Minas Gerais

No Exemplo 15 criaremos um algoritmo que indica se um nmero inteiro lido zero


ou no.

Figura 4.6: Algoritmo do Exemplo 15, utilizando estrutura de deciso composta.

Fonte: Autoria Prpria.

4.2.1. Estruturas de Deciso Compostas Encadeadas ou Aninhadas

De acordo com PINTO (2009), outra forma de utilizao das estruturas encadear ou
aninhar outras condies a uma estrutura de deciso. Nesse caso, as instrues que
compem um conjunto determinado como verdadeiro ou falso, tambm podero receber
uma ou mais condies a serem testadas.

A Figura 4.7 mostra um exemplo de estruturas aninhadas, onde se verifica que uma
estrutura pode fazer parte de outra estrutura e assim sucessivamente at que um
determinado problema seja resolvido.
43
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 4.7.: Exemplo de Estruturas Aninhadas.

Fonte: PINTO (2009).

Temos agora dois exemplos de utilizao de estruturas encadeadas nos Exemplos 16


e 17:

Exemplo 16: Escrever um algoritmo que solicita ao usurio o salrio de um


funcionrio e mostra ao final do programa o imposto a pagar. Se o salrio for negativo ou
zero, mostrar uma mensagem de erro. Se o salrio for maior que R$ 2.000,00, paga 10% de
imposto, seno paga apenas 5%.
44
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 4.8: Algoritmo do Exemplo 16, utilizando estrutura de deciso composta encadeada.

Fonte: Autoria Prpria.

Veja agora o resultado do algoritmo, se no mesmo Exemplo 16, esquecermos do


primeiro comando SENO:

Figura 4.9: Algoritmo do Exemplo 16, com m implementao/endentao.

Fonte: Autoria Prpria.

Em todos os algoritmos que estamos trabalhando pode-se notar espaos entre os


comandos, principalmente entre uma linha e outra. comum aos programadores indicarem
a dependncia que certas instrues tem das outras anteriores colocando-as (n espaos ou
45

um tab) mais frente do que a instruo de que dependem. Podemos denominar


Endentao estes espaamentos que tornam um algoritmo mais legvel.
Pgina

Exemplo 17: Escrever um algoritmo que calcula o Salrio Bruto, o Salrio Lquido e o
Imposto a pagar seguindo a seguinte regra:

a) Salrio menor que R$ 1.000,00, Imposto de 5%;


Centro Federal de Educao Tecnolgica de Minas Gerais

b) Salrio entre R$ 1.000,00 e R$ 5.000,00, Imposto de 10%;

c) Salrio acima de R$ 5.000,00, Imposto de 25%.

Figura 4.10: Algoritmo do Exemplo 17, utilizando estrutura de deciso composta encadeada.

Fonte: Autoria Prpria.

4.3. Estruturas de Deciso por Seleo (Mltiplas Escolhas)

As estruturas que utilizam o comando SE so timas para a tomada de decises, mas


se tornam um tanto complicadas quando existem muitas possibilidades de escolha para o
usurio. Para solucionar este tipo de problema podemos utilizar estruturas de deciso por
seleo cuja sintaxe :

Escolhe [expresso]

Caso [expresso1], . . . , [expresso1n],:

[instrues]
46

.................................................................
Pgina

Caso [expresson], . . . , [expressonn],:

[instrues]

Defeito:
Centro Federal de Educao Tecnolgica de Minas Gerais

[instrues]

Fim Escolhe

Esta estrutura compara a expresso com as expresses restantes


(expresso1...expresson) e se a comparao for verdadeira, executa as instrues do Caso
selecionado, saindo do lao. A estrutura tem um caso por default (defeito), que opcional,
ou seja, ser executado quando todas as outras condies falharem.

A Figura 4.11 mostra o Fluxograma com a sintaxe deste tipo de estrutura:

Figura 4.11: Sintaxe das Estruturas de Deciso por Seleo (Mltiplas Escolhas)

Fonte: http://www.dei.estt.ipt.pt/portugol/node/25.

O Exemplo 18 mostra um algoritmo utilizando estrutura de deciso com mltiplas


escolhas:
47
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 4.12: Algoritmo do Exemplo 18, utilizando estrutura de deciso por seleo (mltiplas
escolhas)

Fonte: Autoria Prpria.

Este algoritmo indica ao usurio qual o ltimo dia do ms. Existem as seguintes
possibilidades:

a) Meses do ano com 31 dias: (1) Janeiro; (3) Maro; (5) Maio; (7) Julho; (8) Agosto;
(10) Outubro; (12) Dezembro.

b) Meses do ano com 30 dias: (4) Abril; (6) Junho; (9) Setembro; (11) Novembro.

c) Exceo: (2) Fevereiro normalmente com 28 dias e caso seja Ano Bissexto, 29 dias.
Para verificar se um ano bissexto ou no utilizamos a regra: resto da diviso do ano
informado por 4 tendo como resultado 0 E resto da diviso do ano informado por 100 sendo
diferente de 0, OU resto da diviso do ano informado por 400 resultando em 0.

No Exemplo 18 o ms informado foi Fevereiro (2) e o ano informado foi 2010. O


resultado do algoritmo foi 28, como o ltimo dia do ms. Podemos dizer com certeza que
2010 no um ano bissexto.

Caso no utilizssemos este tipo de estrutura, nosso algoritmo ficaria muito mais
extenso e at mais difcil de compreender por existirem muitas possibilidades para
verificarmos.
48
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

5
Estruturas de
Repetio
Prof. Autor: Biancca Nardelli Schenatz
Adaptaes: Prof. Bruno Gomes Gonalves
e-Tec Brasil Matria da disciplina
49
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Objetivos

Ao final desta aula, voc dever ser capaz de:


Desenvolver algoritmos com laos de repetio, facilitando o
controle do fluxo de execuo de diversas tarefas;
Utilizar estruturas de repetio, verificando antes de cada execuo
se permitido executar o mesmo trecho do algoritmo;
Usar estruturas de repetio, testando apenas no final se permitido
executar o mesmo trecho do algoritmo, ou seja, at que uma determinada
condio seja verdadeira;
Criar algoritmos com estruturas de repetio utilizando uma varivel
de controle, ou seja, estabelecendo um limite fixo de repeties para
instrues a serem executadas.
50
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

5.1. Estruturas de Repetio com Teste no Incio

Quando desenvolvemos algoritmos que precisaro executar tarefas mais de uma vez,
sem que tenhamos que reescrever trechos idnticos do mesmo algoritmo, utilizamos
estruturas de repetio. O nmero de repeties em um algoritmo pode ser indeterminado,
mas deve ser finito.

Uma estrutura de repetio com teste no incio, de acordo com FORBELLONE (2000),
consiste em uma estrutura de controle de fluxo de execuo que permite repetir diversas
vezes um mesmo trecho do algoritmo, porm, sempre verificando antes de cada execuo
se permitido executar o mesmo trecho.

Para este tipo de repetio utilizaremos a seguinte estrutura:

Enquanto [condio] faz

[instrues]

Fim Enquanto

Simplificando, esta estrutura far com que haja no algoritmo uma repetio de
instrues enquanto uma certa condio for verdadeira.

A Figura 5.1 mostra o Fluxograma com a sintaxe deste tipo de estrutura:


51
Pgina

Figura 5.1: Sintaxe das Estruturas de Repetio com Teste no Incio

Fonte: http://www.dei.estt.ipt.pt/portugol/node/27
Centro Federal de Educao Tecnolgica de Minas Gerais

No Exemplo 19 temos a seguinte situao: fazer um algoritmo que mostre o dobro de


um nmero enquanto ele for maior que 0 (zero). A representao deste algoritmo
mostrada na Figura 5.2.

Figura 5.2: Algoritmo do Exemplo 19, utilizando estrutura de repetio com teste no incio

Fonte: Autoria Prpria.

No Exemplo 20 temos mais um algoritmo: calcular a soma dos salrios dos


funcionrios de uma empresa. O algoritmo termina quando o usurio digitar um salrio igual
a 0. A representao deste algoritmo mostrada na Figura 5.3.

Figura 5.3: Algoritmo do Exemplo 20, utilizando estrutura de repetio com teste no incio

Fonte: Autoria Prpria.

Veja que todas as variveis que acumulam valores devem ser inicializadas, ou seja,
receber um valor inicial. Por que a varivel salrio recebeu como valor inicial 1 (um)? Na
realidade poderia receber qualquer outro valor, desde que diferente de 0 (zero), pois 45 se
assumisse este valor inicial as instrues seguintes ao enquanto...faz no seriam realizadas.
A varivel soma recebeu como valor inicial o valor 0 (zero), pois no ir interferir no clculo:
soma1=0+salrio1 (1 passo); soma2=soma1+salrio2 (2 passo); soma3=soma2+salrio3 (3
passo) e assim sucessivamente enquanto o valor digitado no for igual a 0 (zero). O valor
52

apresentado no final o valor da ltima soma, que o somatrio dos salrios anteriores
com o valor do ltimo salrio digitado.
Pgina

Exemplo 21: Calcular a mdia aritmtica para 10 alunos de uma classe. Foram
realizadas 4 avaliaes. Verificar se o aluno (a) foi aprovado ou reprovado (mdia>=60
pontos). A Figura 5.4 mostra o algoritmo:
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 5.4: Algoritmo do Exemplo 21, utilizando estrutura de repetio com teste no incio

Fonte: Autoria Prpria.

Este algoritmo receber 40 notas (10 alunos * 4 notas) e ir encerrar seu


processamento quando a quadragsima nota for digitada. Utilizamos uma varivel chamada
COM (Contador), que contar quantos alunos tero suas notas inseridas para clculo da
mdia e verificao da aprovao. inicializada com o valor 0 (zero) e incrementada de 1 em
1, at chegar em 9 (nove), totalizando 10 alunos (CON<10).

Veja que neste exemplo, em cada uma das linhas existe uma explicao do que est
sendo realizado no algoritmo aps o smbolo //. Denominamos estas explicaes de
documentao ou comentrios. Os comentrios no influenciam nas instrues que sero
realizadas no algoritmo, mas so muito importantes no seu desenvolvimento pois ajudam a
entender o seu passo-a-passo, tornando seu entendimento muito mais fcil. Ajudar
tambm no processo de depurao, ou seja, na correo dos possveis erros de
programao.

Exemplo 22: Calcular a mdia da turma do Exemplo 20. A representao feita na

Figura 5.5.
53
Pgina

Figura 5.5: Algoritmo do Exemplo 22, utilizando estrutura de repetio com teste no incio

Fonte: Autoria Prpria.


Centro Federal de Educao Tecnolgica de Minas Gerais

Neste algoritmo foram inseridas as mdias de 10 alunos. As mdias foram


acumuladas e ao final foi realizado o clculo da Mdia da Turma, dividindo as mdias
acumuladas pelo nmero de alunos (10).

5.2. Estruturas de Repetio com Teste no Final

A utilizao de estruturas de repetio com teste no final recomendada quando no


conhecemos o nmero de repeties a serem executadas. Esta estrutura tambm precisa de
uma chave (teste) para interromper a repetio e sua diferena para a estrutura de
repetio com teste no incio que ela testa ao final, significando que ela executa o trecho
pelo menos uma vez.

Existem dois tipos de estruturas de repetio com teste no final:

Repetio de instrues at que a condio seja falsa;

Repetio de instrues at que a condio seja verdadeira.

5.2.1. Repetio de Instrues at que a Condio Seja Falsa

Para esta estrutura temos a seguinte sintaxe:

Faz

[instrues]

Enquanto [condio]

A Figura 5.6 mostra o Fluxograma com a sintaxe deste tipo de estrutura:


54
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 5.6: Sintaxe das Estruturas de Repetio com Teste no Final, at que a Condio seja
Falsa

Fonte: http://www.dei.estt.ipt.pt/portugol/node/30

Exemplo 23: Escrever um algoritmo que exiba os nmeros de 1 a 10.

Figura 5.7: Algoritmo do Exemplo 23, utilizando estrutura de repetio com teste no final

Fonte: Autoria Prpria.

Pode-se perceber, pela anlise da Figura 5.7, que os nmeros so exibidos, um a um


55

enquanto for menor ou igual a 10. Quando a condio for falsa (a=10+1=11) o algoritmo ir
encerrar sua execuo. O Fluxograma do Exemplo 23 mostrado na figura abaixo:
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 5.8: Algoritmo do Exemplo 23, utilizando o Fluxograma IDE 1.0.

Fonte: Autoria Prpria

5.2.2. Repetio de Instrues at que a Condio Seja Verdadeira

Para esta estrutura temos a seguinte sintaxe:

Repete

[instrues]

At [condio]

A Figura 5.9 mostra o Fluxograma com a sintaxe deste tipo de estrutura:


56
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 5.9: Sintaxe das Estruturas de Repetio com Teste no Final, at que a Condio seja
Verdadeira

Fonte: http://www.dei.estt.ipt.pt/portugol/node/29

Exemplo 24: Construir um algoritmo que permita fazer o levantamento do estoque


de refrigerantes de uma distribuidora, tendo como dados de entrada tipos de refrigerantes,
sendo: C para Cola, G para Guaran e L para Limo. Especificar a porcentagem de cada
tipo sobre o total de refrigerantes; a quantidade de refrigerantes desconhecida e
utilizaremos F para finalizar a contagem.
57
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 5.10: Algoritmo do Exemplo 24, utilizando estrutura de repetio com teste no final

Fonte: Autoria Prpria.

Analisando a Figura 5.10, verificamos que o algoritmo conta quantos refrigerantes de


cada tipo existem at que a condio para finalizar a contagem seja verdadeira (F). Aps a
finalizao, calcula os percentuais de cada tipo de refrigerante presente no estoque.

5.3. Estruturas de Repetio com Varivel de Controle

A estrutura de repetio com varivel de controle utilizada quando o nmero de


repeties for conhecido durante a elaborao do algoritmo ou quando puder ser fornecido
58

durante a execuo.
Pgina

Para este tipo de repetio utilizaremos a seguinte estrutura:

Para [varivel numrica] de [valor inicial] at [valor final]

[instrues]

Prximo
Centro Federal de Educao Tecnolgica de Minas Gerais

Tambm poder ser utilizada a estrutura:

Para [varivel numrica] de [valor inicial] at [valor final]

Passo [valor de separao]

[instrues]

Prximo

A Figura 5.11 mostra o Fluxograma com a sintaxe deste tipo de estrutura:

Figura 5.11: Sintaxe das Estruturas de Repetio com Varivel de Controle

Fonte: http://www.dei.estt.ipt.pt/portugol/node/28

No Exemplo 25 temos a seguinte situao: fazer um algoritmo que exiba os nmeros


59

impares no intervalo entre 0 e 20.


Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 5.12: Algoritmo do Exemplo 25, utilizando estrutura de repetio com varivel de
controle

Fonte: Autoria Prpria.

Exemplo 26: Criar um algoritmo que mostre as cinco primeiras tabuadas.


60
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 5.13: Algoritmo do Exemplo 26, utilizando estrutura de repetio com varivel de
controle

Fonte: Autoria Prpria.

No Exemplo 26 temos a varivel i que indica o nmero de tabuadas que sero


61

exibidas e a varivel j que utilizada no clculo da tabuada.


Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

6
Vetores e
Matrizes
Prof. Autor: Biancca Nardelli Schenatz
Adaptaes: Prof. Bruno Gomes Gonalves
e-Tec Brasil Matria da disciplina
62
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Objetivos

Ao final desta aula, voc dever ser capaz de:


Construir novos tipos de dados a partir da composio homognea
de tipos primitivos de dados;
Diferenciar variveis compostas unidimensionais (vetores) de
variveis compostas multidimensionais (matrizes);
Saber realizar operaes sobre vetores e matrizes.
63
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

6.1. Estrutura de Dados

Ao desenvolver um algoritmo, quando quisermos armazenar diversos valores em


uma mesma varivel, deveremos utilizar estrutura de dados. Uma estrutura de dados um
novo tipo de dado, construdo a partir da composio de tipos primitivos de dados (inteiro,
real, lgico, caractere e texto).

De acordo com FORBELLONE (2000), assim como na Teoria dos Conjuntos, uma
varivel pode ser interpretada como um elemento e uma Estrutura de Dados, como um
conjunto. Quando uma determinada Estrutura de Dados composta por variveis com o
mesmo tipo primitivo, temos um conjunto homogneo de dados. Podemos considerar que
uma varivel composta homognea seja como uma alcatia, e seus elementos (variveis)
sejam como os lobos (que so da mesma espcie).

Na maioria das linguagens de programao as variveis compostas homogneas so


conhecidas como variveis indexadas, arrays, e mais comumente como vetores
(unidimensionais) e matrizes (multidimensionais).

6.2. Vetores

Vetor um conjunto de elementos homogneos (todos do mesmo tipo)


consecutivos, que podem ser acessados individualmente a partir de um nico nome.

A sintaxe para declarao de um vetor a seguinte:

<varivel/constante> <tipo dados> nome[dimenso]

Ou

<tipo dados> nome[dimenso]

Ou
64

<tipo dados> nome[dimenso] <- {valor_1, valor_2, . . . , valor_n}


Pgina

Para a declarao de vetores temos as seguintes regras:

1) Se a declarao omitir o termo <varivel/constante> o vetor varivel;

2) A definio do nome obedece as mesmas regras das variveis;

3) A dimenso tem que ser um valor inteiro ou uma expresso com resultado inteiro;
Centro Federal de Educao Tecnolgica de Minas Gerais

4) As dimenses esto contidas dentro dos colchetes;

5) Se todos os valores de inicializao forem omitidos o conjunto inicializado com


valores por default;

6) A inicializao feita com os dados compreendidos entre chaves e separados por


vrgulas;

7) Se o nmero de valores for insuficiente os ltimos elementos so inicializados com


os valores por default.

Vejamos agora alguns exemplos de algoritmos utilizando vetores:

Exemplo 27: criar um algoritmo que solicite ao usurio cinco nomes e mostre ao final
a lista completa dos nomes digitados.

Figura 6.1: Algoritmo do Exemplo 27, utilizando estrutura composta homognea (vetor)

Fonte: Autoria Prpria.

PINTO (2009) diz que para armazenar dados (informaes) em um vetor necessria
a utilizao de uma estrutura de repetio, pelo simples fato de um vetor possuir vrias
posies onde cada uma delas dever ser preenchida. A varivel L (linha), do tipo inteiro,
ser utilizada na estrutura de repetio do Exemplo 27.

Na declarao do vetor nomes, temos 5 posies, onde sero armazenados os 5


nomes digitados pelo usurio. Veja que o vetor nomes uma estrutura que armazena dados
65

de um mesmo tipo (texto).


Pgina

Os elementos de um vetor so sempre armazenados em posies contguas


(seqenciais) de memria. O ndice (posio) do primeiro elemento de um vetor sempre
(zero), ou seja, os ndices de um vetor com n elementos variam sempre de 0 a n-1. por esta
razo que na estrutura de repetio temos para L de 0 at 4 passo 1. Passo 1, significa que
entre uma repetio e outra a varivel L incrementada em 1 (+1).
Centro Federal de Educao Tecnolgica de Minas Gerais

Na entrada dos dados o primeiro nome lido ser armazenado na posio 0 e o ltimo
nome lido ser armazenado na posio 4. Na sada de dados os nomes tambm sero
exibidos nesta seqncia. Se a exibio fosse apenas de nomes [3], o nome Beltrana
apareceria na tela.

Exemplo 28: criar um algoritmo que armazene 5 nomes em um vetor, procure e


mostre, aps digitar o nmero da pessoa, o seu nome.

Figura 6.2: Algoritmo do Exemplo 28, utilizando estrutura composta homognea (vetor)

Fonte: Autoria Prpria.

Neste algoritmo a estrutura de repetio enquanto foi utilizada para que o programa
continue solicitando o nmero da pessoa caso o nmero digitado no esteja no intervalo de
1 a 5 (posies 0 at 4).

6.2.1. Operaes sobre Vetores

Exemplo 29: criar um algoritmo que armazene 2 notas de 3 alunos e exiba ao final
uma relao com os nomes dos alunos, notas das avaliaes e mdias.
66
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 6.3: Algoritmo do Exemplo 29, utilizando estrutura composta homognea (vetor)

Fonte: Autoria Prpria.

No Exemplo 29 temos os vetores nomes[3], do tipo texto, que armazena os nomes de


3 alunos, pr1, pr2 e media, do tipo real, que armazenam as notas da prova 1, da prova 2 e da
mdia de cada um dos alunos.

A mdia ser calculada somando as 2 notas do aluno e dividindo o resultado por 2. A


utilizao do \n e do \t servem apenas para uma apresentao mais organizada dos dados de
sada.

Exemplo 30: criar um algoritmo que armazene nmeros em dois vetores inteiros de
cinco elementos cada e ao final mostre o vetor soma.
67
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 6.4: Algoritmo do Exemplo 30, utilizando estrutura composta homognea (vetor)

Fonte: Autoria Prpria.

No Exemplo 30 temos dois vetores A e B onde utilizamos a operao de adio para


gerar um novo vetor. Na posio 0 do vetor A foi armazenado o valor 10 e na posio 0 do
vetor B foi armazenado o valor 60. No vetor soma temos 10+60, resultando no valor 70,
armazenado tambm na posio 0 deste novo vetor, e assim sucessivamente para todas as
outras posies.

Exemplo 31: criar um algoritmo que armazene 10 nmeros inteiros em um vetor e


mostre ao final uma relao de nmeros informando se o nmero par ou mpar.

Figura 6.5: Algoritmo do Exemplo 31, utilizando estrutura composta homognea (vetor)

Fonte: Autoria Prpria.


68

Neste algoritmo a estrutura de deciso se foi utilizada para verificar se o nmero


par (resto da diviso igual a 0) ou mpar (resto da diviso diferente de 0).
Pgina

Exemplo 32: criar um algoritmo que solicite ao usurio 5 nmeros inteiros, armazene
em um vetor A, gere e mostre um vetor B, onde cada elemento o quadrado do elemento,
na respectiva posio, do vetor A.
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 6.6: Algoritmo do Exemplo 32, utilizando estrutura composta homognea (vetor)

Fonte: Autoria Prpria.

6.2.2. Ordenao de Vetores

comum a utilizao de vetores para classificar dados em um algoritmo. Para


ordenar uma lista de nomes, por exemplo, devemos inicialmente declarar a varivel de vetor
e uma varivel auxiliar. Aps realiza-se a leitura dos nomes inseridos. Se o nome existente na
posio 0 (1 posio) aparecer depois do nome existente na posio 1 (2 posio), na
ordem de classificao, ento os mesmos devem ter suas posies invertidas. Caso
contrrio, ambos devem permanecer na mesma posio.

Exemplo 33: criar um algoritmo que armazene 5 nomes em um vetor, ordene o vetor
e exiba ao final o vetor ordenado.
69
Pgina

Figura 6.7: Algoritmo do Exemplo 33, utilizando estrutura composta homognea (vetor)

Fonte: Autoria Prpria.


Centro Federal de Educao Tecnolgica de Minas Gerais

Se o nome da posio 0 (Maria) deve aparecer aps o nome existente na posio 2


(Carlos), ento necessrio invert-los. Para isso, ser necessrio armazen-lo na varivel
auxiliar e logo a seguir inverter a sua ordem:

Fonte: Adaptado de PINTO (2009).

Agora o algoritmo dever ler o novo nome da posio 0 (Carlos) e compar-lo com o
existente na posio 3, ou seja, a partir deste ponto, cada elemento dever ser comparado
com o existente na posio 0 e invertido quando necessrio o processo. Desta forma, aps
todas as comparaes em trocas, teremos na posio 0 o nome de Ado.

Aps inserir Ado na primeira posio (0), deve-se comparar o nome da posio 1
(logo abaixo) um a um com os demais elementos, repetir o mesmo processo utilizado para
armazenar na varivel auxiliar e realizar a inverso ou no do seu contedo.

Para este exemplo tambm utilizamos uma rotina de repetio que compara cada
elemento existente no vetor com o seu sucessor (elemento na prxima posio).

6.3. Matrizes

Matriz uma estrutura de dados composta multidimensional. Geralmente


composta por linhas e colunas, a exemplo da matemtica. Assim, como os vetores, os dados
existentes em uma matriz, devem ser do mesmo tipo e todos eles referenciados por um
nmero (ndice) que determina sua posio dentro da matriz (PINTO, 2009).
70
Pgina

Figura 6.8: Estruturas de dados compostas homogneas multidimensionais (matrizes)


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: Adaptado de PINTO (2009).

Numa matriz, quando o nmero de linhas diferente do nmero de colunas, temos


uma matriz retangular. Se o nmero de linhas e colunas for idntico, a matriz quadrada.

A sintaxe para declarao de uma matriz a seguinte:

<variavel/constante> <tipo dados> nome[dim1][dim2]. . . [dimn]

So permitidas tantas dimenses quantas desejadas.

Exemplo 34: criar um algoritmo que leia os elementos de uma matriz inteira 3 x 3 e
escreva os elementos da diagonal principal.
71

Figura 6.9: Algoritmo do Exemplo 34, utilizando estrutura composta homognea (matriz)
Pgina

Fonte: Autoria Prpria.

No Exemplo 34, a matriz 3x3 declarada como N[3][3]. A varivel L representa as


linhas da matriz e a varivel c as colunas. J a varivel t utilizada para a apresentao dos
dados da diagonal principal.
Centro Federal de Educao Tecnolgica de Minas Gerais

Exemplo 35: Criar um algoritmo que armazene o nome de 3 disciplinas. Cada


disciplina tem 3 alunos (dever ser inserido o nmero de matrcula do aluno). Cada aluno
far 1 avaliao na disciplina. O algoritmo dever mostrar ao final uma lista com o nome da
disciplina, o nmero de matrcula e as respectivas notas dos alunos.
72
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 6.10: Algoritmo do Exemplo 35, utilizando estrutura composta homognea (matriz)

Fonte: Autoria Prpria.

6.3.1. Operaes com Matrizes

Exemplo 36: Criar um algoritmo onde o usurio entrar com valores reais para uma
matriz de dimenses 4x5 e mostrar ao final uma nova matriz com as metades de cada um
dos elementos.
73
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 6.11: Algoritmo do Exemplo 36, utilizando estrutura composta homognea (matriz)

Fonte: Autoria Prpria.

Exemplo 37: Criar um algoritmo que carregue uma matriz 12 (meses do ano) x 4
(semana do ms) com os valores das vendas de uma loja, calcule e mostre ao final: o total
74

vendido em cada ms do ano; o total vendido em cada semana durante todo o ano; e o total
vendido no ano.
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais
75
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 6.12: Algoritmo do Exemplo 37, utilizando estrutura composta homognea (matriz)

Fonte: Autoria Prpria.


76
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Funes e
7
Procedimentos
Prof. Autor: Biancca Nardelli Schenatz
Adaptaes: Prof. Bruno Gomes Gonalves
e-Tec Brasil Matria da disciplina
77
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Objetivos

Ao final desta aula, voc dever ser capaz de:


Entender o que modularizao em algoritmos;
Representar corretamente funes algortmicas, ou seja, mdulos
que, quando avaliados dentro de uma expresso, retornam brigatoriamente
um valor expresso;
Representar corretamente procedimentos algortmicos, ou seja,
mdulos que, depois de executados, podem opcionalmente retornar com um
ou mais valores ao mdulo que os chamou;
Compreender o que recursividade, passagem de parmetros por
valor e passagem de parmetros por referncia.
78
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

7.1. Modularizao

A modularizao consiste em uma tcnica onde um algoritmo complexo dividido


em diversas partes (mdulos) simples com funes especficas, integrados por um mdulo
principal.

Esta tcnica permite que os algoritmos mais complexos tornem-se mais fceis de
compreender, aumentem sua flexibilidade e evitem a redundncia de cdigos. Dividir o
algoritmo em mdulos tambm diminui a ocorrncia de erros e facilita a manuteno do
sistema. Mdulos tambm so chamados de subalgoritmos.

7.2. Funes

Funes algortmicas so mdulos que, quando avaliados dentro de uma expresso,


retornam obrigatoriamente um valor expresso.

A Figura 7.1 mostra a estrutura bsica de uma sub-rotina do tipo funo:


79
Pgina

Figura 7.1: Estrutura bsica de uma sub-rotina do tipo Funo

Fonte: MANZANO (2008).


Centro Federal de Educao Tecnolgica de Minas Gerais

Na Figura 7.2 podemos ver um exemplo de algoritmo com a utilizao de funo para
clculo do Fatorial de um nmero:

Figura 7.2: Algoritmo com a Funo Fatorial

Fonte: MANZANO (2008).

7.2.1. Funes de Biblioteca

Funes de Biblioteca so funes predefinidas na linguagem de programao. Cada


linguagem de programao possui bibliotecas de funes especficas para resolver diversos
tipos de problemas. O Portugol IDE 2.3., apesar de ser uma pseudo-linguagem, tambm
possui funes de biblioteca e so apresentadas na Tabela 7.1:
80
Pgina

Tabela 7.1. Funes de Biblioteca do Portugol IDE 2.3.


Centro Federal de Educao Tecnolgica de Minas Gerais

Exemplo: Gerar os 6 nmeros aleatrios para aposta na Mega Sena.

Figura 7.3: Algoritmo do Exemplo, utilizando a Funo de Biblioteca Aleatrio

Fonte: Autoria Prpria.


81

A funo aleatorio ( ) no exige argumentos. Argumentos so informaes adicionais


necessrias para a realizao de uma determinada funo.
Pgina

Exemplo: Criar um algoritmo que realize clculos trigonomtricos.


Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 7.4: Algoritmo do Exemplo, utilizando Funes Trigonomtricas da Biblioteca do


Portugol IDE 2.3

Fonte: Autoria Prpria.

As funes trigonomtricas utilizam apenas um argumento.

Exemplo: Criar um algoritmo que realize clculos com diversas funes matemticas.

Figura 7.5: Algoritmo do Exemplo, utilizando Funes Matemticas da Biblioteca do Portugol


IDE

Fonte: Autoria Prpria.

Das funes matemticas da Biblioteca do Portugol IDE 2.3, somente a potenciao


exige dois argumentos. As demais exigem apenas um argumento.

7.3. Procedimentos
82

Procedimentos algortmicos so mdulos que, depois de executados, podem


opcionalmente retornar com um ou mais valores ao mdulo que os chamou. So tambm
Pgina

conhecidos como sub-rotinas.

A Figura 7.6 mostra a estrutura bsica de uma sub-rotina do tipo procedimento e a


sua codificao:
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 7.6: Estrutura bsica de uma sub-rotina do tipo Procedimento

Fonte: MANZANO (2008).

Vejamos agora um exemplo de algoritmo, utilizado em MANZANO (2008), que


demonstra a utilizao de sub-rotinas:

Desenvolver um programa de computador que simule as operaes bsicas de uma


calculadora que opere com a entrada de dois valores do tipo real aps a escolha da operao
a ser executada. O programa deve apresentar uma lista de opes (menu) com as operaes
matemticas de adio, subtrao, multiplicao e diviso, alm de uma opo de sada do
programa. Escolhida a opo desejada, deve ser solicitada a entrada de dois valores
numricos para que seja possvel executar o processamento escolhido. Aps a execuo da
operao, o programa deve apresentar o resultado. Aps a execuo de qualquer uma das
operaes de clculo, o programa deve voltar para o menu de seleo.

Analisando o problema podemos definir a estrutura do algoritmo:

Mdulo Principal

1. Criar um menu com cinco opes:

1.1. Adio

1.2. Subtrao
83

1.3. Multiplicao
Pgina

1.4. Diviso

1.5. Fim do algoritmo

2. Escolhendo uma das opes, a sub-rotina escolhida dever ser processada.


Centro Federal de Educao Tecnolgica de Minas Gerais

3. Ao escolher a opo 5, o algoritmo dever ser encerrado.

Mdulo 1 Adio

1. Solicitar ao usurio dois valores (A e B);

2. Realizar a soma dos dois valores e guardar o resultado na varivel R;

3. Mostrar na tela o valor da varivel R;

4. Voltar ao Mdulo Principal.

Mdulo 2 Subtrao

1. Solicitar ao usurio dois valores (A e B);

2. Realizar a subtrao dos dois valores e guardar o resultado na varivel R;

3. Mostrar na tela o valor da varivel R;

4. Voltar ao Mdulo Principal.

Mdulo 3 Multiplicao

1. Solicitar ao usurio dois valores (A e B);

2. Realizar a multiplicao dos dois valores e guardar o resultado na varivel R;

3. Mostrar na tela o valor da varivel R;

4. Voltar ao Mdulo Principal.

Mdulo 4 Diviso

1. Solicitar ao usurio dois valores (A e B);

2. Realizar a diviso dos dois valores e guardar o resultado na varivel R;

3. Mostrar na tela o valor da varivel R;


84

4. Voltar ao Mdulo Principal.


Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 7.7: Diagrama de blocos para o algoritmo calculadora com suas Sub-Rotinas

Fonte: MANZANO (2008).

A Figura 7.8 mostra o diagrama de blocos para o algoritmo calculadora com o mdulo
principal:
85
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais
86
Pgina

Figura 7.8: Diagrama de blocos para o algoritmo calculadora com o Mdulo Principal

Fonte: MANZANO (2008).


Centro Federal de Educao Tecnolgica de Minas Gerais

7.4. Recursividade

Uma funo que chama a si mesma uma funo recursiva. A recursividade


utilizada em situaes onde necessrio que a funo ou procedimento repita, de forma
finita, as suas prprias instrues para resolver um determinado problema.

Um exemplo muito comum de recursividade a utilizao da Funo Fatorial, ou


seja, a multiplicao de um nmero por todos os nmeros anteriores a ele e maiores que
zero.

A Figura 7.9 mostra a diagramao e a codificao da funo fatorial recursiva.


87
Pgina

Figura 7.9: Diagrama de blocos e codificao com a Funo Fatorial Recursiva

Fonte: MANZANO (2008).


Centro Federal de Educao Tecnolgica de Minas Gerais

Na Figura 7.10 temos uma perspectiva do processamento da funo fatorial


recursiva:

Figura 7.10: Esquema lgico de funcionalidade e ao da Funo Fatorial Recursiva

Fonte: MANZANO (2008).

7.5. Variveis Globais e Variveis Locais

Variveis globais (ou pblicas) so variveis declaradas no incio do algoritmo e que


podem ser utilizadas em qualquer mdulo integrante do problema.

Variveis locais (ou privadas) so variveis que so utilizadas apenas por um mdulo
especfico do algoritmo, sem utilidade em outros mdulos do problema. Neste caso no h
justificativa para que tenha uma definio global, devendo ser declarada apenas no incio do
mdulo.

7.6. Passagem de Parmetros

Parmetros so variveis ou constantes utilizadas para ligar o mdulo principal s


funes ou procedimentos de um algoritmo. Passa valores para transformao ou ajuda nas
88

aes em que a funo ou procedimento dever realizar mediante o teste de seus valores.
Pgina

As funes operam com passagens de parmetro por valor e por referncia. Os


procedimentos no retornam contedos, a no ser com o uso de passagens de parmetros
por referncia.
Centro Federal de Educao Tecnolgica de Minas Gerais

7.6.1. Passagem de Parmetros por Valor

Numa passagem de valores por valor, so sempre enviadas para a funo ou


procedimento cpias dos valores de que esta necessita.

Realizando cpias dos valores, poderemos alterar como quisermos os valores dentro
das funes que recebemos como parmetros. O valor original das variveis no sofrer
qualquer alterao, pois estamos simplesmente alterando cpias dos valores originais.

Quando a funo for terminada, o algoritmo continuar executando com os valores


originais das variveis invocadas.

Para exemplificar, suponhamos que uma loja solicitou sua carteira de identidade para
preencher um cadastro de credirio. Como voc no pode ficar sem seu documento de R.G.,
voc tira uma fotocpia e entrega ao funcionrio do estabelecimento comercial.

No caso do funcionrio riscar, sem querer a sua foto da carteira, nada acontece no
documento original, porque ele tem acesso apenas a uma cpia do documento.

7.6.2. Passagem de Parmetros por Referncia

Quando utilizamos passagem de parmetros por referncia enviamos para a funo a


prpria varivel ou uma referncia a esta, ou seja, o endereo de memria da varivel e no
uma cpia de seu valor.

Dessa forma, qualquer alterao nos parmetros da funo corresponde, na


realidade, a uma alterao nas prprias variveis referenciadas na invocao funo.

Vetores e matrizes sempre so passados como parmetros por referncia, enquanto


seus elementos so passados por valor.
89
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

8
Registros
Prof. Autor: Biancca Nardelli Schenatz
Adaptaes: Prof. Bruno Gomes Gonalves
e-Tec Brasil Matria da disciplina
90
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Objetivos

Ao final desta aula, voc dever ser capaz de:


Construir novos tipos de dados a partir da composio heterognea
de tipos primitivos de dados;
Saber o que um arquivo e como so organizados;
Realizar operaes sobre registros.
91
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

8.1. Estrutura de Dados Heterognea

Como j vimos na Aula 6, uma estrutura de dados um novo tipo de dado,


construdo a partir da composio de tipos primitivos de dados (inteiro, real, lgico,
caractere e texto).

Para FORBELLONE (2000), um conjunto homogneo de dados (tal como uma alcatia)
composto por variveis do mesmo tipo primitivo (lobos); porm, se tivssemos um
conjunto em que os elementos no so do mesmo tipo, teramos, ento, um conjunto
heterogneo de dados. Exemplificando, poderamos ter um conjunto de animais
quadrpedes formado por ces (matilha), camelos (cfila), bfalos (manada), etc.

Quando falamos em estrutura de dados heterognea, no podemos esquecer dos


conceitos de campo, registro, arquivo e banco de dados.

8.1.1. Campo

Campo pode ser um dado isolado ou um conjunto de caracteres, como por exemplo o
campo Endereo. Possui caractersticas prprias para armazenar as informaes do
endereo completo de uma pessoa.

De acordo com PINTO (2009), as caractersticas de um campo englobam o tipo de


dado que o mesmo dever armazenar, tamanho, regras e outras informaes que so
peculiares a cada gerenciador de banco de dados ou linguagem de programao.

8.1.2. Registro

Um registro um conjunto de campos. Como exemplo, podemos citar o registro de


um funcionrio em uma empresa, onde constam todas as informaes a seu respeito como
nome completo, endereo, idade, salrio, etc.

Um registro pode conter em cada um de seus campos diferentes tipos de dados. No


92

exemplo citado nome completo e endereo so do tipo texto, idade do tipo inteiro e salrio
do tipo real. Mas todos fazem parte de uma mesma estrutura de dados heterognea.
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

8.1.3. Arquivo

Arquivo um conjunto de registros. Os dados que fazem parte do registro so


identificados atravs de uma chave ou ndice (endereo), agilizando a manipulao dos
dados.

8.1.4. Banco de Dados

Banco de dados um conjunto de arquivos. Os arquivos ou tabelas de um banco de


dados podem ser compartilhados entre vrios usurios.

A Figura 8.1 mostra um esquema com as definies abordadas at agora:

Figura 8.1: Exemplo de Bancos de Dados, Arquivos, Registro e Campo

Fonte: PINTO (2009).


93

8.2. Arquivos
Pgina

Existem dois tipos de arquivos: seqenciais e indexados.


Centro Federal de Educao Tecnolgica de Minas Gerais

Num arquivo seqencial, as informaes so organizadas na ordem em que


foramgravadas. Praticamente no so usados, restringindo-se apenas a aplicaes que
utilizem pequenos arquivos, no sendo importante a velocidade de pesquisa.

No caso das aplicaes comerciais, que utilizam um volume muito grande de


informaes, a velocidade da pesquisa, deve, necessariamente, ser grande, e por isso,
devem ser usados arquivos organizados de forma indexada.

Arquivos indexados so aqueles que contm um ndice (endereo) que facilita o


acesso informao, como por exemplo, um ponteiro ou apontador. Ponteiro ou apontador
um marcador utilizado pelo programa para indicar qual registro est atualmente em uso.

As operaes sobre arquivos possveis so: abertura de arquivo, manipulao de


registros (insero, cpia, modificao e remoo), pesquisa e fechamento do arquivo. Cada
linguagem de programao possui comandos prprios para estas operaes.

Sempre que se utilizar um arquivo para qualquer operao necessrio que o


mesmo seja aberto primeiro. Para que a abertura de um arquivo seja bem sucedido,
necessrio que o arquivo exista e esteja fechado.

No momento da abertura do arquivo, seu ponteiro posicionado no primeiro


registro, tambm chamado BOF (Begin of File, incio de arquivo). Sempre que uma busca no
bem sucedida ou o arquivo totalmente lido, ele posiciona-se aps o ltimo registro
chamado EOF (End of File, final de arquivo).

8.3. Operaes sobre Registros

Visto que um arquivo um conjunto de registros, precisamos definir o registro que


compe o arquivo primeiro, para somente ento definir o arquivo.

A atribuio de um registro segue a seguinte sintaxe:

tipo

<identificador> = registro

<lista dos campos e seus tipos>


94

fim_registro
Pgina

var

<varivel> : <identificador>

Como exemplo de atribuio de um registro, temos o Cadastro de um aluno:


Centro Federal de Educao Tecnolgica de Minas Gerais

tipo

CAD_ALUNO = registro

NOME : cadeia

TURMA : caractere

SALA : inteiro

NOTA1 : real

NOTA2 : real

NOTA3: real

fim_registro

var

ALUNO : cad_aluno

A leitura de um registro representada pelo diagrama/codificao abaixo:


95
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Figura 8.2: Exemplo de Leitura de um Registro

Fonte: MANZANO (2008).

A escrita de um registro representada pelo diagrama/codificao abaixo:


96
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais
97
Pgina

Figura 8.3: Exemplo de Escrita de um Registro


Centro Federal de Educao Tecnolgica de Minas Gerais

Fonte: MANZANO (2008).

As demais operaes seguem a sintaxe das diferentes linguagens de programao e


sero abordadas tambm em nossa prxima disciplina, onde utilizaremos a Linguagem C.

Parabns por ter chegado ao final desta ltima unidade!


98
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Referncias

ARAJO, Everton Coimbra de. Algoritmos: fundamento e prtica. 3.ed. Florianpolis:


Visual Books, 2007.

ASCENSIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi.


Fundamentos da programao de computadores: algoritmos, Pascal e C/C++. Porto Alegre:
Prentice Hall, 2002.

FARRER, Harry ... Et Al. Programao estruturada de computadores: algoritmos


estruturados 3.ed. Rio de Janeiro: LTC, 2008.

FILHO, Edgard de Alencar. Iniciao lgica matemtica. 18.ed. So Paulo: Nobel,


2000.

FORBELLONE, Andr Luiz Villar; EBERSPACHER, Henri Frederico. Lgica de


programao: a construo de algoritmos e estrutura de dados. 2.ed. So Paulo: Pearson
Education do Brasil, 2000.

LOPES, Anita; GARCIA, Guto. Introduo programao: 500 algoritmos resolvidos.


Rio de Janeiro: Campus, 2002.

MANZANO, Jos Augusto N.G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lgica para
desenvolvimento de programao de computadores. 22.ed. So Paulo: rica, 2008.

PINTO, Sandra Rita. Treinamento em lgica de programao. So Paulo: Digerati

Books, 2009.

SALIBA Walter Luiz Caram. Tcnicas de programao: uma abordagem estruturada.


So Paulo: Makron Books, 1993.

SALVETTI, Dirceu Douglas; BARBOSA, Lisbete Madsen. Algoritmos. So Paulo:

Makron Books, 1998.


99
Pgina
Centro Federal de Educao Tecnolgica de Minas Gerais

Sumrio
AULA 1 Algoritmos e Lgica de Programao ..................................................................................1
1.1. Conceitos Bsicos ............................................................................................................... 3
1.2. Algoritmos e Portugol ......................................................................................................... 5
1.3. Diagramas de Bloco/Fluxogramas ....................................................................................... 8
1.4. Teste de Mesa .................................................................................................................. 11
AULA 2 Dados, Variveis e Constantes ......................................................................................... 12
2.1. Tipos Bsicos de Dados ..................................................................................................... 14
2.1.1. Inteiro1.2. Algoritmos e Portugol .................................................................................. 14
2.1.2. Real ............................................................................................................................... 16
2.1.3. Lgico ........................................................................................................................... 18
2.1.4. Caractere ...................................................................................................................... 18
2.1.5. Texto ............................................................................................................................ 20
2.2. Variveis ........................................................................................................................... 21
2.2.1. Declarao de Variveis ................................................................................................. 23
2.3. Constantes........................................................................................................................ 24
2.4. Entrada e Sada de Dados.................................................................................................. 25
AULA 3 Operadores e Expresses .................................................................................................. 28
3.1. Definies ......................................................................................................................... 30
3.2. Operadores e Expresses Aritmticas ............................................................................... 30
3.3. Operadores e Expresses Relacionais................................................................................ 33
3.4. Operadores e Expresses Lgicas ...................................................................................... 34
AULA 4 Estruturas de Deciso ....................................................................................................... 37
4.1. Estruturas de Deciso Simples........................................................................................... 39
4.2. Estruturas de Deciso Compostas ..................................................................................... 40
4.2.1. Estruturas de Deciso Compostas Encadeadas ou Aninhadas ......................................... 43
4.3. Estruturas de Deciso por Seleo (Mltiplas Escolhas) ..................................................... 46
AULA 5 Estruturas de Repetio ................................................................................................... 49
5.1. Estruturas de Repetio com Teste no Incio ..................................................................... 51
5.2. Estruturas de Repetio com Teste no Final ...................................................................... 54
5.2.1. Repetio de Instrues at que a Condio Seja Falsa .................................................. 54
5.2.2. Repetio de Instrues at que a Condio Seja Verdadeira ......................................... 56
5.3. Estruturas de Repetio com Varivel de Controle ............................................................ 58
Centro Federal de Educao Tecnolgica de Minas Gerais

AULA 6 Vetores e Matrizes ............................................................................................................ 62


6.1. Estrutura de Dados ........................................................................................................... 64
6.2. Vetores ............................................................................................................................. 64
6.2.1. Operaes sobre Vetores ............................................................................................... 66
6.2.2. Ordenao de Vetores ................................................................................................... 69
6.3. Matrizes ........................................................................................................................... 70
6.3.1. Operaes com Matrizes................................................................................................ 79
AULA 7 Funes e Procedimentos ................................................................................................. 77
7.1. Modularizao .................................................................................................................. 79
7.2. Funes ............................................................................................................................ 79
7.2.1. Funes de Biblioteca .................................................................................................... 80
7.3. Procedimentos.................................................................................................................. 82
7.4. Recursividade ................................................................................................................... 87
7.5. Variveis Globais e Variveis Locais................................................................................... 88
7.6. Passagem de Parmetros .................................................................................................. 88
7.6.1. Passagem de Parmetros por Valor ................................................................................ 89
7.6.2. Passagem de Parmetros por Referncia ....................................................................... 89
AULA 8 Registros .......................................................................................................................... 90
8.1. Estrutura de Dados Heterognea ...................................................................................... 92
8.1.1. Campo .......................................................................................................................... 92
8.1.2. Registro ........................................................................................................................ 92
8.1.3. Arquivo ......................................................................................................................... 93
8.1.4. Banco de Dados ............................................................................................................ 93
8.2. Arquivos ........................................................................................................................... 93
8.3. Operaes sobre Registros ................................................................................................ 94
Referncias ...................................................................................................................................... 99