Algoritmo - Prof. Ms. Claudio Benossi

Propaganda
Lógica de Programação
Introdução aos
Algoritmos
Prof. Me. Claudio Benossi
[email protected]
Sumário
Revisão de algoritmos
Linguagem de programação
Linguagem estruturada
Elaboração de programas
Sumário
Revisão de algoritmos
Linguagem de programação
Linguagem estruturada
Elaboração de programas
Algoritmo – Definição
Descrição de um conjunto finito de comandos
para a solução de um problema em um tempo
finito.
Algoritmo – Exemplo
:: Trocar o pneu de um carro
Algoritmo – Exemplo
:: Trocar o pneu de um carro
1. Desparafusar a roda.
Algoritmo – Exemplo
:: Trocar o pneu de um carro
2. Suspender o carro com um macaco.
Algoritmo – Exemplo
:: Trocar o pneu de um carro
3. Retirar a roda com o pneu furado.
Algoritmo – Exemplo
:: Trocar o pneu de um carro
4. Colocar o step.
Algoritmo – Exemplo
:: Trocar o pneu de um carro
5. Abaixar o carro.
Algoritmo – Exemplo
:: Trocar o pneu de um carro
6. Parafusar a roda.
Algoritmo – Mais Exemplos
Pegar um ônibus para o Drummond.
Fazer um bolo.
Fazer um barco de papel.
Algoritmo
Uma boa lógica de programação é desenvolvida
a partir de um conjunto de elementos, entre
eles:
 Organização
 Criatividade
 Perseverança
 Padronização
 Otimização
Algoritmo
Lógica de programação é a técnica de
encadear pensamentos para atingir determinado
objetivo. O aprendizado desta técnica é
necessário, para quem quer trabalhar com
desenvolvimento de sistemas e programas.
Lógica de Programação: raciocínio lógico
empregado no desenvolvimento de programas
de computador, fazendo uso ordenado dos
elementos básicos suportados por um dado
estilo de programação.
Algoritmo
 Algoritmo é uma sequência de passos finitos
com o objetivo de solucionar um problema.
Algoritmo - Exemplo
Elabore um algoritmo em linguagem natural
para resolver as situações colocadas a seguir:
Um homem precisa atravessar um rio com um
barco que possui capacidade de transportar
apenas ele e mais uma de suas três cargas, que
são: um cachorro, uma galinha e um saco de
milho. O que o homem deve fazer para
conseguir atravessar o rio sem perder as suas
cargas?
Algoritmo - Exemplo
Inicio
Homem leva a galinha até a margem direita;
Homem Volta a margem esquerda;
Homem leva o Cachorro até a margem direita;
Homem Volta a margem esquerda levando a galinha;
Homem leva o Saco de Milho até a margem direita;
Homem Volta a margem esquerda;
Homem leva a galinha até a margem direita;
Fim
Algoritmo – Propriedades
Possui um estado inicial
Possui sequência lógica
Contém ações claras e precisas
Possui dados de entrada
Produz estado final previsível
Deve ser eficaz
Algoritmo – Fluxo
Entrada
Sequência Lógica
Saída
Algoritmo – Fluxo
Raio R de uma
circunferência
P=2**R
Perímetro P da
circunferência
Algoritmo
OPERADORES ARITMÉTICOS
+ Adição
- Subtração
* Multiplicação
/ Divisão
Algoritmo
OPERADORES RELACIONAIS
> Maior que
< Menor que
>=
Maior ou Igual
<=
Menor ou Igual
= Igual
<> Diferente
Algoritmo
LINEARIZAÇÃO DE EXPRESSÕES
Para a construção de Algoritmos todas as
expressões aritméticas devem ser linearizadas,
ou seja, colocadas em linhas.
É importante também ressalvar o uso dos
operadores correspondentes da aritmética
tradicional para a computacional.
Algoritmo
Exemplo:
Algoritmo
MODULARIZAÇÃO DE EXPRESSÕES
A modularização é a divisão da expressão em
partes, proporcionando maior compreensão e
definindo prioridades para resolução da mesma.
Como pode ser observado no exemplo anterior,
em expressões computacionais usamos somente
parênteses “( )” para modularização.
Algoritmo
Na informática podemos ter parênteses dentro
de parênteses.
Exemplos de prioridades:
(2+2)/2=2
2+2/2=3
Algoritmo
OPERADORES ESPECIAIS (MOD e DIV)
MOD  Retorna o resto da divisão entre 2
números inteiros.
DIV  Retorna o valor inteiro que resulta da
divisão entre 2 números inteiros.
Algoritmo
OPERADORES LÓGICOS
Atuam sobre expressões retornando sempre
valores lógicos como Falso ou Verdadeiro.
E
OU
NÃO
RETORNA VERDADEIRO SE AMBAS AS PARTES FOREM
VERDADEIRAS.
BASTA QUE UMA PARTE SEJA VERDADEIRA PARA
RETORNAR VERDADEIRO.
INVERTE O ESTADO, DE VERDADEIRO PASSA PARA FALSO
E VICE-VERSA.
Algoritmo
TABELA VERDADE
A
B
AEB
A OU B
NÃO (A)
V
V
V
V
F
V
F
F
V
F
F
V
F
V
V
F
F
F
F
V
Algoritmo
EXPRESSÕES LÓGICAS
As expressões compostas de relações sempre
retornam um valor lógico.
Exemplos:
2+5>4  Verdadeiro
3<>3  Falso
Algoritmo
De acordo com a necessidade, as expressões
podem ser unidas pelos operadores lógicos.
Exemplos:
Algoritmo
VARIÁVEIS
Variáveis são endereços de memória destinados
a armazenar informações temporariamente.
* Todo Algoritmo ou programa deve possuir
variável!
Algoritmo
VARIÁVEIS DE ENTRADA E SAÍDA
Variáveis de Entrada armazenam informações
fornecidas por um meio externo, normalmente
usuários ou discos.
Variáveis
de
Saída
armazenam
processados como resultados.
dados
Algoritmo
Exemplo:
De acordo com a figura acima A e B são Variáveis
de Entrada e C é uma Variável de Saída.
Algoritmo
CONSTANTES
Constantes são endereços de memória
destinados a armazenar informações fixas,
inalteráveis durante a execução do programa.
Exemplo:
PI = 3.1416
Algoritmo
IDENTIFICADORES
São os nomes dados a variáveis, constantes e
programas.
Regras Para construção de Identificadores:
 Não podem ter nomes de palavras reservadas
