Algoritmos Introdução
Thiago Leite e Francisco Barretto thiago.leite@udf.edu.br
francisco.barretto@udf.edu.br
Bibliografia
•
MANZANO, JoséAugusto; OLIVEIRA, Jayr Figueiredo de.
Algoritmos: Lógica
para Desenvolvimento de Programação de
Computadores. 17ª Edição. São Paulo:
Editora Erica, 2005.
Bibliografia
•
FEOFILOFF, Paulo.Algorítimos em
linguagem C. Rio de
Janeiro: Elsevier, 2009. xv, 208 p. ISBN
9788535232493.
Bibliografia
•
MEDINA, Marco;FERTING, Cristina.
Algoritmos e
programação: teoria e prática. São Paulo:
Novatec Editora, 2006.
Bibliografia
•
ASCENCIO, Ana Fernanda Gomes;CAMPOS, Edilene
Aparecida Veneruchi de.
Fundamentos da Programação de Computadores. 3ª Edição. São Paulo:
Pearson, 2012.
Ementa
1.Introdução
2.Estruturas de decisão 3.Estruturas de repetição 4.Estruturas de dados
5.Sub-rotinas
Avaliação
• Seis exercícios individuais em sala (1 ponto cada)
• Datas a serem definidas
• Prova Regimental Integralizada (5 pontos)
•
Não há arredondamento de notasPresença em Sala de Aula
• Limite de 20 faltas
• 4 faltas por dia de aula (aulas duplas)
•
Presença do aluno será cobradaIntrodução
• Como um computador realiza suas atividades?
• pessoas “programam” os computadores
• computadores apenas processam
Introdução
• O computador é composto de duas partes diferentes
• hardware - partes físicas que realizam o processamento
• software - composto pelos programas
que “sabem” como os dados devem ser
processados
Introdução
• Para criar programas é necessário utilizar uma linguagem que o computador
compreenda
• Linguagem de Programação
Níveis das Linguagens de
Programação
Introdução
• Para o desenvolvimento de um programa é necessário
• Análise do problema
• Algoritmo que resolva o problema
• Codificação na linguagem de
programação
Introdução
•
O que é um Algoritmo?•
“(...) sequência de passos que visa garantir um objetivo bem definido.”•
“(...) descrição de uma sequência de passos que deve ser seguida para a realização de umatarefa.”
•
“(...) sequência finita de instruções ouoperações cuja execução, em tempo finito, resolve um problema computacional”
Introdução
• No dia-a-dia nós mesmos realizamos algoritmos
• Somar três números
Introdução
• Algoritmo para somar três números
• Passo 1 - receber os três números
• Passo 2 - somar os três números
• Passo 3 - apresentar o resultado obtido
Introdução
• E como seria um Algoritmo para fazer um
sanduíche?
Introdução
•
Algoritmo para fazer um sanduíche•
Passo 1 - Pegar o pão•
Passo 2 - Cortar o pão ao meio•
Passo 3 - Pegar a maionese•
Passo 4 - Passar a maionese no pão•
Passo 5 - Pegar o alface•
Passo 6 - Colocar o alface no pão•
Passo 7 - Pegar o hambúrguer•
Passo 8 - Fritar o hambúrguer•
Passo 9 - Colocar o hambúrguer no pãoIntrodução
• Algoritmo para trocar uma lâmpada?
• Algoritmo para ir para a faculdade?
• Algoritmo para sacar no banco 24 horas?
• ...
Introdução
• Mas os passos que realizaria são diferentes!
• por isso existem vários algoritmos que resolvem os mesmos problemas
• Exemplo: um algoritmo para calcular
Introdução
•
Como construir um algoritmo?•
compreender o problema a ser resolvido•
definir os dados de entrada•
definir como será realizado o processamento e quais dados serão utilizados•
definir os dados de saída•
construir o algoritmo com o tipo mais adequado (tipos de algoritmos explicados a seguir)•
testar o algoritmo utilizando simulaçõesIntrodução
• Símbolos para o desenho de Algoritmos
• algoritmos são representados de diversas formas
• utilizamos símbolos para a representação
da lógica envolvida
Introdução
• Formas de representação de algoritmos
• Fluxogramas
• Diagrama de Bloco
Introdução
•
Fluxograma•
representação do fluxo de execução utilizando poucos símbolos•
foco na lógica, e não no desenvolvimento do programaIntrodução
• Diagrama de Blocos
• também denominado “diagrama de fluxo”
• representação utilizando diversos
símbolos em quaisquer níveis de detalhes
• foco no desenvolvimento do programa
Diagrama de Blocos
Símbolos Básicos
Símbolo Significado
Início ou fim de um fluxo de programa
Seta de fluxo de dados Processamento de dados
Entrada de dados Decisão
Entrada e saída de dados
Exemplo de um Algoritmo
Introdução
• Lógicas
• Linear
• Estruturada
• Modular
• Diagrama de Chapin
• Português Estruturado
Introdução
•
Lógica Linear•
objetos organizados em um passo-a-passo simples•
utilizada quando há recursos limitados•
normalmente adotado na matemáticaIntrodução
•
Lógica Estruturada•
compostoprincipalmente de sequência, seleção e iteração.
•
geralmente utilizado no processamento eletrônico de dadosLógica Estruturada
Introdução
•
Lógica Modular•
desenvolver o código em partesindependentes,
chamados módulos
•
dividir o problema complexo emproblemas menores
Introdução
• Diagrama de Chapin
• Desenvolvido por Nassi e Shneiderman
• apresenta uma visão hierárquica e
estruturada do fluxo
Diagrama de Chapin
Português Estruturado
•
Português Estruturado•
técnica narrativa utilizando de pseudocódigo, ou português estruturado•
baseada na PDL (Program Design Language)•
referência genérica ao desenvolvimento com uma linguagem de programação•
se assemelha a uma linguagem de alto nível, porém não poderá ser compilada em um computadorPortuguês Estruturado
Exercício
• Elaborar algoritmo necessário para o
cálculo se um aluno será aprovado ou não no UDF
• A partir da compreensão do algoritmo,
elaborar o diagrama de fluxo, diagrama de
chapin e em português estruturado
Introdução
• Tipos de informações
• dados
• instruções
Introdução
• Tipos de dados
• inteiros - números naturais
• ex: 0, 1, -56, 187
• reais - números reais
• ex: 0, 1.5, -45.987
Introdução
•
Tipos de dados (continuação)•
caracteres (literal) - letras, símbolos e números em uma expressão•
ex: “Ola Mundo!”•
lógicos (booleano) - representa apossibilidade de algo ser verdadeira ou falso
•
ex: falso, verdadeiro, false, true, 0, 1Exercício sobre Tipos de Dados
X
XX X
Exercício sobre Tipos de Dados
X X X
Exercício sobre Tipos de Dados
XX X X
Exercício sobre Tipos de Dados
X
X
Introdução
•
Uso de variáveis•
quando há dados a serem inconstantes, instáveis ou incertas•
analogia com um conjunto de gavetas•
cada gaveta pode armazenar apenas um tipo de dado•
cada gaveta deve possuir um nome para organizaçãoRepresentação da Memória do
Computador
Introdução
•
Regras para nomes de variáveis•
poderão possuir um ou mais caracteres•
o primeiro caracter deve ser, necessariamente, uma letra•
o nome da variável não deverá possuir espaços•
não poderá possuir o mesmo nome que uma instrução do programa (ex: variável “soma” e rotina “soma”)•
não poderá possuir caracteres diferentes que números e letrasIntrodução
• Nomes válidos de variáveis
• NomeUsuario
• Fone1
• Delta25
Introdução
• Nomes inválidos de variáveis
• Nome Usuario
• Fone#
• Escreva (considerando que “Escreva” seja
também o nome da instrução)
Exercício sobre Variáveis
X XX
X
Introdução
•
Uso de Constantes•
quando há dados que são fixos e certos•
exemplo:Resultado = Entrada * 1.23
•
1.23 é constante, então:Fator = 1.23
Resultado = Entrada * Fator
Introdução
• Operadores Aritméticos
• variáveis e constantes podem ser
utilizadas para cálculos matemáticos
• apenas variáveis e constantes inteiras e reais podem ser utilizadas para cálculos
• operadores aritméticos podem ser
binários ou unários
Introdução
• Operadores aritméticos binários
• cálculo entre dois ou mais objetos. Ex:
multiplicação, divisão, adição e subtração
• Operadores aritméticos unários
• operação sobre um objeto. Ex:
manutenção do sinal ou inversão do sinal
Operadores Aritméticos
Introdução
• Expressão aritmética na matemática
X = { 43 . [ 55 : ( 30 + 2 ) ] }
• Expressão aritmética na computação
X <-‐ ( 43 * ( 55 / ( 30 + 2 ) ) )
Introdução
• Uso de operadores aritméticos
• Exemplo: cálculo da área de um círculo
• Algoritmo: Area = π * Raio
2• Sendo π (Pi) com o valor de 3.14159
• Como escrever a mesma expressão na
computação?
Introdução
• Resposta:
Pi <-‐ 3.14159
Area <-‐ Pi * Raio 2
Introdução
• Converter a fórmula abaixo para o meio computacional
!
Area = Base . Altura
2
Introdução
• Resposta:
Area <-‐ (Base * Altura) / 2
Introdução
• Exercício: Desenvolva em Português
Estruturado o Algoritmo necessário para
cálculo da área de um círculo
Introdução
• Passos necessários ao algoritmo
1. Ler o valor para o raio em uma variável 2. Estabelecer o valor da constante Pi
3. Efetuar o cálculo da área
4. Apresentar o resultado do cálculo
Introdução
•
Diagrama de Blocos para o cálculo de área de um círculoIntrodução
•
Símbolos de entrada e saída em um diagrama de blocosCálculo Área Círculo
programa AREA_CALCULO var
A : real P : real R : real inicio
leia R
P <-‐ 3.14159 A <-‐ P * R 2 escreva A
fim
Introdução
• Exercício: cálculo do salário líquido de um
professor ao final do mês, considerando o
percentual de desconto do INSS
Introdução
•
Passos necessários ao algoritmo1. estabelecer a leitura da variável HT (horas trabalhadas no mês) 2. estabelecer a leitura da variável VH (valor da hora aula)
3. estabelecer a leitura da variável PD (percentual de desconto) 4. calcular o salário bruto (SB), sendo esse a multiplicação das
variáveis HT e VH
5. calcular o total de desconto (TD) com base no PD divido por 100 6. calcular o salário líquido (SL), deduzindo o desconto do salário
bruto
7. apresentar os valores de SB e SL
Introdução
•
Diagrama de Blocos para o cálculo de saláriobruto e líquido de um professor
Cálculo Salário Professor
Introdução
•
Linguagem C•
uso de propósito geral•
linguagem estruturada e procedural•
padronizada pela ANSI e ISO•
criada em 1972 porDennis Ritchie no AT&T Bell Labs para desenvolver o sistema operacional Unix
Introdução
•
Linguagem C•
foi inspirada na linguagem de programação B,que foi uma versão reduzida da linguagem BCPL
•
permitiu o desenvolvimento de sistemasoperacionais em uma linguagem diferente do que Assembly
•
em 1983 a linguagem ficou conhecida como ANSI CExemplo de Código em Assembly x86
1. .486p
2. .model flat,STDCALL 3. include win32.inc
4. extrn MessageBoxA:PROC 5. extrn ExitProcess:PROC 6. .data
7. HelloWorld db "Hello, world!",0
8. msgTitle db "Hello world program", 0
9. .code 10.Start:
11. push MB_ICONQUESTION + MB_APPLMODAL + MB_OK
12. push offset msgTitle 13. push offset HelloWorld 14. push 0
15. call MessageBoxA 16. push 0
17. call ExitProcess 18.ends
19.end Start
Exemplo de Código em Linguagem C
/* Hello World program */
#include<stdio.h>
main() {
printf("Hello World");
}
Introdução
•
Símbolos apresentados no código•
/* */•
comentários no código-fonte•
texto não interpretado pelo compilador•
#include<arquivo.h>•
inclusão de arquivo externo•
geralmente possui a definição de funções a serem utilizadasIntrodução
•
Símbolos apresentados no código•
main () { … }•
função inicial que será executada quando o programa for invocado•
printf(…)•
função para a impressão de dados na tela do usuário•
;•
na finalização de toda instrução deverá haver um ponto e vírgula ( ; )•
demarcação do término de uma instruçãoIntrodução
•
Principais tipos de dados em C•
int•
valores numéricos inteiros•
char•
1 byte para armazenar um caracter qualquer•
float•
valores numéricos com ponto flutuante•
double•
valores numéricos com ponto flutuante com o dobro da capacidadeIntrodução
•
Exemplo de conversão de Português Estruturado para Linguagem C programa SOMA_NUMEROSvar
a, b, soma: inteiro inicio
a <-‐ 5 b <-‐ 3
soma <-‐ a + b
escreva “O valor da soma dos numeros e: “, soma fim
Introdução
• Exemplo de conversão de Português Estruturado para Linguagem C
#include <stdio.h>
main () {
int a, b, soma;
!
a = 5;
b = 3;
soma = a + b;
printf(“O valor da soma dos números é: %d”, soma);
}
Exercícios de Fixação
• Elaborar um programa que efetue a
apresentação do valor da conversão em
real (R$) de um valor lido em dólar (US$).
O programa deverá solicitar o valor da
cotação do dólar e também a quantidade
de dólares disponível para o usuário.
Exercícios de Fixação
• Elaborar um programa que calcule e apresente o volume de uma caixa
retangular, por meio da fórmula:
Volume <-‐ Comprimento * Largura * Altura