Você está na página 1de 43

# CURSO

## ANALISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA:
ALGORTMO E LGICA DE PROGRAMAO

Presidente Prudente
2015

SUMRIO
1

3
4

6
7

## INFORMAES SOBRE A DISCIPLINA _____________________________________________________________ 2

1.1 CONTEDO PROGRAMTICO _________________________________________________________________ 2
1.2 BIBLIOGRAFIA _____________________________________________________________________________ 2
1.3 REGRAS PARA AS AULAS _____________________________________________________________________ 2
1.4 ONDE CHEGAREMOS? _______________________________________________________________________ 3
ALGORITMO _________________________________________________________________________________ 5
2.1 LGICA DE PROGRAMAO __________________________________________________________________ 5
2.2 SEQUENCIA LGICA ________________________________________________________________________ 5
2.3 INSTRUES ______________________________________________________________________________ 5
2.4 DEFINIO DE ALGORITMO ___________________________________________________________________ 6
2.5 ALGORITMO NO COMPUTACIONAL ___________________________________________________________ 7
2.6 RESOLUO DE PROBLEMAS POR MEIO DE COMPUTADORES _______________________________________ 9
2.7 PROGRAMA _______________________________________________________________________________ 9
2.8 LINGUAGENS DE PROGRAMAO ________________________________________________________________ 9
2.9 TCNICAS ATUAIS DE PROGRAMAO __________________________________________________________ 9
2.10
ALGORITMOS COMPUTACIONAIS __________________________________________________________ 10
2.10.1
Diretrizes para a Elaborao de Algoritmos _____________________________________________ 10
2.11
DESCRIO DE ALGORITMOS ______________________________________________________________ 10
2.11.1
Descrio - Narrativa _______________________________________________________________ 11
2.11.2
Descrio - Fluxograma _____________________________________________________________ 11
2.11.3
Descrio - Linguagem Algortmica ou Pseudolinguagem __________________________________ 11
2.12
2.12.1
2.12.2
2.12.3
2.12.4
2.13
TIPOS DE DADOS (PRIMITIVOS) ____________________________________________________________ 14
2.14
2.14.1
Constantes _______________________________________________________________________ 15
2.14.2
Variveis _________________________________________________________________________ 16
2.15
DECLARAO DE VARIVEIS __________________________________________________________________ 16
2.16
UTILIZANDO COMENTRIOS NO ALGORITMO _______________________________________________________ 17
2.17
COMANDO DE ATRIBUIO ___________________________________________________________________ 17
2.18
2.19
2.20
ESTRUTURA BSICA DE UM ALGORITMO __________________________________________________________ 18
2.21
EXERCCIOS CONSTRUO DOS PRIMEIROS ALGORITMOS _____________________________________________ 20
COMPARAO PORTUGOL X LINGUAGEM C++ ___________________________________________________ 21
ESTRUTURA DE SELEO/DECISO _____________________________________________________________ 22
4.2 ESTRUTURAS FUNDAMENTAIS DE ALGORITMOS ________________________________________________________ 23
4.2.1
Seleo Simples ______________________________________________________________________ 23
4.2.2
Seleo Composta ____________________________________________________________________ 24
4.2.3
4.2.4
Seleo de Mltipla Escolha ____________________________________________________________ 25
4.3 EXERCCIOS ESTRUTURA DE SELEO ______________________________________________________________ 26
ESTRUTURAS DE REPETIO __________________________________________________________________ 27
5.1 REPETIO COM TESTE NO INCIO ENQUANTO _______________________________________________________ 27
5.2 CDIGOS DE CONVERSO DA FUNO SCANF() E PRINTF() _________________________________________________ 28
5.3 REPETIO COM TESTE NO FINAL REPITA ___________________________________________________________ 29
5.4 REPETIO COM VARIVEL DE CONTROLE PARA ______________________________________________________ 31
5.5 BREAK __________________________________________________________________________________ 33
5.6 CONTINUE ________________________________________________________________________________ 33
5.7 EXERCCIOS ESTRUTURA DE REPETIO___________________________________________________________ 34
ARRAY - VETOR _____________________________________________________________________________ 35
6.1 EXERCCIOS VETOR _________________________________________________________________________ 37
ARRAY MATRIZ ____________________________________________________________________________ 39
7.1 EXERCCIOS MATRIZ _________________________________________________________________________ 40

1
1.1

## INFORMAES SOBRE A DISCIPLINA

1.2

CONTEDO PROGRAMTICO
Estudo e desenvolvimento de algoritmos.
Pseudocdigo
Fluxograma
Tipos de variveis
Declarao de variveis
Inicializao de variveis
Aritmticos
Relacionais
Lgicos
Comandos de Deciso
se
caso ... escolha
Comandos de Iterao
Para
Enquanto
Repita... at
Arrays
Vetores
Matrizes
Implementao de algoritmos - Linguagens de Programao C
BIBLIOGRAFIA
Bsica
ZIVIANI, N. Projeto de Algoritmos com Implementaes em Pascal e C.
2 ed. Thomson Pioneira, 2004.
AVILLANO, Israel de Campos. Algoritmos e Pascal Manual de Apoio. 2
ed. Cincia Moderna, 2006.

Complementar
ASCENCIO, A. F. G, CAMPOS, E. A. V. Fundamentos da Programao
de Computadores: algoritmos, Pascal e C/C++ e Java. Longman, 2007.
FORBELLONE, L. V., EBERSPACHER, H. F. Lgica de Programao: a
construo de algoritmos e estruturas de dados. Prentice Hall, 2005.
FARRER, H. et al. Algoritmos Estruturados. Rio de Janeiro: LTC - Livros
Tcnicos e Cientficos S.A., 1989.
GUIMARES/LAJES. Algoritmos e Estrutura de Dados. Rio de Janeiro:
LTC - Livros Tcnicos e Cientficos S.A., 1994.
WIRTH, N. Algoritmos e Estrutura de Dados. Rio de Janeiro, LTC Livros
Tcnicos e Cientficos, 1989.

## 1.3 REGRAS PARA AS AULAS

Para um bom funcionamento das aulas:
Deixar o celular no vibracall;
Controlar as faltas e notas;
Aula prtica (laboratrio), no aula de internet.

## Respeitar os colegas e professores;

Participar das aulas e tirar dvidas;
NO DORMIR NAS AULAS;
No namorar dentro da sala;
Quando for possvel conversar, use tom de voz baixo;
No usar internet nas aulas;
Quem tira nota (alta ou baixa) o aluno;
O aluno deve somar 12 pontos pra no ir para exame.

************************************************************************************************
O ALUNO ESCOLHEU O CURSO DE ANALISE E DESENVOLVIMENTO DE
ENTO DEVE SE DEDICAR.
************************************************************************************************
1.4

ONDE CHEGAREMOS?

## Chegaremos ao desenvolvimento de programas simples e SEM recursos grficos.

Por exemplo, desenvolveremos programas simples como esse que est na tela do
Prompt (acima).

## A ATENO CERTA GERA RESULTADO CERTO

2
2.1

ALGORITMO

2.2

2.3

LGICA DE PROGRAMAO
Computadores so dispositivos que s sabem fazer um tipo de coisa: executar
algoritmos para processar informao.
Lgica de programao a tcnica de encadear pensamentos para atingir
SEQUENCIA LGICA
Estes pensamentos podem ser descritos como uma sequncia de instrues, que
devem ser seguidas para se cumprir uma determinada tarefa.
Sequncia Lgica so passos executados at atingir um objetivo ou soluo de um
problema.

INSTRUES
Na linguagem comum, entende-se por instrues um conjunto de regras ou
normas definidas para a realizao ou emprego de algo.
Em informtica, porm, a instruo a informao que indica ao computador a
ao a executar.
Assim as instrues devem ser colocadas em ordem sequencial lgica.

Exemplo:

2.4

