Buscar

apostila-logica-de-programacao

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 121 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 121 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 121 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

Lógica de Programação
Análise e Desenvolvimento de Sistemas
 1º semestre
1º Semestre
Sumário da Disciplina 
Análise e Desenvolvimento de Sistemas
 1º semestre
1. Lógica e algoritmos .......................................................................11
Motivação ............................................................................................................ 11
1.1 Algoritmo ...................................................................................................... 11
1.2 O processo para resolver problemas computacionais .................. 14
1.3 Uma pitada de Python.............................................................................. 14
Lista de exercícios ............................................................................................. 15
2. Variáveis, tipos, entrada e saída de dados .............................17
Motivação ............................................................................................................ 17
2.1 Variáveis e identificadores ....................................................................... 17
2.1.1 Palavras reservadas em Python: ............................................................................18
2.2 Tipos de dados ............................................................................................ 19
2.3 Números ........................................................................................................ 20
2.4 Strings ............................................................................................................. 20
2.5 Entrada e saída de dados ......................................................................... 21
Exercícios propostos ........................................................................................ 23
Atividades de laboratório ............................................................................... 25
3. Operadores, expressões lógicas e estruturas sequenciais 
27
3.1 Operadores aritméticos ........................................................................... 27
3.1.1 Expressões e tipos de dados ...................................................................................30
3.2 Tipo de dado ................................................................................................ 31
3.3 Funções matemáticas ............................................................................... 32
3.4 Estrutura sequencial .................................................................................. 34
Exercícios propostos ........................................................................................ 35
4. Operadores e expressões lógicas, estruturas condicionais 
simples e composta ...........................................................................39
Motivação ............................................................................................................ 39
4.1 O que é uma estrutura de controle? .................................................... 39
4.2 Expressões lógicas ..................................................................................... 39
4.3 Operadores relacionais ............................................................................ 40
4.4 Operadores lógicos .................................................................................... 41
4.5 Precedência dos operadores .................................................................. 43
4.6 Expressões booleanas equivalentes .................................................... 44
4.7 Estruturas de seleção ou condicional ................................................. 45
4.8 Estrutura condicional simples................................................................ 45
4.9 Estrutura condicional composta ........................................................... 46
4.10 Estrutura de seleção encadeada ........................................................ 47
4.11 Seleções aninhadas ou encadeadas (múltiplos if-else aninha-
dos) ......................................................................................................................... 48
4.12 A estrutura encadeada if-elif-else ...................................................... 50
Atividades de laboratório ............................................................................... 51
Exercícios propostos ........................................................................................ 58
5. Estrutura de repetição ou laço indefinido - while .............64
Introdução ........................................................................................................... 64
5.1 Loop indefinido ou declaração while ................................................. 64
5.2 Variavel contador ........................................................................................ 66
5.3 Variável acumulador .................................................................................. 66
5.4 Loop infinito ................................................................................................. 67
Atividades de laboratório ............................................................................... 71
6. Estrutura de repetição ou laço definido - for .......................74
Introdução ........................................................................................................... 74
Sumário da Disciplina 
Análise e Desenvolvimento de Sistemas
 1º semestre
6.1 Loop definido ou declaração for ........................................................... 74
Atividades de laboratório ............................................................................... 76
7. Funções em Python ......................................................................81
Introdução ........................................................................................................... 81
7.1 Rotina e funções ......................................................................................... 81
7.2 Solicitando a execução de uma rotina ............................................... 83
7.3 Retorno de função ..................................................................................... 85
8. Listas em Python ............................................................................98
Introdução ........................................................................................................... 98
8.1 O que é uma lista? ...................................................................................... 98
8.2 Operações em uma lista .......................................................................... 98
8.3 Listas em Python.......................................................................................101
8.4 O que é uma sequência?........................................................................105
8.5 O que é uma tupla?..................................................................................105
8.6 Operações em sequências.....................................................................106
8.7 Percorrendo uma sequencia.................................................................110
9. Busca e ordenação.......................................................................116
Introdução..........................................................................................................116
9.1 O que é uma algoritmo de busca?......................................................116
9.2 Métodos de ordenação...........................................................................119
Lista de exercícios............................................................................................120
Referências..........................................................................................121
Sumário da Disciplina 
Análise e Desenvolvimento de Sistemas
 1º semestre
Análise e Desenvolvimento de Sistemas
 1º semestre
