Lógica de Programação PDF
Lógica de Programação PDF
Lógica de Programação PDF
Cuiabá-MT
2014
Presidência da República Federativa do Brasil
Ministério da Educação
Secretaria de Educação Profssional e Tecnológica
Diretoria de Integração das Redes de Educação Profssional e Tecnológica
© Este caderno foi elaborado pelo Instituto Federal de Educação, Ciência e Tecnologia
de Rondônia-RO, para a Rede e-Tec Brasil, do Ministério da Educação em parceria
com a Universidade Federal de Mato Grosso.
Revisão
Neusa Final
Blasques
Projeto Gráfco
Rede e-Tec Brasil / UFMT
Lógica de programação /Liluyoud Cury de Lacerda, José Marcio Benite Ramos, Sara Luize
Oliveira Duarte. – Cuiabá: Ed.UFMT, 2014.
117 p.
Curso Técnico – Rede E- Tec. (IFRO)
CDU 004.42
Você faz parte de uma rede nacional de ensino que, por sua vez, constitui uma das ações do
Pronatec - Programa Nacional de Acesso ao Ensino Técnico e Emprego. O Pronatec, instituído
pela Lei nº 12.513/2011, tem como objetivo principal expandir, interiorizar e democratizar
a oferta de cursos de Educação Prossional e Tecnológica (EPT) para a população brasileira
propiciando caminho de acesso mais rápido ao emprego.
É neste âmbito que as ações da Rede e-Tec Brasil promovem a parceria entre a Secretaria de
Educação Prossional e Tecnológica (Setec) e as instâncias promotoras de ensino técnico,
como os institutos federais, as secretarias de educação dos estados, as universidades, as es-
colas e colégios tecnológicos e o Sistema S.
A Rede e-Tec Brasil leva diversos cursos técnicos a todas as regiões do país, incentivando os
estudantes a concluir o ensino médio e a realizar uma formação e atualização contínuas. Os
cursos são ofertados pelas instituições de educação prossional e o atendimento ao estudan-
te é realizado tanto nas sedes das instituições quanto em suas unidades remotas, os polos.
Ministério da Educação
Abril de 2014
Nosso contato
[email protected]
algoritmos 27
3.1 Introdução 27
3.2 Plataforma de estudo 28
Aula 4. Estrutura básica de um
algoritmo 33
4.1 Introdução 33
4.2 Como defnir um algoritmo 34
Caro(a) estudante,
nas interagem para resolver problemas que antes eram difíceis e até mesmo
impossíveis. Ele tem evoluído de maneira alucinante e alguns o consideram
mágico: é o mundo das Tecnologias de Informação e Comunicação – TICs,
ou, simplesmente, TI.
Bons estudos.
Professores-autores.
mas computacionais.
As aulas estão estruturadas de forma a capacitá-lo(a) na construção de al-
goritmos e programas a partir do entendimento da lógica para resolução de
problemas de complexidade limitada.
Para alcançar esse objetivo, a disciplina foi estrutura em dez aulas. A primei-
ra aborda a lógica no dia a dia e na informática. Na segunda, trataremos dos
algoritmos e as formas de representá-lo. Na terceira aula, mostraremos as
ferramentas usadas para a criação dos algoritmos. Já na quarta aula, discor-
reremos sobre a estrutura básica de um algoritmo, em pseudocódigo com
VisualG, e em Java com Eclipse. Na sequência, veremos o conceito de variá-
veis, sua nomenclatura e os tipos primitivos de dados. Na sexta aula, estuda-
remos os conceitos de operadores e expressões, como empregar operadores
aritméticos, relacionais e lógicos para criar expressões complexas e, nal-
mente, nas quatro últimas aulas, trataremos das estruturas de sequência,
decisão, seleção e repetição.
Por m, podemos dizer que um programa nada mais é do que instruções para
armazenar, processar e recuperar dados em computador, e as técnicas usadas
para escrever essas instruções inui diretamente na qualidade do programa.
É essencial que você dedique uma parcela signicativa de seu tempo para
assimilar todo o conteúdo abordado, pois esta disciplina é a base para as
próximas disciplinas relacionadas a programação, e mais ainda, é a porta de
entrada do mundo das Tecnologias de Informação e Comunicação.
Bons estudos!
Objetivos:
Caro(a)estudante,
Observe que esse tipo de raciocínio não dá certeza de que o resultado será
de fato o esperado.
Fonte: www.ahistoria.com.br
Tarefa: vestir-se.
O armário está fechado.
A roupa está dentro do armário.
Primeiro preciso abrir o armário para pegar a roupa.
Depois de pegar a roupa, posso me vestir.
X passou no vestibular.
Todos que passam no vestibular são Y.
Logo, X é Y.
Resumo
Você teve o primeiro contato com os conceitos de lógica e constatou que ela
é a base para a resolução de problemas computacionais. Vimos, também,
que, para realizarmos uma atividade com sucesso (resolução de um proble-
ma), executamos vários passos de acordo com uma ordem, seguindo um
raciocínio lógico, raciocínio esse que pode ser representado formalmente
para resolver outros problemas semelhantes.
Atividades de aprendizagem
1. A partir do que leu nesta aula, explique com suas palavras a importância
da lógica para a Informática.
II – Hexágonos são guras que possuem ângulos. Temos uma gura que
não tem ângulo. Logo:
III – Você está dirigindo sua moto. Se frear rapidamente, um carro baterá
em sua traseira. Se não frear rapidamente, você atropelará uma senhora
que está atravessando a rua. Logo:
5. Três senhoras: Dona Branca, Dona Rosa e Dona Violeta, passeavam pelo
parque, quando Dona Rosa disse:
– Não é curioso que estejamos usando vestidos de cores branca, rosa e vio-
leta, embora nenhuma de nós esteja usando um vestido de cor igual ao seu
próprio nome?
Fonte: autores
Caro(a) estudante,
Objetivos:
• conceituar algoritmos;
Caro(a) estudante,
Peça para um(a) amigo(a) descrever os passos que faz para trocar o pneu do
carro. Compare com os passos que você faria e verique se são iguais. É bem
possível que os algoritmos sejam diferentes.
• descrição narrativa;
• uxograma;
• pseudocódigo.
Vantagens:
Muito simples de usar já que é bem conhecida pela pessoa que analisa o
problema.
Desvantagens:
Exemplo:
2.2.2 Fluxograma
O uxograma é uma representação gráca de um algoritmo. Utiliza alguns
símbolos pré-denidos, mostrados na Tabela 2.1, para identicar os passos a
serem seguidos para chegar ao resultado.
Vantagens:
Desvantagens:
Exemplo:
Fonte: Autores.
Vantagens:
Desvantagens:
Exemplo:
ALGORITMO
DECLARE N1, N2, SOMA: NUMÉRICO;
ESCREVA “Digite dois números”;
LEIA N1, N2;
SOMA ← N1 + N2;
ESCREVA “O resultado da soma é igual a: ” , SOMA;
FIM_ALGORITMO.
Resumo
No desenvolvimento desta aula, você teve a oportunidade de aprender o
que é um algoritmo. Discorremos sobre os tipos de algoritmo. Os três mais
utilizados são a descrição narrativa, o uxograma e o pseudocódigo. Mostra-
mos também as vantagens e as desvantagens de cada um desses algoritmos.
Esperamos que você esteja apto a escrevê-los ou desenhá-los, mesmo sem
Atividades de aprendizagem
1. Descreva qual é a principal função dos algoritmos.
Caro(a) estudante,
Objetivos:
dados; e
• desenvolver algoritmos com pseudocódigos/VisualG e Java/
Eclipse.
Caro(a) estudante,
3.1 Introdução
Qualquer dispositivo eletrônico que manipula informações, seja de pequeno
porte, como um celular; de médio porte, como um computador desktop; ou
de grande porte, como os servidores de datacenters, todos eles executam
basicamente três ações:
• entrada de dados;
• processamento de dados;
• saída de dados.
• pseudocódigo; e
A priori, para você conseguir trabalhar com o Eclipse, vamos descrever ape-
nas algumas áreas do mesmo:
• Menu de comandos – tem todas as opções disponíveis no programa, Para conhecer mais sobre o
desde salvar e recuperar projetos em Java até executá-los e testá-los. Eclipse, assista ao vídeo:
http://www.youtube.com/
watch?v=Vf1AiGlaRQQ
• Botões de atalho – como o próprio nome já diz, são atalhos para os
principais comandos do menu.
Para cada problema dado, a partir de agora vamos resolvê-los de duas for-
mas, com as dobradinhas VisualG/pseudocódigo e Eclipse/Java.
Resumo
No decorrer da aula, tratamos das ferramentas que iremos usar para criar
nossos algoritmos ao longo da disciplina. Desenvolvemos algoritmos com
pseudocódigos usando o visual G e em Java com o Eclipse, uma ferramenta
de uso prossional que permite desde a criação de programas bem simples
até os mais complexos.
Atividades de aprendizagem
1. Além das IDEs citadas na aula, pesquise mais quatro usadas para progra-
mação e identique as linguagens que elas utilizam.
atividades anteriores.
Caro(a) estudante,
Então, gostou do VisualG e do Eclipse? Com esses dois programas, você irá
fazer coisas incríveis. Na Aula 4, mostraremos as estruturas básicas de um
algoritmo. Continue estudando com anco nossas aulas. Até a próxima!
Objetivo:
Caro(a) estudante,
4.1 Introdução
Os algoritmos são feitos para serem executados por máquinas, e sabemos
que as máquinas ainda estão muito longe de ter uma “inteligência” compa-
rada à do ser humano.
Você, ao estabelecer uma conversa com outra pessoa, usando a língua por-
tuguesa, pode não seguir todas as regras gramaticais que ela exige, mas,
mesmo assim, o diálogo acontece.
Veja o exemplo:
É por isso que essa comunicação deve ser bem denida, sem erros, em uma
linguagem bem limitada e simples (poucas regras, pequeno vocabulário).
Cada linguagem de programação tem suas próprias regras e seu próprio
Por essa razão, nesta aula, vamos explicar detalhadamente essa estrutura
de comunicação com o computador, que, como já dissemos antes, por ser
limitada e simples, ca fácil de aprender – é só não se esquecer dos detalhes.
Mas existe um problema com o nome “Calcular Média”: ele não segue os
padrões internacionais de nomenclatura de símbolos para linguagens de
programação. Nesse padrão, recomenda-se:
Fonte: Autores.
Fonte: Autores.
} }
algoritmo "AloMundo" public class AloMundo
inicio Escopo do { Escopo do
malgoritmo algoritmo } algoritmo
Fonte: Autores.
Fonte: Autores.
}
Main
}
Fonte: Autores.
4.2.4 Comentários
Imagine que você tenha desenvolvido um algoritmo bem complexo há um
ano, e, por acaso, você precisa usá-lo para resolver outro problema. Se o al-
goritmo não estiver documentado, você certamente terá um trabalho enor-
me em compreendê-lo novamente, perdendo assim um tempo precioso.
Mas, caso você o tenha documentado, será possível identicar o que ele faz,
as estruturas de programação que foram usadas e o porquê, entre muitas
outras informações úteis acerca dele, de suas alterações (histórico) e dos
autores do mesmo.
Uma das maneiras mais simples (mas não é a única) de documentar seu có -
de alteração.
• Identicar o objetivo daquele código.
Fonte: Autores.
Fonte: Autores.
Resumo
Você acaba de adquirir novos conhecimentos, pois, nesta aula, apontamos
como denir um algoritmo. Vimos que, para criar um algoritmo, precisamos
dar um nome a ele dependendo do seu objetivo, e que esse nome deve estar
de acordo com os padrões internacionais de nomenclatura de símbolos para
Atividades de aprendizagem
1. Crie um algoritmo que forneça a seguinte saída na tela do computador
(seria interessante para seu aprendizado, criar o algoritmo tanto em pseudo-
código quanto em Java):
+----------------------------------+
| Programa Alô Mundo |
+----------------------------------+
| Seja bem-vindo ao maravilhoso |
| mundo da programação. |
| |
| Aproveite!!! |
+----------------------------------+
Fu nçã o
doa l g or i t m o N om e
Transformar dólar em real
Calcular o índice de massa corporal de uma pessoa
Calcular a área de um triângulo
Efetuar um saque na conta-corrente
Objetivos:
Caro(a) estudante,
5.1 Introdução
Antes de iniciar os estudos sobre variáveis, precisamos entender o conceito
de dado na computação. Segundo Puga e Rissetti (2009), dados são valores
que serão utilizados pelo algoritmo para a resolução de um problema. Esses
valores podem ser fornecidos pelo usuário através de dispositivos de entrada
de dados, ou srcinados a partir de outros programas (inclusive ele próprio).
5.2 Variáveis
Os dados de um algoritmo, para serem utilizados e processados, precisam
estar previamente armazenados na memória do computador. A variável en-
tão seria o nome dado a um espaço da memória que contém o dado a ser
utilizado pelo algoritmo.
5.2.1 Nomenclatura
Assim como é importante saberde variáveis
dar nome aos nossos algoritmos, é primor-
dial saber nomear uma variável também. As regras para a nomenclatura de
variáveis seguem os mesmos princípios dos algoritmos. Vejamos:
É por esse motivo que, quando denimos uma variável, é necessário dizer
de que tipo ela é para que o programa consiga converter esses bits no dado
que desejamos. O byte 10010101 pode tanto representar a letra A quanto
o número 149 ou o número -21 (o primeiro bit pode representar o sinal po- A menor unidade de informação
reconhecida pelo computador é
sitivo ou negativo). o bit, que pode ser 0 (representa
o estado desligado) ou 1
(representa o estado ligado). Um
Isto é, no exemplo acima, um único byte pode representar três valores dife- conjunto de oito bits (oito zeros
rentes, dependendo do tipo de dado. ou uns) é chamado de byte. Em
um computador padrão de 64
bits, significa que cada endereço
de memória contem oito bytes (8
5.3.1 Tipos de dados primitivos x 8 bits).
A denição do tipo de dado de uma variável é primordial para garantir a
resolução do algoritmo. As linguagens de programação têm alguns tipos já
denidos em sua estrutura – eles são chamados de tipos de dados primitivos.
• Literal: tipo de dado que pode receber letras, números e símbolos. Esses
tipos de dados não podem ser usados para fazer cálculos, apenas para
• Real: tipo de dado que pode receber números reais, isto é, com casas
decimais, positivos ou negativos. Ex.: 3,1415; 9,8; 123,45.
• Lógico: tipo de dado que pode receber apenas dois tipos de informação
– verdadeiro (1) ou falso (0).
5.4.1 Pseudocódigo
Em pseudocódigo:
• O sinal de dois pontos (:) serve para separar o tipo do nome da variável;
Fonte: autores
5.4.2 Java
Em Java:
• Não existe uma palavra especíca para denir a declaração de uma vari-
ável. Uma variável pode ser criada em qualquer parte do código, mas as
boas práticas de programação recomendam que as variáveis principais
sejam criadas anteriormente e documentadas;
• É possível declarar diversas variáveis em uma linha, desde que sejam se-
paradas por ponto e vírgula;
Fonte: autores
Resumo
Acabamos de estudar o conceito de variáveis e tipos de dado, primordiais
para a elaboração de algoritmos. Juntamente com eles, mostramos como
nomear uma variável, distinguir os tipos de dados primitivos existentes e,
principalmente, como usá-los em algoritmos, seja em pseudocódigo, seja
em Java.
Vamos praticar!
Atividades de aprendizagem
1. Assinale os nomes de variáveis válidas e inválidas. Quando inválida, infor-
mar o porquê:
a) XXX
b) a123
c) (A)
d) “NOME”
e) #66
f) dia/ano/mês
h) Olá Pessoal
i) a.b
j) c*d
Caro(a) estudante,
Objetivos:
Caro(a) estudante,
6.1 Introdução
Um processador basicamente é uma “máquina” que processa instruções de
armazenamento e recuperação de valores, faz cálculos matemáticos e efetua
comparação de valores.
• Operação de atribuição;
• Expressões aritméticas; e
• Expressões lógicas.
variavel ← valor
Fonte: autores
• Por que o tipo literal (caractere e String) recebe valores entre as-
pas duplas?
Fonte: autores
Fonte: autores
media = n1 + n2 / 2
Para garantir que uma determinada expressão seja executada antes da ou-
tra, basta colocá-la entre parênteses. No exemplo da média, para o compu-
tador calcular corretamente, a expressão deveria ser:
Fonte: autores
EXEMPLO 1
2 * 4 = 4 + 4
8 = 4 + 4
8 = 8
verdadeiro
EXEMPLO 2
3 + 3 * 2 <= 3 * 3 E 3 + 2 <= 15 MOD 3
3 + 6 <= 3 * 3 E 3 + 2 <= 15 MOD 3
9 <= 3 * 3 E 3 + 2 <= 15 MOD 3
9 <= 9 E 3 + 2 <= 15 MOD 3
9 <= 9 E 5 <= 15 MOD 3
9 <= 9 E 5 <= 0
verdadeiro E 5 <= 0
verdadeiro E falso
falso
verdadeiro
EXEMPLO 4
NÃO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU ( 5 MOD 2 = 1 E 4 MOD 2 = 0)))
NÃO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU ( 1 = 1 E 4 MOD 2 = 0)))
NÃO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU ( 1 = 1 E 0 = 0)))
NÃO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU (verdadeiro E 0 = 0)))
NÃO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU ( verdadeiro E verdadeiro)))
NÃO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU (verdadeiro)))
NÃO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU verdadeiro))
NÃO (5 + 3 <> 8 OU (2 + 6 <= 3 * 3 / 2 OU verdadeiro))
NÃO (5 + 3 <> 8 OU (8 <= 3 * 3 / 2 OU verdadeiro))
NÃO (5 + 3 <> 8 OU (8 <= 9 / 2 OU verdadeiro))
NÃO (5 + 3 <> 8 OU (8 <= 4,5 OU verdadeiro))
NÃO (5 + 3 <> 8 OU (falso OU verdadeiro))
NÃO (5 + 3 <> 8 OU (verdadeiro))
NÃO (5 + 3 <> 8 OU verdadeiro)
NÃO (8 <> 8 OU verdadeiro)
NÃO (falso OU verdadeiro)
NÃO (verdadeiro)
NÃO verdadeiro
falso
Resumo
Nesta aula, estudamos os conceitos de operadores, operandos e expressões,
que podem ser aritméticas, relacionais e lógicas, e o mais importante: mos-
tramos como resolvê-las. Agora é sua vez praticar! Vamos lá!
a) b * 2 – a * c
b) b + a * 2 – a + c * 3
c) (b + a) * (2 – a) + c * 3
d) (b + a) * ((2 – a) + c) * 3
e) (c + a * a – a + 1) / (c * b * a + c – a * c)
a) v E f OU f E v
b) (v E f) OU (f E v)
c) (NÃO (v E f)) E (f E v)
Objetivos:
Caro(a) estudante,
7.1 Introdução
A arquitetura básica dos computadores, baseada na arquitetura de John von
Neumann, até hoje tem inuência direta nas linguagens de programação.
Entretanto, o estilo (modelo ou paradigma) de programação sofreu algumas
evoluções, de um formato simples (sem muitos recursos e de difícil percep-
ção por parte dos leigos) da década de 50, para um formato mais completo
(com muitos recursos e de fácil entendimento) nos dias atuais.
• Programação tradicional;
• Programação estruturada;
• Programação modular;
A programação estruturada é
uma das variantes da linguagem Nesta disciplina, vamos abordar exclusivamente aspectos da programação
imperativa, que é baseada na
arquitetura von Neumann, na estruturada, que tem como base as estruturas de controle, que são:
qual tanto os dados quanto os
programas são armazenados na
mesma memória, que, por sua • Estruturas sequenciais;
vez, é separada da CPU (Unidade
de Processamento de Dados),
necessitando, assim, que tanto • Estruturas de decisão; e
os dados quanto as instruções
sejam transmitidos da memória
para a CPU e vice-versa. • Estruturas de repetição.
Segundo Sebesta (2011, p. 38):
Nesta aula, você verá como funciona uma estrutura sequencial.
por causa da arquitetura de
von Neumann, os recursos
centrais das linguagens
imperativas são:
• As variáveis, que modelam 7.2 Estrutura sequencial
as células de memória;
• As sentenças de A estrutura sequencial em um algoritmo se dá quando um conjunto de ações
atribuição, baseadas na é executado em uma sequência linear de cima para baixo, e da esquerda
operação de envio de dados
e instruções; e para a direita, na mesma ordem em que foram escritas.
• A forma iterativa de
repetição nessa arquitetura.
A estrutura sequencial é a base do algoritmo, pois, como vimos anterior-
Os operandos em expressões
são enviados da memória mente, são ações executadas passo a passo, em uma sequência denida
dapara a CPU,dae expressão
avaliação o resultadoé para atender a um determinado objetivo.
enviado de volta à célula de
memória representada pelo
lado esquerdo da atribuição. Em uma estrutura sequencial, podemos denir instruções de declaração de
variáveis, atribuição, operações aritméticas e lógicas, de entrada e de saída.
A iteração é rápida em
computadores von Neumann Todas essas instruções já foram vistas, menos as duas últimas, que veremos
porque as instruções são a seguir.
armazenadas em células
adjacentes de memória,
e repetir a execução de
uma seção de código 7.2.1 Saída de dados
requer apenas uma simples Para que serviria a capacidade de processar dados do computador se não
instrução de desvio.
fosse possível mostrar os resultados? É exatamente isso que os comandos de
saída fazem, enviam informações processadas do algoritmo.
Fonte: autores
• Escrever um texto;
• Quando usei o comando Escreva, ele escreve o texto na saída, mas não
pula uma linha;
• Quando não uso as aspas duplas, signica que quero escrever o valor de
uma variável; e
nome = entrada.next();
• Ler um texto;
Figura 7.6: Algoritmo completo em Java que calcula o salário líquido de um funcionário.
Fonte: Autores.
Resumo
Você complementou seus conhecimentos básicos acerca da elaboração de
algoritmos. Nesta aula, tratamos da estrutura sequencial em um algoritmo,
ou seja, um conjunto de ações executadas em sequência linear. Vimos tam-
bém os comandos de saída e entrada de dados em pseudocódigo e em Java.
E, nalmente, mostramos um algoritmo completo que calcula o salário líqui-
do de um funcionário, em pseudocódigo e em Java.
Atividades de aprendizagem
1. Faça um algoritmo em VisualG ou em Java que receba três números intei-
ros e calcule a soma deles.
Caro(a) estudante,
Objetivos:
Caro(a) estudante,
8.1 Introdução
Estrutura de decisão ou estrutura condicional é basicamente um mecanismo
capaz de vericar previamente determinadas condições, baseadas em ex-
pressões lógicas, para a realização de uma ou mais instruções.
Para uma melhor visualização de como esse desvio acontece (como o com-
putador toma decisões), vamos comparar o uxograma de execução de um
algoritmo com estrutura sequencial com o da estrutura condicional:
Fonte: Autores.
Fonte: Autores.
Para você ter uma melhor visualização de como essa escolha de uxo acon-
tece, vamos comparar o uxograma de execução de um algoritmo com es -
trutura Se com o da estrutura Se - Senão:
if (expressão lógica) {
Bloco de Comandos 1;
} else {
Bloco de Comandos 2;
}
Fonte: Autores.
Mesmo sendo complexo, às vezes é a solução mais fácil para alguns tipos
de algoritmo, que precisam testar diversas condições e tomar uma decisão
sobre qual uxo de comandos seguir, que só pode ser um (ou nenhum),
justamente aquele cuja condição for satisfeita, isto é, cuja expressão lógica
for verdadeira.
Para você ter uma melhor visualização de como essa estrutura encadeada de
Se é organizada, a seguir temos um exemplo de uxograma de execução de
um algoritmo com estrutura Se – Senão - Se:
Fonte: Autores.
Resumo
Adicionamos nesta aula conhecimentos importantíssimos para a elaboração
de algoritmos mais complexos. Tratamos das estruturas de decisão simples,
compostas e encadeadas. Vimos que a estrutura “ Se” é a mais simples, pois
Atividades de aprendizagem
1. Faça um algoritmo em VisualG ou em Java que, dados dois números,
mostre qual é o maior deles.
Olá, viu como é possível um computador tomar decisões e assim executar ta-
refas mais complexas? Muito legal, não? Na próxima aula, você irá comple-
mentar os seus conhecimentos de algoritmos com as estruturas de seleção,
Objetivos:
Caro(a) estudante,
9.1 Introdução
A estrutura de seleção é muito utilizada em programação, pois serve para
controlar várias ações diferentes, de acordo com o valor de um parâmetro
(variável) denido dentro dele. Diferentemente das estruturas de decisão, a
de seleção tem número pré-denido de escolhas possíveis, e, consequente-
mente, de caminhos possíveis.
Fonte: Autores.
• Cada case recebe um valor único, ou seja, que não pode ser repetido no
mesmo bloco de dados;
• Após o valor único, colocamos todo código que deverá ser executado
(pode haver quantas linhas de código forem necessárias);
• Baseado no valor da variável, ele verica qual case tem esse valor e exe -
cuta o código correspondente;
• Caso não ache nenhum valor correspondente nos cases, ele executa a
Com essa estrutura, ca fácil manipular vários uxos de comandos, des-
de que consigamos quanticar as opções possíveis de execução sem usar
expressões lógicas, usando somente valores de variáveis. Agora, vamos ao
resumo da aula.
Resumo
Nesta aula, vimos mais uma estrutura de linguagem, a de seleção. Mostra-
mos que a estrutura de seleção permite manipular vários uxos de coman-
dos, usando como parâmetro o valor de uma variável. Agora é sua vez de
praticar.
Objetivos:
Caro(a)estudante,
10.1 Introdução
Em nosso cotidiano é comum executarmos a mesma ação repetitivamente
até chegar a um objetivo, por exemplo, xar um prego na madeira, quando
temos que bater no prego repetidas vezes até que ele esteja xo o suciente
para não cair.
Para exemplicar esse conceito, imagine que seu treinador peça para que
você faça 10 abdominais. O que é mais importante para você conseguir fa-
zer esse exercício? Se você respondeu “estar em forma”, apesar de ter certa
relevância, essa não é a resposta correta. O mais importante nesse caso é
saber contar até 10.
é interrompido.
• passo: é opcional, mas, quando presente, precedida pela palavra passo,
é uma expressão que especica o incremento que será acrescentado à
variável contadora em cada repetição do laço. Exemplo: passo 1 (a cada
passo incrementa 1 o valor do contador – esse é o padrão, por isso pode
ser omitido; passo 5 (a cada passo incrementa em 5 o valor do conta-
dor); ou passo -2 (a cada passo diminui em 2 o valor do contador).
Algoritmo "ExemplosPara"
var i: inteiro
inicio
// contar de 1 até 10
para i de 1 ate 10 faca
escreva (j:3)
mpara
// contar de 10 até 1
para i de 10 ate 1 passo -1 faca
escreva (j:3)
mpara
malgoritmo
// contar de 1 até 10
for (int i = 1; i <= 10; i = i + 1) {
System.out.println(i);
}
// contar 10 vezes
for (int i = 0; i < 9; i++) {
System.out.println(i);
}
// contar de 10 até 1
for (int i = 10; i >= 1; i = i - 1) {
System.out.println(i);
}
Onde:
int a = 10;
int b = 20;
// o loop irá executar enquanto a for menor ou igual a b
while(a <= b) {
System.out.println(a + " " + i);
a++; // incrementa o valor de a em 1
b--; // decrementa o valor de b em 1
}
A única diferença entre eles é que o Enquanto testa a expressão lógica an-
tes de executar o código e tanto o Faça quanto o Repita testam somente
depois de executar o código. A principal consequência dessa diferença é
Repita
<bloco de comandos>
Ate <expressão logica>// repete até a expressão for ver-
dadeira
Onde:
Onde:
Mas, para conhecimento, a seguir nós temos uma tabela comparativa das
estruturas de repetição. Assim, ca mais fácil tomar decisão sobre qual usar
em cada caso.
Fonte: Autores.
Resumo
Essa foi a nossa última aula. Você estudou as estruturas de repetição para
aperfeiçoar determinados tipos de processo. Mostramos que, na estrutura
de decisão, o computador executa o mesmo bloco de comando quantas
vezes forem necessárias, baseado em controles bem denidos de repetição
para se chegar ao resultado pretendido.
Não se esqueça de realizar as atividades especícas desta aula para um me-
lhor entendimento do assunto abordado.
Atividades de aprendizagem
1. Faça um algoritmo em VisualG ou em Java que calcule o saldo atual de
uma poupança, dado o total depositado, a porcentagem do rendimento
mensal e o número de meses que o valor está no banco.
Caro(a) estudante,
Aula 1
1. Resposta pessoal.
2.
Resultado
O verdadeiro:
ferro conduz eletricidade. Resultado
Até agora,falso:
nenhuma mulher foi Presidente da República
O ouro conduz eletricidade. no Líbano.
O chumbo conduz eletri cidade. Logo, nenhuma mulher será Presidente da República no
A prata conduz eletricidade. Líbano.
Logo, todo metal conduz eletricidade.
4.
I-B
II - B
III - C
6. http://www.youtube.com/watch?v=UUd3cucmL2A
Aula 2
Abrir o navegador.
3.
NetBeans – Java
Delphi – Pascal
XCode – Objective C
2. Visual Studio com C#:
using System;
namespaceMeusProjetos
{
classProgram
{
staticvoid Main(string[] args)
{
Console.Write("Digiteseunome: ");
string nome = Console.ReadLine();
Console.WriteLine("Seja bem vindo {0}", nome);
Console.ReadKey();
}
}
}
ProgramOla_Mundo;
begin
WriteLn('Olá, Mundo!');
end.
#import <stdio.h>
int main(void)
{
puts("Olá, Mundo!");
return 0;
}
No caso do Eclipse e outras IDEs mais modernas, são criados muitos outros
arquivos que têm como objetivo descrever o projeto como um todo, mas o
importante é saber onde estão armazenados os arquivos com os algoritmos
criados.
4.É possível perceber que é bem mais fácil escrever um algoritmo usando o
português (no caso do VisualG) do que em inglês (no caso do Java). Infeliz-
mente, todas as maiores linguagens de programação foram criadas por pes-
soas cuja língua pátria era o inglês, por isso a predominância desse idioma
nas linguagens de programação.
Aula 4
1 e 2.
algoritmo "Mensagem"
3.
Fu n ç ã o
dAo l g o ri tm o N om e
Transformardólaremreal Cambio
algoritmo "Cambio"
var
valorReal, valorDolar, cotacao: real
Inicio
Escreva("Informe o valor em Dolar: ")
Leia(valorDolar)
Escreva("Informe a cotação do dia: ")
Leia(cotacao)
valorReal := valorDolar * cotacao
Escreva("O valor em real é ", valorReal)
Fimalgoritmo
algoritmo "CalculoIMC"
var
peso, altura, imc: real
Inicio
Escreva("Informe seu Peso: ")
Leia(peso)
Escreva("Informe sua Altura: ")
Leia(altura)
imc := peso / (altura * altura)
Escreva("Seu IMC é ", imc)
Fimalgoritmo
algoritmo "AreaTriangulo"
var
base, altura, area: real
Inicio
Escreva("Informe o largura da base do triângulo: ")
Leia(base)
Escreva("Informe sua Altura: ")
Leia(altura)
area := (base * altura) / 2
Escreva("A área do triângulo é ", area)
Fimalgoritmo
algoritmo "ContaSaque"
var
saldo, valorSaque: real
Inicio
Escreva("Informe o saldo atual da conta: ")
Leia(saldo)
Escreva("Informe o valor do Saque: ")
Leia(valorSaque)
saldo := saldo - valorSaque
Escreva("O novo saldo é de ", saldo)
malgoritmo
1. a) XXX válido
b) a123 válido
c) (A) inválido
Não podemos usar caracteres especiais no nome, nesse caso foram usados
os ( ).
d) “NOME” inválido
Não podemos usar caracteres especiais no nome, nesse caso foram usadas
as “ ”.
e) #66 inválido
Não podemos usar caracteres especiais no nome, nesse caso foi usado o #.
f) dia/ano/mês inválido
Não podemos usar caracteres especiais no nome, nesse caso foi usada a /.
g) 1abc inválido
Não pode haver espaços em uma variável, e recomenda-se que não sejam
usado acentos também.
i) a.b inválido
Não podemos usar caracteres especiais no nome, nesse caso foi usado o “.”.
j) c*d inválido
Não podemos usar caracteres especiais no nome, nesse caso foi usado o *.
Aula 6
Exemplo: a * b
a e b são os operandos
* é o operador
a * b é a expressão
(a + b) / 2
Expressões lógicas
3. Sendo a = 2, b = 5 e c = 3, temos:
b) b + a * 2 – a + c * 3=>5 + 2 * 2 – 2 + 3 * 3=> 5 + 4 – 2
+ 9 => 16
c) (b + a) * (2 – a) + c * 3=>(5 + 2) * (2 – 2) + 3 * 3 =>
7 * 0 + 9 => 9
e) (c + a * a – a + 1) / (c * b * a + c – a * c)=> (3 + 2 *
2 – 2 + 1) / (3 * 5 * 2 + 3 – 2 * 3) = > (3 + 4 – 2 + 1) /
(30 + 3 – 6) => 6/27
4.
NÃO (v OU v) OU (f)
f OU f
Aula 7
1.
Algoritmo "Prog_7_1"
Var
n1, n2, n3, soma: Inteiro
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
soma:= n1 + n2 + n3
Escreva(soma)
FimAlgoritmo
2.
Algoritmo "Prog_7_2"
Var
n1, n2, n3, n4, media: Real
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
Leia(n4)
media := (n1 + n2 + n3 + n4) / 4
Escreva(media)
FimAlgoritmo
Algoritmo "Prog_7_3"
Var
n1, n2, p1, p2, media: Real
Inicio
Leia(n1)
Leia(n2)
Leia(p1)
Leia(p2)
media := ((n1 * p1) + (n2 * p2))/ (p1 + p2)
Escreva(media)
FimAlgoritmo
4.
Algoritmo "Prog_7_4"
Var
salario, porcentagem: Real
Inicio
Leia(salario)
Leia(porcentagem)
salario := salario + salario * porcentagem / 100
Escreva(salario)
FimAlgoritmo
5.
Algoritmo "Prog_7_5"
Var
salario, imposto: Real
dependentes: Inteiro
Inicio
Leia(salario)
Leia(dependentes)
salario := salario + dependentes * 32
imposto := salario * 0.275
salario := salario - imposto
Escreva(salario)
FimAlgoritmo
Algoritmo "Prog_7_6"
Var
valorAntigo, valorNovo, diferenca: Real
Inicio
Leia(valorAntigo)
Leia(valorNovo)
diferenca := (valorNovo - valorAntigo) / valorAntigo
diferenca := diferenca * 100
Escreva(diferenca, "%")
FimAlgoritmo
7.
Algoritmo "Prog_7_7"
Var
raio, diametro, perimetro, area, volume: Real
Inicio
Leia(raio)
diametro := 2 * raio
perimetro := 2 * 3.1415 * raio
area := 3.1415 * raio * raio
volume := 4 / 3 * 3.1415 * raio * raio *raio
Escreval(diametro)
Escreval(perimetro)
Escreval(area)
Escreval(volume)
FimAlgoritmo
8.
Algoritmo "Prog_7_8"
Var
valocidadeKM, velocidadeMS: Real
Inicio
Leia(valocidadeKM)
velocidadeMS := valocidadeKM * 1000 / (60 * 60)
Escreval(velocidadeMS)
FimAlgoritmo
1.
Algoritmo "Prog_8_1"
Var
n1, n2: inteiro
Inicio
Leia(n1)
Leia(n2)
Se (n1 > n2) Entao
Escreva("O primeiro número é maior")
Senao
Escreva("O segundo número é maior")
FimSe
FimAlgoritmo
2.
Algoritmo "Prog_8_2"
Var
n: inteiro
Inicio
Leia(n)
Se (n mod 3 = 0) Entao
Escreva("É divisível por 3")
Senao
Escreva("Não é divisível por 3")
FimSe
FimAlgoritmo
3.
Algoritmo "Prog_8_3"
Var
lado1, lado2, lado3: inteiro
Inicio
Leia(lado1)
Leia(lado2)
Leia(lado3)
Se ((lado1 + lado2 > lado3) E (lado2 + lado3 > lado1) E
(lado1 + lado3 > lado2)) Entao
Escreva("É possível criar um triângulo")
Senao
Escreva("Não é possível criar um triângulo")
FimSe
FimAlgoritmo
Algoritmo "Prog_8_1"
Var
n: inteiro
Inicio
Leia(n)
Se (n % 3 = 0) E (n % 4 = 0) E (n % 5 <> 0) Entao
Escreva("É divisível por 3 e 4 e não é por 5")
Senao
Escreva("Não obedece as regras")
FimSe
FimAlgoritmo
5.
Algoritmo "Prog_8_5"
Var
n1, n2, n3, aux: inteiro
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
Se (n1 > n2) Entao
aux := n1
n1 := n2
n2 := aux
FimSe
Se (n2 > n3) Entao
aux := n2
n2 := n3
n3 := aux
FimSe
Se (n1 > n2) Entao
aux := n1
n1 := n2
n2 := aux
FimSe
Escreva(n1, n2, n3)
FimAlgoritmo
Algoritmo "Prog_8_6"
Var
salarioBruto, irpf, inss, salarioLiquido: Real
Inicio
Leia(salarioBruto)
irpf := 0
inss := salarioBruto * 0.11
Se (inss> 400) Entao
inss := 400
FimSe
Se (salarioBruto>= 3000) Entao
irpf := salarioBruto * 0.275
Senao
Se (salarioBruto>= 1500) Entao
irpf := salarioBruto * 0.15
FimSe
FimSe
salarioLiquido := salarioBruto - irpf - inss;
Escreval(irpf)
Escreval(inss)
Escreval(salarioLiquido)
FimAlgoritmo
Aula 9
1.
Algoritmo "Prog_9_1"
Var
numero: Inteiro
Inicio
Leia(numero)
Escolha numero
Caso 1
Escreva("Janeiro")
Caso 2
Escreva("Fevereiro")
Caso 3
Escreva("Março")
Caso 4
Escreva("Abril")
Caso 5
Escreva("Maio")
Caso 6
Escreva("Junho")
Caso 7
2.
Algoritmo "Prog_9_2"
Var
uf: caractere
Inicio
Leia(uf)
Escolha uf
Caso "RO"
Escreva("Porto Velho")
Caso "AC"
Escreva("Rio Branco")
Caso "AM"
Escreva("Manaus")
Caso "AP"
Escreva("Amapá")
OutroCaso
Escreva("UF Inexistente")
FimEscolha
FimAlgoritmo
3.
Algoritmo "Prog_9_3"
Var
posicao: Inteiro
Inicio
Leia(posicao)
Escolha posicao
Caso 1
Escreva("Parabéns, você é o melhor.")
4.
Algoritmo "Prog_9_4"
Var
n1, n2, resultado: Real
opcao: Caractere
Inicio
Leia(n1)
Leia(n2)
Leia(opcao)
Escolha opcao
Caso "+"
resultado := n1 + n2
Caso "*"
resultado := n1 * n2
Caso "-"
resultado := n1 - n2
Caso "/"
resultado := n1 - n2
FimEscolha
Escreva(resultado)
FimAlgoritmo
Aula 10
1.
Algoritmo "Prog_10_1"
Var
valor, rendimento: Real
i, meses: inteiro
Inicio
Leia(valor)
Leia(rendimento)
Leia(meses)
Para i de 1 ate meses faca
valor := valor + valor * rendimento / 100
FimPara
Escreva(valor)
FimAlgoritmo
Algoritmo "Prog_10_2"
Var
i, n, soma: inteiro
Inicio
Leia(n)
soma := 0
Para i de 1 ate n faca
soma := soma + i
FimPara
Escreva(soma)
FimAlgoritmo
3.
Algoritmo "Prog_10_3"
Var
i, n, fatorial: inteiro
Inicio
Leia(n)
fatorial := 1
Para i de n ate 2 passo -1 faca
fatorial := fatorial * i
FimPara
Escreva(fatorial)
FimAlgoritmo
4.
Algoritmo "Prog_10_4"
Var
i, a, b, potencia: inteiro
Inicio
Leia(a)
Leia(b)
potencia := 1
Para i de 1 ate b faca
potencia := potencia * a
FimPara
Escreva(potencia)
FimAlgoritmo
Algoritmo "Prog_10_5"
Var
n, fatorial, i, j: inteiro
neper: real
Inicio
Leia(n)
neper := 1
Para i de 1 ate n faca
fatorial := 1
Para j de 1 ate i faca
fatorial := fatorial * i
FimPara
neper := neper + (1 / fatorial)
FimPara
Escreva(neper)
FimAlgoritmo
Obras Consultadas
ARAÚJO, Everton Coimbra.Algoritmos: fundamento e prática. 3. ed. São Paulo: Visual
Books, 2007.
CARBONI, Irenice de Fátima.Lógica de programação. São Paulo: Thomson, 2003.