DEFINIO DE ALGORITMO
Um algoritmo formalmente uma sequncia finita de passos que levam a
execuo de uma tarefa.
Pode-se pensar em algoritmo como uma receita, uma sequncia de instrues
que atendem um objetivo.
Estas tarefas no podem ser redundantes nem subjetivas na sua definio,
devem ser claras e precisas.
Como exemplos de algoritmos pode-se citar os algoritmos das operaes
bsicas (adio, multiplicao, diviso e subtrao) de nmeros reais decimais.
Outros exemplos seriam os manuais de aparelhos eletrnicos, como um celular,
que explicam passo-a-passo como, por exemplo, gravar um contato, etc.

2.5

ALGORITMO NO COMPUTACIONAL
At mesmo as coisas mais simples, podem ser descritas por sequencias lgicas.
Por exemplo:
Chupar uma bala.
Pegar a bala
Retirar o papel
Chupar a bala
Jogar o papel no lixo

## Somar dois nmeros quaisquer.

Conhecer o primeiro nmero
Conhecer o segundo nmero
Some o primeiro nmero com o segundo nmero e mostre o resultado

EXERCCIOS
1. Faa um algoritmo para somar dois nmeros e multiplicar o resultado pelo primeiro
nmero.
2. Descreva com detalhes a sequncia lgica para Trocar um pneu de um carro.
3. Faa um algoritmo para trocar uma lmpada. Descreva com detalhes.
4. 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.
Deseja-se mover todos os 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.

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. Resoluo com sete passos.

## 5. 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.
Situao atual

2.6

## RESOLUO DE PROBLEMAS POR MEIO DE COMPUTADORES

O Computador uma ferramenta que permite a realizao do processamento

## O computador desempenha apenas parte das etapas de soluo de um problema.

As etapas na soluo de problemas so:
Entendimento do problema;
Criao de uma sequncia de operaes (ou aes) que, quando
executadas, produzem a soluo para o problema;
Execuo desta sequncia de operaes.
As etapas de entendimento do problema, criao de sequncia de aes e
2.7

PROGRAMA
Um programa um Algoritmo escrito em uma linguagem computacional.

## Programas so formulaes completas de algoritmos abstratos, baseados em

Curiosidade: 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 eu deixo para vocs
pesquisarem. Aproveite e procure saber tambm sobre a ACM. Qual a relevncia dessa
associao? O que ela faz?
2.8

LINGUAGENS DE PROGRAMAO
So softwares que permitem o desenvolvimento de programas. Possuem um poder
de criao ilimitado, desde jogos, editores de texto, sistemas empresariais at sistemas
operacionais.
Exemplos:
Pascal, Clipper, Cobol, C, C++, Visual Basic, Delphi, Java, Python, C# e etc.
2.9

## Programao Estruturada a arte ou tcnica de construir e formular algoritmos

de forma sistemtica. [Wirth]

10

## 2.10 ALGORITMOS COMPUTACIONAIS

Como saber se j temos detalhes suficientes em um algoritmo para que a AO
Vai depender do agente que ir executar o Algoritmo. No caso de algoritmos
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
2.10.1 Diretrizes para a Elaborao de Algoritmos
Identificao do problema: determinar o que se quer resolver ou qual objetivo a ser
atingido.
Identificao das entradas de dados: informaes fornecidas, a partir das quais se
desenvolvero os clculos.
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).
Determinao do que deve ser feito para transformar as entradas em sadas.
Neste ponto deve ser determinada a sequncia de aes que leve soluo do problema.
Para isto preciso:
1. observar as regras e limitaes j identificadas;
2. determinar aes possveis de serem realizadas pelo agente.

algoritmos

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

## EXEMPLO: Imagine o seguinte problema: Calcular a mdia final de uma aluno da

faculdade. O aluno realizara duas provas: P1, P2. A Mdia Final calculada por: (P1 +
P2) / 2
Para montar o algoritmo proposto, faremos trs perguntas:
b) Qual ser o processamento a ser utilizado?
R: O procedimento ser somar todos os dados de entrada e dividi-los por 4
(P1 + P2)/2
2.11 DESCRIO DE ALGORITMOS

11

## 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.
2.11.1 Descrio - Narrativa
Especificao verbal dos passos em linguagem natural.
Desvantagens: a linguagem natural prolixa e imprecisa e frequentemente pouco
confivel como um veculo de transferir informao.
sobre o algoritmo (ou parte dele), esclarecendo ou realando pontos especficos.
2.11.2 Descrio - 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.
Desvantagens: utilizao questionvel de fluxogramas detalhados, pois
obscurecem a estrutura do programa.
2.11.3 Descrio - 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,
identao, apenas um passo por linha, normalmente usa-se um smbolo para indicar o
final de um passo (como por exemplo, o ponto-e-vrgula ;), etc.
Portugol, vem da mistura de portugus com algoritmo, tambm conhecido como
para ensinar lgica de programao e algoritmos.
Usaremos o Portugol, pois ela possui uma estrutura similar linguagem C.
Exemplo: Trs representaes para o algoritmo do problema do aluno da faculdade.
Descrio - Narrativa
1. Receba a nota da prova1
2. Receba a nota da prova2
5. Some todas as notas e divida o resultado por 2
6. Mostre o resultado da diviso
Descrio - Fluxograma

12

## Descrio Pseudocdigo - Portugol

Algoritmo Mdia
Inicio
/* declarao de variveis */
real p1, p2, Media;
escreva(Digite a P1: );
leia(p1);
escreva(Digite a P1: );
leia (p2);
/* processamento - Calculo da media */
Media (p1 + p2) / 4;
escreva (Media final = , Media);
Fim.
Operadores aritmticos so os sinais que representam as operaes bsicas da
matemtica.
*
multiplicao
/
diviso
+
soma
subtrao
%
resto da diviso (apenas o valor inteiro)
Exemplo:
resto
resto = 1

5 % 2;

4 % 2;

Exemplo:
resto
resto = 0

1. Parnteses mais internos
2. pow, raiz
3. *, /, %
4. +, Dentro da mesma prioridade as operaes so executadas da esquerda para a direita.
Para alterar a prioridade devemos utilizar os parnteses.
Funes Matemticas
So funes que esto prontas e podem ser usadas quando necessrio.
Sintaxe: Nome da funo (argumento);

13

O argumento a informao que dada funo para que ela possa ser efetuada
Exemplos de algumas Funes Matemticas que utilizaremos:
sin (X) - Funo que calcula o seno da varivel X
int (z) - Funo que retorna a parte inteira da varivel z (que deve ser do tipo real)
pow(x,y) Potenciao. Significa x elevado a y. Ex.: pow (3,2) = 9
valores de mesmo tipo.
Os valores comparados podem ser constantes, variveis ou expresses
aritmticas.
FUNO
EXEMPLO
=

igual a

5 = 5, x = y

>

maior que

8 > 4, x > y

<

menor que

1 < 5, x < y

>=

maior ou igual a

11 >= 5, x >= y

<=

menor ou igual a

2 <= 5, x <= y

!=

diferente de

34 != 5, a != b

Exerccios
1. Tendo as variveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. Informe
se as expresses so verdadeiras ou falsas.
SALRIO
100,00
200,000
300,00

IR
0
10,00
15,00

SALLIQ
100,00
190,00
285,00

EXPRESSO
(SALLIQ >= 100,00)
(SALLIQ < 190,00)
SALLIQ=SALARIO - IR

V ou F

## 2. Encontre o resultado das expresses identificando se verdadeira ou falsa as

a) 2 * 4 = 24 / 3
b) 15 % 4 < 19 % 6
c) (3 * 4) / 4 <= pow (2,3)
d) 2 + 8 % 7 >= 3 * 6 - 15
So eles: no, e e ou
Exemplo: (notafinal >= 6,0) e (presena >= 75)
O resultado desta operao ser V se a varivel "notafinal" for maior ou igual a 6,0 e a
varivel "presena" for maior ou igual a 75.
1. no
2. e, ou

14

1. Parnteses mais internos
Basicamente existem quatro tipos de dados. So eles: inteiro, real, caracter e lgico.
So os grupos de informaes que o computador manipula.
Numricos
a) inteiro: representa todo e qualquer nmero que pertena ao conjunto dos
nmeros inteiros. Na prtica so os nmeros positivos e negativos sem
partes decimais. Ex: 1 -4 100 0 -905 ...
b) real: representa todo e qualquer nmero que pertena ao conjunto dos
nmeros reais. Na prtica so os nmeros positivos e negativos que tem
parte decimal Ex: 1,3 -816,97 3,0 -0,0055 ...

