Capitulo 01
Capitulo 01
Capitulo 01
Algoritmos e Programação 3
1. Algoritmos Praticamente tudo hoje está ligado com a tecnologia. Tudo de certa
forma foi construído através de um algoritmo; a TV liga quando clicamos
Vamos imaginar que João Victor precisa estudar para a prova de em um botão, ou seja, uma ação que produz um resultado.
matemática. Dessa maneira, ele organizou o seguintes passos: Todo sistema de informação utiliza um algoritmo para receber as
entradas, realizar o processamento e produzir uma saída. O Google
utiliza um conjunto de algoritmos para realizar as buscas, que permitem
Passo 1: Passo 2: Passo 3: Passo 4:
Organiza o Seleciona Estuda o Faz os que seja trazida a informação adequada para os usuários, por exemplo,
material. exercícios. conteúdo. exercícios.
aqueles robôs que limpam a casa utilizam um algoritmo para realizar
tarefas. Em nosso dia a dia, quando planejamos tarefas estamos
utilizando pequenos algoritmos.
Passo 7: Passo 6: Passo 5:
Finaliza seus
estudos.
Revê o
conteúdo.
Verifica seus
erros. Soluções podem ser dadas através de algoritmos. Para resolver um
problema, precisamos saber os passos. Dessa forma, não importa se o
problema é simples ou complexo, o importante é saber definir os passos
Veja que João Victor elencou um conjunto de passos para se alcançar que serão necessários para a sua resolução. Claro que geralmente
um objetivo. Essa é a ideia de um algoritmo que pode ser definido como problemas complexos possuem uma maior quantidade de passos,
uma sequência de passos para a resolução de um problema, ou seja, um contudo, tudo por ser resolvido com uma sequência.
algoritmo define um passo a passo para que seja possível alcançar um
Vamos para um exemplo:
objetivo.
Lila quer pensar em um algoritmo que multiplica dois valores:
Pensando computacionalmente, todo programa tem uma entrada, um
processamento e uma saída. Criamos programas para ajudar em nossa Primeiramente, para multiplicar dois valores é preciso ler dois valores
vida diária. Veja quantos programas você utiliza todos os dias! (solicitar). Então um primeiro passo poderia ser:
Algoritmos e Programação 4
Passo 1: Ler dois valores.
Depois disso, tendo a posse dos dois valores, Lila pode realizar o Problemas podem ser resolvidos por soluções e um algoritmo descreve
processamento, que é multiplicar os dois valores. uma sequência de passos para resolver problemas simples e complexos,
podendo ser implementados computacional através de uma linguagem
Passo 2: Multiplicar valor 1 por valor 2 (valor 1 x valor 2).
de programação.
Pronto, Lila já conseguiu seu objetivo. Agora falta somente mostrar o
resultado, logo o passo 3 deve ser exibir o resultado.
1 2 3
Multiplicar valor 1
Ler dois valores. por valor 2 Exibir o resultado.
(valor 1 x valor 2).
Algoritmos e Programação 5
A Figura 1, embora ilustrativa e um tanto “vintage”, representa bem Desafio 2:
a ideia do planejamento de um algoritmo envolvendo a tomada de
Calcular o volume de um cubo.
decisões e estratégias para que seja possível criar uma sequência de
passos, de modo que essa sequência de passos possa ser escrita em uma Entrada Ler o tamanho da aresta.
linguagem de programação com comandos, variáveis e instruções, que
Processamento Volume = aresta * aresta * aresta.
será compilada e convertida em um linguagem de máquina conseguindo
Saída Apresentar o volume.
ser processada pelos computadores.
Algoritmos e Programação 6
Desafio 5: Desafio 8:
Calcular a média ponderada (trabalho com peso 3 e prova com peso 7). Calcular o valor final de uma aplicação.
Entrada Ler as notas do trabalho e da prova. Entrada Ler o valor inicial, os juros e o tempo.
Processamento Média = (trabalho*3 + prova*7)/10. Processamento Valor final = valor inicial * (1 + juros/100) tempo
Saída Apresentar a média. Saída Apresentar o valor final.
Desafio 6: Desafio 9:
Verificar se um aluno está aprovado. Para ser aprovado, a média deve ser Informar a raiz quadrada de um número
maior ou igual a 7.
Entrada Ler o número
Entrada Ler a média.
Processamento Calcular a raiz quadrada
Se média >=7 então
resultado = “aprovado” Saída Apresentar a raiz quadrada.
Processamento
Senão Desafio 10:
resultado = “reprovado”
Calcular a média entre preço de 10 produtos.
Saída Apresentar o resultado.
Desafio 7: Entrada Ler o preço de 10 produtos.
Transformar a temperatura de Celsius para Kelvin. total = 0.
Para cada produto lido:
Entrada Ler a temperatura em Celsius. Processamento total = total + preço.
Depois de lido todos os valores calcular a média.
Processamento Kelvin = Celsius + 273. média = total /10;
Saída Apresentar a temperatura em Kelvin. Saída Apresentar a média.
Algoritmos e Programação 7
2. Lógica de Programação Com a lógica, pode-se elaborar, entre outras coisas, as decisões nos
algoritmos analisando e comparando valores geralmente armazenados
Criar programas é uma arte que envolve criatividade, ideias e muitas em variáveis.
vezes inovação. Programas ajudam a transformar vidas em nossa
sociedade, facilitando tarefas diárias, automatizando processos,
auxiliando na resolução de inúmeros problemas, etc. Para criar Uma variável é um espaço que armazena um valor para que esse valor
programas em qualquer linguagem, é preciso, antes de tudo, entender a possa ser utilizado no código construído. Por exemplo, para dividir dois
lógica de programação. Compreendendo a lógica de programação, você valores, precisamos antes ler e armazenar esses valores em algum lugar.
consegue estruturar algoritmos computacionalmente utilizando regras e Esses valores são armazenados em variáveis.
com isso, você irá conseguir programar em QUALQUER LINGUAGEM DE Então vamos primeiro definir que o conceito de proposição é uma
sentença declarativa que pode assumir um valor verdadeiro ou falso.
PROGRAMAÇÃO.
Exemplos:
Entendendo a lógica de programação, basta depois você entender a O céu é azul.
sintaxe e a semântica da linguagem escolhida para implementar a João joga bola.
solução computacional. O grande desafio da computação não é entender Andressa come.
as linguagens, mas sim saber a lógica para propor as soluções adequadas Quando a proposição está com conectivos, chamamos de proposição
para os inúmeros problemas. composta.
João joga bola e Maria brinca.
Saber a lógica de programação, envolve saber a lógica matemática.
Andressa come ou Lila estuda.
Para isso, vamos agora revisar alguns conceitos da lógica matemática
Para programar corretamente é importante conhecer os conectivos e as
que iremos utilizar no desenvolvimento de soluções. Esses conceitos da tabelas verdades das proposições compostas.
lógica possibilitam auxiliar o entendimento dos comandos, instruções e
principalmente para análise de expressões.
Algoritmos e Programação 8
Vamos ver a seguir: Expressão Resultado
Quando utilizamos o conectivo, para que a proposição composta a => 10 Verdadeiro
pelas proposições A e B sejam verdadeiras, é necessário que ambas b > 50 Falso
as proposições sejam verdadeiras. Caso uma seja falsa, a proposição a => 10 e b <= 50 Verdadeiro
composta já será falsa. Veja a tabela verdade na Figura 2.
a < 10 e b<=50 Falso
A B AeB
Na primeira linha, “a” vale 10, logo ele é maior ou igual a 10. Portanto, o
V V V resultado é verdadeiro.
V F F
Na segunda linha, “b” vale 20, logo ele não é maior que 50. Portanto, o
F V F resultado é falso.
F F F
Na terceira linha, “a” é igual a 10 e o “b” é menor que 50. Logo, o resultado
Figura 2: Tabela Verdade do “e”. Fonte: Elaborado pelo autor. é verdadeiro.
Exemplo prático: Na quarta linha, “a” não é menor que 10, pois é igual a 10, e mesmo “b”
sendo menor que 50, o resultado será falso, pois para ser verdadeiro
Considere um valor armazenado na variável n e a seguinte expressão
tudo tinha que ser verdadeiro.
n>10 e n <50. Para que ela seja verdadeira, é necessário que n seja maior
que 10 e menor que 50. Portanto, deve ser um número maior que 10 e Agora vamos analisar o “ou”. Quando utilizamos o conectivo “ou” para
menor que 50. a proposição ser verdadeira, basta que apenas uma proposição seja
verdadeira. Com o conectivo ou a proposição composta, somente será
Vamos avaliar algumas expressões. Considere a=10 e b=20.
falsa se as duas proposições forem falsas. Veja a tabela verdade na
Figura 3.
Algoritmos e Programação 9
A B A ou B Na primeira linha, “a” vale 10, logo ele é maior ou igual a 10. Portanto, o
resultado é verdadeiro.
V V V
V F V Na segunda linha, “b” vale 20, logo ele não é maior que 50. Portanto, o
resultado é falso.
F V V
F F F Na terceira linha, “a” é igual a 10 e o “b” é menor que 50. Logo, o resultado
é verdadeiro.
Figura 3: Tabela verdade do “ou”. Fonte: Elaborado pelo autor.
Na quarta linha, “a” não é menor que 10, pois é igual a 10. Contudo, “b” é
Exemplo prático: menor que 50, logo, o resultado será verdadeiro.
Expressão Resultado
a => 10
b > 50
Verdadeiro
Falso
3. Compilador
Vamos agora entender como um programa escrito em uma linguagem
a => 10 ou b <= 50 Verdadeiro
formal consegue ser convertido em outra linguagem formal entendida
a < 10 ou b <= 50 Verdadeiro por máquinas.
Algoritmos e Programação 10
Primeiramente, é importante destacar que para programarmos, Compilador
utilizamos linguagem de programação. Existem diversas linguagens
de programação com suas sintaxe e semântica. Contudo, entendendo a Análise Análise Análise Gerador de
Código Otimização
Gerador
de Código
Léxica Sintática Semântica
lógica de programação, é possível criar códigos em qualquer linguagem, Intermediário Objeto
Algoritmos e Programação 11
Exemplo: Nesse segundo exemplo, a análise
semântica identifica se a variável
int num =0; declarada como int está recebendo um
Sequência correta tipo, nome da variável, atribuição, valor e ponto e texto, ou seja, se está sendo utilizada
para um outro tipo não compatível.
vírgula.
Essas três primeiras fases são
Essa fase pega erros comuns, como declarar primeiro o nome da variável
responsáveis pelos principais erros de
e depois o tipo. Esses erros de compilação fazem com que o programa
compilação.
nem rode.
Após essas fases, temos a seguintes fases:
Análise Semântica
Gerador de Código Intermediário
A análise semântica verifica aspectos relacionados à semântica ao
significado,verificando ambiguidades, e se a variável declarada está A fase de gerador de código intermediário gera um
sendo utilizada para a sua finalidade. código mais próximo com a linguagem de máquina para que
esse código possa ser otimizado.
Exemplo:
Otimizador
int a= 10;
Verificar o código com a finalidade de otimizá-lo em termos de recursos
float a = 20; de tempo, memória, rede e etc, por exemplo.
Nesse primeiro exemplo, a análise semântica identificaria ambiguidade. Gerador de Código Objeto
Algoritmos e Programação 12
Por enquanto, iremos focar nossos estudos na linguagem C. Dessa forma,
é importante destacar que um código na linguagem C compilado para Referências
Windows, por exemplo, não roda no Linux, devendo ser compilado no ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos da programação de
Linux também. computadores: algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3. ed. São
Paulo: Pearson Education do Brasil, 2012.
Neste capítulo, embarcamos nesse mundo fabuloso de ideias, criatividade
e inovação que é o mundo da programação. Com a programação, é DEITEL, P.; DEITEL, H. C: como programar. 6. ed. São Paulo: Pearson
possível criar inúmeras soluções, melhorando entre outras coisas a vida Prentice Hall, 2011.
das pessoas em nossa sociedade.
FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de programação: a
Começamos nossos estudos apresentando o conceito de algoritmo construção de algoritmos e estrutura de dados. 3. ed. São Paulo: Prentice
enfatizando que os algoritmos estão presentes em tudo em nossa vida Hall, 2005.
e que as soluções computacionais devem ser estruturadas com a ajuda MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: lógica para
do algoritmo e lógica de programação. Isso nos mostra que ao entender desenvolvimento de programação de computadores. 28. ed. São Paulo:
a lógica de programa, que tem como forte base a lógica da matemática, Érica, 2016.
é possível aprender qualquer linguagem de programação bastando
verificar a sintaxe e a semântica. MIZRAHI, V. V. Treinamento em linguagem C. 2. ed. São Paulo: Pearson
Prentice Hall, 2008.
Nesse contexto, também mostramos que as linguagens de programação
SILVA, F. S. C.; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed.
permitem a implementação dos algoritmos possibilitando que o código
São Paulo: Cengage Learning, 2018.
fonte gerado um linguagem entendida por seres humanos possa
ser convertido em código objeto em uma linguagem entendida por SZWARCFITER, J. L.; MARKENZON, L. Estruturas de dados e seus
máquinas. Isso é feito através de um processo de compilação passando algoritmos. 3. ed. Rio de Janeiro: LTC, 2010.
por diversas fases.
ZIVIANI, N. Projeto de algoritmos: com implementações em Java e C++.
São Paulo: Cengage Learning, 2007.
Algoritmos e Programação 13