Buscar

Introdução à Lógica de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 205 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 205 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 205 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos
Mairum Ceoldo 
Andrade
Aula 1
Conteúdo
• Definição de algoritmos
– O que é?
– Para que serve?
• Solução de problemas
– Como me organizar?
– Que etapas seguir?
• Etapas para construção de um algoritmo
– Como fazer?
– Como descrever?
2
Definição de Algoritmos
3
Origem
É uma palavra derivada do nome do 
matemático Abu Ja´far Muhammad – Al -
Kharazmi, que introduziu a escrita dos 
cálculos através de uma sequência de passos 
em substituição ao ábaco.
Matemática
É uma sequência de procedimento utilizada 
para realizar e desenvolver cálculo, de forma 
automatizada sem muito esforço lógico.
Programação
Sequência de passos finitos, e bem 
estruturados que podem ser automatizados 
e implementados utilizando linguagens 
de programação. 
Definição de Algoritmo
Sequência finita de instruções, definida 
de forma clara e sem ambiguidade, de forma 
que possa ser executada e reproduzida pelo 
interpretador ou leitor. 
4
Algoritmo MDC
• Divida A por B e obtenha o 
resto R1
• Se R1=0, MDC é B
• Se R1≠0, divida B/R1 e 
obtenha R2
• Se R2=0, MDC é R1
• Se R2≠0, divida R2/R2 e 
obtenha R3
• Se R3=0, MDC é R2
• Se R3≠0, repita os dois 
passos anteriores que o resto 
seja 0. 
5
Lógica
É um ramo da filosofia que estuda e cuida 
das regras de estruturação do pensamento, do uso 
do raciocínio no estudo e solução de problemas. 
Apresentas formas e técnicas para estruturação e 
argumentação utilizadas na solução de problemas.
6
• Problema dos 9 pontos • Torre de Hanói
7
h
tt
p
:/
/e
n
.w
ik
ip
e
d
ia
.o
rg
h
tt
p
:/
/p
t.
w
ik
ib
o
o
k
s
.o
rg
Lógica
http://en.wikipedia.org/
http://pt.wikibooks.org/wiki/Lógica/Desafios_de_lógica#mediaviewer/Ficheiro:Nt-9point-1-1.svg
Desafios de raciocínio 
e lógica matemática
Racha Cuca
8
SITES SUGERIDOS
Lógica
http://www.profcardy.com/desafios/ http://rachacuca.com.br
Resolução de problemas
Geroge Pólya
1. Entender 
2. Planejar 
3. Executar
4. Verificar
9
Resolução de problemas
1 – ENTENDER
✓ Identifique os dados.
✓ Identifique a incógnita.
✓ Identifique condição.
✓ Verifique se é possível satisfazer a condição 
com os dados fornecidos. 
10
Resolução de problemas
1 – PLANEJAR
✓ Procure achar alguma semelhança entre esse 
problema e outro que já resolveu. 
✓ Releia o problema se não tiver conseguido 
encontrar as etapas necessárias para resolvê-lo.
✓ Quando tiver conseguido, escreva as etapas 
sem ser prolixo e impreciso. 
11
Resolução de problemas
1 – EXECUTAR
✓ Acompanhe todas as etapas.
✓ Verifique se conseguiu atingir o objetivo.
12
Resolução de problemas
1 – VERIFICAR
✓ Consegue justificar todas as etapas?
✓ Consegue visualizar outra solução?
✓ Consegue ver uma outra aplicação para a 
solução encontrada?
13
14
Entender Planejar Executar Verificar
Interpretação 
do enunciado 
do problema 
e das questões 
envolvidas. 
Escolha 
da linguagem e 
estruturação 
da solução. 
Construção 
do algoritmo. 
Execução em 
um interpretador 
ou compilador. 
Etapas para construção de um 
algoritmo
Logica de programação
É a aplicação dos conceitos e práticas 
da lógica na utilização das linguagens 
de programação para o desenvolvimento 
de algoritmos na solução de problemas, 
respeitando regras da lógica matemática, 
aplicadas pelos programadores durante 
o processo de construção do software.
15
Conceito de programa
É um algoritmo escrito ou codificado, 
utilizando uma linguagem de programação. 
É composto com um conjunto de entradas, 
que são processadas e suas saídas 
resultantes. 
16
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 1
18
Problema
Um fabricante produz bolas maciças em dois 
tamanhos, mas dispõe de um único modelo de 
caixa para transportá-las. Felizmente, essa caixa 
acondiciona perfeitamente uma bola grande, 
ou 216 pequenas. 
Sabendo que, independente 
do tamanho, as bolas são feitas 
do mesmo material, qual a caixa 
de bolas que pesará mais? 
1 – Compreensão do problema
• Que o problema pede e qual a incógnita?
– Qual das caixas pesará mais, com a bola 
grande ou com as 216 pequenas?
• Quais os dados?
– Bola grande acondicionada perfeitamente 
na caixa. 
– 216 bolas pequenas acondicionadas 
perfeitamente na caixa. 
– Bolas maciças e do mesmo material. 
19
1 – Compreensão do problema
• Podemos representar através de uma 
figura?
20
2 – Elaboração do Plano
• Se 
– A = aresta da caixa
– R = raio bola grande
– r = raio da bola pequena
• Então: A = 2R = 2(6r)
• 3 formas diferentes de resolver:
– Utilizando-se proporções
– Calculando-se o volume
– Por semelhança
21
3 - Execução
• Calculando-se o volume
22
vol.esf .grand =
4
3
p R3 =
4
3
p (6r )3 =
=
4
3
p 216r 3 = 216
4
3
p r 3 =
= 216.vol.esf .pequena
4 - Revisando
• Revisar todos os argumentos e as manipulações 
algébricas feitas e verificar que tudo está correto.
• Poderíamos verificar a solução utilizando as 
outras formas de resolver. 
• Poderíamos verificar o resultado construindo-se 
bolas maciças dos dois tamanhos, constatando-
se com isso que a conclusão que se obteve é 
verdadeira.
23
Algoritmos
Mairum Ceoldo 
Andrade
Aula 2
Conteúdo
• Representação de algoritmos
– Linguagem Natural
– Linguagem Gráfica
– Pseudolinguagem
• Construção de um algoritmo
2
3
Entender Planejar Executar Verificar
Interpretação 
do enunciado 
do problema 
e das questões 
envolvidas
Escolha 
da linguagem; e 
Estruturação 
da solução
Construção 
do algoritmo
Execução em 
um interpretador 
ou compilador
Etapas para construção de um 
algoritmo
Representação de Algoritmos
Linguagem Natural
4
Escrever: Olá, como vai, tudo bem?
Ler: “resposta”
Escrever: Seja bem-vindo, é um 
prazer conhecê-lo.
Linguagem Natural
• Depende diretamente 
de quem está escrevendo 
e de quem está lendo;
• Necessário clareza;
• Ambiguidade léxica.
5
Representação de Algoritmos
Linguagem Natural
6
Ingredientes:
2 xícaras (chá) de açúcar
3 xícaras (chá) de farinha de trigo
4 colheres (sopa) de margarina bem cheias
3 ovos
1 1/2 xícara (chá) de leite aproximadamente
1 colher (sopa) de fermento em pó bem cheia
Modo de preparo:
1. Bata as claras em neve.
2. Reserve.
3. Bata bem as gemas com a margarina e o açúcar.
4. Acrescente o leite e farinha aos poucos sem parar de bater.
5. Por último, agregue as claras em neve e o fermento.
6. Coloque em forma grande de furo central untada e enfarinhada.
7. Pré-aqueça o forno a 180 C por 10 minutos.
8. Asse por 40 minutos.
Representação de Algoritmos
Linguagem Natural
7
1 – Utilize frases curtas;
2 – Use somente um verbo em cada frase, sempre 
no infinitivo ou imperativo;
3 – Evite palavras com ambíguas;
4 – Detalhe todas as etapas.
Representação de Algoritmos
• Linguagem gráfica
– Imagens
– Esquemas
– Manuais de instrução
8
Representação de Algoritmos
©
 C
h
ri
s
ti
a
n
 B
ri
d
g
w
a
te
r 
| 
D
re
a
m
s
ti
m
e
.c
o
m
Fluxograma ISO 
5807
9
INÍCIO
Acordar
Escovar os dentes
Preparar e tomar 
café
Preparar roupas e 
lanches para o 
clube 
Há 
tarefas 
a fazer? 
Verificar 
programação do 
cinema
Ir ao shopping
Fazer Refeição
Ir ao Cinema
Ir ao clube
Ir à piscina
Fazer refeição
Praticar esportes
Voltar pra casa
Fazer tarefas
Tomar banho
Fazer Refeição
Assistir TV
Dormir
Dia de 
sol?
FIM
Não
Não
Sim
Sim
Linguagem gráfica
Representação de Algoritmos
• Pseudolinguagem
– Abstrai os problemas da linguagem natural;
– Facilita o aprendizado da lógica de algoritmos;
– Focada no aprendizado e não na estrutura.
10
Semântica → definição do comando.
Sintaxe → como se escreve um comando.
Representação de Algoritmos
Linguagens Algorítmicas
Portugol
Departamento de 
Engenharia Informática 
do Instituto Politécnico 
de Tomar em Portugalhttp://www.dei.estt.ipt.pt/portugol/
11
http://www.dei.estt.ipt.pt/portugol/
WEBPortugol
Universidade do Vale 
do Itajaí (UNIVALI)
http://siaiacad17.univali.br/webportugol/
12
Linguagens Algorítmicas
UAL
Unesa Algorithmic
Language Universidade 
Estácio de Sá (Campos 
Friburgo/RJ) 
http://geocities.ws/ual_language/ual.html
13
Linguagens Algorítmicas
http://geocities.ws/ual_language/ual.html
C++
Dev C++
• http://www.bloodshed.net/devcpp.html
14
Linguagens Algorítmicas
Construção de um algoritmo
Problema: calcular juros de conta
• Primeiro momento – Compreender.
– As informações serão digitadas no teclado 
(origem), sendo compostas por dois dados 
numéricos, o valor da prestação e o valor 
do juros.
– O algoritmo deverá calcular o novo valor 
da conta, já com os juros, que também 
será um valor numérico.
– O algoritmo deverá mostrar o novo valor 
em tela (saída).
15
• Segundo Momento – Identificar.
– Duas operações de entrada de dados, uma 
para ler o valor da conta e uma para ler o valor 
do juros;
– Processamento para calcular o juros e 
acrescer este valor na conta;
– Saída para apresentar o novo valor da conta.
16
• Entradas e saídas de dados
• Variáveis e constantes necessárias
• Cálculos
• Decisões através de comparações
• Ciclos ou repetições
Construção de um algoritmo
Problema: calcular juros de conta
• Quarto momento – Refletir.
17
A solução foi satisfatória?
Existe uma forma mais simples para resolver o problema?
A solução, ou parte dela, poderá ser utilizada para resolver outros problemas?
Construção de um algoritmo
Problema: calcular juros de conta
– A solução apresentada foi satisfatória;
– O problema é simples, não há solução melhor, 
porém poderíamos realizar soluções mais 
genéricas para atender formas mais complexas 
de cálculo dos juros;
– O processamento realizado neste algoritmo 
é muito usual e pode ser utilizado para muitos 
outros algoritmos.
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 2
Atividade
19
R: Verdadeiro.
1) Por definição, uma pseudolinguagem não tem um ambiente 
para ser testada. Verdadeiro ou falso? 
2) Qual a diferença entre sintaxe e semântica de um comando? 
R: Sintaxe é como se escreve o comando e semântica, a 
definição do comando.
R: UAL, PORTUGOL, WEBportugol, ILA, Portugol++, VisulaG.
3) Cite algumas linguagens algorítmicas.
R: Fluxograma.
4) Cite uma linguagem gráfica usada para construir algoritmos.
Algoritmos
Mairum Ceoldo 
Andrade
Aula 3
Conteúdo
• Características da estrutura sequencias.
• Comandos de início e fim.
• Variáveis
– Tipos de variáveis
– Declaração e atribuição de variáveis
2
Algoritmos
Praticar é a única forma de aprender
3
Agora começa sua 
vida como 
desenvolvedor
Características da estrutura 
sequencias
4
ENTRADA PROCESSAMENTO SAÍDA
Necessário obter os 
dados de algum lugar
As informações geradas 
são armazenada ou 
apresentadas em tela
Lógica implementada pelo 
desenvolvedor (você) para 
transformar os dados em 
informação
Comandos de início e fim
É necessário delimitar o 
início
e o 
fim
de seu programa 
Cada linguagem possui seu delimitador, veremos.
5
Comandos de início e fim
UAL
prog <nomeDoPrograma>
...
fimprog
6
Durante nossa disciplina, sempre que 
usarmos um conteúdo entre < > 
significa que este conteúdo deve ser 
definido por você
Comandos de início e fim
C++
#include <iostream>
using namespace std;
int main()
{
...
}
7
Entretanto no C++ este é um 
caso especial, trata-se da 
importação de uma 
biblioteca
Comandos de início e fim
Fluxograma
Conceito Exemplo
8
Início
fim
.
: 123
fim
Início
Variáveis
Uma variável é um elemento sintático
do 
algoritmo que tem como funcionalidade armazenar 
um determinado valor.
O valor associado a variável depende do tipo 
de informação que se deseja manipular, assim, 
diversos tipos de valores podem ser atribuídos 
às variáveis.
9
10
Memory
Control
Unit
Arithmetic
Logic
Unit
Input Output
Accumulator
Arquitetura de Von Neumann 
h
tt
p
:/
/e
n
.w
ik
ip
e
d
ia
.o
rg
http://en.wikipedia.org/wiki/Von_Neumann_architecture#mediaviewer/File:Von_Neumann_architecture.svg
Variáveis
11
MEMÓRIA PRINCIPAL
12
MEMÓRIA PRINCIPAL
Variável
Variáveis
Tipos de dados
• Na escola
– Português
• Palavras
– Matemática
• Natural (N)
• Inteiros (Z)
• Reais (R)
• Complexos (C)
13
• Nos algoritmos e programação
14
Tipos de dados
Declarando uma variável
tipo <nomeDaVariável>
15
UAL C++
Algumas regras: linguagens não aceitam que 
o nome comece com números, geralmente aceitam 
alguns caracteres especiais como underline.
Declarando uma variável
Vamos treinar
• Nome de uma pessoa: 
string nome
• Salário de uma pessoa: 
real salario
• Idade de uma pessoa: 
int idade
• Indicar se o cadastro esta ativo: 
logico ativo
16
Atribuindo valor
UAL
<variável> <- <valor>
varInteiro <- 213;
varReal <- 2.5;
varCaractere <- “Ola“;
varLogico <- falso; 
C++
<variável> = <valor>
varInteiro = 213;
varReal = 2.5;
varCaractere = “E“;
varLogico = false; 
17
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 3
19
Caixa eletrônico
Um caixa eletrônico possui notas de 
– R$ 50,00
– R$ 20,00
– R$ 10,00
Faça um programa que calcule 
quantas notas de cada deve ser 
fornecida para o cliente, ao 
realizar um saque de um 
determinado valor.
Caixa eletrônico
• Variáveis:
– Saque
– Nota50
– Nota20
– Nota10
• Quantidade de notas de 50: divisão inteira por 50.
• Quantidade de notas de 20: divisão do resto da 
divisão por 50.
• Quantidade de notas de 10: divisão do resto da 
divisão por 20.
20
• UAL
21
Caixa eletrônico
Algoritmos
Mairum Ceoldo 
Andrade
Aula 4
Conteúdo
• Comandos de entradas e dados – LEIA
• Comandos de saída de dados – Imprima
• Operadores Aritméticos e lógicos
– Expressões aritméticas
– Expressões relacionais
– Expressões lógicas
2
Comandos de entradas e dados – LEIA
UAL
• Sintaxe: leia <nomeDaVariável>; 
• Descrição: palavra reservada leia seguida 
do nome da variável. É possível ler apenas 
uma variável de cada vez, seguido de ponto 
e vírgula. 
• Exemplos:
– leia v1;
– leia v2;
– leia v3. 
3
Comandos de entradas e dados – LEIA
C++
• Sintaxe: cin >> <nomeDaVariável>; 
• Descrição: palavra reservada cin seguida 
do símbolo obrigatório >> seguido do nome 
da variável, seguido de ponto e vírgula. 
• Exemplos:
– cin >> v1;
– cin >> v2;
– cin >> v3. 
4
Comandos de entradas e dados – LEIA
Fluxograma
• Símbolo:
• Exemplos:
5
variável v1, v2, v3
Comandos de saída de dados 
ESCREVA
UAL
• Sintaxe: imprima <conteúdo>; 
• Descrição: palavra reservada imprima seguida 
de uma variável, de um conjunto de caracteres ou 
de várias variáveis ou conjuntos de caracteres 
separados por vírgula, seguido de ponto e vírgula.
• Exemplos:
– imprima v1;
– imprima “Variável: “, v1;
– imprima v1, “ - ”, v2.
6
Comandos de saída de dados 
ESCREVA
C++
• Sintaxe: cout << <conteúdo>; 
• Descrição: palavra reservada cout seguida do 
símbolo <<, seguido de uma variável, de um 
conjunto de caracteres ou de um várias variáveis 
ou conjuntos de caracteres separados pelo 
símbolo <<, seguido de ponto e vírgula.
• Exemplos:
– cout << v1;
– cout << “Variável: “ << v1;
– cout << v1 << “ - ” << v2. 
7
Comandos de saída de dados 
ESCREVA
Fluxograma
• Símbolo:
• Exemplos:
8
v1, v2
“Variável”
, v1
Comandos de saída de dados 
ESCREVA
• Alguns caracteres de controle:
\n – equivalente a tecla enter em um 
editor de texto
\t – equivalente 
a tecla tab em 
um editor de 
texto
• Exemplo:
9
USO
• Formulário:
Nome: ____________________
Idade: _______
Experiência: Sim ( ) Não ( )
10
USO
11
“Nome:” “Idade:” “Exper…:”
nome indade experiência
12
“Nome:”
“Idade:”
“Exper…:”
nome
indade
experiência
Início
fim
Fluxograma
prog Entrevista
stringnome, idade, experiência
imprima ”Nome: ”
leia nome;
imprima “Idade: ”
leia idade
imprima “Experiência: ”
leia expediência
fimprog
UAL
Expressões aritméticas
Operador
Linguagem 
UAL
Linguagem C++
Soma + +
Subtração - -
Multiplicação / /
Divisão * *
Resto da Divisão % %
13
Utiliza a mesma precedência da matemática, para 
alterar utilize ( ), delimitando as operações que 
devem ser realizadas primeiro
Expressões aritméticas
UAL C++
14
Expressões relacionais
Operador
Linguagem 
UAL
Linguagem C++
maior > >
menor < <
menor ou igual <= <=
maior ou igual >= >=
igual == ==
diferente <> !=
15
Em uma expressão relacional o resultado produzido pela avaliação 
da expressão é sempre um valor lógico. Assim, uma expressão 
relacional resulta em um valor do tipo verdadeiro ou falso.
Expressões aritméticas
C++
16
Expressões Lógicas
Operador Linguagem UAL Linguagem C++
negação (NOT) ! !
conjunção (E) && &&
disjunção (OU) || ||
disjunção-exclusiva (XOR) <não existe> ^
17
NOT AND OR XOR
Expressões lógicas
C++
18
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 4
Calculadora
• O usuário fornecerá dois valores numéricos 
e serão realizados os cálculos de soma, 
subtração, multiplicação e divisão.
• Para leitura dos valores será utilizado o 
comando leia e para a apresentação dos 
resultados será necessário o comando 
escreva. 
20
Calculadora
Dados de Entrada
quantidade: 2
tipos: real, real
nomes: valor1, valor2
Dados intermediários
quantidade: 4
tipos: real, real, real, real
nomes: soma, sub., mult., div.
PROCEDIMENTO
1 – obter valor1, valor2
2 – soma <- valor1 + valor2
3 – sub <- valor1 - valor2
4 – mult <- valor1 * valor2
5 – div <- valor1 / valor2
6 – exibir soma, sub., mult., div.
21
Calculadora
UAL C++
22
Calculadora
23
Algoritmos
Mairum Ceoldo 
Andrade
Aula 5
Conteúdo
• Características de estrutura de decisão.
• Comando condicional simples.
• Comando condicional composto.
2
• Divida A por B e obtenha o resto R1
• Se R1=0, MDC é B
• Se R1≠0, divida B/R1 e obtenha R2
• Se R2=0, MDC é R1
• Se R2≠0, divida R2/R2 e obtenha R3
• Se R3=0, MDC é R2
• Se R3≠0, repita os dois passos anteriores 
que o resto seja 0
Algoritmo MDC
3
Usamos condições para tomar 
decisão e seguir o fluxo 
desejado do algoritmo.
Tipos de estruturas condicionais
• Condicional simples: forma mais simples, possui 
apenas o fluxo caso a condição seja verdadeira.
• Condicional composta: dois fluxos, um para o 
caso da condição verdadeira e outro se for falsa.
• Condicional aninhada: utiliza-se outras condições 
encadeadas caso no fluxo em que a condição é 
falsa.
• Condicional múltipla: permite múltiplos fluxos 
para diferentes valores de uma mesma variável.
4
A condição
Operações ou Testes
Significado Matemática Exemplo - UAL
Maior > 2 * 8 > 4
Menor < 2 < 9
Igual = 3 == 7 - 4
Maior ou igual ≥ 9 >= 5
Menor ou igual ≤ 4 <= 10
diferente ≠ 8 <> 5
Conjunção (e) ∧ n>=100 && n<=200
Disjunção (ou) ∨ n<100 || n>200
Negação (não) !p
5
Condicional Simples
se
Um determinado bloco de instruções do 
algoritmo será executado se (e apenas se) 
uma condição de teste for satisfeita. 
As linguagens de programação utilizam a 
instrução equivalente denominada if.
6
UAL
se (<teste>)
{
<bloco de comandos>
}
Exemplo
se (nota >= 6)
{
imprima “Aprovado“;
}
C++
if (<teste>)
{
<bloco de comandos>
}
Exemplo
if (nota >= 6)
{
cout << “Aprovado“;
}
7
Condicional Simples
Fluxograma Exemplo
8
V
F
TESTE
.
:
V
F
Nota >= 6
“Aprovado”
Condicional Simples
Verificar se um número 
é par ou ímpar
9
• UAL • C++
Condicional Composto
se então senão
Trecho da estrutura condicional que 
especifica o que será realizada quando a 
expressão resultar em um valor falso é 
conhecido como senão. 
Nas linguagens de programação o bloco 
senão é chamado de else. 
10
UAL
se (<teste>)
{
<bloco de comandos>
}
senão
{
<bloco de comandos>
}
C++
if (<teste>)
{
<bloco de comandos>
}
else
{
<bloco de comandos>
}
11
Condicional Simples
Fluxograma Exemplo
12
V
F
TESTE
.
:
.
:
V
F
Nota >= 6
“Aprovado”
“Reprovado”
Condicional Simples
13
• UAL • C++
Verificar se um número 
é par ou ímpar
Verificar uma entrada
14
UAL
C++
O Teste
15
operando 1 operador relacional operando 2
Uma expressão relacional
Operadores Relacionais
Significado Matemática Exemplo - UAL
Maior > 2 * 8 > 4
Menor < 2 < 9
Igual = 3 == 7 - 4
Maior ou igual ≥ 9 >= 5
Menor ou igual ≤ 4 <= 10
diferente ≠ 8 <> 5
16
exp. rel. 1 operador lógico exp. rel. 2
Duas ou mais expressões relacionais
Operadores Lógicos
Significado Matemática Exemplo - UAL
Conjunção (e) ∧ n>=100 && n<=200
Disjunção (ou) ∨ n<100 || n>200
Negação (não) !p
Obs.: !(nao) tem maior hierarquia, seguido do 
&&(and) e, depois, ||(ou)
O Teste
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 5
18
R: se composto.
1) Se só tivermos duas possibilidades de 
respostas, qual a estrutura indicada?
2) Em relação aos operadores Relacionais, qual 
tem maior hierarquia?
R: Todos têm a mesma hierarquia.
R: !( não).
3) Em relação aos operadores Lógicos, qual tem 
maior hierarquia?
19
4) Construa um algoritmo linguagem Algorítmica 
UAL que receba nome e nota e exiba o nome e 
uma das mensagens: Concorrendo a bolsa de 
100% ou Melhore sua nota. Concorrerá a bolsa 
caso a nota seja maior que 9.
Algoritmos
Mairum Ceoldo 
Andrade
Aula 6
Conteúdo
• Comando condicional aninhado.
• Comando condicional múltiplo.
2
Condicional Aninhado
Uma condicional é definida no interior do 
bloco de instruções da outra.
3
Condicional Aninhado
UAL
se (<teste>)
{
<bloco de comandos>
}
senão
{
se (<teste>)
{
<bloco de 
comandos>
}
senão
{
<bloco de 
comandos>
}
}
C++
if (<teste>)
{
<bloco de comandos>
}
else
{
if (<teste>)
{
<bloco de 
comandos>
}
else
{
<bloco de 
comandos>
}
}
4
Condicional Aninhado
UAL
se (nota >= 6)
{
imprima “Aprovado“;
}
senão
{
se (nota >= 4)
{
imprima
“Recuperação“;
}
senão
{
imprima
“Reprovado”;
}
}
C++
if (nota >= 6)
{
cout << “Aprovado“;
}
else
{
if (nota >= 4)
{
cout <<
“Recuperação“;
}
else
{
cout << “Reprovado”;
}
}
5
Condicional Aninhado
Fluxograma Exemplo
6
V
F
TESTE
.
:
V
F
TESTE
.
:
.
:
V
F
Nota >= 6
V
F
Nota >= 4
“Aprovado”
“Recuperação”
“Reprovado”
Colocar 3 números em 
ordem crescente
7
• UAL
8
Fluxograma
Colocar 3 números em 
ordem crescente
Autenticação de usuário
9
UAL
Condicional múltiplo
10
Condicional múltiplo
• Estruturar de forma melhor e mais eficiente 
problemas como o apresentado 
anteriormente.
• Permite a elaboração de condicionais 
mutuamente exclusivas.
–A variável tem que ser a mesma em todos 
os testes.
–A variável tem que ser do tipo enumerável: 
inteira ou de um caractere.
–O operador relacional tem que ser o de 
igualdade.
11
Condicional múltiplo
UAL
(não disponível na versão)
escolha (<variavel>)
{
caso <valor1>: <comandos>
pare;
caso <valor2>: <comandos>
pare;
caso <valor3>: <comandos>
pare;
caso <valor_n>: <comandos>
pare;
senao : <comandos>
}
C++
switch (<variavel>)
{
case <valor1>: <comandos>
break;
case <valor2>: <comandos>
break;
case <valor3>: <comandos>
break;
case <valor_n>: <comandos>
break;
default : <comandos>
}
12
Condicional múltiplo
Fluxograma
13
V
F
valor==v1 Comandos 1
V
F
valor==v2 Comandos 2
V
F
valor==v3 Comandos 3
V
F
valor==vn Comandos n
Comandos 1
Mês do ano
14
C++
Calculadora
15
C++
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 6
17
Data do Licenciamento
informe o tipo de automóvel e o 
número final de sua placa para que 
você possa informá-lo da data final 
de seu licenciamento. 
No Brasil o licenciamento de carros e caminhões é 
feito durante o ano de acordo com o final da placa 
de seu carro, dependendo do valor o licenciamentodeve ser feito até um determinado dia. De acordo 
com a tabela abaixo solicite ao usuário que 
Mês do licenciamento Automóveis Caminhões
abril 1 -
maio 2 -
junho 3 -
julho 4 -
agosto 5 e 6 -
setembro 7 1 e 2
outubro 8 3, 4 e 5
novembro 9 6, 7 e 8
dezembro 0 9 e 0
Resolução C++
#include <iostream>
using namespace std;
int main() {
int tipoAutomovel, fimPlaca;
cout << “Informe o tipo de seu automóvel 
–\n 1 para carros;\n 2 para Caminhões”;
cin >> tipoAutomovel;
cout << “Informe o número final de sua 
placa: ”;
cin >> fimPlaca;
18
if(tipoAutomovel == 1) {
switch(fimPlaca){
case ‘1’: cout << “Abril”;
break;
case ‘2’: cout << “Maio”;
break;
case ‘3’: cout << “Junho”;
break;
case ‘4’: cout << “Julho”;
break;
case ‘5’:
case ‘6’: cout << “Agosto”;
break;
case ‘7’: cout << “Setembro”;
break;
case ‘8’: cout << “Outubro”;
break;
case ‘9’: cout << “Novembro”;
break;
case ‘0’: cout << “Dezembro”;
break;
}
}
19
else {
switch(fimPlaca){
case ‘1’:
case ‘2’: cout << “Setembro”;
break;
case ‘3’: 
case ‘4’: 
case ‘5’: cout << “Outubro”;
break;
case ‘6’: 
case ‘7’: 
case ‘8’: cout << “Novembro”;
break;
case ‘9’: 
case ‘0’: cout << “Dezembro”;
break;
}
}
}
20
Testando
21
Algoritmos
Mairum Ceoldo 
Andrade
Aula 7
Conteúdo
• Característica de estruturas de repetição
• Comando de repetição com variável de 
controle – PARA
2
Como executar diversas vezes a 
mesma ação?
• Como a nota de 5 alunos?
• E se quisermos ler 100 notas?
– CTRL C e CTRL V ....
3
ler nota1;
ler nota2;
ler nota3;
ler nota4;
ler nota5.
ler nota1;
ler nota2;
ler nota3;
.......
ler nota99;
ler nota100.
Como executar diversas vezes a 
mesma ação?
• Como fazer um programa despertador?
– Basta fazer um programa emita um alarme em 
um determinado horário.
• Quantos dias?
– Tantos quantos o usuário quiser!
4
se (horario = x) {
tocarAlarme();
}
se (horario = x) {
tocarAlarme();
}
se (horario = x) {
tocarAlarme();
}
se (horario = x) {
tocarAlarme();
}
se (horario = x) {
tocarAlarme();
}
...
Estruturas de repetição
• “Enquanto estiver ativo faça isso.” 
• “Faça isso enquanto for diferente daquilo.” 
• “Para x de 10 até 100 realize tal tarefa.” 
5
Estruturas de repetição
Estruturas de repetição são também 
conhecidas como estruturas de iteração ou 
laços, elas permitem que uma sequência de 
comandos seja executada repetidamente, até 
que determinada condição ou situação seja 
atendida. 
6
Comando PARA - UAL
7
para(<valor inicial>; <expressão de teste>;<incremento>) {
bloco de comandos
}
<valor inicial>
nomeDaVariável <- valorInicial;
• deve ser uma variável enumerável, um inteiro (int)
• é atribuído um valor inicial, pode ser uma constante, uma 
variável ou uma expressão.
• Exemplos: i<-0; i<- strtam(nome); i <- x+1;
<expressão de teste>
nomeDaVariável <, >, <=, >=, == valor;
• Estrutura relacional ou condição que será utilizada como termo 
final do laço
• O valor poder ser constante, variável ou expressão
• Exemplos: i >= 10; i>strtam(nome); i <= x+10; 
<incremento>
nomeDaVariável <- nomeDaVariável operador valor
• é um comando de atribuição que incrementa a variável no laço
• o operador pode ser qualquer operador aritmético ou expressão
• Exemplos: i <- i+1; i<-i+2; i++; i--; 
Comando PARA – C++
8
for(<valor inicial>; <expressão de teste>;<incremento>) {
bloco de comandos
}
<valor inicial>
nomeDaVariável = valorInicial;
• deve ser uma variável enumerável, um inteiro (int)
• é atribuído um valor inicial, pode ser uma constante, uma 
variável ou uma expressão.
• Exemplos: i=0; i = strtam(nome); i = x+1;
<expressão de teste>
nomeDaVariável <, >, <=, >=, == valor;
• Estrutura relacional ou condição que será utilizada como termo 
final do laço
• O valor poder ser constante, variável ou expressão
• Exemplos: i >= 10; i>strtam(nome); i <= x+10; 
<incremento>
nomeDaVariável = nomeDaVariável operador valor
• é um comando de atribuição que incrementa a variável no laço
• o operador pode ser qualquer operador aritmético ou expressão
• Exemplos: i = i+1; i<-i+2; i++; i--; 
Repetição com 
contador
BLOCO DE COMANDOS
V
F
Comando PARA - Fluxograma
9
Count<- 1, 3, 1
Digite 
numero>0 
NUM
Num * 2
fim
Inicio
F
V
Ler código e nota de 
5 alunos
10
prog leituraAlunos
int codigo;
real nota;
imprima “Código: ”; leia codigo;
imprima “Nota: ”; leia nota;
imprima “Código: ”; leia codigo;
imprima “Nota: ”; leia nota;
imprima “Código: ”; leia codigo;
imprima “Nota: ”; leia nota;
imprima “Código: ”; leia codigo;
imprima “Nota: ”; leia nota;
imprima “Código: ”; leia codigo;
imprima “Nota: ”; leia nota;
fimprog
CTRL C e CTRL V
Ler código e nota de 
5 alunos
11
prog leituraAlunos
int codigo;
real nota;
int c;
fimprog
Estrutura de repetição
para(c=1; c<=4;c=c+1)
{
}
imprima “Código: ”; leia codigo;
imprima “Nota: ”; leia nota;
Comando PARA 
Possibilidades de iteração
for(c= 1; c <= 5; c=c + 1)
for(c= 1; c <= 5; c++)
for(c= 1; c <= 5; c += 1)
PA - crescente
➢ Valor inicial menor do que valor final
➢ Operador Relacional < ou <=
12
Comando PARA 
Possibilidades de iteração
for(c= 5; c >= 1; c -= 1 )
for(c= 5; c >= 1; c-- )
for(c= 5; c >=1; c=c - 1 )
PA - decrescente
➢ Valor inicial maior do que valor final
➢ Operador Relacional > ou >=
13
Comando PARA 
Possibilidades de interação
for(c= 3; c <= 243; c*=3)
PG - crescente
➢ Valor inicial menor do que valor final
➢ Operador Relacional < ou <=
14
Comando PARA 
Possibilidades de iteração
for(c=64; c >= 2; c=c /2)
PG - decrescente
➢ Valor inicial maior do que valor final
➢ Operador Relacional > ou >=
15
Comando PARA 
Possibilidades de iteração
16
for(c= 1; c <= 5; c=c + 1)
for(c= 3; c <= 243; c*=3)
for(c= 1; c <= 5; c++)
for(c= 1; c <= 5; c += 1)
PA - crescente
PG - crescente
for(c=64; c >= 2; c=c /2)
for(c= 5; c >= 1; c -= 1 )
for(c= 5; c >= 1; c-- )
for(c= 5; c >=1; c=c - 1 )
PG - decrescente
PA - decrescente
Ler 10 valores e 
apresentar a soma
17
Linguagem UAL Linguagem C++
prog exemplo
int cont;
real valor, acumulador;
acumulador <- 0.0;
para(cont<-1; cont<=10; cont++)
{
imprima “\nValor ”, cont, “: “;
leia valor;
acumulador <- acumulador + valor;
}
imprima “\nSoma dos valores: “, acumulador;
fimprog
#include <iostream>
using namespace std;
int main()
{
int cont;
float valor, acumulador;
acumulador = 0;
for(cont=1; cont<=10; cont++)
{
cout << “\nNumero: “ << cont;
cin >> valor;
acumulador = acumulador + valor;
}
cout <<”\nSoma dos valores: ” << acumulador;
}
ACUMULADOR
Ler 10 valores e 
apresentar a soma
18
Linguagem UAL Linguagem C++
prog exemplo
int cont;
real valor, acumulador;
acumulador <- 0.0;
para(cont<-1; cont<=10; cont++)
{
imprima “\nValor ”, cont, “: “;
leia valor;
acumulador <- acumulador + valor;
}
imprima “\nSoma dos valores: “, acumulador;
fimprog
#include <iostream>
using namespace std;
int main()
{
int cont;
float valor, acumulador;
acumulador = 0;
for(cont=1; cont<=10; cont++)
{
cout << “\nNumero: “ << cont;
cin >> valor;
acumulador = acumulador + valor;
}
cout <<”\nSoma dos valores: ” << acumulador;
}
ACUMULADOR
19
Acumulador
1) O que é?
2) Como se cria?
Declarando a variável
Uma variável
20
Acumulador
✓ Declare a variável, cujo tipo tem que ser compatível com
o valor que irá receber.
✓ Inicialize com o elemento neutro da
operação, na maioria das vezes (0 +
- ou 1 * /).
✓ Dentro da estrutura de repetição,
coloque a expressão do acumulador:
var op= valor; var++; var--.
✓ Depois da estrutura de repetição,
exiba, teste, etc.
3) Quais as regras para que tudo funcione 
perfeitamente?
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 7
22
Problema
Elabore um algoritmo que calcule o total de 
números primos entre 1 e 1000 
Números primos: 
divisíveis apenas por 1 e 
por ele mesmo.
Solução
23
Algoritmos
Mairum Ceoldo 
Andrade
Aula 8
Conteúdo
• Comandode repetição com teste lógico no 
início – ENQUANTO
• Comando de repetição com teste lógico no 
fim – FAÇA ... ENQUANTO
• Quando utilizar cada estrutura de repetição.
2
Comando - ENQUANTO
• Estrutura usada quando o número de repetições 
for desconhecido. 
• Controla a repetição com um teste(condição) no 
início.
• Ideal para trechos de proteção na entrada de 
dados.
• O usuário decide quando interrompe a repetição.
3
Comando ENQUANTO
UAL
4
enquanto( <condição> )
{
bloco de comandos
}
<condição>
variável operador valor
• Estrutura relacional ou condição que será 
utilizada como validação para execução do 
bloco de comandos.
• Pode ser uma única expressão simples ou 
um conjunto de expressões relacionais e 
lógicas, como as utilizadas nos comandos 
condicionais, vistas anteriormente.
• Exemplos: i >= 10; i>strtam(nome); i <= x+10 
Comando ENQUANTO
C++
5
while ( <condição> )
{
bloco de comandos
}
<condição>
variável operador valor
• Estrutura relacional ou condição que 
será utilizada como validação para 
execução do bloco de comandos.
• Pode ser uma única expressão simples 
ou um conjunto de expressões relacionais e 
lógicas, como as utilizadas nos comandos 
condicionais, vistas anteriormente.
• Exemplos: i >= 10; i>strlen(nome); i <= x+10 
Comando ENQUANTO
Fluxograma
6
BLOCO DE 
COMANDOS
V
F
TESTE
Digite 
numero>0 
NUM
Num * 2
fim
Início
F
V
Digite 
numero>0 
NUM
Num > 0 ?
Contagem de números 
positivos e negativos
7
UAL C++
prog exemplo
int numero, pos, neg; 
numero <- 1;
pos <- 0;
neg <- 0;
enquanto(numero <> 0) {
imprima “\n Escreva o número: “;
leia numero;
se (numero > 0) {
pos<- pos +1;
} senão {
se (numero < 0) {
neg<- neg +1;
}
}
}
imprima “\nTotal de números positivo: “, pos;
imprima ”\nTotal de números negativos”, neg;
fimprog
#include <iostream>
using namespace std;
int main() {
int numero = 1;
int pos, neg;
pos = neg = 0;
while(cont != 0) {
cout<<”\nEscreva o número”;
cin>>numero;
if( (numero > 0)
pos++;
else {
if( (numero < 0)
neg++;
}
}
cout<<”\nTotal de números positos: ”<<pos;
cout<<”\nTotal de números negativos: ”<<neg;
} 
Comando – FAÇA...ENQUANTO
• Estrutura usada quando o número de repetições 
for desconhecido. 
• Controla a repetição com um teste(condição) ao 
final.
• Ideal para programas que funcionam através de 
um menu.
• O usuário decide quando interrompe a repetição.
8
Comando FAÇA...ENQUANTO
UAL
9
faça
{
bloco de comandos
}
enquanto( <condição> )
<condição>
variável operador valor
• Estrutura relacional ou condição que 
será utilizada como validação para execução do 
bloco de comandos novamente.
• Pode ser uma única expressão simples ou um 
conjunto de expressões relacionais e lógicas, 
como as utilizadas nos comandos condicionais, 
vistas anteriormente.
• Exemplos: i >= 10; i>strtam(nome); i <= x+10 
Comando FAÇA...ENQUANTO
C++
10
do
{
bloco de comandos
}
while( <condição> )
<condição>
variável operador valor
• Estrutura relacional ou condição que 
será utilizada como validação para 
execução do bloco de comandos.
• Pode ser uma única expressão simples ou um 
conjunto de expressões relacionais e lógicas, 
como as utilizadas nos comandos condicionais, 
vistas anteriormente.
• Exemplos: i >= 10; i>strlen(nome); i <= x+10 
Comando FAÇA...ENQUANTO
Fluxograma
11
BLOCO DE 
COMANDOS
V
F
TESTE
Digite 
numero>0 
NUM
Num * 2
fim
Início
F
V
Num > 0 ?
Contagem de números 
positivos e negativos
12
UAL C++
prog exemplo
int total; 
real nota, soma, maior, menor, media;
string resposta;
soma <- 0.0;
total <- 0;
faca {
total <- total +1;
imprima “\nNota “, total, “: “;
leia nota;
soma <- soma + nota;
se (total == 1) {
maior <- nota;
menor <- nota;
} senao {
se (nota > maior) {
maior <- nota;
}
se (nota < menor) {
menor <- nota;
}
}
imprima “Deseja continuar [s] ou [n]? ”;
leia resposta;
} enquanto(resposta==“s“ || resposta==”S”)
media <- soma / total;
escreva “\nMédia das notas: “, media;
escreva ”\nMaior nota..........: ”, maior;
escreva ”\nMenor nota.........: ”, menor;
fimprog
#include <iostream>
using namespace std;
int main()
{
int total;
float nota, soma, maior, menor, media;
char resposta;
soma = 0;
total = 0;
do{
total++;
cout<<”\nNota ”<<total<<”: ”;
cin>>nota;
if( (total == 1) {
maior = nota;
menor = nota;
} else {
if (nota > maior)
maior = nota;
if (nota < menor)
menor = nota;
}
cout“\nDeseja continuar [s] ou [n]? ”;
cin>>resposta;
} while(resposta==‘n’ || resposta==’N’);
media = soma / total;
cout << “\nMédia das notas: “ << media;
cout << ”\nMaior nota..........: ” << maior;
cout << ”\nMenor nota.........: << menor;
} 
prog exemplo
int total; 
real nota, soma, maior, menor, media;
string resposta;
soma <- 0.0;
total <- 0;
faca {
total <- total +1;
imprima “\nNota “, total, “: “;
leia nota;
soma <- soma + nota;
se (total == 1) {
maior <- nota;
menor <- nota;
} senao {
se (nota > maior) {
maior <- nota;
}
se (nota < menor) {
menor <- nota;
}
}
imprima “Deseja continuar [s] ou [n]? ”;
leia resposta;
} enquanto(resposta==“s“ || resposta==”S”)
media <- soma / total;
escreva “\nMédia das notas: “, media;
escreva ”\nMaior nota..........: ”, maior;
escreva ”\nMenor nota.........: ”, menor;
fimprog 
#include <iostream>
using namespace std;
int main()
{
int total;
float nota, soma, maior, menor, media;
char resposta;
soma = 0;
total = 0;
do{
total++;
cout<<”\nNota ”<<total<<”: ”;
cin>>nota;
if( (total == 1) {
maior = nota;
menor = nota;
} else {
if (nota > maior)
maior = nota;
if (nota < menor)
menor = nota;
}
cout“\nDeseja continuar [s] ou [n]? ”;
cin>>resposta;
} while(resposta==‘n’ || resposta==’N’);
media = soma / total;
cout << “\nMédia das notas: “ << media;
cout << ”\nMaior nota..........: ” << maior;
cout << ”\nMenor nota.........: << menor;
} 
Comando simulando comando
13
#include <iostream>
using namespace std;
int main()
{
int valor;
for(;;)
{
cout <<“\nValor: “;
cin >> valor;
if(valor <= 0) 
break;
cout << valor*valor 
<<“\n”;
}
system(“pause”);
} 
Comando simulando comando
14
#include <iostream>
using namespace std;
int main()
{
int valor;
for(;;)
{
cout <<“\nValor: “;
cin >> valor;
cout << valor*valor 
<<“\n”;
if(valor <= 0) 
break;
}
system(“pause”);
} 
Comando simulando comando
15
#include <iostream>
using namespace std;
int main()
{
int valor, i;
i = 0;
while(i <= 3)
{
cout <<“\nValor: “;
cin >> valor;
cout << valor*valor <<“\n”;
i++;
}
system(“pause”);
} 
Comando simulando comando
16
#include <iostream>
using namespace std;
int main()
{
int valor = 1;
while(valor > 0)
{
cout <<“\nValor: “;
cin >> valor;
cout << valor*valor <<“\n”;
if(valor <= 0)
break;
}
system(“pause”);
} 
Comando simulando comando
17
#include <iostream>
using namespace std;
int main()
{
int valor, i;
i = 1;
do {
cout <<“\nValor: “;
cin >> valor;
cout << valor*valor <<“\n”;
i++;
}
while(i <= 3);
system(“pause”);
} 
Comando simulando comando
18
#include <iostream>
using namespace std;
int main()
{
int valor;
do {
cout <<“\nValor: “;
cin >> valor;
if(valor <= 0)
break;
cout << valor*valor <<“\n”;
}
while(valor > 0);
system(“pause”);
} 
Quando usar cada um?
PARA
Número de repetições conhecido
ENQUANTO
Número de repetições desconhecido
FAÇA...ENQUANTO
Número de repetições desconhecido
Executo primeiro e testo depois
19
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 8
21
1) Qual(is) a(s) desvantagem(ens) em se usar a 
estrutura while para simular a estrutura
do…while?
R: Forçar a entrada e fazer dois testes.
R: while – Início do...while - Final
2) Identifique, nas estruturas abaixo, qual testa no 
início e qual testa ao final.
a) while
b) do...while
22
R: O programa entrou em loop.
3) Foi feito um programa, cuja finalidade erasó 
permitir entrar com números de três algarismos. 
A seguinte linha enquanto(x>=100 && x<=999) foi 
colocada logo depois da entrada de dados. Sabe-
se que foi digitado o número 53.O que aconteceu?
...
leia x;
equanto(x>=1 && 
x<=100)
{
...
}
...
Algoritmos
Mairum Ceoldo 
Andrade
Aula 9
Conteúdo
• Estruturas homogêneas e heterogêneas de 
programação
• Tipo String
• Matriz unidimensional
–Conceitos de vetor
–Declaração de um vetor
– Inclusão de dados de um vetor
–Leitura de dados de um vetor
2
Estruturas de programação
real px;
real py;
3
Como representar 
o ponto p?
x
y
p
E se eu precisar representar 
vários pontos?
real px1, py1;
real px2, py2;
real px3, py3;
Não seria melhor se eu 
pudesse agrupar ou relacionar 
estes valores?
estrutura {
inteiro X;
inteiro Y;
} ponto;
ponto p1, p2, p3;
Estruturas de programação
• Como representar uma pessoa?
literal nome
inteiro idade
literal sexo
literal endereço
inteiro telefone
inteiro cpf
inteiro rg
4
estrutura {
literal nome
inteiro idade
literal sexo
literal endereço
inteiro telefone
inteiro cpf
inteiro rg
} Pessoa
Estruturas Homogêneas e 
Heterogêneas
5
estrutura {
inteiro X
inteiro Y
} ponto
estrutura {
literal nome
inteiro idade
literal sexo
literal endereço
inteiro telefone
inteiro cpf
inteiro rg
} Pessoa
Homogênea
Heterogênea
Tipo String
• Utilizado par a manipular literais.
• Estrutura homogênea de char.
6
“Este é um exemplo de uma String”
nome
M a r i a \0
0 1 2 3 4 5
Vetor de tamanho 6
Matriz
7
Matriz Unidimensional - VETOR
• Arranjo homogêneo de dados. 
• Tamanho finito definido em sua 
criação. 
• Posições numeradas de 0 a n-1.
• A variável corresponde ao primeiro 
endereço da memória ou endereço 
base. 
8
0
1
2
3
..
..
n-2
n-1
Endereço Base + Posição * Tamanho do Tipo
Matriz Unidimensional - VETOR
9
0
1
2
3
..
..
n-2
n-1
Endereço Base + Posição * Tamanho do Tipo
1200Endereço Base
1200 + 2 * 4 1208
Vetor
Declaração
Linguagem UAL Linguagem C++
tipo 
nomeDoVetor[tamanhoDoVetor];
tipo 
nomeDoVetor[tamanhoDoVetor];
10
Linguagem UAL Linguagem C++
/* Vetor para guardar 10 notas */
Int notas[10]; Int notas[10];
/* Vetor para guardar o sexo de 50 pessoas */
string sexo[50]; char sexo[50];
/* Vetor para armazenar o valor do salario de 100 funcionários */
real salario [100]; float salario[100];
/* Vetor para armazenar 1 nome com 30 caracteres */
string nome; char nome[30];
Vetor
Inclusão de Dados
Linguagem UAL
tipo nomeDoVetor[tamanhoDoVetor] = { dado1, dado2, ..., dadotamanhoDoVetor}
Linguagem C++
tipo nomeDoVetor[tamanhoDoVetor] = { dado1, dado2, ..., dadotamanhoDoVetor }
11
Linguagem UAL Linguagem C++
/* Inicializar um vetor notas de tamanho 3 com os valores 5, 8 e 10 */
Int notas[] = {5, 8, 10}; Int notas[] = {5, 8, 10};
/* Inicializar um vetor com sexo de 5 pessoas com os valores M,M,F,M,F */
string sexo[] = {‘M’, ‘M’, ‘F’, ‘M’, ‘F’ }; string sexo[] = {‘M’, ‘M’, ‘F’, ‘M’, ‘F’ };
/* Inicializar um vetor nota de tamanho 3 com os valores reais 5.3, 8.5 e 10.1 */
real vreais [3] = {5.3, 8.5, 10.1}; float vreais[3] = {5.3, 8.5, 10.1};
/* Inicializar uma variável para armazenar 1 nome o valor “Joao“ */
string nome = “Joao“; char nome[5] = “Joao”;
Vetor
Inclusão de dados
Linguagem UAL Linguagem C++
nomeDoVetor[posição] = valor; nomeDoVetor[posição] = valor;
12
Linguagem UAL Linguagem C++
/* Atribuir o valor 20 para a posição 2 do vetor notas */
notas[1] = 20; notas[2] = 20;
/* Atribuir o valor F na primeira posição do vetor */
sexo[0] = ‘F’; sexo[0] = ‘F’;
/* Atribuir o valor 12,23 na posição 3 do vetor vreais */
vreais [2] = 12.12; vreais [2] = 12.12;
/* Trocar o a por ã do vetor nome nome que possui o valor “Joao” */
nome = “João“; nome[2] = ‘ã’;
Vetor
Inclusão de dados
Linguagem UAL Linguagem C++
int vetor[8];
imprima "\nDigite 1o elemento: "; 
leia vetor[0];
imprima "\nDigite 2o elemento: "; 
leia vetor[1];
imprima "\nDigite 3o elemento: "; 
leia vetor[2];
imprima "\nDigite 4o elemento: "; 
leia vetor[3];
imprima "\nDigite 5o elemento: "; 
leia vetor[4];
imprima "\nDigite 6o elemento: "; 
leia vetor[5];
imprima "\nDigite 7o elemento: "; 
leia vetor[6];
imprima "\nDigite 8o elemento: "; 
leia vetor[7];
Int vetor[8]
cout<<"\nDigite 1o elemento: "; 
cin>>vetor[0];
cout<<"\nDigite 2o elemento: "; 
cin>>vetor[1];
cout<<"\nDigite 3o elemento: "; 
cin>>vetor[2];
cout<<"\nDigite 4o elemento: "; 
cin>>vetor[3];
cout<<"\nDigite 5o elemento: "; 
cin>>vetor[4];
cout<<"\nDigite 6o elemento: "; 
cin>>vetor[5];
cout<<"\nDigite 7o elemento: "; 
cin>>vetor[6];
cout<<"\nDigite 8o elemento: "; 
cin>>vetor[7]; 13
Linguagem UAL Linguagem C++
para (n<-0; n<7;n++)
{
imprima "\nDigite “, n+1, “o 
elemento: ";
leia vetor[n];
}
for(int n = 0; n<7; n++)
{
cout<<"\nDigite “ <<n+1 <<”o 
elemento: ";
cin>>vetor[n];
}
Vetor
Leitura de dados
Linguagem UAL Linguagem C++
/* IMPRESSÃO COMO COLUNA */
imprima “\nTítulo\n”;
para (n<-0; n<tamanho;n++)
{
imprima “\n”, nomeDoVetor[n];
}
cout << “\nTítulo\n”;
for(int n = 0; n<tamanho; n++)
{
cout<<”\n...”<<nomeDoVetor[n];
}
/* IMPRESSÃO COMO LINHA */
imprima “\nTítulo\n”;
para (n<-0; n<tamanho;n++)
{
imprima nomeDoVetor[n], “\t: “;
}
cout << “\nTítulo\n”;
for(int n = 0; n<tamanho; n++)
{
cout<<nomeDoVetor[n] << “\t: “;
}
14
Endereços e valores de um vetor
15
#include <iostream>
using namespace std;
int main()
{
int idades[10];
idades[0] = 22;
cout << “\nEndereço do vetor - ” << idades;
cout << “\nEndereço do primeiro elemento - ” << &idades[0];
cout << “\nConteúdo do primeiro elemento - ” << idades[0];
}
C++ → & retorna endereço
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 9
17
Problema
Construa um programa que leia e armazene 5 
produtos e seus valores de compra e venda. 
Imprimir todos os dados em tela.
Resolução
18
Algoritmos
Mairum Ceoldo 
Andrade
Aula 10
Conteúdo
• Matriz bidimensional
– Conceito de matriz
– Declaração de uma matriz
– Inclusão de dados em uma matriz
– Leitura de dados de uma matriz
2
Matriz
Quero fazer um programa para controlar a notas 
dos alunos, preciso registrar quatro notas diferentes 
mais a frequência, tenho ao todo 60 alunos!
3
Vetor Notas 1
A1 A2 A3 A4 ..... A59 A60
Vetor Notas 2
A1 A2 A3 A4 ..... A59 A60
Vetor Notas 3
A1 A2 A3 A4 ..... A59 A60
Vetor Notas 4
A1 A2 A3 A4 ..... A59 A60
Vetor Faltas
A1 A2 A3 A4 ..... A59 A60
• 5 vetores? 
• Será que é a melhor opção?
• Como faríamos em papel?
4
Aluno1 Aluno2 Aulno3 Aluno4 Aluno60
Nota 1 V1 V2 V3 V4 ..... V60
Nota 2 V1 V2 V3 V4 ..... V60
Nota 3 V1 V2 V3 V4 ..... V60
Nota 4 V1 V2 V3 V4 ..... V60
Faltas V1 V2 V3 V4 ..... V60
Matriz
Matriz Declaração
5
Exemplos de uso
/* declara uma matriz para guardar 3 informações diferente de 300 paciente */
float pacientes[300] [3];
/* declara uma matriz de 4 notas para 100 alunos */
float notas[100] [4];
/* Declara uma matriz para guardar 1000 nomes de até 30 caracteres */
char nome[1000] [31];
Linguagem C++
tipo nomeDaMatriz[tamanahoD1] [tamanahoD2] ;
A
lu
n
o
1
A
lu
n
o
2
A
lu
n
o
3
A
lu
n
o
4
A
lu
n
o
5
A
lu
n
o
6
A
lu
n
o
7
A
lu
n
o
8
Nota 1
Nota 2
Nota 3
Nota 4
6
Aluno1 Aluno2 Aulno3 Aluno4 Aluno60
Nota 1 V1 V2 V3 V4 ..... V60
Nota 2 V1 V2 V3 V4 ..... V60
Nota 3 V1 V2 V3 V4 ..... V60
Nota 4 V1 V2 V3 V4 ..... V60
Faltas V1 V2 V3 V4 ..... V60
float notas[4] [8];
float notas[8] [4];
Qual correto?
Matriz
Matriz
Representação em Memória
7
Endereço-base + num_colunas_matriz * deslocamento_linha * tamanho_tipo
+
deslocamento_coluna * tamanho_tipo
Endereço Base: 1200
Posição mat[1][1]
1200 + 2*1*4 + 1*4 = 1212
Matriz Inicialização
8
Linguagem C++
/* Inicializa um matriz de 3 linhas e 4 colunas */
int matrx [3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
/* Inicializa uma matriz com 3 nomes de até 10 caracteres */
charstr_vect [3][11] = {"Joao", "Maria", "Jose"};
/* Inicializa uma matriz de 5 linhas e 2 colunas */
int matrx [][2] = {1,2,2,4,3,6,4,8,5,10};
Linguagem C++
tipo nomeDaMatriz[tamanahoD1] [tamanahoD2] = { dado1, dado2, ..., dadotamanhoD1xD2};
Matriz Inclusão de dados
9
Linguagem C++
/* atribuir o valor 13 à primeira posição da primeira linha */
matrx [0][0] = 13;
/* Atribuir o caracter ‘P’ a primeira posição da linha terceira linha */
char str_vect [2][0] = ‘P’;
/* Atribuir o valor 11 a segunda coluna da segunda linha */
int matrx [1][1] = 11;
Linguagem C++
tipo nomeDaMatriz[posiçãoLinha] [posiçãoColuna] = ValorDesejado;
Matriz Inclusão de dados
10
Linguagem C++
for(int L = 0; L<tamanhoLinha; L++) {
cout<<"\nLinha número “ <<L+1 <<”: ";
cin.getline(nomeMatriz[L], tamanhoDeclardoNaColuna);
}
Linguagem C++
for(int L = 0; L<tamanhoLinha; L++) {
for(int C = 0; C<tamanhoColuna; C++) {
cout<<"\nLinha “ <<L+1 <<” coluna "<<C+1<<”:;
cin>>nomeMatriz[L] [C];
}
}
Matriz genérica
Matriz char
Matriz Leitura de dados
11
Linguagem C++
/* IMPRESSÃO COMO COLUNA */
cout << “\nTítulo\n”;
for(int L = 0; L<tamanhoLinha; L++) {
for(int C = 0; C<tamanhoColuna; C++) {
cout<< nomeMatriz[L] [C];
}
cout<<”\n”;
}
/* IMPRESSÃO COMO LINHA */
cout << “\nTítulo\n”;
for(int L = 0; L<tamanhoLinha; L++) {
cout<< nomeMatrizChar[L] <<”\n”;
}
Cinco produtos e seus 
valores de compra e venda
12
C++
Algoritmos
Mairum Ceoldo 
Andrade
Atividade 10
14
2) Se for uma matriz tridimensional, 
terá três pares de colchetes? 
1) Só existem matrizes Unidimensionais e 
Bidimensionais?
R: Não
R: Sim
15
3) Na entrada e na saída, a matriz Bidimensional de 
char é tratada como Unidimensional já que 
usamos uma par de colchetes. Quando faremos 
uso dos dois pares de colchetes? 
16
R: Quando precisarmos buscar um único carácter. 
Exemplos:
1) Converter para maiúscula uma letra minúscula ou 
vice-versa; 
2) Contar vogais de uma frase;
3) Criptografar uma mensagem;
4) Inverter a frase para saber se é palíndromo. 
	Aula_01
	Aula_02
	Aula_03
	Aula_04
	Aula_05
	Aula_06
	Aula_07
	Aula_08
	Aula_09
	Aula_10

Continue navegando