No-numricos
a) caracter (alfanumrico): qualquer dado composto por um conjunto de
caracteres alfanumricos. Os caracteres alfanumricos so os nmeros, as
letras e os caracteres especiais (!,@,#,\$,%, etc). Ex: CASA livro 18
R\$ 55,36...
b) lgico ou booleanos: um tipo de dado que s pode assumir dois valores
Ex: Falso, Verdadeiro (ou False, True)

15

Representam as informaes do problema a ser resolvido, tais estruturas esto
organizadas em tipos distintos de informaes. Dentro do escopo das estruturas de
2.14.1 Constantes
Representam valores constantes, ou seja, que no variam no decorrer do
algoritmo. E um dado que no sofre nenhuma variao durante todo o algoritmo.
As constantes do tipo caracter sempre devem ser colocadas entre aspas (").
Exemplo: "Isto uma constante caracter".
Ex: Pi= 3,1415, Opo:, -8.69, Falso

16

## Tecle algo para continuar, ...

Exemplos de Constantes e Variveis

2.14.2 Variveis
Representam informaes cujos valores so modificados durante a execuo do
algoritmo. 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
O conceito de varivel, na verdade, corresponde a posies de memria RAM,

## 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;
2.15 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
Sintaxe Geral
Portugol
Tipo lista de variveis;

Linguagem C
Tipo lista de variveis;

17

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

Exemplos:
real parcela, salrio;
booleano resposta;
real PI; { declarao de uma constante real }
caracter nome, endereo;
Neste momento, as variveis ainda no contm nenhum valor associado a elas. A
declarao de variveis deve ser feita antes da definio das aes do algoritmo.
Duas variveis no devem ter o mesmo nome.
2.16 UTILIZANDO COMENTRIOS NO ALGORITMO
A fim de dar ao seu algoritmo um entendimento melhor por parte de outros leitores,
ou at para voc mesmo, voc deve sempre coment-lo. Para inserir um comentrio
utilizaremos os comandos /* (barra e asterisco) e */ (asterisco e barra). O que vier escrito
entre estes dois comandos deve ser interpretado como comentrio e no haver ao
alguma por parte do programa. Exemplo:
preco preo_bruto + IMPOSTO;
escreva ("O preo do produto ", preo);
A linha que est entre /* */ no executada pelo algoritmo, pois apenas um
comentrio.
Eles podem ser colocados em qualquer ponto do algoritmo e considerada uma boa
prtica de programao.
2.17 COMANDO DE ATRIBUIO
Serve para atribuir (ou associar) um valor a uma varivel ou constante.
Sintaxe em Pseudolinguagem:
onde expresso pode ser um(a): Constante, Varivel, Expresso matemtica, Funo
matemtica, Expresso booleana, etc.
Ex: NOME <- Fulano de Tal
o PI 3,14
o Erro Verdadeiro (ou, simplesmente, Erro <- T)
o Media (P1 + P2)/2
Representam as aes bsicas de algoritmos para recebimento e apresentao de
durante a resoluo do problema.
Sintaxe em Portugol:

18

problema.
Sintaxe em Pseudolinguagem:
escreva (expresso, expresso, ...) ;
Ex:
escreva (Seu peso ideal : , peso_ideal) ;
escreva (Media final = , (P1 + P2)/2) ;
2.20 ESTRUTURA BSICA DE UM ALGORITMO
O algoritmo como um todo um bloco de instrues, ento deve ser delimitado
pelos comandos incio e fim.
As constantes e variveis devem ser declaradas no incio.
Os comandos so executados sequencialmente de cima para baixo e da esquerda
para a direita, assim, devem ser escritos nesta sequncia.
Cada comando deve terminar com ; (ponto-e-vrgula).
Modelo da estrutura bsica de um algoritmo:
Incio
/* declarao das constantes e variveis*/
inteiro var1, var2;
real var3;
caracter nome;
/* comandos */
comando 1;
comando 2;
comando 3;
..........
..........
comando n;
fim
Observe que os comandos delimitados por incio e fim esto recuados de quatro
espaos. Isto ser muito utilizado, pois facilita o entendimento do algoritmo.
Exemplo: Calcular a mdia aritmtica de um aluno da faculdade que realizou 2 provas
bimestrais.
Algoritmo Mdia
Inicio
/* declarao de variveis */
real p1, p2, Media;
/* Comandos*/
escreva ("Digite a P1: ");
leia (p1);
escreva ("Digite a P2: ");
leia (p2);
/* Processamento */
media (p1+p2)/ 2 ;
escreva ("A mdia aritmtica ", media);
fim

19

## Exemplo: Algoritmo para calcular juros

incio
real preco, taxa, juros, total;
escreva ("Entre com o preo :");
leia (preco);
escreva ("Qual a taxa de juros (%)?");
leia (taxa);
juros preco * (taxa / 100);
total preco + juros;
escreva ("O total a pagar ", total);
fim
Observao: Observe o uso dos comentrios para tornar o algoritmo mais legvel.
Exemplos para alguns conceitos vistos at o momento:
a) declarao de variveis;
Portugol
inteiro ano, dia, qtde;
real salrio, deposito;

Linguagem C/C++
int ano, dia, qtde;
float salrio, deposito;

b) inicializao de variveis
Portugol
ano 2012;
soma 0;

Linguagem C/C++
ano= 2012;
soma= 0;

Portugol
leia(ano);
leia(salrio);

Linguagem C++
cout<< Digite o ano;
cin>> ano;
cout<< Digite o salrio: ;
cin>> salario;

## d) atribuio de uma expresso aritmtica a uma varivel

Portugol
media (p1+p2)/2;
novo salrio+(salrio*0.15);

Linguagem C/C++
media = (p1+p2)/2;
novo = salrio+(salrio*0.15);

Portugol
escreva(media);
escreva(Novo salario: , novo);

Linguagem C++
cout << media;
cout << Novo salario: << novo;

20

## 2.21 EXERCCIOS CONSTRUO DOS PRIMEIROS ALGORITMOS

1. Construa um algoritmo que leia a cotao do dlar, leia um valor em dlares, converta
esse valor para Real e mostre o resultado.
somem todos e mostre o resultado.
3. Construa um algoritmo que apresente a comisso de um vendedor de peas, levandose em considerao que sua comisso ser de 5% do total de uma venda e que tem-se
vendida.
4. Faa um programa que calcule e mostre a rea de um crculo. rea=pi*Raio2.
5. Faa um programa que receba trs notas, calcule e mostre a mdia aritmtica entre
elas.
6. Faa um programa que receba duas notas e seus respectivos pesos, calcule e mostre
a mdia ponderada dessas notas. (N1*P1 + N2*P2) / (P1+P2)
7. Faa um programa que receba o salrio de um funcionrio, calcule e mostre o novo
salrio, sabendo-se que este sofreu um aumento de 25%.
8. Faa um programa que receba o salrio de um funcionrio e o percentual de aumento,
calcule e mostre o valor do aumento e do novo salrio.
9. Faa um programa que receba o salrio-base de um funcionrio, calcule e mostre o
salrio a receber, sabendo-se que esse funcionrio tem uma gratificao de 5% sobre o
salrio-base e paga um valor de imposto(%) sobre o salrio-base.
10. Faa um programa que receba o valor de um depsito e o valor da taxa de juros,
calcule e mostre o valor do rendimento e o valor total depois do rendimento.
11. Crie um algoritmo que conhea a quantidade de filmes que uma locadora de vdeo
possui e o valor que ela cobra por cada aluguel.
a) Sabendo que um tero dos filmes so alugados por ms, informe o faturamento
b) Quando o cliente atrasa a entrega, cobrada uma multa de 11% sobre o valor do
aluguel. Sabendo que um dcimo dos filmes alugados no ms so devolvidos com
atraso, calcule o valor ganho com multas por ms.
c) Sabendo ainda que 2% de filmes estragam ao longo do ano, e um dcimo do total
final do ano.

21

## COMPARAO PORTUGOL X LINGUAGEM C++

Portugol