O Professor
7
O professor
ANA CRISTINA DOS SANTOS
Doutora em Engenharia Elétrica na área de ComputaçãoGráfica e 
Processamento de Imagens pela Escola Politécnica da Universidade 
de São Paulo (POLI-USP). Mestre em Ciências de Computação e 
Matemática Computacional pela USP de São Carlos (ICMC-USP) e 
Licenciada em Matemática pela UNESP. Foi pesquisadora na Divisão 
de Informática do Instituto do Coração da Faculdade de Medicina 
da USP (INCOR-FMUSP). É sócia-diretora da empresa AiiA Serviços 
e Soluções na área de consultoria em Tecnologia da Informação. 
Possui experiência na gestão de cursos de graduação na área de 
Computação e como docente do ensino superior nas áreas de 
Computação, Engenharia e Tecnologia da Informação.
VANDERSON BOSSI
Mestrando em Ensino de Ciências pela Universidade Cruzeiro 
do Sul; Especialista em Engenharia de Software pela Faculdade 
Impacta de Tecnologia e Tecnólogo em Informática pelo Instituto 
de Ensino Superior de Santo André IESA. Com mais de 10 anos de 
experiência em Desenvolvimento de Sistemas e Arquitetura de 
Software utilizando tecnologias como Java, PHP, .NET (c#) e Banco 
de Dados SQL Server atuando em empresas como Ticket Serviços, 
ThyssenKrupp Metalúrgica e General Motors do Brasil como 
Arquiteto de software. Atualmente professor na Faculdade Impacta 
de Tecnologia.
GILBERTO ALVES PEREIRA
Mestre em Engenharia Elétrica pela Escola Politécnica da 
Universidade de São Paulo (POLI-USP). Bacharel Em Engenharia 
Elétrica Escola Politécnica da Universidade de São Paulo (POLI-
USP). Bacharel em Administração de Empresas pela Faculdade de 
Economia e Administração da Universidade de São Paulo (FEA-USP). 
Atou em grandes empresas na área de Tecnologia da Informação 
– Desenvolvimento de Sistemas: Grupo Abril, Banco Santander, 
Banco Real, Banco Itau, Resource IT, BRQ, Claro-Net. Atuou 
como empreendedor, desenvolvendo e prestando consultoria de 
sistemas de gestão em empresas de pequeno e médio porte. Possui 
experiência como docente do ensino superior nas áreas de Sistemas 
de Informação e Tecnologia da Informação.
Apresentação da Disciplina: Lógica de Programação
Análise e Desenvolvimento de Sistemas
 1º semestre
9
Apresentação
Objetivos
Competências da 
disciplina
Entender o que é Linguagem de Programação, Paradigmas de 
Programação e diferenciar tipos de linguagem, compilação e 
interpretação. Compreender como a lógica está relacionada aos 
algoritmos, programas e linguagens de programação. Conhecer 
os principais componentes e estruturas de uma linguagem 
de programação, como variáveis, tipos primitivos, operadores 
aritméticos, coleções, estruturas de decisão, estruturas de 
repetição, módulos e classes. Saber compreender um problema e 
como resolvê-lo pela lógica e linguagem de programação Python. 
Conhecer a sintaxe da linguagem Python, e como escrever os 
principais componentes e estruturas nesta linguagem.
Possibilitar ao aluno executar comandos para executar tarefas no 
shell na linguagem Python. Desenvolver algoritmos e programas 
de computador na linguagem Python, utilizando variáveis, 
tipos primitivos, operadores aritméticos, coleções, estruturas 
de decisão, estruturas de repetição, funções e listas lineares. 
Desenvolver a técnica de refinamentos sucessivos na solução 
de problemas, aprendendo a decompor um problema em sub-
tarefas ou funções.
Lógica de Programação é a técnica de dsenvolvimento de 
programas utilizando ferramentas de programação para atingir 
determinados objetivos dentro de regras baseadas na lógica 
matemática e em outras teorias básicas da Ciencia da Computação 
e que depois são portadas para a Linguagem de Programação 
possibilitando a construção de softwares.
Lógica de Programação1º Semestre
10
Capítulo 1 - lógica e 
algoritmos
11
Análise e Desenvolvimento de Sistemas
 1º semestre
11
1. Lógica e algoritmos
Motivação
A tecnologia computacional tem mudado e está continuamente mudando a vida das pessoas. 
Essencialmente todos os aspectos da vida têm sido impactados pela computação.
Áreas relacionadas com computação estão emergindo em praticamente em todas as áreas de 
conhecimento:
Exemplos: biologia, química, medicina, jornalismo, arquitetura, música, fotografia, matemática, 
ciências sociais, manufatura auxiliada por computador, inteligência computacional, têxtil, economia.
O campo de ciência de computação é fundamentalmente resolver problemas computacionais e 
linguagens de programação e computadores são ferramentas, porém não transmite a sua extensão 
e diversidade, como as suas várias áreas de estudo:
Engenharia de software (incluindo o projeto e implementação de sistemas de software), 
gerenciamento de banco de dados, redes de computadores, computação gráfica, segurança da 
informação, arquitetura de computadores, interação computador e homem, robótica, inteligência 
artificial, dentre outras.
A definição de ciência da computação como resolução de problemas computacionais inicia com a 
definição de algoritmo.
1.1 Algoritmo
O termo algoritmo pode ser visto desde o século ix. Foi nesta época que o cientista, astrônomo 
e matemático persa abū ‘abd allāh muhammad ibn mūsā al-khwārizmī usou pela primeira vez o 
termo para indicar regras de operações aritméticas utilizando algarismos indoarábicos. 
No século xii, adelardo de bath traduziu o termo para o latim algorithmi. De lá para cá, o termo 
evoluiu bastante incluindo todos os procedimentos definidos para resolver problemas ou realizar 
tarefas.
A formalização da noção de algoritmo ocorreu em 1936 com os trabalhos de alan turing e alonzo 
church, que desenvolveram independentemente os modelos de máquinas de turing e cálculo 
lambda. 
Do ponto de vista computacional, um algoritmo pode ser visto como um conjunto de regras e 
procedimentos lógicos perfeitamente definidos que levam à solução de um problema em um 
número finito de passos. 
Donald knuth, um dos pesquisadores mais respeitados em algoritmos, indica uma lista de cinco 
propriedades que são requisitos para algoritmos:
Finitude: um algoritmo deve sempre terminar após um número finito de etapas (ou passos).
Definição: cada passo de um algoritmo deve ser definido com precisão. As ações a serem executadas 
deverão ser especificadas rigorosamente e sem ambiguidades.
Entrada: valores que são dados ao algoritmo antes que ele inicie.
Saída: os valores resultantes das ações do algoritmo a partir de uma determinada entrada.
Eficácia: todas as operações a serem realizadas pelo algoritmo devem ser suficientemente básicas 
para poderem, em princípio, ser feitas com precisão e em um período de tempo finito por um homem 
usando papel e lápis. 
Lógica de Programação1º Semestre
12
Embora os requisitos de knuth sejam intuitivos, falta-lhes rigor formal. A formalidade pode ser 
conseguida com o uso de lógica. Assim, vamos exigir que um algoritmo seja uma sequência lógica 
de passos com começo, meio e fim. 
Comumente, esta lógica é conhecida como lógica de programação e isto ocupará grande parte de 
nossa disciplina.
De um ponto de vista mais geral, podemos dizer que lógica é uma parte da filosofia que trata das 
formas do pensamento em geral (dedução, indução, hipótese, inferência, dentre outros) e das 
operações intelectuais que visam à determinação do que é verdadeiro ou falso. Dentre outras coisas, 
a lógica pode produzir algoritmos para estas formas e operações. 
A fim de resolver um problema computacionalmente, duas coisas são necessárias: uma representação 
que capta todos os aspectos relevantes do problema, e um algoritmo que resolve o problema pelo 
uso da representação.
	Vamos considerar o problema conhecido como o 
homem, o repolho, o bode e o lobo. 
	Um homem vive no lado leste de um rio. Ele deseja 
trazer um repolho, um bode e um lobo a uma vila, 
no lado oeste do rio, para vender. Contudo, seu 
barco é grande o suficiente somente para ele e, 
ou o repolho, ou o bode, ou o lobo. Além disso, 
o homem não pode deixar o bode sozinho com 
o repolho porque o bode vai comer o repolho, e 
ele não pode deixar o lobo sozinho com o bode 
porque o lobo vai comer o bode.Como o homem 
pode resolver seu problema?
Há uma forma algorítmica fácil para resolver este problema com simplicidade, tentando todas as 
combinações possíveis de itens que podem ser levados e trazidos de uma margem à outra do rio. 
Tentar todas as soluções possíveis para um determinado problema é referido como “abordagem de 
força bruta”.
O que seria uma representação adequada para este problema? Uma vez que apenas os aspectos 
relevantes do problema precisam ser representados, todos os detalhes irrelevantes podem ser 
omitidos. A representação que deixa de fora detalhes do que está sendo representado é uma forma 
de abstração.
O uso de abstração é prevalente em computação. Neste caso, a cor do barco é relevante? A largura 
do rio? O nome do homem? Não, a única informação relevante é onde cada item está a cada passo. A 
localização coletiva de cada item, neste caso, refere-se ao estado do problema. Assim, o estado inicial 
do problema pode ser representado como se segue.
homem repolho bode lobo
0 0 0 0
Nesta representação, o número 0 indica que cada objeto correspondente está no lado leste do rio. 
Se o homem fosse atravessar o bode com ele, por exemplo, então a representação de o novo estado 
de problema seria
13
Análise e Desenvolvimento de Sistemas
 1º semestre
13
homem repolho bode lobo
1 0 1 0
Em que o número 1 indica que o objeto correspondente está no lado oeste do rio. Neste caso, o 
homem e o bode. (As localizações do repolho e lobo são deixadas inalteradas.) Uma solução para 
este problema é uma sequência de passos que converte o estado inicial,
0 0 0 0
Em que todos os objetos estão no lado leste do rio, para o estado final,
1 1 1 1
Em que todos os objetos estão no lado oeste do rio. Cada etapa corresponde ao homem atravessando 
o rio com um objeto em particular (ou o homem atravessa sozinho). 
Exercício 1
A partir do estado inicial, com todos os elementos na margem leste do rio, escreva uma sequência 
de passos que leve todos os elementos para a margem oeste do rio, levando em consideração tudo 
o que foi descrito anteriormente.
Lógica de Programação1º Semestre
14
Exercício 2
Um outro exemplo de problema computacional. Suponha que precisamos escrever um programa 
para exibir o calendário mensal de qualquer mês e ano.
Representação: o mês e o ano, o número de dias de cada mês, os nomes dos dias da semana, o dia da 
semana e em qual dia da semana cai o primeiro dia do mês.
Como obter essas informações? A maioria desses valores podem ser dados pelo usuário, tal como 
mês e o ano, ou serem determinados, por exemplo, o número de dias de um dado mês.
A parte do problema que dá mais trabalho é determinar o dia da semana que uma dada data cai.
Para isso você precisará de um algoritmo.
Exercício proposto 1
Escreva uma sequência de passos para obter dois números, calcular e apresentar a soma dos dois 
números. 
1.2 O processo para resolver problemas computacionais
A resolução de um problema computacional não envolve simplesmente o ato de programar um 
computador. Ele é um processo, sendo que a programação é apenas um dos passos. Antes de 
escrever um programa é preciso entender e pensar a solução do problema, depois desenvolver o 
projeto, escrever e testar a solução encontrada.
Uma vez que o algoritmo tenha sido definido, podemos simulá-lo com ferramentas como scratch, 
visualg ou raptor ou implementá-lo diretamente em alguma linguagem de programação (Python, c, 
c++, java, pascal, php, dentre outras). Nossa disciplina será focada em Python, uma das linguagens 
mais difundidas no mercado.
Na realidade, vocês verão que a linguagem de programação (normalmente) é o que menos importa. 
Se a lógica do algoritmo for bem feita, poderemos implementá-lo na maioria das linguagens de 
programação conhecidas. 
1.3 Uma pitada de Python...
A linguagem Python foi escolhida por ser uma linguagem muito versátil, usada não só no 
desenvolvimento web, mas em muitos outros tipos de aplicações. Embora simples, é também uma 
linguagem poderosa, podendo ser usada para administrar sistemas e desenvolver grandes projetos. 
É uma linguagem clara e objetiva, pois vai direto ao ponto, sem rodeios. Na página oficial do Python 
no brasil (http://www.Python.Org.Br/wiki/empresasPython), é possível verificar algumas empresas 
que utilizam a linguagem. Então o leitor deste material estará aprendendo a programar em uma 
linguagem que poderá utilizar na prática e não ficará apenas na teoria.
O nome Python é uma homenagem ao grupo humorístico inglês monty Python criadores e 
intérpretes da série cômica monty Python’s flying circus (sucesso na década de 1970). 
Apesar de sua sintaxe simples e clara, Python oferece muitos recursos disponíveis também em 
linguagens mais complexas como java e c++, como por exemplo: programação orientada a objetos, 
recursos avançados de manipulação de textos, listas e outras estruturas de dados, possibilidade 
http://www.python.org.br/wiki/EmpresasPython
15
Análise e Desenvolvimento de Sistemas
 1º semestre
15
de executar o mesmo programa sem modificações em várias plataformas de hardware e sistemas 
operacionais.
Python é software livre, ou seja, pode ser utilizado gratuitamente, graças ao trabalho da Python 
foundation (http://www.Python.Org/) e de inúmeros colaboradores. Python pode ser utilizada em 
praticamente qualquer arquitetura de computadores ou sistema operacional, como linux, microsoft 
windows ou mac os x.
Vamos começar...
Print(“hello, world!”)
Temos uma linha de código onde a função print é usada para exibir a mensagem na tela:
Hello, world!
Ou ainda, usada para exibir o valor de uma variável:
A = 10
Print(a)
Neste caso, a variável a recebe o valor 10. Em seguida, o conteúdo de a é exibido na tela.
Podemos, também, pedir uma informação ao usuário. A função input é usada para isto:
Nome = input() 
Idade = int(input()) 
Exercício 3
Escrever, em Python, um programa que calcula e apresenta a soma de dois números.
Exercício proposto 2
Escrever, em Python, um programa que calcula e apresenta o dobro, o triplo e o quadrado de um 
número.
Lista de exercícios
Faça um programa que peça as 4 notas de atividades contínuas e mostre a média. Lembrando que, o 
total de atividades contínuas consideradas para o cálculo da média será um total de sete).
Faça um programa que converta metros para milímetros.
Faça um programa que peça o raio de um círculo, calcule e mostre sua área.
Faça um programa que calcule a área de um quadrado, em seguida mostre o dobro desta área para 
o usuário.
Faça um programa que pergunte quanto você ganha por hora e o número de horas trabalhadas no 
mês. Calcule e mostre o total do seu salário no referido mês.
http://www.python.org/
Lógica de Programação1º Semestre
16
Capítulo 2 - variáveis, 
tipos, entrada e saída 
de dados
17
Análise e Desenvolvimento de Sistemas
 1º semestre
17
2. Variáveis, tipos, entrada e saída de dados
Motivação
A geração, coleção e análise de dados é a força motriz no mundo de hoje. A enorme quantidade 
de dados que está sendo criada é impressionante. Redes de lojas geram terabytes (tb = 1012 bytes) 
de informações do cliente, à procura de padrões de compra. Usuários do facebook criaram 40 
bilhões de fotos que requerem mais que um petabyte (pb = 1015 bytes) de armazenamento. Certo 
radiotelescópio deverá gerar um exabyte (eb = 1018 bytes) de informações de quatro em quatro horas. 
A corrente quantidade de dados criados a cada ano é estimada como sendo quase dois zettabytes 
(zb = 1021 bytes), mais do que dobrando a cada dois anos.
Fonte: Google Images
Muitas vezes, em nossos programas precisamos reservar espaço na memória para 
guardar valores que o programa acessará e modificará. A este espaço de memória, 
devidamente rotulado por um nome (identificador), chamamos variável. 
Quando o espaço de memória possui um valor que não será modificado durante o programa, o 
chamamos de constante.
Quando queremos guardar um dado na memória, devemos classificá-lo quanto ao seu tipo. Pense 
nosconjuntos matemáticos, tais como inteiros, reais...
2.1 Variáveis e identificadores
Uma variável tem um nome (identificador) que está associado a um espaço em memória que 
armazena um valor. Uma variável pode receber diferentes valores durante a execução de um 
programa, por isso o nome “variável”.
Exemplo: 
>>> Num = 1
>>> Num
1
>>> Num = 2
>>> Num
2
Lógica de Programação1º Semestre
18
num
1
num
2
>>> Mensagem = “alo, mundo!”
>>> Mensagem
‘Alo, mundo!’
Valores são atribuídos às variáveis usando o operador de atribuição (=).
Exercício 1
O que será exibido ao digitarmos as seguintes linhas de comando?
>>> num = 10
>>> num
>>> num = 20
>>> num
>>> k = num
>>> k
>>> num
>>> k = k + 1
>>> k
>>> num
Um nome ou identificador de uma variável é formado por uma sequência de um ou mais 
caracteres. Regras:
Pode conter apenas letras, dígitos e underscores (sublinhas);
Pode começar por uma letra ou underscore;
Não é permitido o uso de outros caracteres especiais (por exemplo, espaço);
Não é permitido o uso de palavras reservadas da linguagem a ser utilizada;
O identificador deve ser conciso, porém descritivo (idade é melhor que i, tamanho_nome é melhor 
que tamanho_do_nome_da_pessoa).
2.1.1 Palavras reservadas em Python:
and as assert break class continue def
19
Análise e Desenvolvimento de Sistemas
 1º semestre
19
del elif else except finally for from
global if import in is lambda nonlocal
not or pass raise return try while
with yield False none True
Exercício 2
Analise os identificadores e responda o motivo dos identificadores inválidos:
Identificadores válidos Identificadores inválidos Motivo
totalVenda ‘totalVenda’
totalvenda total venda
venda2016 2016Venda
Exercício proposto 1
O que será exibido ao digitarmos as seguintes linhas de comando?
>>> and = 1000
>>> And = 1000
>>> print (“hello”)
>>> print = 10
>>> print (“hello”)
2.2 Tipos de dados
Saber qual é o tipo de dado mais adequado para ser armazenado em uma variável é muito importante 
para garantir a resolução de um problema. Há um conjunto predefinido de tipos de dados chamados 
de tipos embutidos. Vejamos alguns deles:
Lógica de Programação1º Semestre
20
2.3 Números
Um dado numérico é composto por uma sequência de dígitos (0 a 9), um sinal opcional (+ ou –) e 
um possível ponto decimal (usa-se o ponto e não a vírgula para separar a parte inteira da fracionária). 
São classificados como inteiro ou de ponto flutuante.
Exemplos:
Corretos IncorretosInteiro Ponto flutuante
5 5. 5.0 0.125 5,03
2500 2500. 2500.0 2500.125 2,500 2,500.125
+2500 +2500. +2500.0 +2500.125 +2,500 +2,500.125
-2500 -2500. -2500.0 -2500.125 -2,500 -2,500.125
Limite de variação e precisão na representação de números
Para números inteiros, Python utiliza um sistema de precisão ilimitada. Já o número de ponto 
flutuante tem variação e precisão limitada – usa o formato padrão de dupla precisão – fornecendo 
uma variação de 10-308 a 10308 com 16 a 17 dígitos de precisão.
Para indicar uma variação tão grande de valores, números de ponto flutuante podem ser 
representados em notação científica:
9.0045602E+5 (9.0045602 X 105, 8 dígitos de precisão)
1.006249505236801E8 (1.006249505236801 X 108, 16 dígitos de precisão)
4.239E-16 (4.239 X 10-16, 4 dígitos de precisão)
2.4 Strings
Uma string representa uma sequência de caracteres (letras, dígitos, símbolos especiais). Em Python, 
as strings podem ser delimitadas por um par de aspas simples ( ’ ) ou duplas ( ” ). 
Exemplos:
“Olá”
‘Faculdade impacta de tecnologia’
‘Avenida rudge, 315’
Exercício 3
O que será exibido ao digitarmos as seguintes linhas de comando?
21
Análise e Desenvolvimento de Sistemas
 1º semestre
21
>>> 0.1024
>>> .1024
>>> 1,024.00
>>> 1024
>>> 1,024
>>> -1024
>>> 1.2e200
>>> 10e3
>>> 10e-2
>>> ‘Let’s go!’
>>> “Let’s go!”
2.5 Entrada e saída de dados
Os programas que iremos escrever poderão obter e apresentar dados aos usuários.
Já vimos, em exemplos anteriores, a função print (saída de dados), que é usada para exibir informações 
na tela.
 
Ela permite que seja exibida uma string, o conteúdo de uma variável, uma expressão matemática ou 
booleana.
 
Se quisermos pedir ao usuário que forneça um valor, via teclado, usaremos a função input.
 
Neste caso, um cursor será exibido, aguardando a digitação do dado (qualquer dado poderá ser 
digitado!).
Para que o usuário saiba o que deve ser informado, podemos exibir uma mensagem da seguinte 
forma:
Lógica de Programação1º Semestre
22
 
Aqui, o cursor será exibido logo após o texto nome: aguardando a digitação (agora o usuário tem 
uma ideia do que deve ser digitado!).
Para guardar o dado digitado para ser usado posteriormente, faremos a entrada de dados ser 
atribuída a uma variável. 
 
Os dados digitados no teclado são sempre do tipo string. Para entrada de valor numérico, o dado 
deverá ser convertido para o tipo apropriado. 
 
Caso queira converter o dado de entrada em um número de ponto flutuante, utilize float.
 
Para saber qual é o tipo de dado armazenado em uma variável use a função type.
 
Exercício 4
1) Escreva linhas de comando para:
A) receber um dado, exibindo a mensagem: qual a quantidade de alunos?
B) exibir o conteúdo da variável.
C) exibir o tipo da variável.
2) Escreva linhas de comando para:
A) receber um dado, exibindo a mensagem: qual a nota do aluno?
23
Análise e Desenvolvimento de Sistemas
 1º semestre
