Você está na página 1de 100

Professor Halysson

Curso de Engenharia Civil


2014 / 1º Termo
Informática I
Introdução a Lógica de
Programação
Profº Halysson
halysson@unimar.br

- 1
Ementa:
• Conceito de Lógica. Lógica Aplicada a Programação
• Tipos de Algoritmos
• Conceitos de variáveis e constantes
• Tipos primitivos de dados
• Operadores: aritméticos, relacionais e lógicos
• Estruturas de Seleção
• Estrutura de Controle e Repetição

Objetivos:
• Preparar o aluno para o desenvolvimento de soluções computacionais
eficientes. Capacitar o aluno ao desenvolvimento de algoritmos capazes
de resolver problemas simples.

Metodologia:
• Utilização do quadro negro, retroprojetor e aulas práticas em 2
laboratórios.
Conteúdo Programático

• Lógica – Seqüência de Lógica, Instruções


• Algoritmo – Definição, Entrada, Processamento e Saída
• Representação de Algoritmos – Língua, Gráficos e Pseudo-código
• Regras para a apresentação dos Algoritmos
• Linguagem de Programação e Técnicas de Programação
• Tipos Primitivos – Inteiro, Real, Caractere e Lógico
• Constantes, Variáveis e Identificadores
• Operadores – aritméticos, relacionais, lógicos e de atribuição
• Estrutura de seleção – seleção simples, composta e encadeada (SE)
• Estrutura de seleção – múltipla escolha (CASO)
• Estrutura de Controle e Repetição:
• Com Variável de Controle
3
• Com Teste no Início
• Com Teste no Final
Referencias Bibliográficas

• FORBELLONE, A. L. V. & EBERSPÄCHER, H. F. Lógica de


programação - a construção de algoritmos e estruturas de dados.
São Paulo, Makron Books, 2a Ed., 2000.

• MORAES, P. S. Lógica de programação, Centro de Computação -


DSC, Unicamp, Campinas, São Paulo, 2000.

• MANZANO, J. A. N. G. & OLIVEIRA, J. F. Algoritmos: lógica para


desenvolvimento de programação. São Paulo: Érica, 8a Ed., 2000.

• SALVETTI, D.D. & BARBOSA L.M. Algoritmos. Makron Books, São
Paulo, 1998. SMULLYAN, R. Alice no País dos Enigmas, Jorge Zahar 4
Editor, Rio de Janeiro, 2000
Avaliação

• Provinha 4,0 (Teórica)

• Prova Regimental 6,0 (Teórica)

• Faltas – Considerar participação do aluno

• Email do aluno nos terminais

• Limite de falta: 10

• ead.unimar.br – Material de Apoio

5
Informática I
Introdução a Lógica de
Programação
Profº Halysson
halysson@unimar.br

- 6
Lógica

• As pessoas utilizam lógica no cotidiano sem perceber;


• Chegam mesmo a citá-la, sem entender direito o seu significado;
• Lógica: É a “coerência de raciocínio, de idéias”, ou ainda a
“seqüência coerente, regular e necessária de acontecimentos, de
coisas”
Exemplo:
• O número 3 é menor que o número 5.
• O número 7 é maior que o número 5.
• Logo, o número 3 é menor que os números 5 e 7.

• Quando chove, não é preciso regar as plantas no jardim.


7
• Hoje choveu.
• Logo, hoje não é preciso regar as plantas do jardim.
Lógica

• É necessária para as pessoas que desejam trabalhar com


desenvolvimento de sistemas e programas
• Pois ela permite definir a seqüência lógica para o
desenvolvimento desses sistemas
• Ela é a técnica de encadear pensamentos para atingir
determinado objetivo
• Estes pensamentos podem ser descritos como uma
seqüência de instruções, que devem ser seguidas para
cumprir uma determinada tarefa

• Seqüência Lógica: são passos executados até atingir um 8


objetivo ou solução de um problema
Instruções
• Na linguagem comum: entende-se por instruções "um
conjunto de regras ou normas definidas ou normas para a
realização ou emprego de algo“
• Em computação: a instrução é a informação que indica a um
computador uma ação elementar a executar
• Uma ordem isolada não permite realizar o processo completo,
para isso é necessário um conjunto de instruções colocadas
em ordem seqüencial lógica

• Exemplo: se quisermos fazer uma omelete de batatas,


precisaremos colocar em prática uma série de instruções:
descascar batatas, bater ovos, fritar as batatas, etc.
• Seqüência lógica: não se pode descascar as batatas depois de 9
fritá-las
Algoritmo - Definição

• Um algoritmo é uma seqüência finita de instruções ou


operações básicas (operações definidas sem
ambigüidade e executáveis em tempo finito) cuja
execução, em tempo finito, resolve um problema.

• Algoritmo é um caminho para a solução de um problema,


e em geral, os caminhos que levam a uma solução são
muitos.

• O aprendizado de algoritmos: através de muitos


exercícios
10
Características - Algoritmo

• Ter início e fim

• Ser escrito em termos de ações ou comandos bem


definidos

• Deve ser fácil de interpretar e codificar

• Deve ser o intermediário entre a linguagem falada e a


linguagem de programação

• Ter uma seqüência lógica


11
Exemplo – Algoritmo – Fazer uma Ligação

