Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
1
1 – INTRODUÇÃO AOS ALGORITMOS
Desde o início de sua existência, o homem procurou criar máquinas que o auxiliassem em seu
trabalho, diminuindo esforço e economizando tempo. Dentre essas máquinas, o computador vem se
mostrando uma das mais versáteis, rápidas e seguras.
Como já vimos no início das nossas aulas, a tecnologia atual de computadores está baseada na
construção de equipamentos formados por circuitos eletrônicos, cabos e fontes de alimentação que são
precisos na identificação distinta entre dois tipos de sinais elétricos, caracterizados pela passagem de
corrente elétrica em um sentido, ou no seu sentido inverso. Por isso, os computadores representam dados e
operações por meio de dois símbolos, constituindo a linguagem binária, usualmente descrita com 0 e 1 (zero
e um).
A seqüência descritiva de um conjunto de símbolos (0 e 1) em linguagem de binária, também
chamada de linguagem de máquina, pode representar dados e/ou operações a serem executadas pelo
computador. Cada um dos símbolos existentes neste conjunto é chamado de bit (a menor unidade de
armazenamento de dados), onde a junção de oito bits forma o conhecido byte. Por exemplo:
O conjunto de símbolos representado no exemplo acima pode estar descrevendo, em linguagem de
máquina, um simples dado a ser armazenado na memória do computador ou ainda uma operação a ser
realizada por este (por exemplo, uma adição entre dois valores numéricos), onde seu resultado será
armazenado pelo computador.
A utilização desta linguagem permite ao computador realizar o armazenamento e a manipulação dos
dados entre os diversos dispositivos eletrônicos que o compõe. Suponha a necessidade do armazenamento
de dois valores numéricos a serem somados (operação aritmética de adição entre eles), para na seqüência ser
apresentado o resultado desta operação (resultado da adição).
Primeiramente, o computador necessitará armazenar estes dois valores numéricos, quando estes lhe
forem informados. Em seguida, ele efetuará a operação de adição entre os valores, armazenando o seu
resultado, que posteriormente poderá ser apresentado ao usuário (pessoa que utiliza o computador).
Mas para que isto aconteça, precisamos desenvolver a lógica humana e computacional, ou seja, as
instruções passadas ao computador, através dos programas, são passadas da linguagem de programação para
a linguagem de máquina. O nossa tarefa aqui é desenvolver o algoritmo e codificá-lo em uma linguagem de
programação.
Portanto, o computador pode auxiliá-lo em qualquer tarefa. É consciente, trabalhador, possui muita
energia, mas não tem iniciativa, nenhuma independência, não é criativo nem inteligente, por isso precisa
receber instruções nos mínimos detalhes.
A finalidade de um computador é receber, manipular e armazenar dados. Visto somente como um
gabinete composto de circuitos eletrônicos, cabos e fontes de alimentação, certamente ele parece não ter
nenhuma utilidade. O computador só consegue armazenar dados em discos, imprimir relatórios, gerar
gráficos, realizar cálculos, entre outras funções, por meio de programas. Portanto, sua finalidade principal é
realizar a tarefa de processamento de dados, isto é, receber dados por um dispositivo de entrada (por
exemplo, teclado, mouse, scanner, entre outros), realizar operações com esses dados e gerar uma resposta
que será expressa em um dispositivo de saída (por exemplo, impressora, monitor de vídeo, entre outros).
Assim, um computador possui duas partes diferentes que trabalham juntas: o hardware, composto
pelas partes físicas, e o software, composto pelos programas.
Quando queremos criar ou desenvolver um software para realizar determinado tipo de
processamento de dados, devemos escrever um programa ou vários programas interligados. No entanto, para
que o computador compreenda e execute esse programa, devemos escrevê-lo usando uma linguagem que
tanto o computador quanto o criador de software entendam. Essa linguagem é chamada de linguagem de
programação.
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
2
As etapas para o desenvolvimento de um programa são:
Análise – Nesta etapa estuda-se o enunciado do problema para definir os dados de entrada, o
processamento e os dados de saída.
Algoritmo – Ferramentas do tipo descrição narrativa, fluxograma ou português estruturado são
utilizadas para descrever o problema com suas soluções.
Codificação – O algoritmo é transformado em códigos da linguagem de programação escolhida para
se trabalhar.
Portanto, um programa é a codificação de
um algoritmo em uma linguagem de programação.
2 - NOÇÕES DE LÓGICA
Características computacionais da Lógica consistem em “um esquema sistemático que define as
interações de sinais no equipamento automático do processamento de dados, ou computador científico com
critério e princípios formais de raciocínio e pensamento.” (Manzano, 2000, p.3).
Uma definição não tão computacional de “lógica” seria: “a ciência que estuda as leis e critérios de
validade que regem o pensamento e a demonstração, ou seja, a ciência de princípios formais do raciocínio”
(Manzano, 2000, p.3).
O uso da “lógica” para alguns profissionais é essencial e inseri um ponto divisor entre estes indivíduos,
principalmente naqueles da subárea de Programação. Observe, por exemplo, a simples constatação lógica
proposta no exemplo abaixo:
• Hoje é sábado.
• Todo sábado que não é feriado tem aula.
• Hoje não é feriado.
• Logo, hoje tem aula.
(uma conclusão lógica)
No exemplo acima os dados conhecidos (fatos) são que hoje é sábado e que não é feriado, além de que todo
sábado tem aula, menos nos feriados. Assim, é possível concluir que hoje tem aula.
A palavra lógica relaciona-se com a idéia de racionalidade e coerência.
Exemplo:
Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele
mesmo e mais uma das três cargas que são: um lobo, um bode e um maço de alfafas. Observe as leis
naturais: o lobo é carnívoro e o bode é herbívoro. O que o homem deve fazer para conseguir atravessar o
rio sem perder suas cargas.
O Homem leva o bode da margem 1 para a margem 2.
O Homem navega da margem 2 para a margem 1.
O Homem leva o lobo da margem 1 para a margem 2.
O Homem leva o bode da margem 2 para a margem 1.
O Homem leva a alfafa da margem 1 para a margem 2.
O Homem navega da margem 2 para a margem 1.
O Homem leva o bode da margem 1 para a margem 2.
Algumas definições:
o "a lógica é a arte de bem pensar"
o "a lógica é a ciência das formas do pensamento"
o "a lógica nos ensina a colocar ordem no pensamento"
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
3
Exemplo:
o Nova Andradina é uma cidade do estado de Mato Grosso do Sul.
o Asdrúbal nasceu em Nova Andradina.
o Portanto, Asdrúbal é Sul-matogrossense.
A lógica no dia-a-dia
o Quando queremos escrever, falar ou agir corretamente, precisamos colocar ordem no
pensamento, isto é, utilizar a lógica.
o Exemplo 1:
 O guarda-roupa está fechado.
 O terno está dentro do guarda-roupa.
 Preciso primeiro abrir o guarda-roupa, para depois pegar o terno.