23
B) exibir o conteúdo da variável.
C) exibir o tipo da variável.
Exercícios propostos
Exatamente qual será a saída, se o usuário digitar o valor 24 em resposta a solicitação de entrada?
 
 
Para cada um dos identificadores abaixo, coloque v para os que são válidos e i para os que são 
inválidos. Para os inválidos, justifique a resposta.
a. nome b. RETURN c. 100_
d. _nome e. return f. numeroDois
g. Nome2 h. FaLSe i. A_______
j. 2nome k. __return+ l. ______a
m. 1000 n. retorno o. nome@pessoa
p. $nome q. (variavel) r. nome
s. +nome- t. variavel u. *var
v. __nome__ w. v_a_r_i_a_v_e_l x. var
y. Variavel z. ___________ aa. new_var
ab. Nome_variavel ac. _ ad. value
ae. nome2 af. $_$ ag. while
ah. False ai. _$_ aj. While
ak. false al. _100 am. from
an. _from ao. from2 ap. FROM_2
Lógica de Programação1º Semestre
24
aq. ^pessoa ar. nomeInvalido as. #hashtag
at. hashtag au. Hashtag av. &hashtag
aw. nome-pessoa ax. $ ay. a
Escreva um programa, que receba o salário de um funcionário e o percentual de aumento a ser 
aplicado sobre o salário. Calcule e apresente o valor do aumento. Exemplo: para um salário de 
2000.00 E um percentual de aumento de 15%, o valor do aumento será 300.00.
Escreva os comandos abaixo e execute-os no shell do Python. Qual a resposta de casa um 
dos comandos?
a) print(“Ola, mundão!”)
b) print(“Ola”, “mundao”)
c) print(3)
d) print(3.0)
e) print(2 + 3)
f) print(2.0 + 3.0)
g) print(“2” + “3”)
h) print(“1 + 3 =”, 2 + 3)
i) print(2 * 3)
j) print(2 ** 3)
k) print(2 / 3)
l) type(3)
m) type(“Tipo inteiro?”)
n) type(“Tipo String”)
o) type(3.0)
p) type(4/2)
q) type(“3”)
r) type(“4/2”)
s) type(“3.0”)
Escreva um programa em Python que:
Defina 3 variáveis com valores que armazenem
O nome de uma fruta
O nome de verdura
O nome de um legume
Mostre uma mensagem “aqui estão os nomes de uma fruta, uma verdura e um legume”
Após essa mensagem, mostre, na ordem, o nome da fruta, da verdura e do legume
Lembre-se de usar nomes válidos de variáveis e que definam o propósito do valor armazenado.
Altere o programa anterior para conter mais três variáveis, com o preço unitário da fruta, verdura e 
legume. Estas variáveis devem armazenar números e não strings. Depois, mostre o preço de cada 
produto após o nome (nome ao lado do preço, por exemplo: “maça: 10”)
25
Análise e Desenvolvimento de Sistemas
 1º semestre
25
Atividades de laboratório
Sabe-se que o valor de cada 1000 litros de água corresponde a 2% do salário mínimo. Elaboreum programa que receba o valor do salário mínimo e a quantidade de água consumida em uma 
residência por mês. Calcule e mostre:
O valor da conta de água.
O valor a ser pago com desconto de 15%.
Escreva um programa em Python que o usuário digita dois números inteiros e armazena em duas 
variáveis n1 e n2, o seu programa deve trocar os valores dessas variáveis, de maneira que o valor de 
n1 seja igual ao de n2 e vice-versa, e depois deve exibir os números lidos com valores trocados.
Escreva um programa em Python que peça para o usuário digite um texto (mensagem: “digite um 
texto: ”) e depois para digitar um número (mensagem: “digite um número”). Depois, deve mostrar 
duas mensagens:1) “a primeira entrada é um dado do tipo <tipo>”; 2) “a segunda entrada é do tipo 
<tipo>”, em que <tipo> deve ser trocado pelo tipo dos dados de entrada do usuário.
Escreva um programa que pergunte a quantidade de km percorridos por um carro alugado pelo 
usuário, assim como a quantidade de dias pelos quais o carro foi alugado. Calcule o preço a pagar, 
sabendo que o carro custa r$60,00 por dia e r$0,15 por km rodado.
Faça um programa que receba o salário de um funcionário e o percentual de aumento, calcule e 
mostre o valor do aumento e o novo salário.
Faça um programa para uma loja de tintas. O programa deverá pedir o tamanho em metros quadrados 
da área a ser pintada. Considere que a cobertura da tinta é de 1 litro para cada 3 metros quadrados 
e que a tinta é vendida em latas de 18 litros, que custam r$ 80,00. Informe ao usuário a quantidades 
de latas de tinta a serem compradas e o preço total.
Lógica de Programação1º Semestre
26
Capítulo 3 - 
Operadores, 
Expressões lógicas e 
estruturas sequenciais
27
Análise e Desenvolvimento de Sistemas
 1º semestre