Início
1. Tirar o fone do gancho;
2. Esperar até ouvir o sinal de linha;
3. Teclar o número desejado;
4. Se der o sinal de chamar:
4.1. Conversar;
4.2. Desligar;
5. Se não der o sinal de chamar:
5.1. Desligar;
5.2. Repetir desde o passo 1
Fim. 12
Exemplo – Algoritmo – Trocar Lâmpada

Início
1. Pegar uma escada;
2. Posicionar a escada debaixo da lâmpada;
3. Pegar uma lâmpada nova;
4. Subir na escada;
5. Retirar a lâmpada velha;
6. Colocar a lâmpada nova;
7. Descer na escada;
8. Acionar o interruptor;
9. Se a lâmpada não acender:
13
9.1. Repetir desde o passo 3;
Fim.
Três fases fundamentais do Algoritmo

Dividir o problema em:


Entrada, Processamento e Saída

• Entrada: são os dados necessários para resolução do


problema proposto. Nem sempre é preciso solicitar
informações para resolver um problema

• Processamento: são os procedimentos utilizados para


chegar ao resultado final

• Saída: são os dados processados apresentando o


14
resultado para o problema proposto
Exemplo – Algoritmo

• Considere o seguinte problema: São fornecidas as notas


do 1º e 2º bimestre de um aluno, calcule a média final do
semestre de uma determinada disciplina.
• Mostre a média calculada e se o aluno foi aprovado ou
reprovado.
• Média = (P1 + P2) / 2
• O aluno é aprovado quando a média é maior ou igual 7.0,
caso contrário é reprovado.

15
Exemplo – Algoritmo

Para montar o algoritmo proposto, deve-se questionar:

Quais são os dados de entrada?


R: As notas do 1º e 2º bimestre: P1 e P2

Qual será o processamento a ser utilizado?


R: Efetuar o cálculo (P1 + P2)/2 e comparar a 7.0

Quais são os dados de saída?


R: A média calculada e o resultado “aprovado” ou
“reprovado”
16
Representação de Algoritmo

Em uma língua (português, inglês): apresenta um


inconveniente em relação a ambigüidade de alguns
termos
Em Gráficos:
• DNS - Diagramas de Nassi-Shneiderman ou Chapin
• Fluxograma
Em pseudo-código: Não apresenta os inconvenientes de
ambigüidade de uma língua, nem os rigores de uma
linguagem de programação. Esta representação é feita
através de um português estruturado com "frases”
correspondentes às estruturas básicas de programação 17
Representação de Algoritmo - DNS

18
Representação de Algoritmo - DNS

19
Representação de Algoritmo - Gráficos

Fluxograma

20
Representação de Algoritmo - Gráficos

Entrada de
Dados

Procedimento
Interno

Saída dos Dados

21
Representação de Algoritmo

Português
Estruturado

22
VisuAlg – Editor e Interpretador de Algoritmos

algoritmo

23
VisuAlg – Editor e Interpretador de Algoritmos

Novo
algoritmo

Executar o
algoritmo 24
Exemplo de Algoritmo no VisuAlg

escreval
Mostra
mensagem
na tela

25
Exercícios de Lógica

• 1. Identifique os dados de entrada, processamento e


saída no algoritmo abaixo.

Início
1.LEIA o código da peça;
2.LEIA o valor da peça;
3.LEIA a quantidade de peças;
4.EFETUE o cálculo:
Total da Peça <-(Quantidade * Valor da peça)
5.IMPRIMA o valor total da peça
26
Fim.
Exercícios de Lógica

• 2. Faça um algoritmo para somar dois números e


multiplicar o resultado pelo primeiro número.

1.INICIO
2.LEIA 1º Numero
3.LEIA 2º Numero
4.EFETUE o Calculo: Resultado <- (1ºNumero + 2ºNumero)
* 1ºNumero
5.IMPRIMA Resultado
6.FIM
27
Exercícios de Lógica

• 3. Elabore um algoritmo que mova três discos de uma


Torre de Hanói, que consiste em três hastes (a - b - c),
uma das quais servem de suporte para três discos de
tamanhos diferentes (1 - 2 - 3), os menores sobre os
maiores. Pode-se mover um disco de cada vez para
qualquer haste, contanto que nunca seja colocado um
disco maior sobre um menor. O objetivo é transferir os
três discos para outra haste.
haste a

28
Exercícios de Lógica

1.INICIO
2. Move disco 1 para a haste c
3. Move disco 2 para a haste b
4. Move disco 1 para a haste b
5. Move disco 3 para a haste c
6. Move disco 1 para a haste a
7. Move disco 2 para a haste c
8. Move disco 1 para a haste c
9. FIM
29
Exercícios de Lógica

• 4. Três jesuítas e três canibais precisam atravessar um


rio; para tal dispõem de um barco com capacidade para
duas pessoas. Por medidas de segurança, não se deve
permitir que em alguma margem a quantidade de
jesuítas seja inferior à de canibais. Qual a solução para
efetuar a travessia com segurança? Elabore um algoritmo
mostrando a resposta, indicando as ações que
concretizam a solução deste problema.

30
Exercícios de Lógica
• 1. INICIO
• 2. Atravessar um jesuíta e um canibal para a margem B
• 3. Voltar o jesuíta para a margem A
• 4. Atravessar dois canibais para a margem B
• 5. Voltar um canibal para a margem A
• 6. Atravessar dois jesuítas para a margem B
• 7. Voltar um jesuíta e um canibal para a margem A
• 8. Atravessar dois jesuítas para a margem B
• 9. Voltar um canibal para a margem A
• 10. Atravessar dois canibais para a margem B
• 11. Voltar um canibal para a margem A
• 12. Atravessar dois canibais para a margem B 31