A lógica de programação
o Em que consiste?
A lógica de programação consiste no uso correto das leis do pensamento, da "ordem da razão", de
processos de raciocínio e de simbolização formal na programação de computadores.
o Qual o objetivo?
Permitir a resolução de problemas específicos com soluções de boa qualidade.
o O raciocínio lógico pode ser expresso através de várias linguagens:
 no contexto humano - utiliza-se a palavra escrita/falada que, por sua vez, se baseia
num determinado idioma, mas, independente do idioma, tem-se o mesmo raciocínio.
 no contexto computacional - utilizam-se as linguagens de programação
o Vamos utilizar uma forma de representação mais genérica (livre de detalhes computacionais)
e que traduza mais fielmente o raciocínio da lógica de programação: ALGORITMOS
o Então ...
O objetivo da lógica de programação é a construção de algoritmos corretos e válidos.
O estudo na área de Informática, mas especificamente na subárea de Programação, não tem o
objetivo de ensinar ninguém a pensar, pois todas as pessoas normais já desenvolveram esta habilidade
durante o seu processo de evolução (criança – jovem – adulto – velho). Porém, seu principal objetivo é
apresentar, desenvolver e aperfeiçoar o raciocínio lógico possível de ser implementado em computadores e
utilizados por seus usuários.
Veja os exemplos... Deseja-se escrever um algoritmo, usando português coloquial, para resolver um
problema bastante simples, qual seja: trocar uma lâmpada queimada por uma lâmpada nova não queimada e
o outro para fazer um sanduíche de queijo.
Exemplo1: Trocar uma lâmpada queimada
Algoritmo 1.1 - Trocar uma lâmpada queimada
pegar uma escada;
posicionar a escada debaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar a lâmpada queimada;
colocar lâmpada nova;
Reexaminando o algoritmo 1.1, notamos que ele tem um objetivo
bem definido:
trocar uma lâmpada queimada. Porém o algoritmo não atingirá seu objetivo se a lâmpada nova estiver
queimada. Para tal, acrescentamos um teste condicional (estrutura seletiva).
Algoritmo 1.2 - Trocar uma lâmpada queimada (uso de teste condicional)
pegar uma escada;
posicionar a escada debaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar a lâmpada queimada;
colocar lâmpada nova;
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
4
se a lâmpada nova não acender, então:
o retirar a lâmpada queimada;
o colocar lâmpada nova;
o se a lâmpada nova não acender, então:
 retirar a lâmpada queimada;
 colocar a lâmpada nova;
 se a lâmpada nova não acender, então:

retirar a lâmpada queimada;