27
3. Operadores, expressões lógicas e estruturas sequenciais
Agora que conhecemos os tipos numéricos e string em Python, vamos ver como fazer operações 
com esses tipos.
Um operador é um símbolo que representa a operação que pode ser realizada em um ou mais 
operandos. Operadores que atuam sobre um operando são chamados operadores unários. 
Operadores que atuam sobre dois operandos são chamados de operadores binários.
3.1 Operadores aritméticos
Operadores Significado Exemplo Resultado
-x negação -10 -10
x + y soma 2 + 4 6
x - y substração 2 - 4 -2
x * y
multiplicação
2 * 4 8
x / y divisão 25 / 10 2.5
x // y divisão truncada 25 // 10 2
25 // 10.0 2.0
x % y módulo ou resto de 
divisão
25 % 10 5
x ** y exponenciação 2 ** 4 16
O operador (-) pode ser um operador unário (negação) ou um operador binário (subtração). Todos 
os outros operadores são binários.
A exponenciação pode ser utilizada tanto para números inteiros quanto para números em ponto 
flutuante, tanto na base quanto no expoente. 
Lógica de Programação1º Semestre
28
Exemplos:
Python possui dois operadores para divisão, a divisão dita normal e a divisão truncada, em que o 
tipo resultante depende dos operandos. Caso os operando sejam inteiros, o resultado da divisão 
truncada será um inteiro. Caso ao menos um dos operandos seja float, o resultado será um float.
Exercício 1
Para cada tipo de divisão e dos tipos dos operandos, complete o resultado da divisão.
Operandos Tipo 
resultante
Exemplo Resultado
/
Operador 
divisão
int, int float 7 / 5
int, float float 7 / 5.0
float, float float 7.0 / 5.0
//
Operador 
divisão 
truncada
int, int int 
truncado(divisão 
inteiro)
7 // 5
int, float float truncado 7 // 5.0
float, float Float truncado 7.0 // 5.0
Exercício 2
O que será exibido ao digitarmos as seguintes linhas de comando?
>>> 1/3
>>> 1/3 + 1/3
>>> 3*(1/3)
>>> 3*1/3
29
Análise e Desenvolvimento de Sistemas
 1º semestre
29
Uma vez que qualquer representação do ponto flutuante contém apenas um número finito de 
dígitos, o que é armazenado para muitos valores do ponto flutuante são apenas uma aproximação 
do valor verdadeiro.
O operador modulo ou resto de divisão (%), resulta em um ciclo de valores.
 
Exercício 3
O que será exibido ao digitarmos as seguintes linhas de comando?
>>> 10 + 35
>>> -10 + 35
>>> 4 * 2
>>> 4 ** 2
>>> 45 / 10
>>> 45 // 10
>>> 45 // 10.0
>>> 2025 % 10
>>> 2025 % 100
Exercícios propostos 1:
1. Dê o resultado para cada um dos seguintes:
(A) 22 * 3 (b) 15 % 4 (c) 3 ** 2
2. Dê o resultado exato de cada uma das divisões seguintes:
(A) 5 / 4 (b) 5 // 4 (c) 5.0 // 4
3. Quais das expressões do exercício 3 é um exemplo de divisão de inteiro?
4. Quais das expressões do exercício 3 fornecem o mesmo resultado? (Sim/não)
5. Quantos operandos existem na expressão aritmética seguinte?
Lógica de Programação1º Semestre
30
 2 * 24 + 60 - 10
 (A) 4 (b) 3 (c) 7
6. Quantos operadores binários existem na expressão aritmética seguinte?
 - 10 + 25 / (16 + 12)
(A) 2 (b) 3 (c) 4
3.1.1 Expressões e tipos de dados
Uma expressão é uma combinação de símbolos que avalia um valor e consiste de uma combinação 
de operadores e operandos. Uma expressão pode conter também uma variável.
Exemplo: 4 + ( 3 * k)
Expressões que avaliam valores do tipo numérico são chamadas de expressões aritméticas.
Exercício proposto 2:
O que será exibido ao digitarmos as seguintes linhas de comando?
>>> (2 + 3) * 4
>>> 2 + (3 * 4)
>>> 2 + ((3 * 4) – 8)
>>> 2 + 3 * (4 – 1)
Para avaliarmos uma expressão é importante sabermos a precedência dos operadores. O natural 
seria considerar a precedência da matemática, porém cada linguagem de programação tem sua 
própria regra. Pode ser ou não igual a da matemática.
A associatividade do operador é a ordem em que os operadores são aplicados quando têm o mesmo 
nível de prioridade.
Operador Associatividade
** Direita para esquerda
- (negação) Esquerda para direita
* / // e % Esquerda para direita
31
Análise e Desenvolvimento de Sistemas
 1º semestre
31
+ e – (subtração) Esquerda para direita
Exercício 4
Desenvolva a expressão primeiro e depois use a linguagem para avaliar o resultado.
4 + 2 ** 5 // 10 5 + 42 % 10
3.2 Tipo de dado
Um tipo de dado é um conjunto de valores e um conjunto de operadores que podem ser aplicados 
a esses valores.
Exemplo: o tipo int define o conjunto de números inteiros e as operações de adição, multiplicação, 
divisão, divisão truncada e resto de divisão que podem ser aplicadas no conjunto dos inteiros.
Vimos os tipos int, float e string em Python. Mas tem-se também o tipo lógico ou tipo booleano, 
chamado bool, que pode assumir os valores true para verdadeiro e false para falso.
Exemplo: 
Resultado = true
Aprovado = false
Observe que o valor booleano é diferente da string “true” ou “false”, por exemplo.
Existem duas formas de tipo de dados em linguagem de programação:
Tipagem estática: quando uma variável é declarada como um determinado tipo, antes de ser usada;
Tipagem dinâmica: quando o tipo de dado da variável depende somente do tipo do valor que lhe é 
atribuído. Assim, a mesma variável pode ter atribuído valores de tipos diferentes durante a execução 
de um programa.
Nesse caso, dizemos que a linguagem Python é tipada dinamicamente.
Uma expressão tipo-misto pode conter operandos de diferentes tipos. Nesse caso, os operandos 
precisam ser convertidos para o mesmo. Os valores podem ser convertidos de duas maneiras:
Coerção: é a conversão implícita ou automática de operandos para um tipo comum.
Exemplo:
2 + 4.5 = 2.0 + 4.5 = 6.5 (Conversão automática de int para float)
Conversão de tipo: é a conversão explícita de operandos para um tipo específico.
Exemplo:
Float(2) + 4.5 = 2.0 + 4.5 = 6.5
2 + Int(4.5) = 2+ 4 = 6 (Resulta em perda de informação)
Lógica de Programação1º Semestre
32
Exercício proposto 3:
Para cada tipo de conversão, determine o resultado convertido
Função de conversão Resultado Função de conversão Resultado
int( ) int(10.8) float( ) float(10)
int(‘10’) float(‘10’)
int(’10.8’) float(’10.8’)
Observamos que uma string pode ser convertida para um tipo numérico.De fato, isso já estávamos 
fazendo para obter dados de entrada do tipo int ou float com a função input.
Exemplo:
Num_disciplinas = int(input(“quantas disciplinas você cursa?”))
Exercícios propostos 4
Quais das seguintes expressões realiza uma coerção na avaliação da expressão?
(A) 4.0 + 3 (B) 3.2 * 4.0
Quais das expressões seguintes usa conversão explícita de tipo?
(A) 4.0 + Float(3) (b) 3.2 * 4.0 (C) 3.2 + Int(4.0)
Faça um Programa que peça a temperatura 
em graus Fahrenheit, transforme e mostre a 
temperatura em graus Celsius, sabendo que: 
c = 5*(f-32)/9
 Fonte: google
3.3 Funções matemáticas
Agora, vamos inserir funções e constantes matemáticas definidas em um módulo chamado math. 
Para usar as funções do módulo é necessário que ele seja importado da biblioteca padrão do Python: 
import math.
Neste módulo, encontraremos um conjunto variado de funções como as trigonométricas (ex: sin, 
cos, tan, etc) e logarítmicas (ex: log) e também constantes matemáticas (ex: pi).
33
Análise e Desenvolvimento de Sistemas
 1º semestre
33
Veja a seguir a tabela com algumas funções:
Sintaxe Descrição
math.acos(x) retorna o arco cosseno de x
math.asin(x) retorna o arco seno de x
math.atan(x) retorna o arco tangente de x
math.ceil(x) retorna o menor inteiro maior ou igual a x como int
math.cos(x) retorna o cosseno de x
math.degrees(r) converte radianos para graus
math.e constante e (aproximadamente 2.7182818284590451)
math.exp(x) retorna o exponencial de x (ex)
math.fabs(x) retorne o valor absoluto de x
math.factorial(x) retorna x!
math.floor(x) retorna o maior inteiro menor ou igual a x como um int
math.log(x,b) retorna logb x (se b for omitido, retorna log x na base e)
math.log10(x) retorna log10 x
math.modf(x) retorna a parte fracionária e a parte inteira como dois 
floats
math.pi constante p (aproximadamente 3.1415926535897931)
math.pow(x,y) retorna xy
Lógica de Programação1º Semestre
34
math.radians(g) converte graus para radianos
math.sin(x) retorna o seno de x
math.sqrt(x) retorna a raiz quadrada de x
math.tan(x) retorna a tangente de x
math.trunc(x) retorna a parte inteira de x como um int; igual a int(x)
Exercício 5
Escreva as seguintes expressões matemáticas utilizando operadores e funções da linguagem Python:
3.4 Estrutura sequencial
Nos programas que construímos anteriormente sempre utilizamos a mesma sequência de instruções: 
receber dados iniciais, realizar operações matemáticas e apresentar resultados finais.
Esta estrutura de controle, caracterizada pela execução das instruções na ordem em que foram 
escritas é denominada de estrutura sequencial.
Exercício 6
Escreva um programa que receba o raio de uma esfera, calcule e apresente o seu volume.
Exercícios 7
Elabore os seguintes programas:
Leia dois números inteiros e exiba o quadrado da diferença do primeiro valor pelo segundo.
35
Análise e Desenvolvimento de Sistemas
 1º semestre