• 13. FIM
Linguagem de Programação

• Programas: são seqüências de instruções que descrevem


as tarefas a serem realizadas para alcançar a solução de
um determinado problema, e devem ser escritos em uma
linguagem de programação para que possam ser
executados em um computador.

• Portanto, um programa é um algoritmo construído


segundo as regras de uma linguagem de programação.

32
Linguagem de Programação

• Técnicas de Programação: Na elaboração de programas é


necessário utilizar um método sistemático de
programação que permita a obtenção de programas
confiáveis, flexíveis e eficientes.

• Quando existe um problema e utiliza-se um computador


para resolvê-lo inevitavelmente tem-se que passar pelas
seguintes etapas:
• Análise do problema
• Projeto do programa - algoritmo e estruturas de dados
• Implementação (codificação) e teste do programa
33
Linguagem de Programação

Análise do problema:
• Deve-se estudar minuciosamente o problema,
eliminando possíveis ambigüidades e assegurando o
completo entendimento das especificações de entrada e
saída.

34
Linguagem de Programação

Projeto do programa - algoritmo e estruturas de dados:


• Constitui-se no desenvolvimento e descrição do
algoritmo.
• Identifica-se partes ou etapas na estratégia de resolução
do problema, elaborando inicialmente um esboço da
resolução.
• Em seguida, detalha-se cada etapa, refinando o processo
de resolução, até chegar a uma seqüência de operações
básicas sobre os tipos de dados considerados.

35
Linguagem de Programação

Implementação (codificação) e teste do programa


• A implementação de um algoritmo em uma linguagem de
programação pode ser uma tarefa simples ou trabalhosa,
dependendo principalmente das características da
linguagem escolhida e dos tipos de dados nela definidos.
• O teste de um programa tem por finalidade demonstrar
que o algoritmo realmente resolve o problema proposto.

36
Tipos Primitivos

• A informação é a matéria-prima que faz com que seja


necessária a existência dos computadores, pois eles são
capazes de manipular e armazenar grande volume de
dados.
• A ciência que estuda a informação é a Informática.
• Aproximando-nos da maneira pela qual o computador
manipula as informações, vamos dividi-las em quatro
tipos primitivos:
• Inteiro
• Real
• Caractere
37
• Lógico
Tipos Primitivos

• Inteiro: toda e qualquer informação numérica que


pertença ao conjunto dos números inteiros relativos, sem
casa decimal.
Exemplos: Ele tem 18 anos.
A temperatura desta noite foi de -2 graus.

• Real: toda e qualquer informação numérica que pertença ao


conjunto dos números reais (aceita casas decimais). O
separador de casas decimais é o ponto (.) e não a vírgula (,).
Exemplos: Sua nota é 6.5.
O preço deste sapato foi R$ 45.99.
38
Tipos Primitivos

• Caractere: toda e qualquer informação composta por um


conjunto de caracteres alfanuméricos (letras e dígitos)
e/ou por símbolos especiais.
Exemplos: O cartaz dizia: “Não Fume”.
A placa daquele automóvel é “BHA 3456”.

• Lógico: toda e qualquer informação que pode apenas


assumir duas situações: verdadeiro ou falso.
(observação: não se utiliza acento em linguagens de programação).
Exemplos: A porta esta fechada.
A lâmpada esta acesa.
39
Constantes – Variáveis - Identificadores

• Constantes: Uma informação é dita constante quando ela


não sofre nenhuma variação no decorrer do tempo. Seu
valor não muda durante a execução do algoritmo.

• Variáveis: Uma informação é dita variável quando tem


possibilidade de ser alterada em algum instante no
decorrer do tempo. Ou seja, pode assumir valores
diferentes durante a execução do algoritmo.

• Identificadores: É através dos identificadores que


referenciamos (nomeamos) uma variável, constante e 40
outros nomes utilizados no programa.
Regra Básica para criar Identificadores

• O 1º caractere obrigatoriamente deve ser uma letra


• Os demais podem ser qualquer combinação de letras e
dígitos
• Não podem ser utilizados símbolos especiais ( * - + [ } & $
% @ ...)
• O único símbolo permitido é o underline ( _ )
• São permitidos 30 caracteres, mas para algumas
Linguagens o compilador reconhece apenas 8 caracteres

• Exemplos: X1 , X2, NOME_FUNC, SOMA_1, tx_juros


41
Declaração de Variáveis
• Nos computadores as variáveis são armazenadas em
dispositivos eletrônicos chamados de memória.
• A diferenciação das várias variáveis é feita através dos
identificadores.
• Portanto, precisamos definir nomes para especificar
esses objetos que podem ser manipulados. Para
declararmos uma variável devemos indicar, além de seu
identificador (nome), o tipo da informação que ela
armazenará.
• Exemplos: a, b, c : inteiro
x1, x2 : real
flag : logico 42
rua, cep, nome_do_aluno : caractere
Operador de atribuição
• é utilizado para atribuir uma expressão ou valor à uma
variável. Será utilizado o símbolo .

Exemplos: a 10
b 2 * a + (a / 4)
a a+1

43
Exemplo Prático

algoritmo "semnome" Termo <- 1