(comandos da linguagem);
 Devem possuir como 1º caractere uma letra ou
Underscore ( _ );
Algoritmo
 Ter como demais caracteres letras, números ou
Underscore;
 Ter no máximo 127 caracteres;
 Não possuir espaços em branco;
 A escolha de letras maiúsculas ou minúsculas é
indiferente.
Algoritmo
IDENTIFICADORES
São os nomes dados a variáveis, constantes e
programas.
Regras Para construção de Identificadores:
Não podem ter nomes de palavras reservadas
(comandos da linguagem);
Devem possuir como 1º caractere uma letra ou
Underscore ( _ );
Ter como demais caracteres letras, números ou
Underscore;
Algoritmo
Exemplo:
Algoritmo
TIPOS DE DADOS
INTEIRO
ADMITE SOMENTE
GERALMENTE
É
REPRESENTAR
(QUANTIDADE).
NÚMEROS INTEIROS.
UTILIZADO
PARA
UMA
CONTAGEM
Algoritmo
TIPOS DE DADOS
REAL
ADMITE NÚMEROS REAIS (COM OU SEM CASAS
DECIMAIS). GERALMENTE É UTILIZADO PARA
REPRESENTAR UMA MEDIÇÃO.
Algoritmo
TIPOS DE DADOS
CARACTERE
ADMITE CARACTERES ALFANUMÉRICOS. OS
NÚMEROS QUANDO DECLARADOS COMO
CARACTERES TORNAM SE REPRESENTATIVOS E
PERDEM A ATRIBUIÇÃO DE VALOR.
Algoritmo
TIPOS DE DADOS
LÓGICO
 ADMITE