35
Receba o peso de uma pessoa, calcule e mostre:
A) o novo peso, se a pessoa engordar 5% sobre o peso digitado;
B) o novo peso, se a pessoa emagrecer 10% sobre o peso digitado.
Leia um número inteiro de 3 dígitos, determine e apresente o número invertido (exemplo: número 
informado = 345, número apresentado = 543).
Leia as coordenadas (x,y) de dois pontos no plano cartesiano, calcule e mostre a distância entre os 
dois pontos.
Receba a quantidade de dinheiro, em reais, que uma pessoa tem para fazer uma viagem ao exterior. 
Receba, também, o valor da cotação do dólar do dia. Calcule e apresente o valor convertido em 
dólares.
Exercícios propostos
O que será exibido ao digitarmos as seguintes linhas de comando?
(A)print(“hello, world!”)
(B) print(“hello”, “world!”)
(C) print(3)
(D) print(3.0)
(E) print(2 + 3)
(F) print(2.0 + 3.0)
(G) print(“2” + “3”)
(H) print(“2 + 3 =”, 2 + 3)
(I) print(2 * 3)
(J) print(2 ** 3)
(K) print(2 / 3)
Escreva um programa que permite ao usuário digitar dois números inteiros e exibir o resultado para 
cada uma das seguintes operações: +, -, *, /, //, %, **. Por exemplo: se o usuário digitar 7 e 5, a saída 
do seu programa deverá ser:
7 + 5 = 12
7 - 5 = 2
7 * 5 = 35
7 / 5 = 1.40
7 // 5 = 1
7 % 5 = 2
7 ** 5 = 16807
Escreva as seguintes expressões matemáticas utilizando operadores e funções da linguagem Python:
Lógica de Programação1º Semestre
36
Modifique o programa realizado anteriormente de conversão de temperatura, para converte de 
celsius para fahrenheit. A fórmula é conversão é: f = (c * 9/5) + 32
Faça programa que calcula a idade em segundos para que a idade seja exibida em número de dias, 
horas e minutos.
Atividades de laboratório
Escreva um programa que lê dois valores inteiros e exibe o resultado do primeiro número dividido 
pelo segundo número, com exatamente duas casas decimais. 
Escreva um programa que lê dois valores inteiros e exibe o resultado do primeiro número dividido 
pelo segundo número, com exatamente seis casas decimais. 
Escreva um programa que lê dois valores em ponto flutuante e exibe o resultado do primeiro dividido 
pelo segundo, com exatamente seis dígitos depois da vírgula.
Calcule e apresente o volume de uma lata de óleo.
Escreva um programa que receba três números quaisquer e apresente:
A soma dos quadrados dos três números;
O quadrado da soma dos três números.
Faça um programa que receba o custo de um espetáculo teatral e o preço do convite desse espetáculo. 
Esse programa deve calcular e mostrar: 
A quantidade de convites que devem ser vendidos para que pelo menos o custo do espetáculo seja 
alcançado. 
A quantidade de convites que devem ser vendidos para que se tenha um lucro de 23%.
Dado o preço de um produto (inteiro), elabore um programa que calcule e apresente a menor 
quantidade de notas (de cada valor) necessárias para efetuar o pagamento da compra desse produto. 
Considere como valores das notas atuais: 1, 2, 5, 10, 20, 50, 100.
A fábrica de refrigerantes meia-cola vende seu produto em três formatos: lata de 350 ml, garrafa 
de 600 ml e garrafa de 2 litros. Se um comerciante compra uma determinada quantidade de cada 
formato, faça um algoritmo para calcular quantos litros de refrigerante ele comprou.
Um hotel deseja fazer uma promoção especial de final de semana, concedendo um desconto de 25% 
na diária. Sendo informados, através do teclado, o número de apartamentos do hotel e o valor da 
diária por apartamento para o final de semana completo, elabore um algoritmo para calcular:
O valor promocional da diária;
O valor total a ser arrecadado caso a ocupação neste final de semana atinja 100%;
O valor total a ser arrecadado caso a ocupação neste final de semana atinja 70%;
O valor que o hotel deixará de arrecadar em virtude da promoção, caso a ocupação atinja 100%.
Faça um programa que receba a medida do ângulo formado por uma escada apoiada no chão e a 
distância em que a escada está da parede, calcule e mostre a medida da escada.
37
Análise e Desenvolvimento de Sistemas
 1º semestre
37
Três amigos, carlos, andré e felipe, decidiram rachar igualmente a conta em um bar. Faça um 
programa para lei o valor total da conta e imprimir quanto cada um deve pagar, mas faça 
com que carlos e andré não paguem centavos. Por exemplo: uma conta de r$101,53 resulta 
em r$33,00 para carlos, r$33,00 para andré e r$ 35,53 para felipe.
A padaria hotpão vende uma quantidade de pães franceses e uma quantidade de broas a cada dia. 
Cada pãozinho custa r$0,12 e a broa custa r$1,50. Ao final do dia, o dono quer saber quanto arrecadou 
com a venda dos pães e broas (juntos), e quanto deve guardar numa conta de poupança (10% do 
total arrecadado). Você foi contratado para fazer os cálculos para o dono. Com base nestes fatos, faça 
um programa para ler as quantidades de pães e de broas, e depois calcular os dados solicitados.
Lógica de Programação1º Semestre
38
Capítulo 4 - 
Operadores e 
Expressões lógicas, es-
truturas 
Condicionais simples 
e composta
39
Análise e Desenvolvimento de Sistemas
 1º semestre39
4. Operadores e expressões lógicas, estruturas condicionais 
simples e composta
Motivação
Os primeiros computadores eletrônicos com mais de sessenta anos foram referidos como “cérebros 
eletrônicos”. Deu-se a impressão enganosa de que os computadores poderia “pensar”. Embora 
possam ser complexos na sua design, computadores são máquinas que simplesmente fazem, passo 
a passo (instrução por instrução), o que eles são informados. 
Assim, não há mais inteligência em um computador do que o que é instruído fazer. O que os 
computadores podem fazer, no entanto, é executar uma série de instruções muito rapidamente e 
muito de forma confiável. 
É a velocidade em que as instruções podem ser executado que dá aos computadores o seu poder, 
uma vez que a execução de muitas instruções simples pode resultar em comportamento muito 
complexo. 
Vamos a partir de agora controlar a ordem em que as instruções são executadas no Python.
4.1 O que é uma estrutura de controle?
A ordem em que as instruções de um programa são executadas é chamada de controle de fluxo.
Existem três formas fundamentais de controlar o fluxo de um programa: estrutura de controle 
sequencial, estrutura de controle de seleção ou condicional e estrutura de controle de repetição, 
iterativo ou laço.
Estrutura Sequencial Estrutura de Seleção Estrutura de Repetição, 
Laço ou Iterativo
Estrturas de controle – fonte (dierbach)
A estrutura de controle sequencial, caracteriza pelos problemas visto até agora, é uma forma implícita 
de controle, em que as instruções são executadas na ordem em que são escritas.
Conheceremos o segundo tipo de controle de fluxo, a estrutura de seleção ou condicional. Porém, 
antes vamos saber o que é uma expressão lógica.
4.2 Expressões lógicas
Nesta aula, vamos estudar dois operadores que são usados em expressões lógicas (booleanas): 
Lógica de Programação1º Semestre
40
operadores relacionais e operadores lógicos.
Uma expressão lógica é uma expressão que resulta em um valor lógico true (verdadeiro) ou false 
(falso). 
4.3 Operadores relacionais
Os operadores relacionais são usados em comparações entre valores. O resultado da comparação 
será um valor lógico. São eles:
Operadores Exemplo Resultado
== igual a 10 == 10 True
!= diferente 10 != 10 False
< menor que 10 < 20 True
> maior que “Alan” > “Brenda” False
<= menor ou igual a 10 <= 10 True
>= maior ou igual a “A” >= “D” False
Exercício 1
O que será exibido ao digitarmos as seguintes linhas de comando?
>>> 10 == 20
>>> 10 != 20
>>> 10 <= 20
>>> ‘2’ < ‘9’
>>> ‘12’ < ‘9’
>>> ‘12’ > ‘9’
>>> ‘Hello’ == “Hello”
>>> ‘Hello’ < ‘Zebra’
>>> ‘hello’ < ‘ZEBRA’
Exercício 2
Considerando a = 4, b = 10, c = 50, d = 1 e f = 5, qual será o resultado lógico (true/false) das 
41
Análise e Desenvolvimento de Sistemas
 1º semestre
41
seguintes expressões:
Expressão Resultado
a == c
a < b
d > b
c != f
a == b
c < d
b > a
c >= f
c <= c
c <= f
4.4 Operadores lógicos
Os operadores lógicos podem ser usados para construir expressões lógicas mais complexas 
combinando comparações. São eles: and (e), or (ou), not (não).
O operador lógico and resulta verdadeiro somente quando seus operandos forem verdadeiros.
O operador lógico or resulta verdadeiro quando, pelo menos, um dos seus operandos for verdadeiro.
O operador lógico not inverte o valor do operando. 
Tabela verdade dos operadores lógicos:
Lógica de Programação1º Semestre
42
x y x and y x or y not x
False False False False True
True False False True False
False True False True
True True True True
É preciso ser cauteloso aos usar operadores lógicos. Por exemplo, na matemática, para indicar que 
um valor está dentro de um determinado intervalo escrevemos:
1 <= Num <= 10
No entanto, na maioria das linguagens de programação esta expressão não faz sentido. Para entender 
porque, vamos assumir que num tem o valor 15.
1 <= Num <= 10 ® 1 <= 15 <= 10 ® true <= 10 ® ???
Não faz sentido verificar se true é menor ou igual a 10. A maneira correta de escrever a 
expressão deve usar o operador lógico and
1 <= Num and num <= 10
Ou
Num >= 1 and num <= 10
Exercício 3
O que será exibido ao digitarmos as seguintes linhas de comando?
>>> True and False
>>> True or False
>>> not(True) and False
>>> not(True and False)
>>> (10 < 0) and (10 > 2)
>>> (10 < 0) or (10 > 2)
>>> not(10 < 0) or (10 > 2)
>>> not(10 < 0 or 10 > 2)
43
Análise e Desenvolvimento de Sistemas
 1º semestre