Linguagem C++

*declarao de variveis

comentrio

## // comentrio para uma linha

/* ....... comentrio para vrias linhas
*/

incio

fim

inteiro

int

real
caracter

leia ();

float
char (para uma caracter/letra)
string (para vrias caracteres/letras)
bool
1 => falso
cin >> ano;

escreva ();

## se ... ento ... seno

se ... ento ... seno se
escolha (opo)
inicio
caso: comandos
parar;
caso: comandos
parar;
caso contrrio: comandos
parar;
fim
para cont de 1 at 20
incio
....
fim
enquanto (cont <= 20) faa
incio
....
fim
repita
....
at (cont <= 20);
no
e

## if ... - ... else

if ... - ... else if
switch(opcao){
case 1: //comandos;
break;
case 1: //comandos;
break;
default: //comandos;
break;
}

ou

lgico

## for (cont=1; cont < 20; cont++){

....
....
}
while (cont <= 20) {
....
....
}
do
....
while (cont <=20);
!
&&

22

ESTRUTURA DE SELEO/DECISO

4.1

um conjunto de todas as possibilidades combinatrias entre os valores de diversas
variveis lgicas, as quais se encontram em apenas duas situaes (V ou F) e utilizada
em conjunto com os operadores lgicos.
Relembrando os operadores lgicos: Utilizaremos trs conectivos bsicos para a
formao de novas proposies lgicas simples.

Funo

Linguagem C

no

negao

not

conjuno

&&

and

ou

disjuno

||

or

Operao de Negao
A

no A

F
Operao de conjuno

AeB

A

A ou B

## Exemplo: Suponha que temos trs variveis A = 5, B = 8 e C =1. Os resultados das

expresses seriam:

23

Exerccios
1. Sabendo que A=5, B=4 e C=3 e D=6, informe se as expresses abaixo so verdadeiras
ou falsas.
a) (A > C) e (C <= D)
b) ((A+B) > 10) ou (A+B) = (C+D)
c) (A>=C) e (D >= C)
d) no ( (A < D) e (D > C) )
a) F ou ( (20 - (18/3)) != ((21/3) * 5) )
b) no V ( ou (6 3 / 3 < 15 35 % 7) )
c) no ( ( (5 != 10/2) ou V) e ( (2 5 > 5 2) e V) )
d) pow(2,3) != 4 + 2 ou 2 + 10 % 5 > 0
4.2

## ESTRUTURAS FUNDAMENTAIS DE ALGORITMOS

As estruturas de deciso so tambm chamadas de seleo ou estrutura de controle
condicional e 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.

## 4.2.1 Seleo Simples

O comando s ser executado se a condio for verdadeira. Uma condio uma
comparao que possui dois valores possveis, verdadeiro ou falso.
Sintaxe
Portugol
Se (condio )
ento incio
bloco de comandos
fim ;

Linguagem C/C++
if (condio){
.... bloco de comandos
....
}

## Exemplo: Calcular a mdia aritmtica de um aluno da faculdade que realizou 2

provas bimestrais, indicando se foi aprovado, sabendo-se que a mdia para aprovao
deve ser maior ou igual a 6.
Portugol
Algoritmo Media
inicio
/*declarao de variveis*/
real P1, P2, media;
escreva (Digite a P1: );
leia(P1);
escreva( Digite a P2: );
leia(P2);
media (P1 + P2) / 2;
escreva(media);
Se (media >= 6)
fim.

Linguagem C++
#include <iostream>
using namespace std;
int main(){
/*declarao de variveis*/
float P1, P2, media;
cout << Digite a P1: ;
cin >> P1;
cout<< Digite a P2: ;
cin >> P2;
media = (P1 + P2) / 2;
cout << Media= << media;
if (media >= 6)
}
system(pause>null);

24

## 4.2.2 Seleo Composta

Se a condio for verdadeira, ser executado o bloco de comandos 1; caso
contrrio, se a condio for falsa, ser executado o bloco de comandos 2.
Sintaxe:
Portugol
se (condio)
ento incio
bloco de comandos 1
fim;
seno incio
bloco de comandos 2
fim;

Linguagem C/C++
if (condio){
.... bloco de comandos 1
....
}
else {
.... bloco de comandos 2
}

## Exemplo: Calcular a mdia aritmtica de um aluno da Fatec que realizou 2 provas

bimestrais, indicando se foi aprovado ou reprovado, sabendo-se que a mdia para
aprovao deve ser maior ou igual a 6.
Portugol
Algoritmo Media
inicio
/*declarao de variveis*/
real P1, P2, media;
escreva (Digite a P1: );
leia(P1);
escreva( Digite a P2: );
leia(P2);
leia(P1, P2);
media <- (P1 + P2) / 2;
escreva(media);
se (media >= 6)
fim.

Linguagem C++
#include <iostream>
using namespace std;
int main(){
/*declarao de variveis*/
float P1, P2, media;
cout << Digite a P1: ;
cin >> P1;
cout<< Digite a P2: ;
cin >> P2;
media = (P1 + P2) / 2;
cout << Media= << media;
if (media >= 6)
else
system(pause>null);
}

Voc pode aninhar mais de uma estrutura "se" e analisar mais de uma condio:
Portugol
se (condio 1)
ento incio
bloco de comandos 1
fim
seno se (condio 2)
bloco de comandos 2
fim
seno incio
bloco de comandos 3
fim

Linguagem C/C++
if (condio 1){
.... bloco de comandos 1
....
}
else if (condio 2) {
.... bloco de comandos 2
}
else {
.... bloco de comandos 3
}

25

## 4.2.4 Seleo de Mltipla Escolha

seleo de mltipla escolha. Ela verifica somente a igualdade do valor avaliado, onde sua
veracidade resultar na execuo de um bloco, ou de uma nica instruo especfica.
Sintaxe:
Portugol
escolha (X)
incio
caso <v1>:
comandos;
parar;
caso <v2>:
comandos;
parar;
caso <v3>:
comandos;
parar;
caso contrario: comandos;
parar;
fim;

Linguagem C/C++
switch (X){
case v1: ...comandos;
break;
case v2: ...comandos;
break;
case v3: ...comandos;
break;
default : ...comandos;
break;
}

onde <v1>, <v2>, <v3> so supostos valores a serem relacionados por meio da operao
de igualdade com o valor da varivel X.
Exemplo 1:
Portugol
Inicio
Inteiro opcao;
escreva(1- Ver Saldo);
escreva(2- Depositar);
escreva(3- Sacar);
leia(opcao);
escolha (opcao)
incio
caso 1: escreva (Saldo atual.);
parar;
caso 2: escreva(Qual valor? );
parar;
caso 3: escreva(Quanto sacar? );
parar;
caso contrario:escreva (Opo invlida.);
parar;
fim
fim

Linguagem C++
#include <iostream>
using namespace std;
int main(){
int opcao;
cout<< 1- Ver Saldo;
cout<< 2- Depositar;
cout<< 3- Sacar;
cin >> opcao;
switch (opcao){
case 1: cout << Saldo atual.;
break;
case 2: cout << Qual valor? ;
break;
case 3: cout << Quanto sacar? ;
break;
default: cout << Opo invlida.;
break;
}
system(pause>null);
}

Exemplo 2:
Portugol
Inicio
Inteiro opcao;
escreva(pocas do ano);
escreva(1- Vero);
escreva(2- Outono);
escreva(3- Inverno);