SOMENTE
VALORES
(VERDADEIRO / FALSO).
LÓGICOS
Algoritmo
COMANDOS DE I/O (INPUT/OUTPUT)Entrada e Saída
LER  Comando de entrada que permite a
leitura de Variáveis de Entrada.
ESCREVER  Comando de saída que exibe
uma informação na tela do monitor.
IMPRIMIR  Comando de saída que envia
uma informação para a impressora.
Sumário
Revisão de algoritmos
Linguagem de programação
Linguagem estruturada
Elaboração de programas
Linguagem de programação
Estabelece regras de sintaxe para que o
algoritmo possa ser entendido por uma
máquina.
Algoritmo × Linguagem de Programação
Raciocínio
Algoritmo
int a, b, c;
if (a > 2)
a = b + c;
else
a = b – c;
return;
Programa
Programa
Programa é a codificação de um algoritmo em
uma linguagem de programação.
Um computador é uma máquina que, a partir de
uma entrada, realiza um número de cálculos
matemáticos e lógicos, gerando uma saída.
Programa é o elemento que diz ao computador
quais cálculos devem ser realizados.
Sumário
Revisão de algoritmos
Linguagem de programação
Linguagem estruturada
Elaboração de programas
O que é linguagem estruturada?
É uma forma de programação de computadores
que preconiza que todos os programas possíveis
podem ser reduzidos a apenas três estruturas:
 Sequência
 Decisão
 Interação
Características
Sua principal característica é a utilização de
blocos para solução de um problema.
Permite a utilização combinada de sub-rotinas
compiladas separadamente, sem que pertençam
ao mesmo programa propriamente dito.
Sumário
Revisão de algoritmos
Linguagem de programação
Linguagem estruturada
Elaboração de programas
Passos para elaboração de um programa
1. Compreender o problema.
2. Esboçar um procedimento para resolver o
problema.
3. Formular o algoritmo.
4. Traduzir o algoritmo para uma linguagem de
programação (Codificação).
Passos para elaboração de um programa
:: Exemplo
Calcular as raízes reais de:
2
ax + bx + c
1. Compreender o problema
Exemplo: Equação de 2o. grau
Possibilidades de raízes:

02 raízes complexas;

02 raízes reais idênticas;

02 raízes reais distintas;
Condição para haver raízes reais: Δ ≥ 0
2. Esboçar um procedimento para
resolver o problema
Calcular Δ.
Se Δ ≥ 0, calcular raízes reais.
Caso contrário, informar que não há raízes
reais.
3. Formular o algoritmo
ler(a,b,c)
delta = b^2 – 4*a*c
se (delta ≥ 0) então
r1 = – b – (delta)^(–1/2)
r2 = – b + (delta)^(–1/2)
escrever(r1,r2)
senão
escrever(“Não há raiz real”)
fim do se
fim do algoritmo
4. Codificar
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
float a, b, c, delta, r1, r2;
scanf("%f %f %f", &a, &b, &c);
delta = b*b – 4*a*c;
if (delta >= 0)
{
r1 = – b – sqrt(delta);
r2 = – b + sqrt(delta);
printf("r1 = %f \n r2 = %f", r1, r2);
}
else
printf("Nao ha raiz real\n");
}
Gerando um programa executável
 Passos necessários para gerar um programa
executável:
A. Codificação
B. Geração de Código Objeto
C. Linkagem
D. Depuração (debug)
Gerando um programa executável
Codificação
Código
fonte
Depuração
Geração de código
objeto
Código
objeto
Bibliotecas
Linkagem
Programa
Executável
Gerando um programa executável
A. Codificação
É a escrita de um programa de acordo com uma
linguagem de programação.
Utiliza Editores de Texto.
Resultado: código-fonte.
Gerando um programa executável
B. Geração de código-objeto
Tradução do código-fonte para o código de
máquina do processador.
Realizado pelos Compiladores.
Resultado: código-objeto.
Gerando um programa executável
C. Linkagem
Rearranja o código do programa
Incorpora as partes referenciadas no código
original (obtidas de uma biblioteca).
Realizada pelos Ligadores.
Resultado: código executável pelo processador.
Gerando um programa executável
D. Depuração (debug)
Auxilia o programador a eliminar erros dos
programas (“bugs”).
Permite:


execução passo-a-passo.
visualização do estado do programa através das
variáveis.
Para saber mais...
SEBESTA, R. W. Conceitos de linguagens de
programação. 4ª ed. Bookman, 2000.
Dicionário de Linguagens de Programação:
http://users.erols.com/ziring/dopl.html
Dicionário de algoritmos e estruturas de dados:
http://www.nist.gov/dads/
Questões
Download