43
Exercício 4
Qual será o valor das seguintes expressões lógicas:
A) ((5 > 3) or (4 < 2)) and (1 < 7)
B) (not(5 > 3) or (1 < 2)) and (not(1<7))
4.5 Precedência dos operadores
A precedência dos operadores relacionais e lógicos, bem a associatividade dos operadores é dada 
conforme segue a tabela:
Operador Associatividade
<, >, <=, >=, !=, == Esquerda para direita
not Esquerda para direita
and Esquerda para direita
or Esquerda para direita
Uma vez que expressões lógicas, pode conter também operadores aritméticos, vistos na aula anterior, 
podemos estender para a tabela seguinte:
Operador Associatividade
** Direita para esquerda
- (negação) Esquerda para direita
* / // e % Esquerda para direita
+ e – (substração) Esquerda para direita
<, >, <=, >=, !=, == Esquerda para direita
Lógica de Programação1º Semestre
44
not Esquerda para direita
and Esquerda para direita
or Esquerda para direita
4.6 Expressões booleanas equivalentes
Assim como na matemática existe equivalência de expressões aritméticas. Por exemplo, x(y + z) 
é equivalente a xy + xz, para valores numéricos x, y e z. Existe equivalência lógica de expressões 
booleanas.
Expressões Booleanas Equivalentes Logicamente
é equivalente 
a 
Exercício 5
O que será exibido ao digitarmos as seguintes linhas de comando?
45
Análise e Desenvolvimento de Sistemas
 1º semestre
45
>>> 10 < 20
>>> not (10 >= 20)
>>> 10 != 20
>>> not(10 == 20)
>>> not(10 < 20 and 10 < 30)
>>> (not 10 < 20) or (not 10 < 30)
>>> not(10 < 20 or 10 < 30)
>>> (not 10 < 20) and (not 10 < 30)
4.7 Estruturas de seleção ou condicional
A partir de agora vamos estudar as estruturas condicionais que permitem que o programa execute 
diferentes sequências de instruções em diferentes casos, dependendo da avaliação de uma expressão 
lógica.
Uma expressão lógica é uma expressão cujos operadores são lógicos e/ou relacionais e cujos 
operandos são relações e/ou variáveis do tipo lógico.
Em programação, o uso de condições para permitir a escolha de executar ou não um trecho de 
programa é muito utilizado, principalmente quando precisamos incluir no programa condições de 
controle, para evitar situações não permitidas, que podem resultar em erros. Por exemplo, para evitar 
divisões por zero.
A estrutura lógica que permite que o fluxo de execução de um algoritmo possa sofrer desvios é 
conhecida como estrutura condicional ou de seleção.
Quando temos apenas um bloco especial de comando ou instruções apenas para quando a expressão 
lógica for verdadeira, esse tipo de estrutura chama-se estrutura de condicional simples.
4.8 Estrutura condicional simples
Sintaxe:
If condição:
 Instrução(ões)_verdadeiro
Lógica de Programação1º Semestre
46
Exemplo:
If nota >= 6.0:
 Print(“aluno aprovado”)
If nota < 6.0:
 Print(“aluno reprovado”)
O texto “aluno aprovado” só será exibido se a condição nota >= 6.0 For verdadeira; caso contrário, 
o controle passa para a próxima instrução que tem outra condição nota < 6.0 A ser avaliada. Se o 
resultado for verdadeiro então será exibido o texto “aluno reprovado”.
Uma característica singular da linguagem Python é que a quantidade de recuo (indentação) está 
associada à um bloco de instruções. Esta indentação é obrigatória para se definir qual instrução ou 
instruções devem ser executadas quando o resultado lógico da expressão for verdadeiro.
Indentação válida Indentação inválida
if condição:
 instrução
 instrução
 instrução
if condição:
 instrução
 instrução
 instrução
Analisando o exemploanterior, podemos perceber que para escrever apenas uma das mensagens 
foram necessárias duas condições.
Existe outra estrutura, chamada de estrutura condicional composta, em que temos uma única 
condição e dois caminhos que podem ser seguidos – o caminho do resultado verdadeiro e o caminho 
do resultado falso.
4.9 Estrutura condicional composta
Sintaxe:
If condição:
 Instrução(ões)_verdadeiro
Else:
 Instrução(ões)_falso
Exemplo:
If nota >= 6.0:
 Print(“aluno aprovado”)
Else:
 Print(“aluno reprovado”)
Neste caso, será avaliada a condição nota >= 6.0 E se o resultado for verdadeiro então será apresentado 
o texto “aluno aprovado”; caso contrário (else), será apresentado o texto “aluno reprovado”.
47
Análise e Desenvolvimento de Sistemas
 1º semestre
47
Como na estrutura condicional simples, instrução(ões)_verdadeiro e instrução(ões)_falso devem ser 
indentadas adequadamente.
Indentações válidas Indentações inválidas
if condição:
 instrução
 instrução
else:
 instrução
 instrução
if condição:
 instrução
 instrução
else:
 instrução
 instrução
if condição:
 instrução
 instrução
else:
 instrução
 instrução
if condição:
 instrução
 instrução
else:
instrução
instrução
Exercício 5
Escreva a estrutura apropriada para cada um dos seguintes itens:
Apresente “dentro do intervalo” se 1 <= num <= 100. Apresente “dentro do intervalo” se 30 < num < 
70, caso contrário, apresente “fora do intervalo”.
Exercício 6
Resolva as expressões lógicas abaixo:
S = ((not (1 == 2)) and (3 < 4))
S = ((1 < 2) or (3 > 4))
S = (((2 == 2) and (3 > 4)) or (3 > 4))
Escreva um programa que leia um número inteiro e exiba se ele é um número par ou ímpar.
Um comerciante comprou um produto e quer vendê-lo com um lucro de 45% se o valor da compra 
for menor que r$ 20,00; caso contrário, o lucro será de 30%. Escreva um programa que receba o valor 
do produto e exiba o valor da venda.
As maçãs custam r$ 1,30 cada se forem compradas menos de uma dúzia, e r$ 1,00 se forem compradas 
pelo menos 12. Escreva um programa que leia o número de maçãs compradas, calcule e escreva o 
custo total da compra.
4.10 Estrutura de seleção encadeada
Na estrutura de seleção simples, temos apenas um caminho ou uma possibilidade, para a condição 
ou expressão avaliada. Na seleção composta, temos duas possibilidades ou dois caminhos, um 
Lógica de Programação1º Semestre
48
caminho para a condição verdadeira, chamamos de bloco verdade e um bloco para a condição falsa, 
chamado de bloco da falsidade.
A estrutura de seleção encadeada ocorre quando uma seleção tem como ação uma outra seleção ou 
quando temos mais de duas possibilidades para uma decisão. A seleção encadeada ou aninhada é o 
agrupamento de várias seleções (internas) a uma seleção.
A linguagem Python nos fornece duas formas de estruturas com múltiplos possibilidades:
Estrutura com múltiplas condições aninhadas ou encadeadas if-else
Estrutura com uma única condição if e uso de múltiplas cláusulas elif
Veremos primeiro, a primeira forma, com múltiplas condições aninhadas.
4.11 Seleções aninhadas ou encadeadas (múltiplos if-else aninha-
dos)
Quando temos mais de duas possibilidades ou múltiplos caminhos, temos a seleção encadeada, que 
não tem uma sintaxe fixa, mas uma combinação de estruturas simples e compostas, a depender da 
lógica do problema.
Sintaxe:
If condição:
 Bloco instruções
Else:
 If condição:
 Bloco instruções
 Else:
 If condição:
 Bloco instruções
 ...
Exemplo 1:
Neste caso, será avaliada a condição nota >= 7.5 E frequência >=0.75 E se o resultado for verdadeiro 
então será apresentado o texto “aprovado direto”. Portanto o else, contendo o restante das outras 
condições, não será executado. Por outro lado, se a condição nota >= 7.5 E frequência >=0.75 For 
falsa, executaremos o bloco após o primeiro (else) mas, como ainda temos duas possibilidades, 
precisamos avaliar a condição nota >= 6.0 E frequência >=0.75 Será apresentado o texto “aprovado 
49
Análise e Desenvolvimento de Sistemas
 1º semestre
49
com exame”, caso essa segunda condição for verdadeira. Caso contrário será executado o bloco após 
o segundo (else), e será apresentada a mensagem de texto “reprovado”.
Exemplo 2: nesse caso, temos 5 possibilidades para a variável grade.
Observem que a última cláusula será executada somente se todas as outras falharem.
As indentações tornam-se cruciais em uma estrutura encadeada, uma vez que cada declaração if-
else é um bloco de código diferente e deve ter uma quantidade de espaços diferentes. Portanto, 
muita atenção!
Exercício 7
Faça um programa que leia três números inteiros e encontra o menor deles.
Sugestão: sejam 3 números a, b e c. A ideia principal é: verificar se a é menor que b e c e se não for, 
verificar entre b e c
Exercício 8
Faça um programa que leia três números inteiros e colocá-los em ordem crescente.
Sugestão: sejam 3 números a, b e c. A ideia principal é:
Armazenar em a o menor valor
Armazenar em b o valor intermediário
Armazenar em c o maior valor
Exercício 9
Faça um programa que faz a leitura de três valores reais (a, b e c), representando os coeficientes de 
uma equação do 2o. Grau, calcula o valor do delta e os valores das raízes reais, caso existam.
Considere que:
Se a for igual a zero, exiba a mensagem “não é equação de 2º grau!” E encerre;
Se o delta for negativo, exiba a mensagem “não existem raízes reais” e encerre.
Se o delta for zero ou positivo, exibe a raiz ou as raízes e encerre.
Exercício 10
Ler três valores para os lados de um triângulo, considerando os lados como: a, b e c. Verificar 
se os lados fornecidos formam realmente um triângulo. Se afirmativo, deverá ser indicado 
qual tipo de triângulo foi formado: isósceles, escaleno ou equilátero.
Orientações:
Devemos saber primeiramente qual a definição de um triângulo. 
Triângulo é uma forma geométrica (polígono) composta de três lados, onde cada lado é menor que 
a soma dos outros dois lados. 
Perceba que isto é uma regra (uma condição) e deverá ser considerada. É um triângulo quando a < b 
+ c, quando b < a + c e quando c < a + b.
Lógica de Programação1º Semestre
50
Tendo certeza que os valores informados para os três lados formam um triângulo, serão então, 
analisados os valores para se estabelecer qual tipo de triângulo será formado: isósceles, escaleno ou 
equilátero.
Isósceles quando possui dois lados iguais e um diferente, sendo a=b ou a=c ou b=c; 
Escaleno quando possui todos os lados diferentes, sendo a < > b e b < > c; e
Equilátero quando possui todos os lados iguais, sendo a=b e b=c.
Etapas principais do algoritmo:
Ler três valores para os lados de um triângulo: a, b e c;
Verificar se cada lado é menor que a soma dos outros dois lados
Se sim, saber se a=b e se b=c, sendo verdade o triângulo é equilátero
Se não, verificar se a=b ou se a=c ou se b=c, sendo verdade o triângulo é isósceles, caso contrário o 
triângulo é escaleno. 
Caso os lados fornecidos não caracterizem um triângulo, avisar a ocorrência.
4.12 A estrutura encadeada if-elif-else
A linguagem Python nos fornece duas formas de estruturas com múltiplos possibilidades:
Estrutura com múltiplas condições aninhadas ou encadeadas if-else
Estrutura com uma única condição if e uso de múltiplas cláusulas elif
Vimos a primeira forma com múltiplas condições aninhadas com if-else. O Python apresenta uma 
alternativa ao problema dos múltiplos ifs aninhados. A cláusula elif substitui um par de else-if, mas 
sem criar outro nível de estrutura, evitando problemas de indentações.
Sintaxe:
If <condição 1>:
 <Bloco de código if>
Elif <condição 2>:
 <Bloco de código elif>
Else:
 <Bloco de código else>
Se condição 1 for verdadeira, executa bloco de código if. Senão, se condição 2 for verdadeira, executa 
bloco de código elif. Senão, executa bloco de código else.
A declaração elif só pode existir se existir uma declaração if.
A declaração do elif é opcional; pode existir if sem um elif (decisãosimples) else também continua 
sendo opcional.
A declaração elif tem um teste lógico assim como if; ela é executada sempre que o teste do if for false.
A indentação do elif deve ser a mesma da declaração if que está relacionada; if e seu elif devem ter a 
mesma quantidade de espaços a esquerda.
Na declaração if-elif-else podem existir quantas declarações elif forem necessárias.
Exemplo: vamos reescrever o trecho de código a esquerda, usando if-elif-else.
51
Análise e Desenvolvimento de Sistemas
 1º semestre
51
Exercício 11
Vamos reescrever o trecho de código a esquerda, usando if-elif-else.
Exercício 12
Reescreva os programas dos exercícios de 7 a 10, agora usando if-elif-else
Atividades de laboratório
Faça um programa que apresenta o maior de dois números lidos do usuário.
Faça um programa que coloque dois nomes em ordem alfabética.
Faça um programa que apresente se o número que o usuário digitou é divisível por 3 e por 5 ao 
mesmo tempo.
Faça um programa que receba um ano (quatro dígitos) e informe se é um ano bissexto ou não. 
Pesquise quais as regras para o número ser bissexto.
Elabore um programa que leia do teclado o sexo de uma pessoa. Se o sexo digitado for “m” ou “m” ou 
“f” ou “f”, escrever na tela “sexo válido!”. Caso contrário, exibir “sexo inválido!”.
Num determinado estado, para transferências de veículos, o detran cobra uma taxa de 2,5% para 
carros fabricados antes de 2010 e uma taxa de 3,5% para os fabricados de 2010 em diante, taxa esta 
incidindo sobre o valor de tabela do carro. Escreva um programa lê o ano e o preço do carro e a 
seguir calcula e imprime a taxa a ser paga.
Lógica de Programação1º Semestre
52
Elabore um programa que calcule o que deve ser pago por um produto, considerando o preço 
normal de etiqueta e a escolha da condição de pagamento. Utilize os códigos da tabela seguinte 
para ler qual a condição de pagamento escolhida e efetuar o cálculo adequado.
Código Condições de pagamento
1 À vista em dinheiro ou cheque, recebe 10% de desconto
2 À vista no cartão de crédito, recebe 5% de desconto
3 Em 2 vezes, preço normal de etiqueta sem juros
4 Em 3 vezes, preço normal de etiqueta mais juros de 10%
Resolver os problemas 19 a 23 de estruturas condicionais do site:
Http://wiki.Maratona.Dcc.Ufmg.Br/index.Php/roteiro_2_-_aeds1
1) (Problema 19) - JSEDEX - Sedex
A copa do mundo de 2018 será realizada na rússia. Bolas de futebol são muito fáceis de transportar, 
já que elas saem das fábricas vazias e só são enchidas somente pelas lojas ou pelos consumidores 
finais.
Infelizmente o mesmo não pode ser dito das bolas de boliche. Como elas são completamente sólidas, 
elas só podem ser transportadas embaladas uma a uma, em caixas separadas.
A sbc - só boliche cascavel - é uma fábrica de bolas de boliche que trabalha somente através de 
encomendas e envia todas as bolas por sedex. Como as bolas têm tamanhos diferentes, a sbc tem 
vários tamanhos de caixas diferentes para transportá-las
Tarefa
Escreva um programa que, dado o diâmetro de uma bola e as 3 dimensões de uma caixa (altura, 
largura e profundidade), diz se a bola de boliche cabe dentro da caixa ou não.
Entrada
A primeira linha da entrada contém um inteiro n (1 ≤ n ≤ 10.000) Que indica o diâmetro da bola de 
boliche. A segunda linha da entrada contém 3 números inteiros separados por um espaço cada: a 
altura a (1 ≤ a ≤ 10.000), Seguida da largura l (1 ≤ l ≤ 10.000) E da profundidade p (1 ≤ p ≤ 10.000).
Saída
Seu programa deve imprimir uma única linha, contendo a letra ‘s’ caso a bola de boliche caiba dentro 
da caixa ou ‘n’ caso contrário
Exemplo
53
Análise e Desenvolvimento de Sistemas
 1º semestre
53
Entrada
3
3 2 5
Saída
N
Entrada
5
5 5 5
Saída
S
Entrada
9
15 9 10
Saída
S
(Problema 20) – conta1 - conta de água
A empresa local de abastecimento de água, a saneamento básico da cidade (sbc), está promovendo 
uma campanha de conservação de água, distribuindo cartilhas e promovendo ações demonstrando 
a importância da água para a vida e para o meio ambiente.
Para incentivar mais ainda a economia de água, a sbc alterou os preços de seu fornecimento de forma 
que, proporcionalmente, aqueles clientes que consumirem menos água paguem menos pelo metro 
cúbico. Todo cliente paga mensalmente uma assinatura de r$ 7, que inclui uma franquia de 10 m³ de 
água. Isto é, para qualquer consumo entre 0 e 10 m³, o consumidor paga a mesma quantia de r$ 7 
reais (note que o valor da assinatura deve ser pago mesmo que o consumidor não tenha consumido 
água). Acima de 10 m³ cada metro cúbico subsequente tem um valor diferente, dependendo da faixa 
de consumo. A sbc cobra apenas por quantidades inteiras de metros cúbicos consumidos. A tabela 
abaixo especifica o preço por metro cúbico para cada faixa de consumo:
Faixa de consumo (m³)
Preço (m³)
até 10 
11 a 30 
31 a 100 
101 em diante
incluído na franquia 
R$ 1 
R$ 2 
R$ 5
Assim, por exemplo, se o consumo foi de 120 m³ , o valor da conta é:
7 Reais da assinatura básica;
20 Reais pelo consumo no intervalo 11 - 30 m³;
140 Reais pelo consumo no intervalo 31 - 100 m³;
Lógica de Programação1º Semestre
54
100 Reais pelo consumo no intervalo 101 - 120 m³.
Logo o valor total da conta de água é r$ 267.
Tarefa
Escreva um programa que, dado o consumo de uma residência em m3 , calcula o valor da conta de 
água daquela residência.
Entrada
A única linha da entrada contém um único inteiro n, indicando o consumo de água da residência, 
em m³ (0 ≤ n ≤ 10³).
Saída
Seu programa deve imprimir uma única linha, contendo o valor da conta de água daquela residência.
Exemplo
Entrada
8
Saída
7
Entrada
14
Saída
11
Entrada
42
Saída
51
(Problema 21) – jpneu - pneu
Calibrar os pneus do carro deve ser uma tarefa cotidiana de todos os motoristas. Para isto, os postos 
de gasolina possuem uma bomba de ar. A maioria das bombas atuais são eletrônicas, permitindo 
que o motorista indique a pressão desejada num teclado. Ao ser ligada ao pneu, a bomba primeiro 
lê a pressão atual e calcula a diferença de pressão entre a desejada e a lida. Com esta diferença ela 
esvazia ou enche o pneu para chegar na pressão correta.
Sua ajuda foi requisitada para desenvolver o programa da próxima bomba da sbc - sistemas de 
bombas computadorizadas
Tarefa
Escreva um programa que, dada a pressão desejada digitada pelo motorista e a pressão do pneu lida 
pela bomba, indica a diferença entre a pressão desejada e a pressão lida.
Entrada
A primeira linha da entrada contém um inteiro n que indica a pressão desejada pelo motorista (1 ≤ 
n ≤ 40). A segunda linha contém um inteiro m que indica a pressão lida pela bomba (1 ≤ m ≤ 40).
Saída
Seu programa deve imprimir uma única linha, contendo a diferença entre a pressão desejada e a 
pressão lida.
Exemplo
Entrada
30
18
Saída
12
Entrada
27
27
Saída
0
55
Análise e Desenvolvimento de Sistemas
 1º semestre
55
Entrada
27
30
Saída
-3
Lógica de Programação1º Semestre
56
(Problema 22) – URI 1041
Leia 2 valores com uma casa decimal (x e y), que devem representar as coordenadas de um ponto em 
um plano. A seguir, determine qual o quadrante ao qual pertence o ponto, ou se está sobre um dos 
eixos cartesianos ou na origem (x = y = 0).
Se o ponto estiver na origem, escreva a mensagem “origem”.
Se o ponto estiver sobre um dos eixos escreva “eixo x” ou “eixo y”, conforme for a situação.
Entrada
A entrada contém as coordenadas de um ponto.
Saída
A saída deve apresentar o quadrante em que o ponto se encontra.
Exemplo de Entrada Exemplo de Saída
4.5 -2.2 Q4
0.1 0.1 Q1
0.0 0.0 Origem
57
Análise e Desenvolvimento de Sistemas
 1º semestre
57
(Problema 23) – URI 1038
Com base na tabela abaixo, escreva um programa que leia o código de um item e a quantidade deste 
item. A seguir, calcule e mostre o valor da conta a pagar.
Entrada
A entrada contém dois valores inteiros correspondentes ao código e à quantidade de um item 
conforme tabela acima.
Saída
A saída deve conter a mensagem “total: r$ “ seguido pelo valor a ser pago, com 2 casas após o pontodecimal.
Exemplo de Entrada Exemplo de Saída
3 2 Total: R$ 10.00
4 3 Total: R$ 6.00
2 3 Total: R$ 13.50
Lógica de Programação1º Semestre
58
Exercícios propostos
Quais das seguintes expressões são avaliadas como true?
(A) 10 >= 8 (b) 8 <= 10 (c) 10 == 8 (d) 10 != 8 (E) ‘8’ < ‘10’
 
Quais das seguintes expressões são avaliadas como true?
(A) ‘dave’ < ‘ed’ (b) ‘dave’ < ‘ed’ (c) ‘dave’ < ‘dale’
Qual é o valor da variável num após a seguinte execução?
>>> Num = 10
>>> Num = num + 5
>>> Num == 20
>>> Num = num + 1
Avalie as seguintes expressões lógicas usando as regras de precedência dos operadores:
(A) 10 >= 8 and 5 != 3 (B) 10 >= 8 and 5 == 3 or 14 < 5
Qual das seguintes expressões lógicas não é logicamente equivalente às outras duas?
(A) not(num <0 or num > 10) (b) num > 0 and num < 10 (c) num >= 0 and num <= 10
Determine os resultados obtidos na avaliação das expressões lógicas seguintes sabendo que a, 
b, c contém, respectivamente, 2, 7, 3.5, E que existem duas variáveis m e n cujos conteúdos são, 
respectivamente, false e true:
B == a * c and (m or n)
B > a or b == math.Pow(a,a)
M and b // a >= c or not a <= c
Not m or n and math.Sqrt(a + b) >= c
B/a == c or b/a != C
M or math.Pow(b,a) <= c * 10 + a * b
Escreva um programa que leia um número e apresente a raiz quadrada caso seja positivo ou nulo, e 
o quadrado do número caso seja negativo.
Elabore um programa que leia dois números reais e mostre o resultado da diferença do maior valor 
pelo menor.
Escreva um programa que leia um número inteiro de 3 dígitos e imprima se o algarismo da dezena 
é par ou ímpar.
Elabore um programa que leia notas de três avaliações de um aluno. A primeira avaliação tem peso 
2, a segunda tem peso 3 e, a terceira, peso 5. Calcule a média do aluno. Se a média do aluno for maior 
ou igual a 6, o aluno está aprovado; caso contrário, o aluno está reprovado. Mostre o resultado da 
decisão.
Um pescador comprou um computador para controlar o rendimento diário de seu trabalho. Toda vez 
que ele traz um peso de peixes maior que o estabelecido pelo regulamento de pesca do estado de 
são paulo (50 quilos), deve pagar uma multa de r$ 4,00 por quilo excedente. Escreva um programa 
que leia o peso de peixes, e verifique se há excesso. Se houver, determine o peso excedente e o valor 
da multa. Caso contrário, mostrar “dentro do regulamento”.
59
Análise e Desenvolvimento de Sistemas
 1º semestre
59
Encadeada
Considere o problema de conversão de temperatura: celsius para fahrenheit (usuário deve digitar 
“f”), fahrenheit para celsius (usuário deve digitar “c”) e a terceira possibilidade de digitar um valor 
inválido. Faça um programa que mostra a temperatura convertida ou uma mensagem de opção 
inválida.
Um posto de combustível vende três tipos de combustível: álcool, diesel e gasolina. O preço de cada 
litro dos combustíveis é apresentado na tabela abaixo. Faça um programa que leia um caracter que 
representa o tipo de combustível comprado (a, d ou g) e a quantidade em litros. O programa deve 
imprimir o valor em reais a ser pago pelo combustível.
Combustível Preço por Litro
A – Álcool 1,7997
D – Diesel 0,9798
G – Gasolina 2,1009
Um banco concederá um crédito especial aos seus clientes de acordo com o saldo médio no último 
ano. Receba o saldo médio de um cliente, calcule e mostre o valor do crédito, de acordo com a tabela 
a seguir. 
Saldo Médio Percentual
Acima de R$ 4.000,00 30% do saldo médio
De R$ 3.000,01 a R$ 4.000,00 25% do saldo médio
De R$ 2.000,01 a R$ 3.000,00 20% do saldo médio
Até R$ 2.000,00 10% do saldo médio
Escreva um programa que tendo como entrada o tipo do vôo (‘n’ para noturno / ‘d’ para diurno) e a 
quantidade de pessoas; calcula e mostra a tarifa e o total a pagar de acordo com as condições abaixo:
Lógica de Programação1º Semestre
60
Tipo de Vôo Quantidade Tarifa
Diurno
<= 50 R$ 200,00
> 50 R$ 120,00
Noturno
<= 50 R$ 100,00
> 50 R$ 80,00
Total a pagar = quantidade de pessoas x tarifa
Faça um programa para resolver o valor de f(x) dependendo da entrada do usuário.
Um endocrinologista deseja controlar a saúde de seus pacientes e, para isso, utiliza o índice de 
massa corpórea (imc). Sabendo-se que o imc é calculado através da seguinte fórmula: imc = peso/
(altura)2 , em que: peso é dado em kg e altura é dada em metros. Escreva um programa que, tendo 
do informação de entrada o peso e a altura, apresenta o imc da pessoa e sua faixa de risco, baseando-
se na seguinte tabela:
IMC Faixa de risco
Abaixo de 20 Abaixo do peso
A partir de 20 até 25 Normal
Acima de 25 até 30 Excesso de peso
Acima de 30 até 35 Obesidade
Acima de 35 Obesidade mórbida
61
Análise e Desenvolvimento de Sistemas
 1º semestre
61
Escreva um programa que recebe dois números, executa e mostra o resultado das operações listadas 
a seguir de acordo com a escolha do usuário.
Opção Operação
1 Média entre os números digitados
2 Diferença do maior pelo menor
3 Produto entre os números digitados
4 Divisão do primeiro pelo segundo
Se a opção digitada for inválida, mostrar uma mensagem de erro e encerrar a execução do programa. 
Lembre-se de que, na opção 4, o segundo número deve ser diferente de zero.
Um hospital precisa de um programa para calcular e imprimir os gastos de um paciente. A tabela de 
preços do hospital é a seguinte:
Quartos:
Particular – r$ 360,00
Semi-particular – r$ 210,00
Coletivo – r$ 185,00
Wifi: r$ 3,00
Tv a cabo: r$ 4,00
Escreva um programa que leia: o número de dias gastos no hospital; o tipo de quarto; se usou ou não 
o wifi (sim, não); se usou ou não a tv a cabo (sim, não). Então emita um relatório, como por exemplo 
o seguinte:
Hospital comunitário
Número de dias no hospital : 5
Tipo de quarto : particular
Diárias :............... R$ 1800,00
Wifi :..... ....... R$ 3,00
Tv a cabo :........... R$ 4,00
Total :................... R$ 1807,00
Faça um programa que tendo como dados de entrada o código de região de localização do cliente, 
o nome do cliente, o número de peças vendidas e o nome do vendedor; calcule e informe o valor do 
frete, a comissão do vendedor e o lucro obtido com a venda. Sabendo-se que:
O valor do frete depende da quantidade transportada e da região;
Comissão do vendedor = 6,5 % do valor total da venda;
Lucro = valor total venda – custo total – comissão do vendedor;
Custo por peça = r$ 7,00;
Custo total = custo por peça * número de peças vendidas;
Valor total da venda = custo total acrescido em 50%;
Lógica de Programação1º Semestre
62
Valor do frete por região:
Código da Região Nome da Região Valor do frete por peça
(até 1.000 peças)
R$
Valor do frete por peça
(acima de 1.000 peças)
R$
1 Sul 1,00 10%
2 Norte 1,10 8%
3 Leste 1,15 7%
4 Oeste 1,20 11%
5 Noroeste 1,25 15%
6 Sudeste 1,30 12%
7 Centro-Oeste 1,40 18%
8 Nordeste 1,35 15%
Deseja-se fazer uma pesquisa a respeito do consumo mensal de energia elétrica em uma determinada 
cidade. Para isso são fornecidos os seguintes dados: o preço de kw/hora consumido; para cada 
consumidor a sua identificação, a quantidade de kw/hora consumida durante o mês e o tipo de 
consumidor (industrial, comercial, residencial). 
Dependendo do tipo de consumidor a conta mensal sofre um acréscimo: industrial – 15% e comercial 
– 5% (residencial não tem acréscimo). 
O programa deverá calcular e exibir a conta mensal de cada consumidor igual a 0 (zero).
63
Análise e Desenvolvimento de Sistemas
 1º semestre
63
Capítulo 5 - estrutura 
de repetição ou laço 
indefinido - while
Lógica de Programação1º Semestre
64
5. Estrutura de repetição ou laço indefinido - while 
Introdução
Já vimos duas formas de controlar o fluxo de um programa: estrutura de controle sequencial, 
estrutura de controle de seleção ou condicional.
Estrturas de controle – fonte (dierbach)
Vamos iniciar as estruturas de repetição, também conhecidos por loop (laço) e iterativo, que, junto 
com as demais

Outros materiais