Linguagem C++
#include <iostream>
using namespace std;
int main(){
int opcao;
cout<< pocas do ano;
cout<< 1- Vero;
cout<< 2- Outono;

26

escreva(4- Primavera);
leia(opcao);
escolha (opcao)
incio
caso 1: escreva (Vero);
parar;
caso 2: escreva(Outono );
parar;
caso 3: escreva(Inverno );
parar;
caso 4: escreva (Primavera.);
parar;
caso contrrio: escreva (Opo invlida);
break;
fim
fim

cout<< 3- Inverno;
cout<< 4-Primavera;
cin >> opcao;
switch (opcao){
case 1: cout << Vero;
break;
case 2: cout << Outono;
break;
case 3: cout << Inverno;
break;
case 4: cout << Primavera;
break;
default: cout << Opo invlida;
break;
}
system(pause>null);

## 4.3 EXERCCIOS ESTRUTURA DE SELEO

1. Elaborar um algoritmo para ler um valor numrico e apresentar se positivo.
2. Elaborar um algoritmo para ler um valor numrico e apresentar se positivo ou
negativo.
3. Faa um algoritmo que calcule e exiba o salrio reajustado de um funcionrio de
acordo com a seguinte regra: Salrio at 300, reajuste de 50%; Salrios maiores que
300, reajuste de 30%.
de classificar em uma das seguintes categorias: infantil = 5 - 10 anos; juvenil = 11-17
anos; adulto = maiores de 18 anos.
5. Faa um algoritmo que verifique se a pessoa e menor ou maior de idade. Considerase maior de idade uma pessoa com 18 anos ou mais. Como sada o algoritmo deve
informar o nome e a idade da pessoa e depois a mensagem se ela ou no maior de
6. Faa um algoritmo que leia um nmero inteiro e mostre uma mensagem indicando se
este nmero par ou mpar, e se positivo ou negativo.
7. Tendo como dados de entrada a altura e o sexo (M/F) de uma pessoa (M-masculino
ou F-feminino), construa um algoritmo que calcule seu peso ideal, utilizando as
seguintes frmulas: -homens: (72.7*altura)-58; - mulheres: (62.1*altura)-44.7
8. Um banco conceder um crdito especial aos seus clientes, varivel com o saldo
mdio no ltimo ano. Faa um algoritmo que leia o saldo mdio de um cliente e calcule
o valor do crdito de acordo com a tabela abaixo. Mostre uma mensagem informando
o saldo mdio e o valor do crdito.
Saldo mdio Percentual
de 0 a 200 nenhum crdito
de 201 a 400 20% do valor do saldo mdio
de 401 a 600 30% do valor do saldo mdio
acima de 601 40% do valor do saldo mdio
9. A Organizao Mundial de Sade usa a seguinte tabela para determinar a condio de
um adulto, para isso desenvolva um algoritmo para calcular o ndice de Massa
Corporal (IMC) e apresenta-lo, dado pela frmula: IMC = peso / (altura)2
Condio
Abaixo do peso
Abaixo de 18.5
No peso normal
Entre 18.5 e 25
Acima do peso
Entre 25.1 e 30
Obeso
Acima de 30

27

ESTRUTURAS DE REPETIO
uma estrutura de desvio do fluxo de controle presente em linguagens de
programao que realiza e repete diferentes aes dependendo se uma condio
(booleano). Esto associados a uma estrutura de repetio, uma condio (tambm
chamada "expresso de controle" ou "condio de parada") e um bloco de cdigo:
verifica-se a condio, e caso seja verdadeira, o bloco executado. Aps o final da
execuo do bloco, a condio verificada novamente, e caso ela ainda seja verdadeira,
Deve-se observar que, caso o bloco de cdigo nunca modificar o estado da
condio, a estrutura ser executada para sempre, uma situao chamada lao infinito
(looping infinito). Da mesma forma, possvel especificar uma estrutura em que o bloco
Algumas linguagens de programao especificam ainda uma palavra reservada
para sair da estrutura de repetio de dentro do bloco de cdigo, "quebrando" a
estrutura. Tambm oferecida por algumas linguagens uma palavra reservada (break)
para terminar uma iterao especfica do bloco de cdigo, forando nova verificao da
condio.
Existem ocasies em que necessrio efetuar a repetio de um determinado
nmero de vezes. Neste caso, poder ser criado um looping que efetue o processamento
de um determinado trecho, tantas vezes forem necessrias. Os loopings tambm so
chamados de laos de repetio ou malhas de repetio.
A principal vantagem deste recurso que o programa passa a ter um tamanho
menor, aumentando o processamento sem alterar o tamanho do cdigo de programao.
5.1

## REPETIO COM TESTE NO INCIO ENQUANTO

no incio") a mais difundida estrutura de repetio, e sua estrutura bsica a seguinte:
Sintaxe:
Portugol

Linguagem C/C++

enquanto (condio)
incio
/*bloco de cdigos*/
fim

while (condio)
{
/*bloco de cdigos*/
}

## Exemplo 1: Calcule a mdia de idades de cinco alunos.

Portugol
Algoritmo Media_Enquanto
Incio
real media;
qtde_alunos <- 0;
soma<- 0;
enquanto (qtde_alunos < 5)
incio
qtde_alunos <- qtde_alunos + 1;
fim;
media<- soma/qtde_alunos;
escreva (Media= , media);
fim

Linguagem C++
#include <iostream>
using namespace std;
int main(){
float media;
qtde_alunos = 0;
soma= 0;
while (qtde_alunos <5)
{
cout << "Digite a idade: ";
qtde_alunos= qtde_alunos + 1;
}
media= soma/qtde_alunos;
cout << Media= << media<< endl;
system(pause>null);
}

28

5.2

## CDIGOS DE CONVERSO DA FUNO SCANF() E PRINTF()

Codigo
%c
%d ou %i
%o
%x
%ld
%e
%f
%s

um nico caracter
um inteiro do sistema decimal
um inteiro do sistema octal
um valor do tipo long
um nmero na notao cientfica
um nmero em ponto flutuante

Linguagem C
#include<stdio.h>
main(){
float media;
soma= 0;
qtde_alunos= 0;
while (qtde_alunos <5)
{
qtde_alunos= qtde_alunos + 1;
}
media= soma/qtde_alunos;
printf("A Media eh= %.2f", media,"\n");
getch();
}

## Nesta estrutura, a condio primeiramente verificada, e se for verdadeira, o bloco

Exemplo 2: Calcule a mdia de idades de uma sala de aula, no conhecida a
Portugol
Algoritmo Media_Enquanto
Incio
real media;
qtde_alunos <- 0;
soma<- 0;
Incio
qtde_alunos <- qtde_alunos + 1;
fim
media<- soma/qtde_alunos;
escreva (Media= , media);
fim

Linguagem C++
#include <iostream>
using namespace std;
int main(){
float media;
qtde_alunos = 0; soma= 0;
cout << "Digite a idade: ";
{
qtde_alunos = qtde_alunos + 1;
cout << "Digite a idade: ";
}
media= soma/qtde_alunos;
cout << Media= << media<< endl;
system(pause>null);
}

29

Linguagem C
#include<stdio.h>
main(){
float media;
qtde_alunos = 0;
soma= 0;
{
qtde_alunos = qtde_alunos + 1;
}
media= soma/qtde_alunos;
printf("Media= %.2f , media,\n;
getch();
}

5.3

## REPETIO COM TESTE NO FINAL REPITA

Esta estrutura tambm permite repetir um trecho de algoritmo diversas vezes, porm
o fluxo controlado por um teste feito no final da execuo.
Sintaxe:
Portugol

Linguagem C/C++

repita
/*bloco de cdigos*/
at (condio);

do
{

/*bloco de cdigos*/
} while (condio);

## Exemplo 1: Calcule a mdia de idades de cinco alunos.

Portugol
Algoritmo Media_Enquanto
incio
real media;
qtde_alunos <- 0;
soma<- 0;
repita
qtde_alunos <- qtde_alunos + 1;
at (qtde_alunos < 5);
media<- soma/qtde_alunos-1;
escreva (Media= , media);
fim

Linguagem C
#include<stdio.h>
main(){
float media;

Linguagem C++
#include <iostream>
using namespace std;
int main(){
float media;
qtde_alunos = 0;
soma= 0;
do {
cout << "Digite a idade: ";
qtde_alunos = qtde_alunos + 1;
} while (qtde_alunos < 5);
media= soma/qtde_alunos;
cout << Media= << media<< endl;
system(pause>null);
}

30

qtde_alunos = 0;
soma= 0;
do {
qtde_alunos = qtde_alunos + 1;
} while (qtde_alunos < 5);
media= soma/qtde_alunos;
printf("Media= %.2f , media,\n;
getch();

## Observe que os COMANDOS so executados pelo menos uma vez, independente

da CONDIO. Isto acontece porque a condio avaliada aps a execuo dos
comandos, o que representa a caracterstica principal desta estrutura.
Exemplo 2: Calcule a mdia de idades de uma sala de aula, no conhecida a
Portugol
Algoritmo Media_Enquanto
incio
real media;
qtde_alunos <- 0;
soma<- 0;
repita
qtde_alunos <- qtde_alunos + 1;
media<- soma/qtde_alunos-1;
escreva (Media= , media);
fim

Linguagem C
#include<stdio.h>
main(){
float media;
qtde_alunos = 0;
soma= 0;
do {
qtde_alunos = qtde_alunos + 1;
media= soma/qtde_alunos-1;
printf("Media= %.2f , media,\n;
getch();
}

Linguagem C++
#include <iostream>
using namespace std;
int main(){
float media;
qtde_alunos = 0;
soma= 0;
do {
cout << "Digite a idade: ";
qtde_alunos= qtde_alunos + 1;
media= soma/qtde_alunos-1;
cout << Media= << media<< endl;
system(pause>null);
}

31

5.4

## REPETIO COM VARIVEL DE CONTROLE PARA

Esta estrutura permite repetir um trecho de algoritmo, um nmero especfico de
vezes.
Sintaxe:
Portugol
Linguagem C/C++

{
incio
/*bloco de cdigos*/
/*bloco de cdigos*/
}
fim
onde:
"inicio" o valor inicial de "contador";
"fim" o valor final de "contador";
Exemplo: Esse algoritmo imprime os nmeros de 1 at 500.
Portugol
Incio /*q_al= qtde_alunos */
inteiro cont;
para cont de 1 at 50 incremento de 1
inicio
escreva (cont, " - ");
fim
fim

Linguagem C++
#include <iostream>
using namespace std;
int main(){
int cont;
for(cont=1; cont <=50; cont ++)
{
cout << cont << " - ";
}
system(pause>null);
}

Linguagem C
#include<stdio.h>
main(){
int cont;
for(cont=1; cont <=50; cont ++)
{
printf( " - ");
}
getch();
}

Exemplo: Calcule e apresente a mdia de idades de uma sala de aula de cinco alunos.
Portugol
Algoritmo Media_Para
Incio /*q_al= qtde_alunos */
real media;
soma<- 0;
para q_al de 1 at 5 incremento de 1
inicio
fim
media<- soma/5;
escreva (Media= , media);
fim

Linguagem C++
#include <iostream>
using namespace std;
int main(){
float media;
soma= 0;
for(q_al=1; q_al <=5; q_al++)
{
cout << "Digite a idade: ";
}
media= soma/5;
cout << Media= << media<< endl;

32

system(pause>null);

Linguagem C
#include<stdio.h>
main(){
float media;
soma= 0;
for(q_al=1; q_al <=5; q_al++)
{
}
media= soma/5;
printf("Media= %.2f, media, \n;
getch();
}

## Exemplo usando decremento: Calcule e apresente a mdia de idades de uma sala de

aula de cinco alunos.
Portugol
Algoritmo Media_Para
Incio /*q_al= qtde_alunos */
real media;
soma<- 0;
para q_al de 5 at 1 decremento de 1
inicio
fim
media<- soma/5;
escreva (Media= , media);
fim

Linguagem C
#include<stdio.h>
main(){
float media;
soma= 0;
for(q_al=5; q_al <=1; q_al--)
{
}
media= soma/5;
printf("Media= %.2f, media, \n;
getch();
}

Linguagem C++
#include <iostream>
using namespace std;
int main(){
float media;
soma= 0;
for(q_al=5; q_al <=1; q_al--)
{
cout << "Digite a idade: ";
}
media= soma/5;
cout << Media= << media<< endl;
system(pause>null);
}

33

5.5

BREAK
O comando break serve para determinar uma quebra de estrutura, ou seja, ele faz
com que, por exemplo, um loop (repetio) pare. No comando switch, por exemplo, ele
determina que no pode ser executado o case seguinte, e assim por diante.
No exemplo abaixo, temos uma repetio que se inicia em 1 e deve terminar em
cem (100), mas dentro desta estrutura h uma condio: se a varivel for igual a 10, saia
da estrutura de repetio.
Portugol
Algoritmo Break_
Incio/*q_al= qtde_alunos */
para contador 1 at 100 incremento de1
inicio
escreva ("Esta a repetio nr: ,
parar;
fim
fim

Linguagem C++
#include <iostream>
using namespace std;
int main(){
{
cout << "Esta a repetio nr: <<
break;
}
system(pause>null);
}

Linguagem C
#include<stdio.h>
main(){
{
printf(Esta a repetio nr: %d, contador);
break;
}
getch();
}

## Como podemos observar, mesmo a estrutura de repetio for determinando que a

repetio deve ir at 100, ao executarmos esse cdigo, apenas conseguimos chegar at a
repetio nmero 10. Isso ocorre porque quando o if for verdadeiro ele executa o break.
Dessa forma, conseguimos sair do loop sem ele ter terminado.
5.6

CONTINUE
Continue a sua funo ignorar o cdigo, e no sair como acontece com o break.

## Exemplo: O algoritmo a seguir contm uma estrutura de repetio que ir contar de 1 a

50, mas sempre que o nmero no for mltiplo de 5, o cdigo para apresentar o nmero
na tela ser ignorado e a repetio continuar com o nmero seguinte.
Portugol
Algoritmo Continue_
Incio/*q_al= qtde_alunos */
para contador 1 at 50 incremento de1
inicio
continue;

Linguagem C++
#include <iostream>
using namespace std;
int main(){
{
continue;

34

fim

fim
}

## cout << contador << \n;

system(pause>null);

Linguagem C
#include<stdio.h>
main(){
{
Printf(Esta a repetio nr: %d, contador);
continue;
}
getch();
}

## Como podemos ver, sempre que um nmero no for mltiplo de 5 (ou no

divisvel por 5), o programa deve ignorar o resto do bloco do for e repetir o cdigo com o
nmero seguinte. como se o resto do cdigo nem estivesse l.
5.7

## 1. Elabore um algoritmo que calcule e informe a mdia de idades de 5 alunos.

2. Faa um algoritmo que receba a idade de 10 pessoas, calcule e exiba a quantidade de
pessoas maiores de idade, sendo que a maioridade obtida aps completar 18 anos.
3. Faa um algoritmo que calcule e exiba o salrio reajustado de dez funcionrios de acordo com
a seguinte regra: Salrio at 300, reajuste de 50%; Salrios maiores que 300, reajuste de
30%.
4. Faa um algoritmo que leia de dez alunos altura e matricula. Mostre o aluno mais alto e mais
baixo e sua respectiva matricula.
5. Escreva um algoritmo que receba 23 nmeros, calcule e exiba as quantidades de nmeros
pares e impares.
6. Construir um algoritmo para calcular a mdia aritmtica de um conjunto de valores inteiros
positivos. Digitar zero para sair.
7. Construir um algoritmo que, dado um conjunto de valores inteiros e positivos, determine qual
o menor valor dentre eles. Digitar zero para sair.
classificar em uma das seguintes categorias: infantil = 5 - 10 anos; juvenil = 11-17 anos; adulto
= maiores de 18 anos. Digite 0 para sair.
9. Escreva um algoritmo que receba 5 valores inteiros, calcule e exiba o maior e o menor valor
deles.
10. Escreva um algoritmo que receba um conjunto de valores inteiros, calcule e exiba o maior e o
menor valor do conjunto.
 Para valores negativos, deve ser enviada uma mensagem;
 Esses valores (zero e negativos) no entraro nos clculos.
11. Faa um algoritmo que receba a idade e a altura de vrias pessoas. Calcule e exiba a mdia
das alturas das pessoas com mais de 20 anos. Para encerrar a entrada de dados, digite uma
idade negativa ou igual a zero.
12. No final do ano muitas pessoas compram presentes. Crie um algoritmo para registrar as
pessoas, usando como critrio de parada a letra n, para a pergunta Deseja cadastrar outro
(s/n)?, para identificar o perfil dos compradores numa loja de roupas e apresente como
 quantidade de mulheres e de homens;
 quantidade de mulheres e de homens abaixo e acima de 18 anos;
 quantidade de mulheres e de homens acima de 60 anos.
13. Faa um algoritmo que leia cinco pares de valores (A,B), todos inteiros e positivos, um de
cada vez. Mostre os nmeros inteiros pares de A at B (inclusive). Considere que sempre os
valores de A, sero menores que B. Este algoritmo utiliza DUAS estruturas de repetio.

35

ARRAY - VETOR
Um vetor uma varivel composta homognea unidimensional formada por uma
sequncia de variveis, todas do mesmo tipo, com o mesmo identificador (mesmo nome)
e alocadas sequencialmente na memria. Uma vez que as variveis tm o mesmo nome,
o que as distingue so os ndices que referenciam sua localizao dentro da estrutura.
Declarao de Vetor
Sintaxe:
Tipo Nome [tamanho];
Onde tipo o tipo de dado, tal como inteiro, ou real, ou caracter, nome o nome
da varivel, tamanho a quantidade de posies que estar disponvel para
armazenamento.
Exemplo de Vetor
//declarao da varivel
//atribuio de valores
int X[5];
X[2]= 55;
X[4]= 11;
0

55
2

11
4

Inicializando vetor
Inicializando com zeros: int zeros[75] = {0};
int vet [5] = { 16, 2, 77, 40, 12071 };
Representando o vetor
16
0

2
1

77
2

40
3

12071
4

vet[0]
16
0

vet[1]
2
1

vet[2]
77
2

vet[3]
40
3

vet[4]
12071
4

Ler string que contenha espao em branco entre a digitao getline(cin, nome);
Seguindo o exemplo anterior no qual vet tinha 5 elementos e cada um desses
elementos do tipo int, o nome que podemos usar para se referir a cada elemento o
seguinte:

## Algumas operaes vlidas com vetor:

int a= 2;
vet[a]= 77;
vet[2]= 77;
int b= vet[a+2];
//b= 12071
vet[vet[a]]= vet[2] + 5;
//vet[77]= 82
Lendo um Vetor
Portugol
Algoritmo Vetor
incio
inteiro i, X[5];
Para i de 1 at 5 incremento de 1 faa
incio
escreva (Digite o ,i, nmero: );
leia (X[i]) ;
fim
fim

Linguagem C++
#include <iostream>
using namespace std;
int main(){
int i, X[5];
for (int i=0; i<5; i ++)
{
cout<<Digite o <<i<< nmero: ;
cin >> X[i];
}
system(pause>null);
}

36

Linguagem C
#include<stdio.h>
main(){
int i, X[5];
for(i=0; i<5; i ++) {
printf("Digite o Vetor X[%i]= ",i);
scanf("%i", &X[i]);
}
getch();
}

Simulao da leitura
Varivel: i
1
2
3
4
5
95
0

13
1

-25
2

Tela
Digite o 1 nmero: 95
Digite o 2 nmero: 13
Digite o 3 nmero: -25
Digite o 4 nmero: 45
Digite o 5 nmero: 88
45
3

88
4

## Mostrando os Elementos do Vetor

Portugol
Algoritmo Vetor
incio
inteiro i, X[5];
Para i de 1 at 5 incremento de 1 faa
incio
escreva(Vetor X[,i,]: ,X[i]);
fim
fim

Linguagem C
#include<stdio.h>
main(){
int i, X[5]={1,2,3,4,5};
for(i=0; i<5; i ++)
{
printf("Vetor X[%d]: %d \n",i+1, X[i]);
}
getch();
}

Simulao da apresentao
Varivel: i
Tela
0
Vetor X[1]: 95
1
Vetor X[2]: 13
2
Vetor X[3]: -25
3
Vetor X[4]: 45
4
Vetor X[5]: 88

Linguagem C++
#include <iostream>
using namespace std;
int main(){
int i, X[5]={1,2,3,4,5};
for(i=0; i<5; i ++)
{
cout <<"Vetor X["<<i+1<<"]: "<<X[i]<<endl;
}
system(pause>null);
}

37

## Exemplo de cdigo que l e escreve um vetor de INTEIROS

Linguagem C++
#include <iostream>
using namespace std;
int main()
{
int vet[4], pos;
for (pos=0; pos < 4; pos++)
{
cout<<"Digite qualquer valor para o
vetor[ "<<pos+1<<"]: ";
cin >> vet[pos];
}
//impressao do que foi digitado no vetor
for (pos=0; pos < 4; pos++)
{
cout << vet[pos];
cout << endl;
}
system(pause>null);
}

Linguagem C
#include<stdio.h>
main(){
int vet[4],pos;
for (pos=0; pos < 4; pos++)
{
printf("Digite qualquer valor para o
vetor[%i]: ",pos+1);
scanf("%i", &vet[pos]);
}
//impresso do que foi digitado no vetor
for (pos=0; pos < 4; pos++)
{
printf("%i",vet[pos]);
printf("\n");
}
getch();
}

## 6.1 EXERCCIOS VETOR

1. Faa um algoritmo que calcule e apresente a mdia de idades de uma sala de 35
alunos.
2. Faa um algoritmo que calcule e apresente a mdia de idades de uma sala de 35
alunos e tambm encontre o aluno que possui idade igual a 30 anos.
3. Faa um algoritmo que calcule e apresente a mdia de idades de uma sala de 35
alunos e tambm encontre o aluno que possui idade igual a 30 anos, apresente o
nome do aluno, para isso crie um vetor de mesmo tamanho do tipo caracter/string.
4. Faa um algoritmo que calcule e apresente a mdia de alturas de uma sala de 35
alunos. Informe tambm quantos alunos e quais so os que possuem idade superior a
25 anos.
5. Faa um programa que carregue um vetor de dez elementos que contenha o nome de
pessoas e outro que contenha o peso, encontre qual a pessoa mais gorda e mais
magra e apresente o nome o peso das mesmas.
6. Faa um programa que carregue um vetor com nota de dez alunos, calcule e mostre a
mdia da sala e quantos alunos esto acima e abaixo da mdia da sala.
7. Faa um programa que carregue um vetor de oito elementos numricos inteiros,
calcule e mostre os nmeros pares e suas respectivas posies.
8. Faa um programa que carregue um vetor com dez nomes e faa uma verificao se
um determinado nome est nesse vetor.
9. Faa um algoritmo que calcule e apresente a mdia de alturas superior a 1,80. Informe
tambm quantos e quais so os alunos.
10. Criar um algoritmo que a partir de um vetor de 10 elementos inteiros, crie outros dois
vetores que recebero os elementos positivos e negativos e ao final apresente-os.
11. Criar um algoritmo que leia dados para um vetor de 100 elementos inteiros, imprimir o
maior, o menor, o percentual de nmeros pares e a mdia dos elementos do vetor.
12. Um vetor palndromo se ele no se alterar quando o mesmo for invertido. Por
exemplo, o vetor original vo = {1, 3, 5, 2, 2, 5, 3, 1} palndromo, pois ele invertido vi
= {1, 3, 5, 2, 2, 5, 3, 1}, igual ao original. Escreva um algoritmo que verifique se um
vetor palndromo, fazendo comparao de posio por posio do vetor origem (vo)
com o vetor invertido(vi).

38

13. Escreva um programa que crie um vetor inicialmente zerado e insira um valor no vetor,
numa posio informada. Por exemplo, para o vetor vazio v = { }, posio 4 e valor 10,
o programa deve gerar v={ , , ,10}. Se a posio for 2 e o valor 5, o vetor ficara
v = { , 5, ,10}. E assim, sucessivamente. Caso a posio esteja ocupada, os valores
devem ser remanejados, de modo a deixar a posio escolhida, livre para a insero
do novo valor, o vetor ficara v = { , 23, 5, ,10}. Mostre o vetor aps as inseres.
14. Uma empresa necessita de um sistema que
valide senhas. A regra para cadastro dessa
senha que a mesma deve conter 2
nmeros e 6 caracteres. Crie um algoritmo
que use vetor e que atenda ao cadastro
correto da mesma se isso no acontecer
pea para digitar novamente, conforme
apresenta o exemplo.
inclusive um e-mail vlido, ou seja, um e-mail
deve conter no mnimo um @ e um .. Crie
um algoritmo que identifique se um e-mail
vlido ou no. Use vetor de char.
16. Uma empresa possui um cadastro de dez
funcionrios, mas apenas pode armazenar
suas informaes de forma informatizada por
meio de vetores, ou seja, um vetor de salrio, outro com nome, outro com quantidade
de filhos dos funcionrios. Crie um programa para cadastrar esses dados, para
consultar por nome (mostre o salrio normal e tambm considerando os dependentes,
caso exista), mostre o montante dos salrios pagos, lembrando que um funcionrio
ganha por dependente R\$ 20,00. Mostre tambm quantos funcionrios tem filhos.
17. A partir da digitao de uma frase (use um vetor de caracteres), conte a quantidade de
vogais, para isso crie dois vetores de mesmo tamanho, um para armazenar as vogais
e outro para armazenar a quantidade (zere esse vetor), ao final mostre uma frase
explicando que determinada vogal apareceu na frase tantas vezes, conforme mostra a
figura a seguir.
Exemplo:

B O A S
0

F R

A S

Vetor de vogais

10

P A R A
11

12

13

14

15

T O D O S
16

17

18

19

20

21

39

ARRAY MATRIZ
Uma matriz uma varivel composta homognea bidimensional formada por uma
sequncia de variveis, todas do mesmo tipo, com o mesmo identificador (mesmo nome)
e alocadas sequencialmente na memria. Uma vez que as variveis tm o mesmo nome,
o que as distingue so ndices que referenciam sua localizao dentro da estrutura. Uma
varivel do tipo matriz composta por linhas e colunas.
Declarao de Matriz
Sintaxe:
Tipo Nome[qtde de linhas][qtde de colunas];
Onde tipo o tido de dados, nome o nome da varivel do tipo matriz, linha a
quantidade de linhas que vo compor a matriz, coluna a quantidade de colunas
que vo compor a matriz e que poder ser armazenado na sequncia de variveis
que formam a matriz.
Exemplo:
int X[3][5];// Esta matriz ter 3 linhas e 5 colunas para cada linha.
Atribuindo Valores a Matriz
X[0][2] = 45;
X[1][0] = 13;
0
0
1
2

1
45

X[1][4] = 0;
3

13

X[2][3] = -4;

4
0

-4

Inicializando a matriz
int matriz [ ][ ] = { {1,2,3,4,5}, {2,,4,6,8,10}, {3,6,9,12,15} };
0
1
2

0
1
2
2

1
2
4
6

2
3
6
9

3
4
8
12

4
5
10
15

## Lendo uma matriz

Portugol
Algoritmo Vetor
incio
inteiro X[3][5];
escreva(Digite os valores para a matriz);
Para L de 1 at 3 incremento de 1
Incio
Para C de 1 at 5 incremento de 1
Incio
escreva(Matriz[,L,] [, C,]: );
leia ( X[L][C] ) ;
Fim;
Fim;
fim

## Mostrando os Elementos da Matriz

Linguagem C++
#include <iostream>
using namespace std;
int main(){
int L,C, X[3][5];
for(L=0; L<3; L ++)
{
for(C=0; C<5; C ++) {
cout <<Matriz[<<L<<][<<C<<]: ;
cin >> X[L][C];
}
}
system(pause>null);
}

40

Portugol
Algoritmo Vetor
incio
inteiro X[3][5];
escreva(Digite os valores para a matriz);
Para L de 1 at 3 incremento de 1
Incio
Para C de 1 at 5 incremento de
Incio
escreva ( X[L][C] ) ;
Fim;
Fim;
fim

Linguagem C++
#include <iostream>
using namespace std;
int main(){
int L,C, X[3][5];
for(L=0; L<3; L ++)
{
for(C=0; C<5; C ++) {
cout << X[L][C];
}
}
system(pause>null);
}

## Exemplo de cdigo que l e escreve uma matriz de caracteres

#include <iostream>
using namespace std;
int main()
{
char mat[4][3];
int lin, col;
for (lin=0; lin < 4; lin++)
for (col=0; col <3; col++)
{
cout<<"Digite qualquer letra na linha "<<lin+1<<" e coluna "<<col+1<<": ";
cin >> mat[lin][col];
}
for ( lin=0; lin < 4; lin++)
{
for(col=0; col <3; col++)
cout << mat[lin][col]<< " ";
cout << endl;
}
system(pause>null);
}
7.1 EXERCCIOS MATRIZ
1. Faa um programa que carregue uma matriz 2 x 2 e encontre o maior elemento da
matriz, crie uma matriz resultante que armazene e mostre o clculo dos elementos da
2. Criar uma matriz para os 6 mdulos com 35 alunos que armazene as notas. Apresente
o aluno de cada mdulo e o do curso que possui maior nota, tambm apresente se
existe algum aluno que possui nota igual a 2 identificando que nmero o aluno
(coluna) e qual mdulo (linha).
3. Faa um programa que a partir de uma matriz 4x4 mostre a soma dos elementos da
diagonal principal. Mostre tambm a soma dos elementos que esto acima da
diagonal principal.
4. Faa um programa que carregue uma matriz 10 x 20 com nmeros inteiros e some
cada uma das linhas, armazenando o resultado das somas em um vetor. A seguir,
multiplique cada elemento da matriz pela soma da linha e mostre a matriz resultante.
5. Faa um programa que carregue: *um vetor com oito posies com os nomes das
lojas; * um outro vetor com quatro posies com os nomes dos produtos; * uma matriz
com os preos de todos os produtos em cada loja. O programa deve mostrar todas as

41

## relaes (nome do produto nome da loja) nas quais o preo no ultrapasse R\$

120,00.
6. Na teoria dos sistemas define-se o elemento MINMAX de uma matriz como sendo o
maior elemento da linha onde se encontra o menor elemento da matriz. Faa um
programa que carregue uma matriz 4 x 7 com nmeros reais, calcule e mostre seu
MINMAX e sua posio (linha e coluna).
7. Num avio de 3 fileiras com 100 poltronas h preos diferenciados, ou seja, as fileiras
das extremidades custam R\$ 200,00 e
a do meio custa R\$ 150,00. Crie um
algoritmo que controle as vendas das
deve informar a fileira, a poltrona. Se
estiver ocupado avise para trocar e
escolher outro e apresente toda a
disposio para facilitar a nova
escolha, ao final das vendas
que foram vendidas, qual o montante
adquirido pelas vendas e a disposio
das poltronas do avio. Como critrio
de parada informe -1 para a fileira e
lembre-se de zerar a matriz para
comear a desenvolver o algoritmo.
Para zerar a matriz que deve ser
char/caracter, crie uma varivel char com o valor 255 e zere a matriz toda, para
preencher a poltrona escolhida, use uma varivel char com o valor declarado 176 e
armazene-a na matriz no local desejado. Siga o exemplo.
8. Uma mquina automtica de venda de refrigerantes que fica num corredor de
shopping est totalmente abastecida, ela composta de 3 andares com 6
compartimentos cada andar. Os dois primeiros andares (superiores/linhas) possuem
refrigerantes diet e ligth que custam R\$ 2,50, os outros dois andares possuem
produtos que custam R\$ 2,00, ou seja, primeiro andar, refrigerante diet, segundo
andar refrigerante ligth, terceiro andar refrigerante guaran e quarto andar gua. Crie
um programa que armazene inicialmente a matriz com os respectivos valores e
durante a requisio/venda um a um dos produtos zere cada posio, ao final faa
uma verificao dos produtos vendidos, apresentando a quantidade vendida por andar
e total e tambm o valor total obtido aps a venda. Para facilitar a venda deve-se
perguntar qual refrigerante quer comprar escolhendo a opo pelo menu a seguir:
VENDA DE REFRIGERANTE
1- Refrigerante diet
2- Refrigerante ligth
3- Refrigerante guaran
4- gua
5- Sair
9. Faa um algoritmo que receba o estoque atual de 4 produtos (colunas) que esto
armazenados em 4 armazns (linhas) e coloque estes dados em uma matriz 5x4. Sendo
que a ltima linha da matriz contm o custo de cada produto, calcule e exiba: