Notas de aulas Prof. Aluísio Eustáquio da Silva - Bem-vindo!adriano/aulas/lc/2015/Extras/... ·...
Transcript of Notas de aulas Prof. Aluísio Eustáquio da Silva - Bem-vindo!adriano/aulas/lc/2015/Extras/... ·...
i
Algoritmos
Notas de aulas
Prof. Aluísio Eustáquio da Silva
Betim, Fevereiro de 2012
ii
Sumário
Introdução ................................................................................................... 1
Objetivos .................................................................................................... 2
Objetivos gerais .......................................................................................... 2
Objetivos específicos .................................................................................. 2
Conceitos .................................................................................................... 2
Elementos básicos de um algoritmo ........................................................... 5
Dados ......................................................................................................... 5
Tipos de dados ........................................................................................... 5
Dados numéricos ....................................................................................... 5
Dados lógicos ............................................................................................. 6
Dados literais .............................................................................................. 6
Identificação de variáveis ........................................................................... 7
Declaração de variáveis .............................................................................. 8
Operadores ................................................................................................. 8
Operador de atribuição ............................................................................... 8
Operadores aritméticos ............................................................................... 9
Funções ...................................................................................................... 11
Algumas funções matemáticas ................................................................... 11
Comandos de entrada ................................................................................ 13
Comandos de saída ..................................................................................... 13
Comentários ................................................................................................ 14
Estrutura de um algoritmo .......................................................................... 15
Estruturas sequenciais ................................................................................ 16
Exemplo 1 – Calcular Massa corporal ....................................................... 16
Exemplo 2 - Converter Megabytes em Bytes ............................................ 17
Exemplo 3 - Calcular o salário a receber .................................................. 18
Exemplo 4 - Calcular descontos ................................................................ 19
Exemplo 5 - Simular Caixa Eletrônico ...................................................... 20
Exemplo 6 - Calcular área, perímetro e diagonal de um quadrado ........... 22
Exemplo 7 - Transformar graus em radianos ............................................ 23
Exemplo 8 - Transforma milhas náuticas em metros ................................ 24
Exemplo 9 – “Separar” os algarismos de um número inteiro .................... 25
Exemplo 10 – Calcular digito verificador do código de um produto ......... 26
iii
Lista de exercícios 1 ................................................................................... 27
Lista de exercícios 2 ................................................................................... 29
Lista de exercícios 3 ................................................................................... 31
Lista de exercícios 4 ................................................................................... 32
Estruturas condicionais ............................................................................... 33
Proposições ................................................................................................. 33
Operadores relacionais ............................................................................... 34
Operadores lógicos ..................................................................................... 35
Estruturas condicionais simples ................................................................. 36
Estruturas condicionais duplas ................................................................... 37
Exemplo 11 – Verificar se um número é positivo, negativo ou nulo ......... 38
Exemplo 12 – Verificar se uma pessoa é maior de idade ........................... 40
Exemplo 13 – Calcular a razão entre dois números ................................... 41
Exemplo 14 – Verificar se um número é divisível por 2 e 11 .................... 42
Exemplo 15 – Associar nome e telefone .................................................... 43
Exemplo 16 – Verificar tipo de caractere ................................................... 45
Lista de exercícios 5 ................................................................................... 46
Lista de exercícios 6 ................................................................................... 48
Estruturas de repetição ............................................................................... 49
Repetição com condição no início .............................................................. 49
Exemplo 17 – Escrever números ímpares .................................................. 50
Exemplo 18 – Calcular maior altura ........................................................... 51
Exemplo 19 – Apurar pesquisa .................................................................. 52
Exemplo 20 – Calcular tempo de desintegração de material radioativo .... 54
Estruturas de repetição com variável de controle ....................................... 55
Exemplo 21 – Tabuada de multiplicação ................................................... 55
Exemplo 22 – Soma dos N primeiros números inteiros ............................. 56
Exemplo 23 – Números palíndromos ......................................................... 57
Lista de exercícios 7 ................................................................................... 58
Lista de exercícios 8 ................................................................................... 59
1
ALGORITMOS
INTRODUÇÃO
O computador, fruto da evolução da matemática, eletrônica, telecomunicações e outras ciências, foi o
responsável por uma mudança radical do mundo moderno. As pessoas e as organizações dependem
totalmente do “ente” computador. Por trás de todos os serviços que utilizamos no dia a dia, como água,
energia elétrica, transporte, comunicações e sistemas públicos em geral, existem milhares de computadores
interligados. E cada vez mais a sociedade moderna precisa de “sistemas computacionais”.
Um sistema computacional é constituído de:
Hardware: que são os componentes físicos dos sistemas, tais como CPU, placa de rede,
teclado, mouse, monitor, pendrive, HD etc.
Software: são os programas, como editor de texto, planilha, gerenciador de banco de
dados, navegador de internet, compilador etc.
Peopleware: são as pessoas “no entorno” de um sistema computacional, seja como membro
de uma equipe de desenvolvimento, como responsável pela manutenção de um
sistema ou como usuário deste.
Este texto se destina ao ensino dos fundamentos das técnicas de programação de computadores,
portanto, se enquadra em duas das categorias acima: Software (programas) e Peopleware (desenvolvedor).
Um software é programa ou um conjunto de programas e um programa é um conjunto de comandos, escritos
numa dada linguagem (“Linguagem de Programação”) e executados por algum dispositivo tal como um
celular, um computador ou uma máquina. Em nosso curso, limitar-nos-emos a desenvolver programas que
serão executados em computador. Daí o termo consagrado “Programação de Computadores”, que já virou
título de livros, nome de disciplinas, e designação de cursos. Muitas vezes a programação de computadores é
confundida com o aprendizado de uma linguagem de programação, e realmente pode-se aprender
programação de computadores, utilizando uma linguagem de programação. Aliás, a Linguagem Pascal,
criada por Nicolau Wirth, na década de 70, tinha como um de seus objetivos, o ensino de programação de
computadores. Mas, existem metodologias e técnicas de programação que não dependem de uma linguagem
formal de programação. Utilizaremos neste texto a metodologia denominada de “Programação Estruturada”
com a técnica “Top-Down”, assim denominada por partir do simples para o complexo e por usar um
processo de refinamentos sucessivos. Para escrever programas de computador usaremos uma pseudo-
linguagem, composta de palavras-chaves, em língua portuguesa, operadores, funções e comandos,
organizados em estruturas apropriadas.
Segundo NYHOFF (1993), o desenvolvimento de programas de computadores exige arte e técnica.
Arte porque exige criatividade e capacidade de relacionar e generalizar. Técnica porque exige conhecimento
de metodologias de desenvolvimento de softwares eficientes, rápidos e robustos.
Para desenvolver um programa de computador é necessário:
● Analisar o problema que se quer resolver, definindo com clareza: os dados de entrada, o
processamento destes dados e a saída de resultados.
● Descrever em forma de texto, passo a passo, os comandos de entrada, o processamento dos
dados e a saída de resultados (Algoritmo).
● Codificar o algoritmo em uma linguagem de programação.
2
OBJETIVOS DESTE TEXTO
Este texto, é fruto de vários anos de experiência lecionando disciplinas básicas de programação de
computadores em cursos de Ciência da Computação, Sistemas de Informação, Matemática e
Engenharia.
OBJETIVOS GERAIS
● Complementar a bibliografia indicada.
● Facilitar o aprendizado de programação de computadores, usando exemplos simples e com nível
crescente de dificuldade.
OBJETIVOS ESPECÍFICOS
● Desenvolver técnicas de programação estruturada
● Abstrair da sintaxe das linguagens formais, focando apenas na lógica do programa
● Escrever programas de computador em forma algorítmica
● Criar algoritmos corretos e eficientes
A programação de computadores pode ser aprendida com o uso direto de uma linguagem de
programação, conforme foi dito acima. Mas a preocupação com a sintaxe ou a semântica da linguagem faz
com que o programador, muitas vezes, se desvie do foco principal que é a lógica do programa.
Este texto tem como objetivo principal desenvolver programas eficientes e corretos. Para que esse
objetivo seja alcançado as técnicas de desenvolvimento de algoritmos terão mais preocupação com a lógica
e correção do programa do que com o formalismo ou a rigidez da sintaxe.
ALGORITMOS
CONCEITOS
“Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, que podem ser
executada mecanicamente num período finito de tempo e com uma quantidade de esforço finita.
O conceito de algoritmo é frequentemente associado a uma receita culinária, embora muitos
algoritmos sejam mais complexos. Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais
como comparações lógicas) até que a tarefa seja completada.
Um algoritmo corretamente executado não irá resolver um problema se estiver implementado
incorretamente ou se não for apropriado ao problema.
Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos
necessários para realizar uma tarefa. Sua implementação pode ser feita por um computador, por outro tipo de
autômato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um
conjunto diferenciado de instruções em mais ou menos tempo, espaço ou esforço do que outros. Tal
diferença pode ser reflexo da complexidade computacional aplicada, que depende de estruturas de dados
adequadas ao algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que você vista primeiro
as meias e os sapatos antes de vestir a calça enquanto outro algoritmo especifica que você deve primeiro
vestir a calça e depois as meias e os sapatos. Fica claro que o primeiro algoritmo é mais difícil de ser
executado que o segundo apesar de ambos levarem ao mesmo resultado.”
(Wikipédia – 12/11/2011)
3
“Um programa de computador é essencialmente um algoritmo que diz ao computador os passos
específicos e em que ordem eles devem ser executados. Logo, o algoritmo pode ser considerado uma
sequência de ações a serem executadas por uma máquina.
Quando os procedimentos de um algoritmo envolvem o processamento de dados, a informação é lida
de uma fonte de entrada, processada e retornada sob novo valor, o que geralmente é realizado com o auxílio
de uma ou mais estrutura de dados.
Para qualquer processo computacional, o algoritmo precisa estar rigorosamente definido,
especificando a maneira como ele se comportará em todas as circunstâncias. A corretividade do algoritmo
pode ser provada matematicamente, bem como a quantidade de tempo e espaço (complexidade) necessários
para a sua execução. Estes aspectos dos algoritmos são alvo da análise de algoritmos.
A maneira mais simples de se pensar em um algoritmo é por uma lista de procedimentos bem
definidos, na qual as instruções são executadas passo a passo a partir do começo da lista. Tal formalização
adota as premissas da programação imperativa, que é uma forma mecânica para visualizar e desenvolver um
algoritmo. Concepções alternativas variam em programação funcional e programação lógica.
A maioria dos algoritmos é desenvolvida para ser implementada em um programa de computador.
Apesar disso eles também podem ser implementados por outros modos tais como uma rede neural biológica
(tal como no cérebro quando efetuamos operações aritméticas) em circuitos elétricos ou até mesmo em
dispositivos mecânicos.
Para programas de computador existe uma grande variedade de linguagens de programação, cada
uma com características específicas que podem facilitar a implementação de determinados algoritmos ou
atender a propósitos mais gerais.
Para que um computador faça qualquer coisa, é necessário “um programa de computador”. Para criar
um programa, é preciso informar ao computador, passo a passo, exatamente o que se espera que ele faça. O
computador então "executa" o programa, seguindo cada passo mecanicamente para atingir o objetivo final.
Quando se "diz" ao computador o que fazer, também se deve dizer como fazê-lo. É aí que entram os
algoritmos de computador. Algoritmo é a técnica básica usada para fazer o trabalho. Vamos acompanhar
um exemplo para ajudar a entender o conceito de algoritmo.
Digamos que você tem um amigo chegando ao aeroporto e ele precisa ir do aeroporto até sua casa.
Aqui estão quatro algoritmos diferentes que você poderia dar a seu amigo para ele chegue à sua casa:
O algoritmo do táxi:
1. Vá para o ponto de táxi
2. Entre em um táxi
3. Dê meu endereço ao motorista
O algoritmo "ligue-me":
1. Quando seu avião chegar, ligue para meu celular
2. Espere do lado de fora do terminal
O algoritmo "alugue um carro":
1. Pegue o circular até o aluguel de automóveis
2. Alugue um carro
3. Siga as instruções para chegar até minha casa
O algoritmo do ônibus:
1. Fora do terminal de bagagens, pegue o ônibus número 70
2. Faça uma baldeação para o ônibus 14 na Rua Dom Pedro
3. Desça na rua Aroeira
4. Ande duas quadras até minha casa
4
Todos esses quatro algoritmos atingem exatamente a mesma meta, mas cada um deles o faz de modo
completamente diferente. Cada algoritmo também possui um custo e um tempo de viagem, diferentes. O
táxi, por exemplo, é a maneira mais rápida e cara. Já o ônibus é definitivamente mais barato, mas bem mais
lento. Você escolhe o algoritmo com base nas circunstâncias.
Na programação de computadores, freqüentemente há diversos caminhos, ou algoritmos, para
cumprir qualquer tarefa determinada. “Cada algoritmo tem vantagens e desvantagens em situações
diferentes”. "HowStuffWorks - O que é um algoritmo de computador?".
Publicado em 05 de setembro de 2001 (atualizado em 05 de abril de 2007)
http://informatica.hsw.uol.com.br/questao717.htm (11 de dezembro de 2011)
Em Ciência da Computação, um Programa é uma sequência de comandos (instruções) numa dada
ordem e logicamente relacionados, escritos numa linguagem de programação e o Algoritmo é um “projeto”
desse programa, escrito numa pseudo-linguagem, linguagem essa, mais próxima da linguagem humana e,
geralmente, na própria língua do programador (no nosso caso, Português).
O termo algoritmo é derivado do nome do matemático árabe Abu Ja’far Mohammed ibn Musa al
Khowarizmi (825), que escreveu um livro com procedimentos para efetuar operações com números escritos
em algarismos indus (os algarismos do sistema de numeração decimal, conhecidos, hoje, como indu-
arábicos).
Atualmente o termo algoritmo é utilizado para descrever um procedimento passo a passo, para
resolver um problema qualquer. Vários cálculos matemáticos são feitos por processos práticos ou
algoritmos. Como exemplo, podemos citar o processo de determinação do máximo divisor comum (MDC)
de dois números inteiros, denominado Crivo de Eratóstenes, que pode ser descrito da seguinte forma:
Sejam dois inteiros A e B, A > B
● Divide-se A por B
● Toma-se o resto R, da divisão de A por B
● Faz-se A = B e B = R
● Repete-se o processo (primeiro item) até que R seja igual a zero, e, quando isso ocorrer, B
será o MDC.
Exemplo numérico: seja calcular o MDC de 28 e 48, pelo processo acima:
A = 48 e B = 28
Quociente 1 1 2 2
Valores 48 28 20 8 4
Resto 20 8 4 0
● A = 48 e B = 28; 48 / 28 = 1 e “sobra” um resto R = 20
● A = B e B = R ou seja, A = 28 e B = 20. 28 / 20 = 1 e sobra um resto R = 8
● A = B e B = R ou seja, A = 20 e B = 8. 20 / 8 = 2 e sobra um resto R = 4
● A = B e B = R ou seja, A = 8 e B = 4. 8 / 4 = 2 e sobra um resto R = 0
● MDC é o último valor de B, ou seja 4.
MDC (28, 48) = 4
5
“Todo problema de computação pode ser resolvido executando-se uma série de ações em uma ordem
específica. Um procedimento para resolver um problema em termos das ações a serem executadas e na
ordem em que essas ações devem ser executadas é chamado de algoritmo” (DEITEL, 2007).
Características de um algoritmo:
● Bem definido: apresentar com exatidão as instruções a serem executadas.
● Sem ambiguidade: cada ação deve ser executada de forma única
● Eficiente: apresentar o resultado previsto, minimizando o número de instruções e o tempo de
execução
● Finito: ter início e fim (Não entrar em “looping”)
● Possível de ser executado por um computador.
Um algoritmo é constituído de um conjunto de instruções, escritas em uma pseudo-linguagem, com
termos de uma linguagem comum e de alguns símbolos.
Um programa de computador é constituído, em geral, das seguintes fases:
● Entrada de dados
● Processamento
● Saída de resultados (Informação)
ELEMENTOS BÁSICOS DE UM ALGORITMO
DADOS (Variáveis e constantes)
Entes do mundo real são representados em programas de computador através de “dados”. Assim um
aluno pode ser representado num programa, por seu nome, um conjunto de caracteres, ou por seu número de
matrícula. O sexo de uma pessoa pode ser simbolizado no computador por um caractere, como por exemplo
“F” para feminino e “M” para masculino ou um número inteiro: 0 para feminino e 1 para masculino.
Uma variável é um endereço de memória para armazenar um tipo de dado, que pode ser modificado
durante a execução do programa. Cada tipo de variável tem um tamanho fixo e uma forma própria de ser
armazenada e de ser manipulada pelo programa onde é definida. Uma variável é identificada por um nome
e é associada a um endereço de memória.
Os valores que não podem ser alterados em um programa são denominados constantes.
TIPOS DE DADOS
Os principais tipos de dados, denominados Tipos Básicos, por constituírem a base de outros tipos de
dados mais complexos são: Numéricos, lógicos e literais.
NUMÉRICOS
Os tipos numéricos se dividem em inteiros e reais. Os inteiros são os valores numéricos que não
possuem parte fracionária e os reais são os valores numéricos que possuem parte inteira e fracionária.
Exemplos de números inteiros:
O número de alunos em uma dada sala de aula
A quantidade de pessoas que aderiu a um plano de saúde
6
O ano de nascimento de uma pessoa
O último dia do mês de fevereiro (28 ou 29)
O número das casas
A idade de um animal
Exemplos de números reais:
O peso de um objeto
A altura de um edifício
A extensão de uma rua
O preço de uma mercadoria
O valor de uma “Conta de água”
As dimensões de uma sala retangular
A medida de um ângulo
LÓGICOS
São tipos de dados que só podem assumir um dentre dois valores: verdadeiro ou falso. Este
tipo de variável é aplicado em situações antagônicas do tipo sim, não, ligado, desligado, aceso,
apagado, claro, escuro, sonoro, mudo, marcado, desmarcado, quente, frio etc.
Exemplos de valores lógicos:
Uma letra: é vogal ou não é vogal
Número primo: um número inteiro é primo ou não é primo
Sexo de um animal: macho ou fêmea
Dinheiro em um caixa eletrônico: tem ou não tem
Funcionamento de um banco: aberto ou fechado em um dado horário
Horário: antes ou depois do meio dia
Horário: dia ou noite
Tempo: chove ou não chove
Motor: ligado ou desligado
Lâmpada: acesa ou apagada
Porta: aberta ou fechada
Número inteiro: par ou ímpar
LITERAIS
São dados formados por cadeia (sequência) de caracteres, que serão chamados nos algoritmos
de literal (string, em inglês).
Exemplos de valores literais:
O nome de uma empresa
Um endereço
Os “números” de telefones
Os “números” de CPFs
Os “números” de RGs
Os “números” de RENAVAMs
7
Nos algoritmos desse texto usaremos os tipos de dados abaixo relacionados:
Tipos básicos de dados
(variáveis e constantes)
Designação nos algoritmos
Números inteiros inteiro
Números reais real
Seqüência de caracteres literal
Variáveis lógicas lógico
IDENTIFICAÇÃO DE VARIÁVEIS
Na Matemática uma variável é identificada por uma letra do nosso alfabeto, como por exemplo m, n,
p, q, r, x, y, z, t etc., ou uma letra grega como α, β, γ, δ, ε, θ, λ, π, ω, ϕ etc. Nos programas de
computador a identificação de uma variável é feita com um nome significativo, de acordo com a
função da mesma. Assim, usaremos a designação “Salario” para identificar, em um programa, a
variável que armazenará o salário de um funcionário e Nota1 e Nota2 as variáveis que armazenarão
duas notas de um aluno.
Adotaremos algumas convenções para identificar as variáveis de um programa. Algumas destas
convenções são obrigatórias em linguagens de programação e outras serão adotadas pela clareza e
padronização requeridas pela Ciência da Computação:
1. Todo identificador de variável se iniciará com uma letra de A a Z. Por convenção, iniciaremos
todo identificador com uma letra maiúscula, se esse possuir mais de um caractere, e os outros
caracteres serão minúsculos. Se possuir um único caractere, fica a cargo do programador,
identificá-lo com letra maiúscula ou minúscula.
Exemplos: Imposto, Sobrenome, Apelido, K3, Nota4, X, P, Xyz, x, Z etc.
2. O identificador de uma variável só poderá conter letras do alfabeto inglês (a a z ou A a Z),
algarismos indu-arábicos (0 a 9) e travessão, também denominado sublinha (underscore, em
inglês). Nenhum outro caractere é permitido.
Exemplos: Nome1, Nome2, Fim_Texto, Arquivo_Morto, Cateto_Oposto, Angulo_Reto
3. O identificador da variável deverá ser significativo (de acordo com a função no programa)
Exemplos: Desconto, Salario_Bruto, Desconto_IR, CNPJ, Peso, Largura, Milimetro etc.
4. Se o identificador de uma variável for formado com mais de uma palavra, cada palavra se iniciará
com letra maiúscula e essas serão separadas por um travessão.
Exemplos: Peso_Liquido, Lado_Maior, Menor_Valor, Respondeu_Sim, Posicao_Anterior,
Lugar_Fixo etc.
8
DECLARAÇÃO DE VARIÁVEIS
Toda variável em um programa só pode ser usada depois de declarada e a declaração de uma variável
é escrita da seguinte forma:
Tipo_de_variável Identificação_da_variável
Exemplos:
inteiro N, Idade, Numero_Habitantes, Contador, Maior_Valor
real Salario, Desconto, X, Altura, Hipotenusa, Angulo
lógico Achou, Idoso, Colorido, Alto, Ligado, Branco, Transparente, Teste
literal Aprovado, Letra, Status, Sexo, Porta, Nome_Funcionario, CPF, Telefone,
Empresa, Frase, Legenda, Bairro, Rua
OPERADORES
OPERADOR DE ATRIBUIÇÃO
Na Matemática usa-se o símbolo “ = “ em duas situações:
1. Para atribuir valor a uma variável
Exemplos: a = 1, b = -5 e c = 6
2. Para comparar dois valores
Exemplos: Se x = y, então x – y = 0
Em sistemas computacionais, como já dissemos anteriormente, uma instrução não pode ser ambígua,
isto é, não pode ter dupla interpretação. Portanto devemos usar um símbolo para atribuição de valor e outro
para comparar valores. Nos algoritmos usaremos o símbolo “” (seta para a esquerda) para atribuir valor e
“ = “ para comparar valores.
Exemplos
1. inteiro x
x 4
2. literal Nome
Nome “Maria Luiza de Almeida”
Observação: o valor de variáveis literais deve vir entre aspas
3. literal Sigla
Sigla “CNPJ”
4. real Soma
Soma 12.345
Observação: O ponto (.) separa a parte inteira da fracionária em um número real
5. lógico Achou
Achou falso
9
OPERADORES ARITMETICOS
As operações matemáticas básicas adição e subtração usam os símbolos + e -, respectivamente.
A operação de multiplicação tem várias notações. As expressões: ab, a.b, a x b têm o mesmo
significado: a multiplicado por b.
Da mesma forma bababab
a ,: ,/ , , significam a dividido por b.
Em sistemas computacionais só podemos usar um símbolo para cada operação. Para as quatro
operações básicas acima usaremos:
Operador Operação
+ Adição
- Subtração
* Multiplicação
/ Divisão
Usaremos também dois outros operadores:
1) Para a potenciação usaremos o símbolo “^”, circunflexo. a ^ b significa ab.
Por exemplo: 2 ^ 5, significa 2 elevado ao expoente 5.
2) Uma operação muito útil em sistemas computacionais e não usual na Matemática é o cálculo do
resto da divisão inteira.
Um programa clássico de uso dessa operação é o da contagem de notas numa retirada de
dinheiro em um caixa eletrônico. Vamos supor a retirada de R$ 215,00, em um caixa eletrônico,
com disponibilidade de notas de R$ 50,00, R$ 10,00 e R$ 5,00 . A primeira operação a ser feita é
o cálculo da quantidade de notas de 50 reais. 215 / 50 = 4 mais um resto de 15 reais. Depois a
quantidade de notas de R$ 10,00, 15 / 10 = 1 mais um resto de 5 reais. E finalmente a quantidade
de notas de R$ 5,00, 5 / 5 = 1 mais resto 0 (zero).
Portanto o valor a ser retirado consta de 4 notas de 50 reais, uma de 10 reais e uma de 5
reais.
Usaremos o termo “mod” para a operação “resto da divisão de inteiros”. Este também é o
símbolo usado em algumas linguagens de programação como a linguagem Pascal
Assim: 17 mod 6 = 5, que é o resto da divisão de 17 por 6.
18 mod 2 = 0, resto da divisão por 2
15 mod 20 = 15 (Por quê ?)
234abc7 mod 2 = 1, quaisquer que sejam os algarismos a, b e c. (Por quê ?)
^ Exponenciação
mod Resto da divisão inteira
10
Exemplos
Sejam os valores:
inteiro a, b,
real x, y, z
a 8
b 10
x 0.01
y 10,
Calcule:
a) c a + b * b – (a * b)
b) z (y ^ 2) / 5 – 100 * x
c) k 99 mod (b mod a)
Solução matemática
a) c = 8 + 10 x 10 – (8 x 10)
= 8 + 100 - 80
= 108 – 80
= 28
b) z = 102 / 5 – 100 x 0,01
= 100 / 5 – 1
= 20 – 1
= 19
c) k = Resto(99 / Resto(10 / 8))
= Resto(99 / 2)
= 1
11
FUNÇÕES
ALGUMAS FUNÇÕES MATEMÁTICAS
Matematicamente, função é a relação, entre dois conjuntos, que associa a todo elemento de
um conjunto A um único elemento de um conjunto B.
As funções, em matemática, têm como objetos (domínio e imagem) os conjuntos numéricos.
Exemplos:
1. 4)( 2 xxf
é uma função cujo domínio é o conjunto dos números reais e cuja imagem é o conjunto do
números reais maiores ou iguais a 2.
2. f(x) = | x |
é uma função cujo domínio é o conjunto dos números reais e cuja imagem é o conjunto do
números reais maiores ou iguais a 0 (função modular ou função valor absoluto).
3.
2 n se ),1(
2 n se ,1)(
nnfnf
Esta função é denominada Função Fatorial, e é definida de forma recursiva (faz referência a
si própria) para números inteiros não negativos (função discreta). Usa-se o sinal de
exclamação (!) como notação dessa função.
12
Relacionamos abaixo algumas funções matemáticas e as correspondentes formas que usaremos nos
algoritmos.
Matemática Função Algoritmos
|x| Módulo ou valor absoluto Abs(x) ou abs(x)
Raiz quadrada Raiz(x) ou raiz(x)
a elevado à potência x a ^ x
ln x Logaritmo neperiano (base e = 2,71828) Ln(x) ou ln(x)
log x Logaritmo decimal Log(x) ou log(x)
sen x Seno do arco x Sen(x) ou sen(x)
cos x Cosseno do arco x Cos(x) ou cos(x)
tg x Tangente do arco x Tg(x) ou tg(x)
arcsen x Arco seno de x ArcoSen(x) ou arcsen(x)
arccos x Arco cosseno de x ArcoCos(x) ou arccos(x)
arctg x Arco tangente de x ArcoTg(x) ou arctg(x)
OUTRAS FUNÇÕES
Parte inteira de um número real x Inteiro(x) ou Int(x) ou int(x)
Parte fracionária de um número real x Frac(x) ou frac(x)
Arredondamento de x Arredonda(x) ou arredonda(x)
13
COMANDOS DE ENTRADA
Programas de computadores processam dados que podem ser gerados dentro do próprio programa ou
podem vir de dispositivos externos. Neste texto vamos supor a entrada de dados externos pelo teclado. A
entrada de dados será feita com o comando: leia (variáveis).
O comando leia obtém o valor de um dado do teclado e esse valor é atribuído à variável cujo
identificador está entre parênteses. Portanto o comando leia tem duas funções: ler um dado digitado no
teclado e atribuir o valor deste dado à variável cujo identificador aparece na frente do comando.
Exemplos
inteiro Idade
leia (Idade)
real Peso
leia (Peso)
literal Nome
leia (Nome)
ou leia (Idade, Peso, Nome)
COMANDO DE SAÍDA
Um programa pode não ter entrada de dados, pois os dados podem ser gerados dentro do próprio
programa, mas não existe programa que não apresente um resultado ou uma informação. A saída de
resultados ou de informação será feita com o comando: escreva (“expressão literal” e/ou expressão e/ou
valor).
Exemplos
inteiro Quantidade
real Preco, Total
leia (Quantidade, Preco)
Total Quantidade * Preco
escreva (Quantidade, Preco, Total)
14
COMENTÁRIOS
Comentários são textos introduzidos nos programas para torná-los mais claros. Podemos usar um
comentário, dentre outros objetivos, para explicar o significado de uma variável, esclarecer um trecho do
programa ou documentar um programa. Nos algoritmos, para definirmos os comentários, usaremos os
mesmos símbolos utilizados nas linguagens C# (lê-se: C charp) e C++ (lê-se: C mais mais), ou seja:
1. // para comentários de uma linha
O texto escrito após // será considerado um comentário
2. E para comentários multilinhas
/*
texto
*/
Todo o texto entre os símbolos “ /* */ “ é um comentário.
Exemplo
//Cabeçalho
//Algoritmo para somar duas notas
//Programador: Pedro Carlos Lisboa
//20/11/2011
Algoritmo //Inicio do algoritmo
inteiro Nota1, Nota2 //duas notas de um aluno
inteiro Soma //Variável para acumular a soma das duas notas
//Entrada de dados
leia (Nota1, Nota2)
//Processamento
Soma Nota1 + Nota2
//Saída de resultados
escreva (Soma)
Fim do algoritmo //Fim do algoritmo
O cabeçalho acima poderia ser escrito como um comentário multilinhas, da seguinte forma:
/*
Algoritmo Algoritmo somar duas notas
Programador: Pedro Carlos Lisboa
20/11/2011
*/
15
ESTRUTURA DE UM ALGORITMO
No texto acima os diversos componentes de um algoritmo foram vistos de forma isolada.
Passaremos, a escrever algoritmos completos, com todos os componentes básicos interligados.
Adotaremos alguns padrões, não obrigatórios, para tornar os algoritmos simples, legíveis e
funcionais:
Todo algoritmo começará com um comentário onde ficará expresso de forma bem clara qual é o
objetivo do mesmo, quem o desenvolveu e a data de elaboração.
Os comandos (instruções) de um algoritmo serão delimitados pelas palavras Algoritmo e Fim do
algoritmo.
As instruções do algoritmo serão escritas, uma por linha
Cada linha será alinhada à esquerda, com espaços, “endentações”, nas estruturas de um mesmo nível.
As palavras chaves do algoritmo, como leia, escreva e outras, serão escritas com letras minúsculas
Todo identificador de variável que tiver mais de um caractere se iniciará com letra maiúscula
Os identificadores compostos terão cada palavra iniciada com letra maiúscula e separadas por
travessão (underline).
Exemplo:
// Algoritmo para resolver equação do primeiro grau
// Programador: Nome do programador
// DD/MM/AAAA
Algoritmo
real a, b, x
leia (a, b)
se (a ≠ 0)
x -b/a
escreva (x)
fim se
Fim do algoritmo
16
ESTRUTURAS SEQUENCIAIS
De acordo com a sequência das ações executadas por um programa, suas estruturas podem ser
classificadas em Estruturas Sequenciais, Condicionais ou de Repetição. Nas estruturas sequenciais os
comandos serão executados na ordem em que aparecem, linha por linha, de cima para baixo. Nas estruturas
condicionais os comandos são executados ou não, dependendo de certas condições verdadeiras ou falsas. E
as estruturas de repetição, as que formam sequências repetitivas de comandos dependentes de condições
verdadeiras ou falsas. Os programas abaixo farão uso apenas de estruturas sequenciais, isto é, sem estruturas
condicionais ou de repetição. Portanto não serão feitos testes de validação de dados, operações ou de
impressão de resultados.
Usaremos com o mesmo significado os termos escreva ou imprima.
Análise do problema
Pelo teclado o usuário deve digitar o peso e a altura de uma pessoa. O algoritmo deve calcular a
massa corporal usando a fórmula dada e posteriormente imprimir o resultado.
As variáveis usadas são: Peso, Altura e Massa_Corporal
/*
Cálculo de massa corporal
Data: DD/MM/AAAA
Programador:
*/
Algoritmo
//Declaração de variáveis
real Peso, //Peso da pessoa em kg
Altura, //Altura da pessoa em m
Massa_Corporal //Massa corporal (sem dimensão)
//Entrada de dados
leia (Peso, Altura)
//Processamento
Massa_Corporal Peso /(Altura * Altura)
//Saída de resultados
escreva (Massa_Corporal)
Fim do algoritmo
1. Escreva um algoritmo que leia do teclado o valor de duas variáveis, o peso (kg) e a altura (m) de
uma pessoa, calcule e escreva a massa corporal dessa pessoa usando a fórmula:
17
Análise do problema
Como 1 GB corresponde a 1024 MB, 1 MB corresponde a 1024 KB e 1KB equivale a 1024
Bytes, para se transformar uma 1 gigabytes em bytes deve-se multiplicar a unidade em gigabytes
por 1024 x 1024 x 1024 ou 2^30.
Portanto 1GB = (1024 x 1024 x 1024) bytes ou 1 GB = 2 ^ 30 bytes
/*
Programa para transformar Gigabytes em Bytes
Programador: ...
Data:DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Giga, Byte
//Entrada de dados
leia (Giga)
//Processamento
Byte Giga * 1024 * 1024 * 1024
//Saída de resultados
escreva (Byte)
Fim algoritmo
2. Algoritmo para ler a capacidade de armazenamento de um Pendrive, em Gigabytes, calcular e escrever
sua capacidade em bytes.
18
Análise do problema
O usuário deve digitar o valor da hora de trabalho e o número de horas trabalhadas. O algoritmo
determina o valor a receber multiplicando o valor da hora trabalhada pelo número de horas de
trabalho. O resultado é impresso na tela.
/*
Programa para calcular salário
Programador:
Data:
*/
Algoritmo
//Declaração de variáveis
inteiro Numero_Horas
real Valor_Hora, Salario
//Entrada de dados
leia (Valor_Hora, Numero_Horas)
//Processamento
Salario Valor_Hora * Numero_Horas
//Saída de resultados
escreva (Salario)
Fim do algoritmo
3. Escreva um algoritmo que leia o valor da hora de trabalho de um operário e o número de horas
trabalhadas no mês.
Calcule e escreva o valor a receber.
4.
19
Análise do problema
O valor de um desconto é calculado pela fórmula:
Desconto = (Preço * Percentual_de_Desconto) / 100
O Novo Preço corresponde ao preço primitivo menos o desconto
/*
Programa para calcular descontos em mercadorias
Programador:
DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
real Preco, Desconto_5, Desconto_7, Desconto_10,
Novo_Preco_5, Novo_Preco_7, Novo_Preco_10
//Entrada de dados
leia (Preco)
//Processamento
Desconto_5 (Preco * 5) / 100 //Desconto de 5%
Desconto_7 (Preco * 7) / 100 //Desconto de 7%
Desconto_10 (Preco * 10) / 100 //Desconto de 10%
Novo_Preco_5 Preco - Desconto_5 //Preco menos desconto de 5%
Novo_Preco_7 Preco - Desconto_7 // Preco menos desconto de 7%
Novo_Preco_10 Preco – Desconto_10 / Preco menos desconto de 10%
//Saída de resultados
Escreva (Preco,Desconto_5,Desconto_7,Desconto_10,Novo_Preco_5,Novo_Preco_7,
Novo_Preco_10)
Fim do algoritmo
4. Escreva um programa que leia o preço de uma mercadoria.
Calcule e armazene em outras variáveis descontos de 5%, 7% e 10% sobre esse preço.
Escreva o preço, os descontos e os novos preços.
20
Análise do problema
O usuário deve digitar o valor desejado (múltiplo de 5).
Seja por exemplo: Valor_Desejado = R$ 185,00
O número de notas de R$ 50,00 corresponde ao número inteiro obtido pela divisão do valor
desejado por 50, ou seja:
Notas_50 = inteiro (185 / 50)
= 3
O número de notas de R$ 20,00 será o quociente inteiro da divisão do resto da divisão do valor
desejado por 50.
No exemplo dado:
R = Resto(185, 50)
= 35
Notas_20 = inteiro(R / 20)
= inteiro (35 / 20)
= 1
Obtém-se novo resto.
R = Resto(R, 20)
= Resto (35, 20)
= 15
O número de notas de R$ 10,00 será o quociente inteiro da divisão desse resto por 10.
Notas_10 = inteiro(R / 20)
= inteiro(15 / 10)
= 1
O número de notas de R$ 5,00 será o resto dessa última divisão, dividido por 5.
R = Resto (15, 10)
Notas_5 = inteiro (R / 5)
= 1
5. Escreva um programa que simule um caixa eletrônico, com notas de R$ 50,00, R$ 20,00,
R$ 10,00 e R$ 5,00. O usuário deve solicitar a quantia a ser retirada no caixa eletrônico e o
programa deve calcular e imprimir a quantidade de notas de R$ 50,00, R$ 20,00, R$ 10,00 e R$
5,00, nessa ordem. Suponha que o usuário digite o valor correto (múltiplo de 5).
21
/*
Programa para simular um caixa eletrônico
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Valor, Nota_5, Nota_10, Nota_20, Nota_50, Resto
//Entrada de dados
leia (Valor) //Valor a ser retirado no caixa eletrônico
//Processamento
Nota_50 ← Inteiro(Valor / 50) //Cálculo da quantidade de notas de 50 reais
Resto ← Valor mod 50 //Cálculo do resto da divisão do valor digitado por 50
Nota_20 ← Inteiro (Resto / 20) // Cálculo da quantidade de notas de 20 reais
Resto ← Resto mod 20 //Cálculo do resto da divisão do resto anterior por 20
Nota_10 ← Inteiro (Resto / 10) //Cálculo da quantidade de notas de 10 reais
Resto ← Resto mod 10 //Cálculo do resto da divisão do resto anterior por 10
Nota_5 ← Inteiro (Resto / 10) //Cálculo da quantidade de notas de 5 reais
//Saída de resultados
escreva (Nota_5, Nota_10, Nota_20, Nota_50)
Fim do algoritmo
22
Análise do problema
A área, perímetro e diagonal de um quadrado são calculados pelas fórmulas:
=
/*
Programa para calcular a área, o perímetro e a diagonal de um quadrado, dado o lado
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
real Lado, Area, Diagonal, Perimetro
//Entrada de dados
leia (Lado) //Medida do lado do quadrado
//Processamento
Area Lado * Lado //Cálculo da area
Diagonal ← Raiz(Lado * Lado + Lado * Lado) //Cálculo da diagonal
Perimetro ← 4 * Lado // Cálculo do perímetro
//Saída de resultados
escreva (Area, Diagonal, Perimetro)
Fim do algoritmo
6. Escreva um programa para calcular a área, o perímetro e a diagonal de um quadrado, dado o lado
(lido do teclado).
23
Análise do problema
Para a transformar graus em radianos ou radianos em graus usa-se a relação:
/*
Transformar a medida de um arco de graus para radianos
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
real Graus, Radianos
real PI ← 3.141592 //Valor de
//Entrada de dados
leia (Graus)
//Processamento
Radianos ← (Graus * PI) / 180 //Fórmula dada acima
//Saída de resultados
escreva (Radianos)
Fim do algoritmo
7. Escreva um programa para transformar a medida de um arco de graus para radianos.
24
Análise do problema
1 milha náutica = 1852 metros
Ler a medida em milhas. Multiplicar a medida por 1852. Escrever o resultado.
/*
Transformar milhas náuticas em metros
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
real Milhas, Metros
//Entrada de dados
leia (Milhas)
//Processamento
Metros ← Milhas * 1852
//Saída de resultados
escreva (Milhas, “milhas = “, Metros, “ metros”)
Fim do algoritmo
8. Escreva um programa para transformar milhas náuticas em metros.
25
Análise do problema
Seja, por exemplo, o número N = 3456. Cada algarismo pode ser obtido da seguinte forma:
Algarismo das unidades = Resto (N, 10)
Unidades = 6
Algarismo das dezenas = Resto (Inteiro (N / 10), 10)
Dezenas = Resto (345, 10) = 5
Algarismo das centenas = Resto (Inteiro (N / 100), 10)
Centenas = Resto (34, 10) = 4
Algarismo das milhares = Inteiro (N / 1000)
Milhares = 3
/*
Separar os algarismos de um número de 4 algarismos
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Numero, Unidades, Dezenas, Centenas, Milhares
//Entrada de dados
leia (Numero)
//Processamento
Unidades ← Numero mod 10
Dezenas ← Inteiro(Numero / 10) mod 10
Centenas ← Inteiro (Numero / 100) mod 10
Milhares ← Inteiro (Numero / 1000)
//Saída de resultados
escreva (Numero, Unidades, Dezenas, Centenas, Milhares)
Fim do algoritmo
9. Escreva um programa para ler do teclado um número inteiro de 4 algarismos e separar os
algarismos das unidades, das dezenas, das centenas e das milhares.
26
Análise do problema
Separar cada algarismo usando o processo do algoritmo anterior.
Aplicar a fórmula dada acima.
Escrever o resultado
/*
Calcular digito verificador
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Numero, Unidades, Dezenas, Centenas, Milhares, Digito
//Entrada de dados
leia (Numero)
//Processamento
//Usar o processo do problema anterior
Unidades ← Numero mod 10
Dezenas ← (Numero / 10) mod 10
Centenas ← (Numero / 100) mod 10
Milhares ← Numero / 1000
Digito ← (9 * Unidades + 7 * Dezenas + 5 * Centenas + 3 * Milhares) mod 10
//Saída de resultados
escreva (Numero, Digito)
Fim do algoritmo
10. O dígito verificador do código de 4 algarismos de cada produto de uma loja de informática, é calculado da
seguinte forma:
S = 9 * Algarismo_Unidades + 7 * Algarismo_Dezenas + 5 * Algarismo_Centenas + 3 * Algarismo_Milhares
Digito = Resto(S, 10)
Escreva um programa que leia o código de um produto, calcule e escreva o dígito verificador, usando a regra
acima.
27
Lista de Exercícios 01
Em todos os exercícios abaixo a entrada de dados (leitura) será pelo teclado e a saída de resultados
(impressão) na tela.
Escrever um algoritmo para:
1. Imprimir seu nome e endereço.
2. Ler o nome e o sobrenome de uma pessoa.
Imprimir o sobrenome, uma vírgula, um espaço e o nome da pessoa.
3. Calcular e escrever o valor de um “troco”, lendo o valor da compra e o valor “dado” pelo comprador.
4. Calcular e escrever o valor, em reais, “apurado” em um “cofrinho”.
Ler a quantidade de moedas de um real, 50 centavos, 25 centavos, 10 centavos, 5 centavos e um centavo.
5. Ler dois números reais x e y, calcular e imprimir:
A soma desses valores
A diferença entre x e y e entre y e x
O produto de x e y
O quociente entre x e y e entre y e x (os números x e y devem ser diferentes de zero)
6. Ler as medidas dos lados de um retângulo, calcular e escrever:
O perímetro
A área
A diagonal desse retângulo.
7. Ler:
O número de horas trabalhadas por um funcionário de uma empresa
O valor da hora de trabalho, em reais
O percentual de descontos de INSS
O percentual de descontos de Imposto de Renda
Calcular e escrever:
O salário bruto
O valor do desconto de INSS
O valor do desconto de Imposto de Renda
O salário líquido
8. Armazenar em uma constante o valor do quilowatt hora de energia elétrica residencial fornecida por uma
empresa de Energia Elétrica.
Ler o número registrado no medidor de uma residência em dois meses consecutivos.
Calcular e escrever o consumo registrado e o valor a pagar pela conta de energia elétrica no período
acima.
28
9. Ler o salário de um funcionário e o percentual de aumento que terá.
Calcular e imprimir: o salário atual, o percentual de aumento e o novo salário.
10. Sabe-se que os produtos de um supermercado são codificados com números inteiros de 100 a 999 e mais
um dígito verificador X assim calculado X = Resto( (Código * 1357), 10).
Ler o código de um produto, determinar o seu dígito verificador.
Escrever o código digitado e o dígito verificador calculado.
29
Lista de Exercícios 02
Escrever um algoritmo que:
1. Leia um número real x, calcule e escreva f(x), sendo
2. Leia a idade de uma pessoa.
Leia o ano do último aniversário dessa pessoa.
Calcule e escreva o ano de nascimento dessa pessoa.
3. Leia o diâmetro de uma esfera, calcule e imprima:
● A área da superfície esférica
● O volume da esfera
4. Leia a medida do raio do piso circular de uma sala.
Calcule e escreva a medida do perímetro e da área do piso dessa sala.
5. Leia os elementos (números reais) de uma matriz 2 x 2.
Calcule e escreva o determinante dessa matriz.
6. Leia o valor da medida do lado do quadrado da figura abaixo.
Calcule e escreva a medida da área fora do círculo e dentro do quadrado (área sombreada).
7. Leia uma medida em polegadas, na forma: numerador e denominador (dois valores inteiros).
Calcule e escreva a medida correspondente em milímetros.
Observação: 1” = 25,4 mm
Medidas em polegadas são dadas na forma:
30
8. Leia uma medida de ângulo em graus.
Calcule e escreva a medida correspondente em radianos.
Observação: use a proporção:
9. Leia uma medida de ângulo em graus.
Converta essa medida para radianos.
Calcule e escreva o seno, o cosseno e a tangente desse ângulo.
10. Leia a medida do raio da base e da altura, em metros, de uma caixa d’água, em forma de cilindro
circular reto,
Calcule e escreva o volume dessa caixa d’água, em litros.
31
Lista de Exercícios 03
Escrever um algoritmo que:
1. Leia uma temperatura em graus Fahrenheit.
Calcule e escreva a temperatura correspondente, em graus Celsius.
2. Solicite ao usuário que digite uma temperatura em graus Celsius.
Determine o valor dessa temperatura em graus Fahrenheit.
Escreva o valor da temperatura nas duas unidades.
3. Leia a cotação atual do dólar (real).
Leia um valor em dólar.
Converta o valor lido para reais.
Escreva o valor em dólar e em real.
4. O cálculo do valor da prestação mensal do pagamento de um financiamento é dado pela fórmula:
parcelas de número t e financiadoValor VF
juros de mensal taxa Taxa 100), / Taxa (1 k prestação, P sendo
1
)1(
tk
kVFP
Escreva um algoritmo que:
● Leia o valor a financiar
● Leia o valor da taxa mensal de juros
● Leia o número de parcelas
● Calcule e imprima o valor de cada parcela
5. Leia as coordenadas de dois pontos, A e B, do plano.
Calcule e escreva a distância entre A e B.
6. Leia uma medida em milhas terrestres.
Calcule e escreva a medida correspondente em metros.
7. Leia a base e a altura de um triângulo.
Calcule e escreva a área do mesmo.
8. Leia o número de lados de um polígono convexo.
Calcule e escreva o número de diagonais desse polígono.
9. Leia uma hora (uma variável para horas e outra para minutos).
Converta e escreva essa hora em segundos.
10. Leia a cotação do dólar em reais.
Faça uma tabela com os valores abaixo em dólar e em reais.
Valores em dólar: 1, 2, 5, 10, 20, 50, 100, 500 e 1000.
32
Lista de Exercícios 04
Escrever um algoritmo que:
1. Leia as coordenadas de dois pontos A e B, do plano.
Calcule e escreva as coordenadas do ponto médio do segmento AB.
2. Leia as medidas dos três lados de um triângulo (Suponha medidas válidas).
Calcule e escreva a área do mesmo.
sendo
3. Leia as medidas dos catetos de um triângulo retângulo.
Calcule a medida da hipotenusa.
Escreva as medidas dos catetos e da hipotenusa.
4. Leia as medidas dos lados de um triângulo qualquer.
Calcule as alturas relativas a cada lado.
Escreva as medidas dos lados e das alturas.
Obs. A altura relativa ao lado a pode ser calculada pela fórmula:
5. Uma herança em dinheiro foi dividida entre três irmãos, em partes diretamente proporcionais
à idade de cada um.
Escreva um algoritmo que solicite ao usuário que digite o valor da herança e a idade de cada irmão.
Calcule o valor que caberá a cada irmão.
Escreva o valor da herança, as idades e o valor que caberá a cada irmão.
6. Uma liga metálica é composta de 30% de níquel e 70% de cobre.
Escreva um algoritmo que solicite ao usuário que digite a quantidade de liga que se pretende
obter, em quilogramas.
Determine a quantidade de cada um dos componentes da liga.
Escreva a quantidade de liga e de cada um de seus componentes.
7. Solicite ao usuário que digite o raio da base e a altura, em metros, de uma caixa d’água cilíndrica.
Calcule o volume dessa caixa.
Escreva o raio da base, a altura e o volume dessa caixa d’água, em litros.
8. Solicite ao usuário que digite a velocidade de um automóvel, em quilômetros por hora.
Calcule essa velocidade em m/seg.
Escreva as duas velocidades.
9. Leia a medida do lado de um hexágono regular.
Calcule e escreva sua área.
10. Calcule e escreva na tela 5%, 10%, 15% e 25% do salário mínimo.
33
ESTRUTURAS CONDICIONAIS
Todos os algoritmos feitos até agora executaram apenas uma sequência de ações, uma após a outra,
em uma ordem pré-estabelecida seguindo o padrão:
Declaração de variáveis
Entrada de dados pelo teclado, sem validação dos mesmos
Processamento sequencial (sem desvios ou repetições)
Impressão de valores na tela
Nos próximos programas introduziremos comandos para controlar a ordem e o número de vezes que
uma tarefa deve ser executa.
No nosso cotidiano verificamos varias situações em que uma determinada ação é
condicionada a determinados fatores. Vejamos alguns exemplos:
Na elaboração do “Contra cheque” dos funcionários de uma empresa, o desconto de imposto
de renda depende da faixa salarial de cada funcionário.
O cálculo do desconto a ser oferecido por uma loja depende da forma de pagamento: a vista,
a prazo, com cartão de débito ou cartão de crédito.
A dosagem de alguns medicamentos depende do peso da pessoa que vai usá-lo.
A classificação de um time num campeonato de futebol depende do número de vitórias,
empates, gols marcados, gols sofridos e resultado nos confrontos diretos, no caso de empate
na classificação.
Nos programas de computadores as ações dependentes de certas condições formão um bloco
de comandos denominado “Estrutura condicional”. As linguagens de programação oferecem
muitas opções de estruturas condicionais, mas nesse estudo de algoritmos usaremos apenas dois
tipos para que o enfoque seja “a lógica de programação” e não as diversas formas de especificar
uma estrutura.
Antes de estudarmos as estruturas condicionais vamos fazer uma breve exposição sobre a lógica
proposicional.
PROPOSIÇÃO
As estruturas condicionais fazem uso de proposições, que são sentenças declarativas cujo resultado é
verdadeiro ou falso.
Exemplo de proposições:
João é alto.
Ontem choveu.
A telefonia celular da empresa X é eficiente.
O número de habitantes de São Paulo é superior a vinte milhões.
Betim recicla lixo.
O telefone da empresa ZZ é 31-3210-4567
O Shopping Betim abre as portas às 10 horas
O CPF 123.456.789-10 não é válido
(-3) x (-7) > 0
34
As proposições são escritas, em geral, com dois tipos de operadores: Operadores Relacionais
e Operadores Lógicos.
OPERADORES RELACIONAIS
São operadores que estabelecem uma relação entre dois operandos gerando um resultado
verdadeiro ou falso. Nos algoritmos, por questão de simplicidade, sem deixar de lado o rigor
científico, usaremos os mesmos operadores relacionais da Matemática, ou seja:
Matemática
Operador
Significado Algoritmo
Símbolo utilizado
= igual a =
≠ diferente de ≠
> maior que >
< menor que <
≤ menor ou igual a ≤ ou <=
≥ maior ou igual a ≥ ou >=
Exemplos:
4 = 2 + 2 Verdadeiro
6 ≠ (1 + 2 + 3) Falso
7 > (3 + 4) Falso
-5 < 0 Verdadeiro
3 ≤ (1 + 1 + 1) Verdadeiro
4 ≥ (4 - (-4)) Falso
“Ana Maria” = “Anamaria” Falso
“Mario” > “Maria” Verdadeiro
“a” < “A” Falso
35
As três últimas linhas estabelecem uma relação entre expressões literais. Para que os sistemas
computacionais possam estabelecer uma “relação de ordem” entre os caracteres de um texto, foram
criadas tabelas onde cada caractere recebe uma codificação numérica. As tabelas mais utilizadas são
a Tabela ASCII e a Tabela UNICODE. Nessas tabelas os caracteres têm um código numérico que os
identifica de forma única.
A Tabela ASCII codifica os caracteres de 0 a 255. Os caracteres de 0 a 31 são caracteres de controle,
como por exemplo: “beep” - número 7; “fim de uma linha de texto” – número 10; “enter” – número
13. Os códigos de 32 a 127 representam os caracteres utilizados na língua inglesa, como por
exemplo:
48 a 57: “0” a “9”:
64: “@”
65 a 90: “A” a “Z”
97 a 122: “a” a “z”
Cada linguagem de programação adota uma tabela para ordenar caracteres. Num sistema que
use a Tabela ASCII o caractere “a” tem código numérico 97 e o caractere “A” tem código numérico 65.
Por essa razão a última linha da tabela acima resultou em valor falso (97 < 65).
Nessa apostila adotaremos a Tabela ASCII como padrão.
OPERADORES LÓGICOS
São operadores que estabelecem uma “conexão” entre expressões lógicas.
Usaremos três operadores lógicos: NÃO, OU e E.
O operador NÃO tem apenas um operando, o OU e o E têm dois operandos. Esses
operadores produzem um resultado lógico (verdadeiro ou falso) e são representados também, pelos
símbolos:
NÃO „ (apóstrofo)
E ^
OU
Exemplo
Sejam duas proposições, simbolizadas pelas letras p e q:
p = fala inglês
q = fala espanhol
O uso de tabelas facilita o entendimento dos operadores lógicos:
Operador NÃO
fala inglês NÃO fala inglês
V F
F V
36
Ou de forma simbólica
Operador E
fala inglês
p
fala espanhol
q
fala inglês E fala espanhol
p ^ q
V V V
V F F
F V F
F F F
Operador OU
fala inglês
p
fala espanhol
q
fala inglês OU fala espanhol
p q
V V V
V F V
F V V
F F F
Generalizando
Sejam duas proposições quaisquer p e q
p q p’ p q p ^ q
V V F V V
V F F V F
F V V V F
F F V F F
ESTRUTURAS CONDICIONAIS SIMPLES
Notação
se (condição)
bloco de comandos_1
fim se
bloco de comandos_2
p p’
V F
F V
37
Funcionamento
Se a condição entre parênteses for verdadeira será executado o bloco de comandos_1, e posteriormente
o bloco de comandos_2, senão (condição falsa) a execução passará diretamente para o bloco de
comandos_2.
Exemplo:
x 2012 //Atribui um valor à variável x
y 1995 //Atribui um valor à variável y
se (x > y) //Verifica se x é maior que y
z x – y //Se a condição acima é verdadeira calcula a diferença entre x e y e atribui
fim se // à variável z
//fim da estrutura condicional
se (x < y) //Verifica se x é menor que y
z y – x //Se a condição acima é verdadeira calcula a diferença entre y e x e atribui à
//variável z
fim se //fim da estrutura condicional
escreva (z) //Imprime o valor de z
Como a primeira condição é verdadeira será executado o comando z x – y e o valor de z será 17,
valor a ser impresso na tela.
ESTRUTURAS CONDICIONAIS DUPLAS
Notação
se (condição)
bloco de comandos_1
senão
bloco de comandos_2
fim se
38
Funcionamento
Se a condição, entre parênteses, for verdadeira será executado o bloco de comandos_1, se for falsa será
executado o bloco de comandos_2.
Exemplo:
x 20 //Atribui um valor à variável x
y 30 //Atribui um valor à variável y
se (x > y) //Verifica se x é maior que y
z x – y //Se a condição acima é verdadeira calcula a diferença entre y e x e atribui o
resultado z senão //Se x é menor ou igual a y
z y – x // Se a condição acima é falsa calcula a diferença entre y e x e atribui o
// resultado z
fim se //Fim da estrutura condicional
escreva (z) //Imprime o valor de z
Como a condição x > y é falsa, será executado o comando z y – x, e o valor de z será 10, valor a
ser impresso na tela.
39
Apresentaremos a seguir alguns problemas com estruturas condicionais.
Análise do problema
O algoritmo deve verificar se o número é menor que zero (negativo) ou igual a zero (nulo) ou
maior que zero (positivo).
/*
Verificar se um número é negativo
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
real Numero
//Entrada de dados
leia (Numero)
//Processamento e saída de resultados
se (Numero < 0)
escreva (“Numero negativo”)
senão
se (Numero = 0)
escreva (“Numero nulo”)
senão
escreva (“Numero positivo”)
fim se
fim se
Fim do algoritmo
11. Programa para ler um número inteiro e escrever se ele negativo, nulo (zero) ou positivo.
40
Análise do problema
Uma pessoa é maior de idade se possui 18 anos ou mais.
Ler a idade de uma pessoa. Verificar se a idade dessa pessoa é maior ou igual a 18 anos ou não,
escrevendo mensagem adequada.
/*
Verificar se uma pessoa é maior de idade ou não
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Idade
//Entrada de dados
leia (Idade)
//Processamento e saída de resultados
se (Idade < 18)
escreva (“Não é maior de idade”)
senão
escreva (“É maior de idade”)
fim se
Fim do algoritmo
16. Programa para ler a idade de uma pessoa e verificar se ela é ou não, maior de idade.
41
Análise do problema
Ler dois valores numéricos. Verificar se o segundo é diferente de zero. Em caso afirmativo
dividir o primeiro pelo segundo e escrever o resultado (quociente). Se o segundo valor for
negativo escrever uma mensagem indicando que a operação é impossível.
/*
Calcular a razão entre dois números se o segundo é diferente de zero
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
real Numero1, Numero2, Razao
//Entrada de dados
leia (Numero1, Numero2)
//Processamento e saída de resultados
se (Numero2 <> 0)
Razao Numero1 / Numero2
escreva (“A razão é: ”, Razao)
senão
escreva (“Impossível dividir por zero”)
fim se
Fim do algoritmo
13. Programa para ler do teclado dois números reais.
Verificar se o segundo valor é diferente de zero. Em caso afirmativo calcular e escrever a razão
entre o primeiro e o segundo.
42
Análise do problema
Usa-se a operação mod, resto da divisão inteira, para verificar se um número é divisível por outro.
Se a mod b = 0, a é divisível por b.
Nesse problema deve-se verificar se Numero é divisível por 2 e 11.
/*
Verificar se um número é divisível por 2 e 11
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Numero
//Entrada de dados
leia (Numero)
//Processamento e saída de resultados
escreva (Numero)
se (Numero mod 2 = 0 e Numero mod 11 = 0)
escreva (“é divisível por 2 e 11”)
senão
escreva ( “Não é divisível por 2 ou por 11 ou por ambos”)
fim se
Fim do algoritmo
14. Programa para ler um número inteiro e verificar se ele é divisível por 2 e por 11, imprimindo
mensagem adequada.
43
Seguem dois algoritmos diferentes para esse programa:
Análise do problema
Na primeira versão cada nome será comparado com o nome digitado e se for igual a um dos nomes
escrever o telefone correspondente. Se o nome digitado for diferente de todos os nomes da lista será
impressa uma mensagem indicando que o nome não consta na lista.
/*
Imprimir telefone de pessoa cujo nome foi digitado – Versão 1
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
literal NomeUsuario
//Entrada de dados
leia (NomeUsuario)
//Processamento e saída de resultados
se (NomeUsuario = “Artur”)
escreva (“9587-3663”)
fim se
se (NomeUsuario = “Bernardo”)
escreva (“9961-3400”)
fim se
se (NomeUsuario = “Caio ”)
escreva (“8824-6146”)
fim se
se (NomeUsuario = “Vinicíus”)
escreva (“9974-7609”)
fim se
se (NomeUsuario ≠ “Artur” e NomeUsuario ≠ “Bernardo” e NomeUsuario ≠ “Caio” e
NomeUsuario ≠ “Vinicíus”)
escreva (“Não consta da lista”)
fim se
Fim do algoritmo
15. Programa para ler um nome do teclado. Imprimir o telefone correspondente, de acordo com a lista:
Artur 9587-3663
Bernardo 9961-3400
Caio 8824-6146
Vinícius 9974-7609
44
Versão 2 do problema anterior
Análise do problema:
Na segunda versão cada nome será comparado com o nome digitado, se for igual escrever o telefone
correspondente e encerra o programa, se for diferente comparar com o próximo nome. Se o nome digitado
for diferente de todos os nomes da lista será impressa uma mensagem indicando que o nome não consta na
lista.
/*
Imprimir telefone de pessoa cujo nome foi digitado - Versão 2
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
literal NomeUsuario
//Entrada de dados
leia (NomeUsuario)
//Processamento e saída de resultados
se (NomeUsuario = “Artur”)
escreva (“9587-3663”)
senão
se (NomeUsuario = “Bernardo”)
escreva (“9961-3400”)
senão
se (NomeUsuario = “Caio”)
escreva (“8824-6146”)
senão
se (NomeUsuario = “Vinicíus”)
escreva (“9974-7609”)
senão
escreva(“Nome não consta da lista”)
fim se //se Vinícius
fim se //se Caio
fim se //se Bernardo
fim se //se Artur
Fim do algoritmo
O segundo algoritmo é mais eficiente que o primeiro, pois ao encontrar o nome digitado escreve o
telefone e encerra o programa. O primeiro, mesmo encontrando o nome digitado, faz todas as
comparações seguintes.
45
Análise do problema:
As linguagens de programação utilizam tabelas com todos os caracteres hoje conhecidos nas
diversas línguas ou ciências. Nessas tabelas cada caractere tem um número de ordem que
facilita sua identificação. Assim os caracteres numéricos são ordenados de “0” a “9”. O alfabeto
inglês tem os caracteres maiúsculos de “A” a “Z” e os minúsculos de “a” a “z”. Portanto é
possível usar a relação de ordem “>”, maior, “<” menor, “=”, menor ou igual “≤” ou maior ou igual
“≥” entre caracteres.
/*
Imprimir tipo de caractere digitado
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
literal Caractere
//Entrada de dados
leia (Caractere)
//Processamento e saída de resultados
se (Caractere ≥ “0” e Caractere ≤ “9”)
escreva (“ALGARISMO”)
senão
se (Caractere ≥ “A” e Caractere ≤ “Z”)
escreva (“LETRA MAIÚSCULA”)
senão
se (Caractere ≥ “a” e Caractere ≤ “z”)
escreva (“LETRA MINÚSCULA”)
senão
escreva (“OUTRO CARACTERE”)
fim se //a ... z
fim se //A ... Z
fim se //0 ... 9
Fim do algoritmo
16. Programa para ler um caractere e imprimir se é um digito de “0” a “ ” uma letra maiúscula de “A” a “Z” ou uma letra minúscula de “a” a “z”.
46
LISTA DE EXERCÍCIOS NÚMERO 5
1. Faça um algoritmo para ler o valor do custo fixo e o destino de um frete.
Calcular e imprimir o custo de transporte (custo fixo + custo variável) de acordo com a tabela:
2. Um posto de combustíveis distribui brindes aos seus clientes de acordo com a quantidade de litros de
combustível abastecidos:
De 10 a 20 litros: um chaveiro
Mais de 20 e menos de 30 litros: uma ducha
30 litros ou mais: um lanche
Faça um algoritmo que: leia a quantidade de litros abastecidos e imprima uma mensagem
dizendo o brinde ganho.
3. Em um clube há dois tipos de sócios: Proprietário e Usuário. Haverá um reajuste nas mensalidades
de 15% para o sócio Proprietário e 12% para o sócio Usuário.
Faça um algoritmo que:
Leia o código do tipo de sócio:
1 – Proprietário
2 – Usuário
Leia o valor da mensalidade
Calcule e imprima o valor da mensalidade reajustada de acordo com o código lido.
4. Em uma locadora o valor que se cobra do cliente obedece à seguinte fórmula:
Valor Cobrado = Quantidade de fitas X Quantidade de dias alugados X R$2,50
Nesta locadora existe uma promoção: os clientes que alugam 5 ou mais fitas de uma só vez ganham
um desconto de 20 % no valor total.
Levando em consideração esse desconto, faça um algoritmo que:
Leia a quantidade de fitas alugadas
Leia a quantidade de dias
Calcule e imprima o valor a pagar
5. Em uma revenda de carros existem os seguintes planos de venda:
De 6 a 24 parcelas: juros de 1.8% ao mês
De 25 a 48 parcelas: juros de 2.1% ao mês
De 49 a 72 parcelas: juros de 2.5% ao mês
Faça um algoritmo que:
Leia o valor do carro a ser financiado
Leia o número de parcelas
Calcule e imprima o valor da parcela, usando a fórmula da lista de exercícios 3.
6. Faça um algoritmo que leia a idade de uma pessoa, calcule e escreva o tipo de eleitor segundo a
tabela:
Menos de 16 anos: não eleitor
De 16 ou 17 anos, ou mais de 69 anos: facultativo
De 18 a 69: obrigatório
DESTINO CUSTO VARIÁVEL
Alfenas 0.5 * FIXO
Araxá 0.3 * FIXO
Corinto 0.2 * FIXO
Ipatinga 0.1 * FIXO
47
7. Faça um algoritmo que leia a altura (h) e o sexo de uma pessoa. Calcule e imprima o peso ideal desta
pessoa de acordo com as fórmulas:
Para homens: 72,7h – 58,0
Para mulheres: 62,1h – 44,7
8. Escreva um algoritmo para :
Ler o número de LADOS de um polígono regular, número inteiro, maior ou igual a 3.
Ler a medida do lado, número real.
Calcular e escrever:
A altura, se o número de lados é igual a 3
A área, se número de lados é igual a 4
O perímetro, se o número de lados é igual a 5
O raio do círculo circunscrito, se número de lados é igual a 6
9. Escreva um algoritmo para ler um número inteiro.
Verificar se ele é par ou ímpar.
10. Escreva um algoritmo para ler um número real.
Verificar se ele é positivo, negativo ou nulo.
48
LISTA DE EXERCÍCIOS NÚMERO 6
1) Escreva um algoritmo para ler três números reais.
Determinar e imprimir o menor valor.
2) Escreva um algoritmo para ler três números reais.
Verificar se eles podem ser lados de um triângulo.
Em caso afirmativo, verificar se o triângulo é eqüilátero, isóscele ou escaleno, senão, imprimir
uma mensagem adequada.
3) Escreva um algoritmo para ler três valores inteiros.
Imprimi-los em ordem crescente.
4) Escreva um algoritmo que leia o nome e o salário bruto de um funcionário. Dados os descontos
abaixo, calcule e escreva:
O nome do funcionário
O desconto de INSS
O desconto de Imposto de Renda
O salário bruto
O salário líquido
Salário bruto (SB) Imposto de Renda INSS
SB R$ 700,00 Isento 8%
R$ 700,00 < SB R$ 2.800,00 15% 9%
SB > R$ 2.800,00 27,5% 10%
5) Escreva um algoritmo para verificar se um ano é bissexto, inserindo mensagem adequada.
6) Escreva um algoritmo para determinar e escrever as raízes reais ou complexas de uma equação do
2º grau.
7) Escreva um algoritmo para verificar se um sistema linear com duas equações e duas variáveis é
DETERMINADO, INDETERMINADO ou IMPOSSÍVEL.
8) Escreva um algoritmo que leia a idade de uma pessoa e escreva na tela “Você é jovem” se idade
for menor que 18 anos, “Você é adulto” se idade é maior ou igual a 18 e menor que 65 anos e
“Você é idoso” se idade é maior ou igual a 65 anos.
9) Escreva um algoritmo que leia três notas de um aluno. Calcule e escreva a soma das duas maiores
notas.
10) Escreva um algoritmo que leia uma senha, determine e escreva se ela é igual a “7531” (Permitir 3
tentativas)
49
ESTRUTURAS DE REPETIÇÃO
Uma estrutura de repetição é utilizada quando um comando ou uma sequência de comandos de um
algoritmo deve ser repetida. Cada linguagem de programação tem suas estruturas específicas de repetição.
Nos algoritmos desse texto usaremos apenas duas:
1) Se o número de repetições é dependente de uma condição: estrutura de repetição “enquanto”.
2) Se o número de repetições é definido, isto é, se o número de repetições é controlado por uma
variável: estrutura de repetição “para”.
REPETIÇÕES DEPENDENTES DE CONDIÇÃO NO INÍCIO
ESTRUTURA “enquanto”
NOTAÇÃO
enquanto (condição)
bloco de comandos_1
fim enquanto
bloco de comandos_2
Funcionamento
Enquanto a condição entre parênteses for verdadeira o bloco de comandos_1 será executado e
quando for falsa o processamento passará ao bloco de comandos_2.
Exemplo
x 0 //Valor inicial de x
enquanto (x < 10) //Verifica se x é menor que 10
escreva (x) //Se a condição do enquanto é verdadeira escreve x
x x + 1 //Aumenta x em uma unidade
fim enquanto //Termina a repetição quando x = 10
//Novos comandos
Esse trecho de algoritmo tem como objetivo escrever os números inteiros de 0 a 9.
Para facilitar o entendimento numeramos as linhas de comandos.
1) x 0
2) enquanto (x < 10)
3) escreva (x)
4) x x + 1
5) fim enquanto
6) //Novos comandos
50
1) Atribui o valor inicial (0 – zero) à variável x.
2) Comando que verifica o valor da variável x, gerando um valor verdadeiro ou falso, que indicará se o
processamento continuará na próxima linha de comandos (linha 3) ou se desviará para a linha 6.
3) Escreve o valor de x: 0, 1, 2, 3, 4, 5, 6, 7,8, 9
4) Aumenta uma unidade na variável x e coloca o resultado na própria variável x que passará a ser: 1, 2,
3, 4, 5, 6, 7, 8, 9, 10 (último valor que será o responsável pelo encerramento da estrutura de
repetição).
5) Limita os comandos da estrutura de repetição.
6) Próximos comandos do algoritmo, fora da estrutura de repetição.
PROGRAMAS EXEMPLOS DE ESTRUTURAS DE REPETIÇÃO
Análise do problema:
Os números impares menores que 100 são: 1, 3, 5, ..., 95, 97, 99
O primeiro número impar é 1 e os próximos são obtidos pelo acréscimo de 2 unidades ao
anterior, até que o valor ultrapasse 99.
/*
Escrever na tela os números ímpares de 1 a 99
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Numero
//Valor inicial
Numero 1
//Processamento e saída de resultados
enquanto (Numero < 100)
escreva (Numero)
Numero Numero + 2
fim enquanto
Fim do algoritmo
17. Programa para escrever na tela os números positivos ímpares menores que 100.
51
Análise do problema:
Uma variável deve armazenar o valor da maior altura e outra o nome da pessoa que a tem.
A maior altura deve ser iniciada com o valor zero.
A variável Contador controla a repetição para ler 5 nomes e alturas.
/*
Programa para ler o nome e a altura de cinco pessoas.
Escrever o nome e a altura da pessoa mais alta
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
real Altura, Maior_Altura
literal Nome, Nome_do_mais_Alto
inteiro Contador
Maior_Altura 0
Contador 1
//Processamento e saída de resultados
enquanto (Contador <= 5)
//Entrada de dados
leia (Altura)
leia (Nome)
se (Altura > Maior_Altura)
Maior_Altura Altura
Nome_do_mais_Alto Nome
fim se
Contador Contador + 1
fim enquanto
escreva (Maior_Altura, Nome_do_mais_Alto)
Fim do algoritmo
18. Leia o nome e a altura de cinco pessoas.
Determine e escreva o nome e a altura da pessoa mais alta
52
Análise do problema:
Sexo pode ser representado por 0 (zero) feminino e 1 (um) masculino e resposta 1 equivalendo a Sim
e 0 a Não.
Todos os contadores devem ser inicializados com 0.
19. Foi feita uma pesquisa com 150 pessoas sobre a aprovação ou não de um determinado governo.
Escreva um programa que determine e escreva:
O número de homens que respondeu à pesquisa
O número de mulheres que respondeu à pesquisa
O número de homens que respondeu SIM
O número de mulheres que respondeu NÃO
A porcentagem de pessoas que respondeu SIM
53
/*
Avaliação de pesquisa
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Sexo, Resposta, Numero_do_Entrevistado, Numero_Homens, Numero_Mulheres,
Numero_Homens_Sim, Numero_Muheres_Nao, Porcentagem_Sim, Total_Sim
//Atribuição inicial de valor: “inicialização”
Numero_do_Entrevistado 0
Numero_Homens 0
Numero_Muheres 0
Numero_Homens_Sim 0
Numero_Muheres_Nao 0
Total_Sim 0
//Entrada de dados e processamento
enquanto (Numero_do_Entrevistado <= 150)
Numero_do_Entrevistado Numero_do_Entrevistado + 1
leia (Sexo, Resposta)
se (Resposta = 1)
Total_Sim Total_Sim + 1
fim se
se (Sexo = 0)
Numero_Mulheres Numero_Mulheres + 1
se (Resposta = 0)
Numero_Muheres_Nao Numero_Muheres_Nao + 1
fim se
senão
se (Resposta = 1)
Numero_ Homens_Sim Numero_ Homens_Sim + 1
fim se
fim se // Sexo = 0
Numero_do_Entrevistado Numero_do_Entrevistado + 1
fim enquanto
Porcentagem_Sim (Total_Sim / 150) * 100
Numero_Homens 150 – Numero_Mulheres
//Saída de resultados
escreva (Numero_Homens, Numero_Mulheres, Numero_Muheres_Nao)
escreva (Numero_ Homens_Sim, Porcentagem_Sim)
Fim do algoritmo
54
Análise do problema:
A cada 40 segundos a massa do material se reduz à metade da massa anterior. O algoritmo deve
aumentar o tempo em 40 e reduzir a massa do material à metade (dividir por 2), até que a massa
fique menor que 1 grama
/*
Programa para determinar tempo de desintegração de matéria
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
real Massa_Inicial, Massa_Atual
inteiro Tempo, Horas, Minutos, Segundos,
Tempo 0
//Entrada de dados
leia (Massa_Inicial)
Massa_Atual Massa_Inicial
//Processamento e saída de resultados
enquanto (Massa_Atual >= 1)
Massa_Atual Massa_Atual / 2
Tempo Tempo + 40
fim enquanto
Horas inteiro(Tempo / 3600)
Minutos inteiro((Tempo – Horas * 3600) / 60)
Segundos (Tempo – Horas * 3600 – Minutos * 60
escreva (Horas, Minutos, Segundos)
Fim do algoritmo
20. Um material radioativo reduz-se à metade de sua massa a cada 40 segundos.
Escreva um programa que leia a massa desse material, em quilogramas, calcule e escreva o
tempo (horas, minutos e segundos) necessário para que a massa fique menor que 1 grama.
55
ESTRUTURA DE REPETIÇÃO COM VARIÁVEL DE CONTROLE
Quando o número de repetições é conhecido, pode-se usar a estrutura:
para Var Valor_Inicial até Valor_Final passo p faça
Bloco de comandos_1
fim para
Bloco de comandos_2
Para cada valor de Var será executado o bloco de comandos_1. Var sofre um acréscimo p, positivo
ou negativo, podendo ser omitido se a variável aumenta de 1 em 1.
Alguns problemas anteriores podem ser resolvidos usando-se essa estrutura.
Análise do problema:
A “tabuada” de um número inteiro qualquer é composta do produto desse número pelos fatores 0, 1,
2, ..., 9.
Assim, o algoritmo deve imprimir 0 x 9, 1 x 9, 2 x 9, ..., 8 x 9 e 9 x 9
/*
Imprimir a tabuada de 9
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Multiplicador, Fator_Fixo, Produto
Fator_Fixo 9
//Processamento e saída de resultados
para Multiplicador 0 até 9 passo 1 faça
Produto Multiplicador * Fator_Fixo
escreva (Fator_Fixo, “*”, Multiplicador, “ = “, Produto)
fim para
Fim do algoritmo
21. Faça um programa para imprimir a tabuada de multiplicação do número inteiro 9.
56
Análise do problema:
Verificamos que cada termo da sequência é formada por um numerador e um denominador.
O numerador tem valor inicial 1 e varia de 1 em 1 até N (passo ou acréscimo 1) e o
denominador tem valor inicial 2 e cresce de 3 em 3 (passo ou acréscimo 3).
O algoritmo consiste em calcular cada termo da sequência e acrescentar (somar) esse termo a uma
variável (somatório), cujo valor inicial deve ser 0 (zero).
/*
Soma dos N primeiros termos da sequência: 1/2, 2/5, 3/8, 4/11, 5/14, 6/17, ...
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Numerador, Denominador, N
real Termo, Soma
Soma 0
Numerador 1
Denominador 2
//Entrada de dados
leia (N)
//Processamento e saída de resultados
para Numerador 1 até N faça
Termo Numerador / Denominador
Soma Soma + Termo
Denominador Denominador + 3
fim para
escreva (Soma)
Fim do algoritmo
22. Escreva um programa que leia um número inteiro e positivo N.
Calcule e escreva a soma dos N primeiros termos da seqüência
1/2, 2/5, 3/8, 4/11, 5/14, 6/17, ...
57
Análise do problema:
Um número palíndromo ou frase palíndroma é aquela que é idêntica se lida da direita para a
esquerda ou da esquerda para a direita.
Exemplos:
“luz azul”, “acaiaca”, “ovo”, “ana”, “arara”, “socorram-me subi no onibus em marrocos”
“12321”, “2002”
Os números palíndromos de 4 algarismos seguem o padrão XYYX, onde X é um número
inteiro de 1 a 9 e Y um número inteiro de 0 a 9. Assim cada número inteiro palíndromo de 4
algarismos terá a forma:
N = 1000 X + 100 Y + 10 Y + X
/*
Números palíndromos de 4 algarismos
Programador:
Data: DD/MM/AAAA
*/
Algoritmo
//Declaração de variáveis
inteiro Numero, X, Y
//Processamento e saída de resultados
para X 1 até 9 faça
para Y 0 até 9 faça
Numero 1000 * X + 100 * Y + 10 * Y + X
escreva (Numero)
fim para
fim para
Fim do algoritmo
23. Escreva um programa para escrever todos os números inteiros palíndromos de 4 algarismos.
58
LISTA DE EXERCÍCIOS NÚMERO 7
Escreva um algoritmo que:
01) Determine e escreva todos os números inteiros positivos menores que 1000, divisíveis por 7 e por
17.
02) Leia uma seqüência indeterminada de números reais positivos.
Determine e escreva o menor e o maior valor digitado.
Use um “flag” adequado.
03) Leia a altura de um número indeterminado de pessoas, calcule e escreva a média aritmética
das alturas.
04) Leia dois números inteiros A e B. Calcule e escreva a soma dos números ímpares entre A e B.
05) Leia dois números inteiros e positivos, calcule e escreva o MDC desses números, usando o
método das subtrações sucessivas.
06) Calcule e escreva o fatorial de um número inteiro e positivo.
07) Calcule e escreva o fatorial dos números inteiros de 0 a 12.
08) Leia do teclado um número inteiro e positivo N (validar). Calcule e escreva a soma dos N
primeiros termos da série:
...
87
6
76
5
65
4
54
3
43
2
32
1
S
09) Leia do teclado um número inteiro e positivo N (validar) e um número real x, positivo (verificar se
é positivo). Calcule e escreva a soma dos N primeiros termos da série:
...
1197531
65432
xxxxxx
S
10) Leia um número inteiro e positivo (validar), verifique se é primo ou não.
59
LISTA DE EXERCÍCIOS NÚMERO 8
1) Faça um algoritmo para imprimir a raiz quadrada de todos os inteiros positivos menores que 21.
2) Faça um algoritmo para imprimir todos os divisores de um número inteiro lido do teclado.
3) O número 3025 possui a seguinte característica:
302555*55
552530
Faça um algoritmo para escrever todos os números de 4 algarismos que apresentam tal característica.
4) Capicua (origem catalã: "cap i cua", cabeça e cauda) ou número palíndromo é um número (ou
conjunto de números) cujo reverso é ele próprio (Wikipédia-12/12/2011)
Exemplos: 9339, 55, 884488, 1234567890987654321
Faça um algoritmo para escrever todos os números “capicuas” de cinco algarismos.
5) Um determinado material radioativo perde metade de sua massa a cada 50 segundos.
Escreva um algoritmo para:
Ler a massa inicial desse material, em gramas.
Determinar o tempo para que essa massa se torne menor que 0,5 gramas.
Escrever na tela:
A massa inicial
A massa final
Tempo calculado, em horas, minutos e segundos.
6) Escreva um algoritmo para imprimir os 20 primeiros termos da sequência de Fibonacci.
Sequência de Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
7) Escreva um algoritmo para ler o sexo e a idade de um número indeterminado de pessoas,
calcular e escrever:
A média de idade dos homens.
O número de mulheres com mais de 30 anos.
O número de homens com idade acima de 17 anos e abaixo de 60 anos,
A condição de encerramento do programa deve ser idade menor ou igual a 0.
8) Um país A tem 50 milhões de habitantes e cresce a uma taxa de 2% ao ano e outro país B tem
100 milhões de habitantes e cresce a uma taxa de 1,2% ao ano.
Faça um algoritmo que calcule o tempo para que o país A ultrapasse o país B em número de
habitantes.
9) Na terceira lista de exercícios foi dada uma fórmula para calcular o valor da prestação de um
empréstimo bancário dados o valor a ser financiado, a taxa de juros e o tempo de
financiamento.
Escreva um algoritmo que leia do teclado uma taxa de juros e um valor a ser financiado, calcule e
escreva o valor de prestações para financiamentos em 6, 12, 18, 24, 30, 36, 42 e 48 parcelas.
60
10) Uma editora presume que venderá 180 livros a R$ 100,00 a unidade e que a cada R$ 5,00 que
diminuir no preço do livro aumenta as vendas em 30 unidades.
Escreva um algoritmo que imprima uma tabela com o valor do lucro esperado, em função do
número e do preço dos livros vendidos, supondo uma despesa fixa de R$ 40,00 no preço de cada
livro.
Calcule e escreva o lucro máximo esperado, o número e o preço do livro.
Cópia autorizada para fins não comerciais.
São bem-vindas críticas, sugestões e correções.
16/02/2012