// Função : Turma <- "A"
// Autor : Mensalidade <- 900.55
escreva ou
// Data : 25/02/2014 escreval(NomeAluno) escreval
// Seção de Declarações escreval(Curso)
var escreva ("Termo = ",Termo)
NomeAluno, Curso, Turma : Caracter escreval(" Turma = ",Turma)
Termo : Inteiro escreval("Mensalidade=",Mensalidade)
Mensalidade : Real fimalgoritmo
inicio
// Seção de Comandos
NomeAluno <- "Joao da Silva" 44
Curso <- "Engenharia Civil"
Exemplo Prático - escreva e leia
algoritmo "Pegar Dados" leia(Termo)
// Função : Pegar Dados escreva("Digite a Turma do Aluno:")
// Autor : leia(Turma)
// Data : 25/02/2014 escreva("Digite a Mensalidade do Aluno:")
// Seção de Declarações leia(Mensalidade)
var
NomeAluno, Curso, Turma : Caracter escreval("O Nome Digitado=",NomeAluno)
Termo : Inteiro escreval("O Curso Digitado=",Curso)
Mensalidade : Real escreval("O Termo Digitado=",Termo+1)
inicio escreval("A Turma Digitada=",Turma)
// Seção de Comandos escreval("A Mensalidade é =",Mensalidade)
escreva("Digite o Nome do Aluno:") fimalgoritmo
leia(NomeAluno)
escreva("Digite o Curso do Aluno:")
45
leia(Curso)
escreva("Digite o Termo do Aluno:")
Operadores aritméticos

Operadores aritméticos tradicionais de adição,


+ - * / subtração, multiplicação e divisão.
Exemplo: 4 + 5 = 9; 9 / 2 = 4.5
\ Operador de divisão inteira. Exemplo: 9 \ 2 = 4.
% Operador de módulo (isto é, resto da divisão inteira).
Exemplo: 8 % 3 = 2.
^ Operador de potenciação. Exemplo: 3 ^ 2 = 9
• A prioridade dos operadores aritméticos é: primeiro (^), depois (*, /,
\ e %) e por último (+ e -), exceto quando do uso de parênteses, os
quais têm precedência. Na ocorrência de operadores de mesma
prioridade na mesma expressão matemática, devemos resolver da
esquerda para a direita.
• Exemplo: 10 * 5 + 4 / 2 (resulta em 52) 46
Operador + Concatenar
10 * (5 + 4) / 2 (resulta em 45) nome <- "Paulo" + " Silva"
Exemplo Prático

algoritmo "Media"
// Função : Entrar com Ra, N1, N2, escreva("Digite a Nota 2.:")
// Calcular a Media e Mostra leia(N2)
// Autor : H.G.M
// Data : 25/01/2014 //Calcula a Media - Processamento
// Seção de Declarações Media <- (N1 + N2) / 2
var //Saida de Dados
Ra : Inteiro escreval("A Media do Aluno é ra ", Ra,
N1, N2, Media : Real " = ", Media)
inicio fimalgoritmo
//Entrada de Dados
escreva("Digite o Ra.....: ")
leia(Ra)
47
escreva("Digite a Nota 1.:")
leia(N1)
Exercícios - Práticos
1. Faça um algoritmo que receba dois números e exiba o
resultado da sua soma.

2. Faça um algoritmo que receba dois valores para as


variáveis A e B, e efetue as trocas dos valores de forma que
a variável A passe a possuir o valor da variável B e a
variável B passe a possuir o valor da variável A. Apresenta
os valores trocados na tela.

3. Ler uma temperatura em graus Celsius e apresentá-la


convertida em graus Fahrenheit. A fórmula de conversão é:
F=(9*C+160) / 5, sendo F a temperatura em Fahrenheit e C
a temperatura em Celsius. 48
Exercício 1

algoritmo “SomaDoisNumeros"
// Função : Faça um algoritmo que receba dois números e exiba o resultado
da sua soma.
var
NUM1,NUM2 : Inteiro
Inicio
escreva("Digite o Primeiro Número: ")
leia(NUM1)
escreva("Digite o Segundo Número: ")
leia(NUM2)
escreva("A soma dos dois número é ", NUM1 + NUM2)
fimalgoritmo 49
Exercício 2
algoritmo "TrocaValorAB"
// Função : Trocar valor de A e B
var
A,B,AUX : Inteiro
Inicio
escreva("Digite o Valor de A: ")
leia(A)
escreva("Digite o Valor de B: ")
leia(B)
escreval("Os valor digitado de A foi",A," e o valor de B foi",B)
AUX <- A
A <- B
B <- AUX
escreval("Os valores trocados ficou: de A =",A," e de B =",B) 50
fimalgoritmo
Exercício 3
algoritmo "ConverteTemperatura“
// Função : Converte a temperatura de Graus Celsius para
Fahrenheit
var
Graus_C, Graus_F : Real
inicio
escreva("Digite a temperatura em graus Celsius : ")
leia(Graus_C)
Graus_F <- (9 * Graus_C + 160) / 5
escreval("Temperatura em graus Celsius:",Graus_C)
escreval("Temperatura em graus Fahrenheit:",Graus_F) 51
fimalgoritmo
Operadores relacionais
• são utilizados para realizar comparações entre dois
valores.
• São eles: = > < <= >= <> (respectivamente: igual,
maior que, menor que, menor ou igual a, maior ou igual
a e diferente).
• Sempre retornam VERDADEIRO ou FALSO.

Exemplos: ( a >= 10 )
( c <> d )
5 >=3 (resulta em VERDADEIRO)
52
Operadores lógicos
• são utilizados para combinar relações.
• São eles: e ou não xou.
• Também retornam VERDADEIRO ou FALSO.
Exemplos: ( (a > b) e (c > d) )
( (s = 10) ou (x = -15))
nao(Media >= 7)
Operador unário de negação. nao VERDADEIRO = FALSO, e nao FALSO =
nao VERDADEIRO. Tem a maior precedência entre os operadores lógicos.
Equivale ao NOT do Pascal.
Operador que resulta VERDADEIRO quando um dos seus operandos lógicos
ou
for verdadeiro. Equivale ao OR do Pascal.
Operador que resulta VERDADEIRO somente se seus dois operandos lógicos
e
forem verdadeiros. Equivale ao AND do Pascal.
Operador que resulta VERDADEIRO se seus dois operandos lógicos forem 53
xou diferentes, e FALSO se forem iguais. Equivale ao XOR do Pascal. Ex.
se (2<3) xou (3>5) entao ... fimse
Estrutura de Seleção (Comando Se)
• Na lógica de programação sempre existe a necessidade
de somente executar um bloco de comandos após a
avaliação de uma determinada condição.
• Em nossa linguagem algorítmica utilizamos o comando
Se... entao. A sintaxe deste comando é descrita a seguir:

Exemplos:
se <condição > entao
comando 1
comando 2 // seqüência de comandos
comando n 54
fimse
Estrutura de Seleção Composta
• Quando tivermos situações em que duas alternativas
dependem de uma mesma condição, uma da condição
ser verdadeira e outra da condição ser falsa
• A seleção composta de um bloco de comandos é
realizada através do comando se... entao ... Senao.
• A sintaxe deste comando é descrita a seguir:
Exemplos: se <condição > entao
comando 1
comando n
senao
comando 1
comando n 55
fimse
Exemplo Prático
leia(N2)
algoritmo "Media" //Calcula a Media - Processamento
// Função : Media <- (N1 + N2) / 2
// Autor : //Saida de Dados
// Data : escreval("A Media = ", Media)
// Seção de Declarações se Media >= 7 entao
var escreva("Aprovado")
Ra : Inteiro senao
N1, N2, Media : Real escreva("Reprovado")
inicio fimse
//Entrada de Dados fimalgoritmo
escreva("Digite o Ra.....: ")
leia(Ra)
escreva("Digite a Nota 1.:")
56
leia(N1)
escreva("Digite a Nota 2.:")
Exemplo Prático - Seleção Encadeada
leia(N2)
algoritmo "Media" //Calcula a Media - Processamento
// Função : Media <- (N1 + N2) / 2
// Autor : //Saida de Dados
// Data : escreval("A Media = ", Media)
// Seção de Declarações se Media >= 7 entao
var escreval("Aprovado")
Ra : Inteiro senao
N1, N2, Media : Real se (Media >= 4) e (Media < 7) entao
inicio escreval("Exame")
//Entrada de Dados senao
escreva("Digite o Ra.....: ") escreval("Reprovado")
leia(Ra) fimse
escreva("Digite a Nota 1.:") fimse
57
leia(N1) fimalgoritmo
escreva("Digite a Nota 2.:")
Exercícios - Práticos
1. Faça um algoritmo que receba um número e mostre uma
mensagem caso este número seja maior que 10.

2. Faça um algoritmo que receba um número e diga se este


número está no intervalo entre 100 e 200.

3. Escrever um algoritmo que leia dois valores inteiro


distintos e informe qual é o maior.

58
Exercício 1
algoritmo “MaiorQue10“
var numero: inteiro
Inicio
escreva("Digite um número: ")
leia(numero)
se numero > 10 entao
escreval("O número é maior que 10")
fimse
fimalgoritmo

59
Exercício 2
algoritmo “EstaEntre100e200“
var numero: inteiro
Inicio
escreva("Digite um número: ")
leia(numero)
se (numero >= 100) e (numero <= 200) entao
escreval("O número está no intervalo entre 100 e 200")
senao
escreval("O número não está no intervalo entre 100 e 200")
fimse
fimalgoritmo 60
Exercício 3
algoritmo “Maior2Num“
var num1, num2: inteiro
Inicio
escreva("Digite o primeiro número: ")
leia(num1)
escreva("Digite o segundo número: ")
leia(num2)
se num1 > num2 entao
escreva("O 1º número ",num1," é maior que o 2º ",num2)
senao
escreva("O 2º número",num2," é maior que o 1º ",num1)
fimse 61
fimalgoritmo
Estrutura de Seleção (Múltipla Escolha)
• Quando um conjunto de valores discretos precisa ser
testado e ações diferentes são associadas a esses valores,
estamos diante de uma seleção encadeada homogênea
do tipo se – entao – se.
• Como esta situação é bastante freqüente na construção
de algoritmos que dependem de alternativas,
utilizaremos uma estrutura específica para estes casos
que é a seleção de múltipla escolha.
Exemplo: escolha <expressão_de_seleção>
caso V1
...

caso V2
...
62

fimescolha
Estrutura de Seleção (Múltipla Escolha)
• A sintaxe utilizada para esta estrutura é a seguinte:
escolha <expressão_de_seleção>
caso V1
Comando1
caso V2
Comando2
caso V3
Comando3
caso V4
Comando4
outrocaso
Comando5
fimescolha 63
Estrutura de Seleção (Múltipla Escolha)
Algoritmo "Menu"
var op : inteiro caso 2
Inicio escreval("Opção 2 - Cadastrar Filme")
caso 3
escreval("******** M E N U ********")
escreval("Opção 3 - Locação")
escreval("(1) Cadastrar Cliente") caso 4
escreval("(2) Cadastrar Filme") escreval("Opção 4 - Devolução")
escreval("(3) Locação") caso 5
escreval("(4) Devolução") escreval("Opção 5 - Relatórios")
caso 0
escreval("(5) Relatórios")
escreval("Opção 6 - Sair")
escreval("(0) Sair") outrocaso
escreva("opção->") escreval("Opção Inválida!!!")
leia(op) fimescolha
escolha op
Fimalgoritmo
caso 1 64
escreval("Opção 1 - Cadastrar Cliente")
Exercícios - Práticos
1. Elabore um algoritmo que leia a idade de um nadador e
imprima a categoria que ele pertence:
idade < 8 anos - Infantil A
idade >=8 e < 13 - Infantil B
idade >=13 e < 18 - Juvenil A
idade >=18 e < 21 - Juvenil B
2. Elabore um algoritmo que leia os lados de um triângulo
( a, b, c), verifique se as medidas permitem formar um
triângulo ( a < b + c, b < a + c e c < a + b). Se for
triângulo, determinar se é equilátero, isósceles ou
escaleno.
Triângulo Equilátero: os três lados são iguais;
65
Triângulo Isóscele: dois lados são iguais;
Triângulo Escaleno: três lados diferentes.
Exercício 1
algoritmo "IdadeNadador" caso 13,14,15,16,17
var escreval("Juvenil A")
idade:inteiro caso 18,19,20,21
inicio escreval("Juvenil B")
escreva("Digite a idade do outrocaso
nadador:") escreval("Nada consta")
leia(idade) fimescolha
escolha idade fimalgoritmo
caso 0,1,2,3,4,5,6,7
escreval("Infantil A")
caso 8 ate 12 66
escreval("Infantil B")
Exercício 2
algoritmo "Triangulo" escreval("É um triângulo escaleno")
var fimse
a, b, c: inteiro fimse
inicio senao
escreva("Digite o lado A do triângulo: ") escreva("Medidas para o triângulo
leia(a) inválido!!")
escreva("Digite o lado B do triângulo: ") fimse
leia(b) fimalgoritmo
escreva("Digite o lado C do triângulo: ")
leia(c)
se (a < (b+c)) e (b < (a+c)) e (c < (a+b)) entao
se (a = b) e (b = c) entao
escreval("É um triângulo equilátero!")
senao
se (a = b) ou (a = c) ou (b = c) entao
67
escreval("É um triângulo isósceles")
senao
Estruturas de Repetição

• A repetição de um bloco de comandos (“loop”) é uma


prática muito frequente em programação. A estrutura de
repetição permite que uma sequência de comandos seja
executada repetidamente até que uma determinada
condição de interrupção seja satisfeita.

2
Repetição com Teste no Início

• Para realizar a repetição com teste no início, utilizamos a


estrutura enquanto, que permite que um bloco ou uma
ação seja repetida enquanto uma condição determinada
<condição> for verdadeira [Forbelone2005].
• A sintaxe desta estrutura é a seguinte:
enquanto <condição> faca
bloco de comandos
fimenquanto
• A interpretação deve ser: enquanto <condição> for
verdadeira executa-se o bloco de comandos. Quando a
<condição> for falsa encerra-se o laço de repetição.
3
Exemplo - Prático
1. Algoritmo para somar os números de 1 a 100, utilizando
a estrutura enquanto:
algoritmo "soma0_100"
var
i, s: inteiro
Inicio
s <- 0
i <- 1
enquanto (i<=100) faca
s <- s + i
i <- i + 1
fimenquanto
4
escreva ("A soma = ", s)
fimalgoritmo
Exercícios - Práticos
1. Escreva um algoritmo que leia um conjunto de 20
números inteiros e mostre qual foi o maior e o menor
valor fornecido.
2. Escreva um algoritmo que leia um conjunto de 10
números inteiros e mostre a quantidade de números
pares e ímpares que foram informados.

5
Exercícios 1
algoritmo "20numMaiorMenor" se (Num > Maior) entao
var Maior <- Num
Num, i, Maior, Menor: inteiro fimse
Inicio i <- i + 1
i <- 1 fimenquanto
enquanto (i<=20) faca escreval("O Menor é o ", Menor)
escreva("Digite um número: ") escreval("O Maior é o ", Maior)
leia(Num) fimalgoritmo
se (i = 1) entao
Menor <- Num
senao
se (Num < Menor) entao
Menor <- Num 6
fimse
fimse
Exercício 2
algoritmo "10numParImpar" escreval("Qtde de Par: ", Par)
var escreval("Qtde de Impar ", Impar)
Num, i, Par, Impar: inteiro fimalgoritmo
Inicio
Par <- 0
Impar <- 0
i <- 1
enquanto (i<=10) faca
escreva("Digite um número: ")
leia(Num)
se (Num % 2 = 0) entao
Par <- Par + 1
senao
Impar <- Impar + 1
fimse
7
i <- i + 1
fimenquanto
Exemplo Validação - Prático
algoritmo "validasexo"
var
Sexo : caracter
inicio
enquanto (Sexo <> "M") e (Sexo <> "F") faca
limpatela
escreva("Digite o Sexo (M ou F): ")
leia(Sexo)
fimenquanto
escolha Sexo
Caso "M"
escreval("Sexo: Masculino")
Caso "F"
escreval("Sexo: Feminino") 8
fimescolha
fimalgoritmo
Estruturas de Repetição
Repetição com Teste no Final

• Para realizar a repetição com teste no final, utilizamos a


estrutura repita, que permite que um bloco ou uma ação
seja repetido até que uma determinada condição seja
verdadeira [Forbelone2005]. A sintaxe desta estrutura é a
seguinte:
repita
bloco de comandos
ate ( <condição> )

Deve ser interpretado da seguinte forma: Repita o bloco de comandos até que
a <condição> seja verdadeira

10
Exemplo Prático

• Algoritmo para somar os números de 1 a 100, utilizando


a estrutura repita.

algoritmo "Ex1"
var i, s: inteiro
inicio
s<-0
i<-1
repita
s <- s + i
i <- i + 1
ate (i > 100)
escreva("A soma é =", s) 11
fimalgoritmo
Estruturas de Repetição
Repetição com Variável de Controle

• Para realizar a repetição com variável de controle,


utilizamos a estrutura para, que repete a execução de um
bloco ou uma ação um número definido de vezes, pois
ela possui limites fixos. A sintaxe para a estrutura de
repetição para é a seguinte:
Para <var> de <valor_inicial> ate <valor_final> [passo p] faca
bloco de comandos
fimpara

Deve ser interpretado da seguinte forma: Para <var> (variável contadora)


variando de <valor_incial> até <valor_final> (de p em p) executa-se o bloco de
comandos. Quando o passo for igual a 1, pode-se omitir a cláusula passo da
sintaxe
12
Exemplo Prático

• Algoritmo para somar os números de 1 a 100, utilizando


a estrutura de repetição para.

algoritmo "Ex1"
passo 2
var i, s: inteiro Para i de 1 ate 100 passo 2 faca
inicio
s <- 0
para i de 1 ate 100 faca
s <- s + i
fimpara
escreva("A soma é =", s)
fimalgoritmo 13
Estruturas de Repetição
Comando INTERROMPA

• As três estruturas de repetição permitem o uso do


comando interrompa, que causa uma saída imediata do
laço. Seu uso é exemplificado a seguir
algoritmo "Ex1"
var i, s: inteiro
inicio
s <- 0
para i de 1 ate 100 faca
s <- s + i
se i = 2 entao
Interrompa
fimse
fimpara 14
escreva("A soma é =", s)
fimalgoritmo
Vetor e Matriz
• Uma matriz é uma série de variáveis do mesmo tipo
referenciadas por um único identificador (nome), onde cada
variável é diferenciada através de um número chamado “índice”
que fica entre colchetes no fim do nome da variável (sem
espaços)

• Um vetor nada mais é do que uma matriz unidimensional (que


contém apenas uma dimensão)

15
Declaração de Vetor
var num: vetor[1..10] de inteiro num[6] = 7

1 3 6 1 5 7 7 9 0 2
Posições 1 2 3 4 5 6 7 8 9 10

var num: vetor[1..15] de real


1.9 2.5 3.9 3.0 1.0 1.6 8.9 1.9 2.2 2.5 2.5 3.8 3.5 4.0 10.0

var num: vetor[1..10] de caracter;


Juliana Carlos Camila Lucas Fabio Carla Marcos Fabiana José João

16
Estrutura de repetição PARA

algoritmo "Ex1"
var i: inteiro
num: vetor [1..3] de inteiro
inicio
para i de 1 ate 3 faca
escreva("Digite um Número na posição ",i,": ")
leia(num[i])
fimpara
para i de 1 ate 3 faca
escreval("Posição",i," Valor",num[i])
fimpara
17
fimalgoritmo
Exercício

Elabore um algoritmo que monta um vetor de


cinco números inteiros. Depois lê todo o vetor e
mostra no final a soma e a média desses valores.

Obs. Utilize uma estrutura de repetição (PARA)

18
Exercício

Elabore um algoritmo que monta um vetor de


cinco números inteiros. Depois lê todo o vetor e
mostra no final a soma e a média desses valores.

Obs. Utilize uma estrutura de repetição (PARA)

18
algoritmo "ExVet1"
var i,Soma:inteiro
num: vetor[1..5] de inteiro
inicio
para i de 1 ate 5 faca
escreva("Digite um número para a posição", i, ": ")
leia(num[i])
fimpara
Soma <- 0
para i de 1 ate 5 faca
Soma <- Soma + num[i]
fimpara
escreval("A soma é = ", Soma)
escreval("A média é = ", Soma/5)
fimalgoritmo 19
Exercício

Elabore um algoritmo que monta um vetor de 10


números inteiros. Depois lê todo o vetor e mostra
no final o maior número desses valores
informados.

Obs. Utilize uma estrutura de repetição (PARA)

20
algoritmo "ExVetMaior"
var i,Maior:inteiro
num: vetor[1..10] de inteiro
inicio
para i de 1 ate 10 faca
escreva("Digite um número para a posição", i, ": ")
leia(num[i])
fimpara
Maior <- 0
para i de 1 ate 10 faca
se num[i] > Maior entao
Maior <- num[i]
fimse
fimpara
escreval("O maior é o ", Maior) 21
fimalgoritmo
Exercício

Elabore um algoritmo que monte dois vetores


de 5 posições e ao final mostre a soma de cada
vetor indicando qual vetor possui a maior
soma.

22
algoritmo "ExVetMaior" para i de 1 ate 5 faca
var i,Soma1,Soma2:inteiro Soma1 <- Soma1 + vet1[i]
vet1: vetor[1..5] de inteiro Soma2 <- Soma2 + vet2[i]
vet2: vetor[1..5] de inteiro fimpara
inicio escreval("Soma vetor 1 é = ", Soma1)
para i de 1 ate 5 faca escreval("Soma vetor 2 é = ", Soma2)
escreva("Digite um número para a se Soma1 > Soma2 entao
posição", i, " do primeiro vetor: ") escreval("O vetor 1 é o maior")
leia(vet1[i]) senao
fimpara se Soma2 > Soma1 entao
para i de 1 ate 5 faca escreval("O vetor 2 é o maior")
escreva("Digite um número para a senao
posição", i, " do segundo vetor: ") escreval("Os dois são iguais")
leia(vet2[i]) fimse
fimpara fimse
Soma1 <- 0 fimalgoritmo
Soma2 <- 0
23
Exercício

Elabore um algoritmo que leia um vetor de 10


posições e mostre-o ordenado em ordem
crescente.

24
algoritmo "ExVetOrdenar" para i de 1 ate 10 faca
var i,j,aux:inteiro para j de i+1 ate 10 faca
vet: vetor[1..10] de inteiro se (vet[j] < vet[i]) entao
inicio aux <- vet[i]
para i de 1 ate 10 faca vet[i] <- vet[j]
escreva(“Nº para a posição", i, ": ") vet[j] <- aux
leia(vet[i]) fimse
fimpara fimpara
fimpara
escreval("Antes")
para i de 1 ate 10 faca escreval("Depois")
escreval("Posição",i," Valor",vet[i]) para i de 1 ate 10 faca
fimpara escreval("Posição",i," Valor",vet[i])
fimpara

fimalgoritmo
25
Declaração de Matriz
var num: vetor [1..10, 1..10] de inteiro num[6,7] = 7

Linha 1 1 3 6 1 5 7 7 9 0 2
2 5 9 4 1 0 7 4 9 0 5
3 1 3 6 1 6 5 9 2 4 2
4 6 2 6 0 2 7 2 9 0 9
5 1 9 6 1 5 4 8 9 2 2
6 5 0 6 2 9 9 7 9 0 1
7 1 3 6 4 5 4 2 9 2 3
8 0 6 9 1 6 5 4 9 4 2
9 2 4 6 7 5 7 9 8 2 1
10 1 3 2 5 4 7 2 6 0 1
26
Coluna 1 2 3 4 5 6 7 8 9 10
Linha 1 5 9 4
algoritmo "Ex1"
2 1 3 6
var L,C: inteiro
Mat: vetor [1..3, 1..3] de inteiro 3 6 2 6
inicio Coluna 1 2 3
para L de 1 ate 3 faca
para C de 1 ate 3 faca
escreva("Digite um Número na posição Linha",L," e Coluna",C,": ")
leia(Mat [L,C])
fimpara
fimpara
para L de 1 ate 3 faca
escreval(" ")
para C de 1 ate 3 faca
escreval("Linha",L," Coluna",C," Valor", Mat [L,C])
fimpara
fimpara
fimalgoritmo 27
Exercício

Acrescente no exemplo anterior a instrução


para somar todos os valores da Matriz
... Não esquecer de
para L de 1 ate 3 faca declarar a variável
Soma no início do
para C de 1 ate 3 faca algoritmo
Soma <- Soma + Mat[L,C]
fimpara
fimpara
escreval("Soma = ",Soma)
...
28
Exercício

Acrescente no exemplo anterior a instrução para


encontrar o maior número da Matriz
... Não esquecer de
para L de 1 ate 3 faca declarar a variável
Maior no início do
para C de 1 ate 3 faca algoritmo
se (Mat[L,C] > Maior) entao
Maior <- Mat[L,C]
fimse
fimpara
fimpara
escreval(“Maior = ", Maior) 29
...
Exercício

Acrescente no exemplo anterior a instrução para


mostrar os números da 1ª linha da Matriz
...
para C de 1 ate 3 faca
escreval(Mat[1,C])
fimpara
...

30
Exercício

Acrescente no exemplo anterior a instrução para


mostrar os números da 1ª coluna da Matriz
...
para L de 1 ate 3 faca
escreval(Mat[L,1])
fimpara
...

31
Exercício

Elabore um algoritmo que leia uma matriz 4 x 4


com números inteiros e mostre a soma de cada
linha da matriz.

32
algoritmo "ExMatrizSomaDasLinha"
var L,C,Soma:inteiro
Mat: vetor[1..4,1..4] de inteiro
inicio
para L de 1 ate 4 faca
para C de 1 ate 4 faca
escreva("Digite um Número na posição Linha",L," e Coluna",C,": ")
leia(Mat [L,C])
fimpara
fimpara
Soma <- 0
para L de 1 ate 4 faca
para C de 1 ate 4 faca
Soma <- Soma + Mat [L,C]
fimpara
escreval("Soma da linha",L," = ", Soma)
Soma <- 0
fimpara 33
fimalgoritmo

Você também pode gostar