colocar a lâmpada nova;
...
até quando????
O Algoritmo 1.2 não está terminado. As ações cessarão quando conseguirmos colocar uma lâmpada que
acenda (objetivo do algoritmo). Ao invés de reescrevermos várias vezes um conjunto de ações podemos,
alterar o fluxo seqüencial de execução para permitir que ações sejam re-executadas quantas vezes forem
necessárias. Precisamos expressar essa repetição (estrutura de repetição) garantindo uma condição de
parada.
Algoritmo 1.3 - Trocar uma lâmpada queimada (uso de estruturas de repetição)
pegar uma escada;
posicionar a escada debaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar a lâmpada queimada;
colocar lâmpada nova;
enquanto lâmpada nova não acender, faça
 retirar a lâmpada queimada;
 colocar lâmpada nova;
3 – CONCEITO DE ALGORITMO E ESTRUTURAS DE DADOS
À especificação da seqüência ordenada de passos que deve ser seguida para a realização de uma
tarefa, garantindo a sua repetibilidade, dá-se o nome de algoritmo.
A seguir alguns conceitos de algoritmos segundo autores da nossa bibliografia:
“Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido.” (FORBELLONE, 1999)
“Algoritmo é uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um
problema computacional, qualquer que seja sua instância.” (SALVETTI, 1999)
“Algoritmo são regras formais para a obtenção de um resultado ou da solução de um problema, englobando
fórmulas de expressões aritméticas.” (MANZANO, 1997)
“Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um
estado final previsível e bem definido. Portanto, um algoritmo é a descrição de um conjunto de comandos
que, obedecidos, resultam numa sucessão finita de ações.” (FARRER, 1999)
“Informalmente, um algoritmo é qualquer procedimento computacional bem definido que toma algum valor
ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída. Portanto, um
algoritmo é uma sequência de passos computacionais que transformam a entrada na saída.” (CORMEN,
2002)
Também podemos visualizar um algoritmo como uma ferramenta para resolver um problema
computacional bem especificado. O enunciado do problema especifica em termos gerais o relacionamento
entre a entrada e a saída desejada. O algoritmo descreve um procedimento computacional específico para se
alcançar esse relacionamento da entrada com a saída.
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
5
“Uma estruturas de dados é um meio para armazenar e organizar dados com o objetivo de facilitar o
acesso e as modificações.” (CORMEN, 2002)
“Na Ciência da Computação, uma estrutura de dados é um modo particular de armazenamento e
organização de dados em um computador de modo que possam ser usados eficientemente.” (WIKIPÉDIA,
2010).
Para que um computador possa desempenhar uma tarefa é
necessário que esta seja detalhada passo a passo, numa forma
compreensível pela máquina, utilizando aquilo que se chama de
programa. Neste sentido, um programa de computador nada mais é
que um algoritmo escrito numa forma compreensível pelo
computador.
3.1 – Método para a construção de qualquer algoritmo
Para a construção de qualquer tipo de algoritmo, é necessário seguir estes passos:
 Definir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições para esses
cálculos.
 Definir os dados de saída, ou seja, quais dados serão gerados.
 Definir os dados de entrada, ou seja, quais dados serão fornecidos.
 Construir o algoritmo utilizando um dos tipos.
 Compreender completamente o problema a ser resolvido, destacando os objetos que o compõem.
 Testar o algoritmo realizando simulações.
4 – TIPOS DE ALGORITMOS
Os três tipos mais utilizados de algoritmos são: descrição narrativa, fluxograma e pseudocódigo ou
portugol.
4.1 – Descrição narrativa
A descrição narrativa consiste em analisar o enunciado do problema e escrever, utilizando uma
linguagem natural (por exemplo, a língua portuguesa), os passos a serem seguidos para sua resolução.
Vantagem: não é necessário aprender nenhum conceito novo, pois uma língua natural, neste ponto, já é bem
conhecida.
Desvantagem: a língua natural abre espaço para várias interpretações, o que posteriormente dificultará a
transcrição desse algoritmo para programa.
Exemplo:
Algoritmo para somar três números
Receber os três números. (passo1)
Somar os três números. (passo2)
Mostrar o resultado obtido. (passo 3)
4.2 - Fluxograma
O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando símbolos gráficos
predefinidos, os passos a serem seguidos para sua resolução.
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
6
Vantagem: o entendimento de elementos gráficos é mais simples que o entendimento de textos.
Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além disso, o algoritmo resultante não
apresenta muitos detalhes, dificultando sua transcrição para um programa.
Símbolos utilizados:
Exemplo:
Algoritmo para multiplicar dois números
4.3 - Pseudocódigo ou Portugol
O Pseudocódigo ou Portugol é o tipo que utilizaremos para as soluções dos exercícios das nossas
aulas e consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos s
serem seguidos para sua resolução.
Vantagem: a passagem do algoritmo para qualquer linguagem de programação é quase imediata, bastando
conhecer as palavras reservadas dessa linguagem que serão utilizadas.
Desvantagem: é necessário aprender as regras do pseudocódigo.
Exemplo:
Algoritmo para dividir dois números
algoritmo dividir
declaração de variáveis
inteiro numero1,numero2;
início
escreva(“Digite o primeiro número: “);
leia(numero1);
escreva(“Digite o segundo número: “);
leia(numero2);
se(numero2 = 0)
então
escreva(“Impossível dividir”);
fim se
senão
resultadonumero1/numero2;
escreva(“A divisão é: “, resultado);
fim senão
fim_algoritmo
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
7
Exercícios:
1 – Faça um algoritmo em descrição narrativa para:
a) Ir para a escola (ou universidade).
b) Sacar dinheiro no caixa eletrônico.
2 – Faça um algoritmo em fluxograma para mostrar o resultado da divisão de dois números.
5 – CONCEITO DE VARIÁVEL
Um algoritmo, e posteriormente, um programa, recebem dados, que precisam ser armazenados no
computador para serem utilizados no processamento. Esse armazenamento é feito na memória.
Assim, uma variável representa uma posição de memória. Possui nome e tipo e seu conteúdo pode
variar ao longo do tempo, durante a execução de um programa. Embora uma variável possa assumir
diferentes valores, ela só pode armazenar um valor a cada instante.
6 – TIPOS DE DADOS
Definem os tipos de informações a serem processadas. Os tipos de dados mais utilizados são:
numéricos e literais ou caracteres.
 Numéricos: inteiros e reais
Inteiros – podem ser positivos ou negativos e não possuem parte fracionária.
Exemplo: 15 irmãos, -2 graus.
Real - podem ser positivos ou negativos e possuem parte fracionária.
Exemplo: 1.73 de altura, 3.5 litros.
 Literais ou Caracteres
São dados formados por um único caractere ou por uma cadeia de caracteres. Esses caracteres podem
ser as letras e os números (não podem ser usados para cálculos).
Exemplo: „aluno‟, „12345‟.
7 – FORMAÇÃO DE IDENTIFICADORES
Os identificadores são os nomes das variáveis, dos programas, das constantes, das rotinas etc. As
regras básicas são:
 Os caracteres que você pode utilizar são: os números, as letras maiúsculas, as letras minúsculas e o
caractere sublinhado.
 O primeiro caractere deve ser sempre uma letra ou caractere sublinhado.
 Não são permitidos espaços em branco e caracteres especiais (@,$,+,-,%,!).
 Não podemos usar palavras reservadas nos identificadores, ou seja, palavras que pertençam a uma
linguagem de programação.
Exemplos:
Válidos
A
a
nota
numero_1
x4
Não válidos
5b – por começar com número
E 39 – por conter espaço em branco
Case – por ser palavra reservada
Exercício: defina os identificadores abaixo se são válidos ou não válidos, neste caso justifique:
a) dia
b) prova 2
c) idade_1
d) 4y
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
8
8 – ESTRUTURA SEQUENCIAL
algoritmo Nome_do_algoritmo
declaração de variáveis
variáveis
inicio
bloco de comandos;
fim_algoritmo
8.1 – Declaração de variáveis
As variáveis são declaradas após a palavra declaração de variáveis e os tipos mais utilizados são:
numérico (inteiro ou real) e literal (caracteres).
Exemplo:
inteiro x;
real y;
literal i;
8.2 – Comando de atribuição
O comando de atribuição é utilizado para conceder valores ou operações a variáveis, sendo
representado pelo símbolo .
Exemplo:
x  4;
y  2.5;
i  “A”;
8.3 – Comando de Entrada
O comando de entrada é utilizado para receber dados digitados pelo usuário, que serão armazenados
em variáveis. Esse comando é representado pela palavra leia.
Exemplo:
leia(x);
Um valor digitado pelo usuário será armazenado na variável x.
8.4 – Comando de saída
O comando de saída é utilizado para mostrar dados na tela. Esse comando é representado pela
palavra escreva, e os dados podem ser conteúdos de variáveis ou mensagens.
Exemplo:
escreva(x);
Mostra o valor armazenado na variável x.
escreva(“Conteúdo de Y: “,y);
Mostra a mensagem “Conteúdo de Y: “ e em seguida o valor armazenado na variável y.
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
9
Exercício resolvido:
1 – Faça um algoritmo que receba dois números inteiros, calcule e mostre a soma desses números.
algoritmo Somar
declaração de variáveis
inteiro num1,num2,soma;
início
escreva(“Digite o número 1: ”);
leia(num1);
escreva(“Digite o número 2: ”);
leia(num2);
somanum1+num2;
escreva(“Resultado: ”,soma);
fim_algoritmo
Exercícios:
1 – Faça um algoritmo que receba três notas e seus respectivos pesos, calcule e mostre a média ponderada.
2 – 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.
3 – O custo ao consumidor de um carro novo é a soma do preço de fábrica com o percentual de lucro do
distribuidor e dos impostos aplicados ao preço de fábrica. Faça um programa que receba o preço de fábrica
de um veículo, o percentual de lucro do distribuidor e o percentual de impostos, calcule e mostre:
a) o valor correspondente ao lucro do distribuidor;
b) o valor correspondente aos impostos;
c) o preço final do veículo.
4 – Faça um programa que calcule e mostre a área de um triângulo. Sabe-se que: A=(base*altura)/2.
5 – Faça um programa que calcule e mostre a área de um círculo. Sabe-se que:
.
6 – Faça um programa que receba um número positivo e maior que zero, calcule e mostre:
a) o número digitado ao quadrado;
b) o número digitado ao cubo;
c) a raiz quadrada do número digitado;
7 – Faça um programa que receba a medida do ângulo formado
por uma escada apoiada no chão e encostada na parede e a altura
da parede onde está a ponta da escada, calcule e mostre a medida
desta escada.
8 – Uma pessoa deseja pregar um quadro em uma parede. Faça
um programa para calcular e mostrar a que distância a escada deve estar da parede. A pessoa deve fornecer o
tamanho da escada e a altura em que deseja pregar o quadro.
Lembre-se de que o tamanho da escada deve ser maior que a altura que se deseja alcançar.
X – Altura em que deseja pregar o quadro
Y – Distância em que deverá ficar a escada
Z – Tamanho da escada
9 - Faça um programa que receba o salário base de um funcionário, calcule e mostre o salário a receber,
sabendo-se que o funcionário tem gratificação de 5% sobre o salário base e paga imposto de 7% sobre este
salário.
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
10
10 – Sabe-se que o quilowatt de energia custa um quinto do salário mínimo. Faça um programa que receba o
valor do salário mínimo e a quantidade de quilowatts consumida por uma residência, calcule e mostre:
a) o valor de cada quilowatt;
b) o valor a ser pago por essa residência;
c) o valor a ser pago com desconto de 15%.
9 – ESTRUTURA CONDICIONAL
Este tipo de estrutura é utilizada para representar o desvio no fluxo normal de um programa, ou seja,
utilizada para indicar que deve ser tomada uma decisão, apontando a possibilidade de desvios.
O teste lógico segue a seguinte estrutura (ou fluxo):
9.1 – Estrutura Condicional Simples
se(condição)
então
comando;
O comando só será executado se a condição for verdadeira. Uma condição é uma comparação que
possui dois valores possíveis: verdadeiro ou falso.
se(condição)
então início
comando1;
comando2;
comando3;
fim se
Os comandos 1, 2 e 3 só serão executados se a condição for verdadeira. As palavras início e fim se
serão necessárias apenas quando dois ou mais comandos forem executados.
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
11
9.2 - Estrutura Condicional Composta
se(condição)
então comando1;
senão comando2;
Se a condição for verdadeira, será executado o comando1; caso contrário, será executado o
comando2.
se(condição)
então início
comando1;
comando2;
fim se
senão início
comando3;
comando4;
fim senão
Se a condição for verdadeira, o comando1 e o comando2 serão executados, caso contrário, o comando3 e o
comando4 serão executados.
9.3 – Operadores Condicionais ou Relacionais
Os operadores condicionais ou relacionais são operadores binários que devolvem os valores lógicos
verdadeiro e falso.
Sinal
Função
=
Igual
!=
Diferente
>
Maior que
>=
Maior que ou igual a
<
Menor que
<=
Menor que ou igual a
Estes valores são somente usados quando se deseja efetuar comparações. Comparações só podem ser
feitas entre objetos de mesma natureza, isto é variáveis do mesmo tipo de dado. O resultado de uma
comparação é sempre um valor lógico
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
12
9.4 – Operadores Lógicos
Os operadores lógicos ou booleanos são usados para combinar expressões relacionais. Também
devolvem como resultado valores lógicos verdadeiro ou falso.
Tabela E
Tabela OU
VeV=V
V ou V = V
VeF=F
V ou F = V
FeV=F
F ou V = V
FeF=F
F ou F = F
Uma expressão relacional ou lógica retornará falso para o valor lógico falso e verdadeiro para o
valor lógico verdade.
Fornecendo dois valores ou expressões lógicas, representadas por expressão1 e expressão2,
podemos descrever as operações lógicas a seguir:
expressão1 E expressão2 é verdadeiro somente se ambas, expressão1 e expressão2, forem verdadeiras. Se
uma for falsa, ou se ambas forem falsas, a operação E também será falsa.
expressão1 OU expressão2 é verdadeiro se tanto a expressão1 como a expressão2 forem verdadeiras. As
operações OU só resultam em valores falsos se ambas, expressão1 e expressão2, forem falsas.
Exercício resolvido
1 – Faça um algoritmo que receba duas notas de aluno, calcule e mostre a média aritmética das notas e a
mensagem de “Aprovado”, se a média obtida for maior ou igual a 6.0 ou, caso contrário, “Reprovado”.
algoritmo media
declaração de variáveis
real n1,n2,media;
início
escreva(“Digite a nota 1: ”);
leia(n1);
escreva(“Digite a nota 2: ”);
leia(n2);
media(n1+n2)/2;
se(media >= 6)
escreva(“Aprovado”);
senão
escreva(“Reprovado”);
fim_algoritmo
Exercícios:
1 – Uma agência de empregos precisa de um programa para analisar as características dos candidatos e
determinar as suas funções, conforme a tabela abaixo:
IDADE
SEXO
FUNÇÃO
Até 30 anos
M
Guia Turístico
Mais que 30 anos
M
Gerente Administrativo
Até 40 anos
F
Recepcionista
Mais que 40 anos
F
Gerente de Compras
2 – A nota final de um estudante é calculada a partir de três notas atribuídas, respectivamente, a um trabalho
de laboratório, a uma avaliação semestral e a um exame final. A média das três notas mencionadas obedece
aos pesos a seguir:
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
13
Faça um programa que receba as três notas, calcule e mostre a média ponderada e o conceito que
segue a tabela:
3 – Faça um programa que receba um número inteiro e verifique se é par ou impar.
4 – Criar um programa para criar um menu de opções na tela, assim:
1 – Quadrado
2 – Retângulo
3 – Triângulo
De acordo com a opção desejada, leia os dados necessários para calcular a
área da respectiva opção.
Mostrar a área calculada.
5 – Uma agência bancária possui dois tipos de investimentos, conforme o quadro a seguir. Faça um programa
que receba o tipo de investimento e o valor do investimento e que calcule e mostre o valor corrigido de
acordo com o tipo de investimento.
6 - Faça um programa que receba a altura e o sexo de uma pessoa e que calcule e mostre o seu peso ideal,
utilizando as seguintes fórmulas:
7 - Um supermercado deseja reajustar os preços de seus produtos usando o seguinte critério: o produto
poderá ter seu preço aumentado ou diminuído. Para o preço ser alterado, o produto deve preencher pelo
menos um dos requisitos a seguir:
VENDA
MÉDIA PREÇO ATUAL
% DE AUMENTO
% DE DIMINUIÇÃO
MENSAL
< 500
< R$ 30,00
10
>= 500 E < 1200
>= R$ 30,00 e < R$ 80,00
15
>= 1200
>= 80,00
20
8 - Faça um programa que apresente o menu a seguir, permita ao usuário escolher a opção desejada, receba
os dados necessários para executar a operação e mostre o resultado. Verifique a possibilidade de opção
inválida e não se preocupe com restrições, como salário negativo.
Menu de opções
1. Imposto
2. Novo salário
3. Classificação
Digite a opção desejada.
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
14
Na opção 1: receber o salário de um funcionário, calcular e mostrar o valor do imposto usando as regras a
seguir:
SALÁRIO
PERCENTUAL DO IMPOSTO
Menor que R$ 500,00
5%
De R$ 500,00 a R$ 850,00
10%
Acima de R$ 850,00
15%
Na opção 2: receber o salário de um funcionário, calcular e mostrar o valor do novo salário, usando as regras
a seguir:
SALARIO
AUMENTO
Maior que R$ 1500,00
R$ 25,00
De R$ 750,00 (inclusive) a R$ 1500,00 (inclusive)
R$ 50,00
De R$ 450,00 (inclusive) a R$ 750,00
R$ 75,00
Menor que R$ 450,00
R$ 100,00
Na opção 3: receber o salário de um funcionário e mostrar sua classificação usando a tabela a seguir:
SALARIO
CLASSIFICAÇÃO
Até R$ 700,00 (inclusive)
Mal remunerado
Maiores que R$ 700,00
Bem remunerado
9 - Faça um programa para resolver equações do 2º grau.
ax2 + bx + c= 0
Δ =b2 – 4 * a * c
Δ < 0  não existe raiz real
Δ = 0  existe uma raiz real
x = (-b) / (2 * a)
Δ > 0  existem duas raízes reais
x1 = (-b +
) / (2 * a)
x2 = (-b -
) / (2 * a)
Exercícios complementares (est. Condicional)
10 - Faça um programa que receba a medida de um ângulo em graus. Calcule e mostre o quadrante em que se
localiza esse ângulo. Considere os quadrantes da trigonometria e, para ângulos maiores que 360º ou menores
que -360º, reduzi-los, mostrando também o número de voltas, o sentido da volta (horário ou anti-horário) e
também se está sobre algum dos eixos.
1o.
quadrante
2o.
quadrante
90º<ângulo<180º
0º<ângulo<90º
3o.
quadrante
180º<ângulo<270º
4o.
quadrante
270º<ângulo<360º
12 - Faça um programa que receba um único inteiro de 5 dígitos e verifique se o dígito d está presente no
número recebido.
13 - Efetuar a leitura de quatro números inteiros e apresentar os que são divisíveis por 5.
14 - Efetuar a leitura de quatro números inteiros e apresentar os que são divisíveis por 2 e 3.
15 - Faça um algoritmo que lê o preço de uma caixa de fósforos e o preço de um isqueiro. Sabendo-se que
um isqueiro pode ser acionado 1300 vezes e que uma caixa de fósforos contém 40 palitos, escreva qual dos
recursos é mais barato.
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
15
16 - Faça um algoritmo que lê as dimensões A, B e C de uma sala retangular. Imagine que o piso será
trocado e as paredes internas e externas pintadas. Leia também o tipo de piso a ser utilizado, bem como os
tipo de tinta a ser utilizada dentro e fora da sala. Baseado na tabela de preços abaixo, calcule o custo de
material desta reforma. Sabe-se que um litro de tinta cobre 3 m2 de parede.
Tabela de Pisos
Tipo Preço por m. quadrado
1
24.00
2
31.00
3
55.00
Tabela de Tintas
Tipo
Preço por litro
1
22.00
2
47.00
FUNDAMENTOS DE LINGUAGEM DE PROGRAMAÇÃO
Uma linguagem de programação é um método padronizado para expressar instruções para um
computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de
computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um
computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas
sob várias circunstâncias.
Portanto, é um tipo de linguagem usada pelo homem para desempenhar comunicação com a
máquina, pois essa não reconhece a linguagem normal do ser humano. Para que a relação homem versus
máquina pudesse evoluir, fez-se necessário a criação de uma linguagem que tornasse a máquina operacional.
A partir do desenvolvimento da linguagem de programação é que o ser humano passou a obter grandes
resultados com a máquina. Atualmente é possível encontrar diversos tipos de linguagem de programação,
sendo as principais: Java, C, C++, C#, Php, Delphi, entre outras.
LINGUAGEM C/C++
Em nossas aulas utilizaremos a linguagem C++ para implementar nossos algoritmos. Os programas
são: Turbo C++, Code::Blocks e freecommandtools.
O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando
um DEC PDP-11 rodando o sistema operacional UNIX. O C é derivado de uma outra linguagem: o B, criado
por Ken Thompson. O B, por sua vez, veio da linguagem BCPL, inventada por Martin Richards.
Durante alguns anos, o padrão da linguagem C foi aquele fornecido com a versão 5 do sistema
operacional Unix. Com a popularização dos microcomputadores, várias implementações de C foram criadas,
gerando, assim, muitas discrepâncias. Para resolver tal situação, o ANSI (American National Standards
Institute) estabeleceu, em 1983, um comitê para definir um padrão que guiasse todas as implementações da
linguagem C.
A linguagem C++ é uma extensão da linguagem C. As instruções que fazem parte desta última
representam um subconjunto da primeira. Os incrementos encontrados na linguagem C++ foram feitos para
dar suporte à programação orientada a objetos. A sintaxe é basicamente a mesma da linguagem C.
#include <nome_da_biblioteca>
void main()
{
Bloco de comandos;
}
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
16
Bibliotecas são arquivos contendo várias funções que podem ser incorporadas aos programas escritos
em C/C++. A diretiva #include faz com que o texto contido na biblioteca especificada seja inserido no
programa.
As bibliotecas iostream.h e conio.h permitem a utilização de diversos comandos de entrada e saída.
É importante salientar que a linguagem C/C++ é sensível as letras maiúsculas e minúsculas,
ou seja, considera que letras maiúsculas são diferentes de minúsculas (por exemplo, a é diferente de A).
Sendo assim, todos os comandos devem, obrigatoriamente, ser escritos em letras minúsculas. Portanto, o C é
"Case Sensitive", isto é, maiúsculas e minúsculas fazem diferença. Se declarar uma variável com o nome
soma ela será diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos do C if e for,
por exemplo, só podem ser escritos em minúsculas pois senão o compilador não irá interpretá-los como
sendo comandos, mas sim como variáveis.
Um programa em C++ consiste em um ou mais arquivos. Um arquivo é uma porção de texto contendo
código fonte em C++ e comandos do pré-processador. Em outras palavras, ele corresponde a um arquivo
fonte em um sistema tradicional. A extensão dos nomes dos arquivos fonte em C++, normalmente, é ".cpp".
Quando o programa começa, ele executa o código de inicialização e chama uma função especial
main(), onde é colocado o código primário para o programa
Um programa C++ mínimo consiste em:
main() { }
Este programa define a função main, que não possui argumentos e não faz nada. As chaves, { e },
são usadas para expressar agrupamentos em C++; no exemplo anterior, estas indicam o início e o fim do
corpo da função (vazia) main. Cada programa em C++ deve ter uma função main.
CARACTERÍSTICAS DA LINGUAGEM C/C++
Tipos de dados
Definem os tipos de informações a serem processadas. Os tipos de dados mais utilizados são:
numéricos e literais ou caracteres.
 Numéricos:
Algoritmo
inteiro
real
Em C++
int
float
 Literais ou Caracteres
Algoritmo
literal
Em C++
char
Declaração de variáveis
As variáveis são declaradas após a especificação de seus tipos. Os tipos mais utilizados são:
int (inteiro)
float (real)
char (literal)
Comandos:
O comando de atribuição é utilizado para conceder valores ou operações a variáveis, sendo
representado por = (sinal de igualdade).
Exemplo:
x = 4;
y = 2.5;
i = “A”;
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
17
O comando de entrada é utilizado para receber dados digitados pelo usuário, que serão armazenados
em variáveis.
Exemplo:
cin>>x;
O comando de saída é utilizado para mostrar dados na tela.
Exemplos:
cout<<x;
Alguns operadores e funções predefinidas em C++
OPERADOR
=
COMENTÁRIO
O conteúdo da variável y é atribuído à variável x. (A uma variável pode
ser atribuído o conteúdo de outra, um valor constante ou, ainda, o
resultado de uma função.
+
x+y
Soma o conteúdo de x e de y.
x-y
Subtrai o conteúdo de y do conteúdo de x.
*
x*y
Multiplica o conteúdo de x pelo conteúdo de y.
/
x/y
Obtém o quociente da divisão de x por y.
%
x%y
Obtém o resto da divisão de x por y.
O operador % só pode ser utilizado com operandos do tipo inteiro.
Os operadores matemáticos de atribuição são utilizados para representar de maneira sintética uma
operação aritmética e, posteriormente, uma operação de atribuição. Por exemplo, na tabela anterior, o operador +=
está sendo usado para realizar a operação x + y e, posteriormente, atribuir o resultado obtido à variável x.
FUNÇÃO
ceil
floor
abs
cos
sin
tan
M_PI
modf
pow
sqrt
EXEMPLO
x=y
FUNÇÕES MATEMÁTICAS
(utilizar a biblioteca math.h, ou seja, #include<math.h>)
EXEMPLO
COMENTÁRIO
ceil(x)
Arredonda um número real para cima.
Ex.: ceil(3.2) é 4.
floor(x)
Arredonda um número real para baixo.
Ex.: floor(3.2) é 3.
abs(x)
Obtém o valor absoluto de x.
cos(x)
Calcula o cosseno de x (x deve estar representado em radianos)
sin(x)
Calcula o seno de x (x deve estar representado em radianos)
tan(x)
Calcula tangente de x (x deve estar representado em radianos)
M_PI
Retorna o valor de π.
z = modf(x,&y)
Decompõe o número real armazenado em x em duas partes: y recebe a
parte fracionária e z, a parte inteira do número.
pow(x,y)
Calcula a potência de x elevado a y.
sqrt(x)
Calcula a raiz quadrada de x.
(para raiz cúbica de x, por exemplo, faríamos x elevado a 1/3, no entanto,
1/3 deve ser indicado com 1.0/3.0 divisão entre números reais, pois em
C++, 1/3 indica uma divisão entre números inteiros, o que resulta um
valor inteiro, isto é, 0, pois em C++, a divisão entre números inteiros
sempre resulta em inteiro. Então:
= x1/3 = pow(x,1.0/3.0)
Algoritmos e Fundamentos de uma Linguagem de Programação – Prof. Eduardo
18
Exercícios resolvidos:
Faça um algoritmo que receba dois números inteiros, calcule e mostre a soma desses números.
#include <iostream.h>
#include <conio.h>
void main ()
{
clrscr();
int n1, n2, resultado;
cout<<\n “Digite o número 1: ”:
cin>>n1;
cout<<\n “Digite o número 2: ”:
cin>>n2;
resultado = n1 + n2;
cout << "\nA soma é:" << resultado;
getch();
}
Faça um algoritmo que receba duas notas de aluno, calcule e mostre a média aritmética das notas e a
mensagem de “Aprovado”, se a média obtida for maior ou igual a 6.0 ou, caso contrário, “Reprovado”.
#include <iostream.h>
#include <conio.h>
void main ()
{
clrscr();
float n1, n2, media;
cout<<\n “Digite a nota 1: ”:
cin>>n1;
cout<<\n “Digite a nota 2: ”:
cin>>n2;
media = (n1 + n2)/2;
cout << "\nMédia das notas:" << media;
if(media >= 6)
cout<<"\nAPROVADO!"
else
cout<<"\nREPROVADO!"
getch();
}
Download

1 – INTRODUÇÃO AOS ALGORITMOS Desde o