UEM/DIN – Prof. Flávio Uber
UEM/CTC – Departamento de Informática Curso: Ciência da Computação
Professor: Flávio Rogério Uber
Fundamentos de Algoritmos (5175/31)
Material Original: Prof. Yandre Maldonado e Gomes da Costa (UEM/DIN)
UEM/DIN – Prof. Flávio Uber
A disciplina
Professor:
– Flávio Rogério Uber
– Email: flavio.uber@gmail.com – Bloco C56 – Sala 204
Bibliografia:
– Nicolas Wirth. Algoritmos e Estruturas de Dados. Editora Prentice-Hall, 1989.
– Guimarães & Lages. Algoritmos e Estruturas de Dados. Editora LTC. 2001.
– Nivio Ziviani. Projetos de Algoritmos com Implementações dem Java e C++. Editora Thomson. 2007.
UEM/DIN – Prof. Flávio Uber
A Disciplina
Programa
1. Definiçoes
2. Modelagem Algorítmica de Problemas Reais
• Tipos de dados básicos
• Tipos de dados estruturados
• Abstração em nível de comando
– Seleção – Repetição – entrada/saída
• Abstração em nível de módulo
– Funções e Procedimentos
• Execução de Processos
– Escopo
– Alocação de variáveis – Passagem de Parâmetro
3. Técnicas de Construção de Algoritmos
UEM/DIN – Prof. Flávio Uber
Critério de Avaliação
2 Avaliações:
1a Avaliação(Peso 2) 75% Prova / 25% Trabalho 2a Avaliação(Peso 3) 75% Prova / 25% Trabalho
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Definições:
“Redação que descreve de forma lógica e sem ambigüidades, uma seqüência de passos
(ações) para se resolver um problema que tenha um comportamento padrão.”
Franco e Polidório
“Uma seqüência de passos que visam atingir um objetivo bem definido.”
Forbellone e Eberspächer
UEM/DIN – Prof. Flávio Uber
Algoritmos
“É a descrição de um padrão de comportamento, expressado em termos de um repertório bem
definido e finito de ações primitivas, das quais damos por certo que elas podem ser executadas.”
Guimarães e Lages
“Descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.”
Farrer e outros
UEM/DIN – Prof. Flávio Uber
Algoritmos
• O algoritmo deve ensinar a resolver o problema, e não trazer a solução.
– Exemplo: receita de bolo;
• Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um resultado final previsível e bem definido.
• Objetivo: solução do problema.
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Aspecto lógico: ordenar o pensamento.
– Organização seqüencial das ações pertinentes à solução de um problema;
• Exemplo: o bolo só pode ser levado ao forno depois que a massa estiver pronta.
– Lógica no dia-a-dia:
• Todo mamífero é animal.
• Todo cavalo é mamífero.
• Portanto, todo cavalo é animal.
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Padrão de comportamento: uma seqüência de ações para resolver um problema.
– Exemplos:
• Trocar uma lâmpada (problema cotidiano):
– pegue uma escada;
– posicione-a sob a lâmpada;
– busque uma lâmpada nova;
– suba na escada;
– retire a lâmpada velha;
– coloque a lâmpada nova.
• Calcular a área de um retângulo (problema matemático):
– obtenha a medida da base do retângulo;
– obtenha a medida da altura do retângulo;
– multiplique a medida da base pela medida da altura.
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Aspecto estático e aspecto dinâmico:
– Estático: não depende do tempo, mas do espaço físico onde o algoritmo está sendo escrito;
– Dinâmico: como se comporta a execução de cada ação do algoritmo com o passar do tempo.
“Todo algoritmo deve produzir
resultados corretos, e ser finito tanto estática quanto dinamicamente.”
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Ambigüidade: relacionada à sintaxe e semântica de linguagens naturais.
– “O artista produz formas perfeitas.”
• Linguagens naturais são muito extensas, possuindo ambigüidade;
– Linguagem Natural X Linguagem Computacional
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Nos algoritmos, devemos utilizar construções que executarão uma ação específica bem definida;
• Uma linguagem algorítmica deve ter sintaxe rígida e semântica bem definida;
• Toda linguagem possui sintaxe e semântica
.
Linguagem Computacional
Linguagem Algorítmica
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Sintaxe: dita as regras de como as sentenças e cada um de seus elementos devem ser
construídos corretamente;
• Semântica: se preocupa com o significa de
uma sentença construída.
UEM/DIN – Prof. Flávio Uber
Algoritmos
• A sintaxe por si só não define completamente uma linguagem.
– Exemplo:
• “Descoloridas idéias verdes sonham furiosamente”
(Chomsky)
– Por outro lado:
• “Nóis foi, mais já vortemo”
UEM/DIN – Prof. Flávio Uber
• Algoritmos geralmente descrevem algum processamento de dados:
• Estes dados precisam ser representados (descritos) nos algoritmos;
Algoritmos
Dados de Entrada
Dados de Saída Processamento
(Computador)
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Um algoritmo para fins computacionais é a descrição de ações que manipulam objetos em função do tempo.
– Objetos descrevem o estado computacional;
– Objetos têm função específica;
– Ações são direcionadas aos objetos;
– Objetos são definidos como parte do programa;
– Estados diferentes requerem objetos diferentes.
* Objetos frequentemente serão chamados de variáveis.
* Exemplo do Retângulo
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Argumentos de Entrada e Saída
– Entrada: objetos cujos valores são conhecidos em tempo de execução;
• permitem um comportamento mais genérico dentro do caráter específico do comportamento padrão;
– Saída: objetos que armazenam a solução objetivo de um problema;
UEM/DIN – Prof. Flávio Uber
Exercícios
Dada uma equação do 2o. Grau na forma ax
2+bx + cc = 0 responda:
a) Quais os argumentos de entrada para se calcular as raízes dessa equação?
b) Quais os argumentos de saída, sabendo que o objetivo é calcular as raízes reais da equação?
c) Faça um algoritmo para calcular as raízes da equação.
d) Execute o algoritmo que você fez para resolver a equação: 2x2+2x-2=0
UEM/DIN – Prof. Flávio Uber
Exercício
• Considerando a figura mostrada acima (um retângulo), faça um algoritmo que calcule a área da mesma.
• Neste problema existem três valores (estados) a serem representados:
– Altura do retângulo (h);
– Largura (ou base) do retângulo (b);
– Área do retângulo.
h
b
Dados de Entrada Dados de Saída
UEM/DIN – Prof. Flávio Uber
Algoritmos
• A cada objeto é associado um nome que identifica este objeto ao longo da programação. Este nome é chamado identificador.
• De forma geral, podemos dizer que um identificador está associado à uma célula de memória.
• O termo variável é freqüentemente utilizado como sinônimo de identificador.
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Em geral, as linguagens de programação exigem nomes de identificadores com as seguintes
característica:
– Use somente letras e números;
– O primeiro caracter do nome deve ser uma letra;
– Não é permitido o uso de caracteres especiais.
• Exemplos válidos: ImpostoDeRenda, F1, soma, produto, desconto, SalarioHora.
• Exemplos inválidos: 1f, Imposto-renda, salario hora.
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Atributos (características) de um objeto:
– Nome;
– Célula de memória;
– Valor associado;
– Tipo: define a categoria dos dados que podem ser armazenados no objeto.
conteúdo (valor armazenado na célula de memória)
Nome identificador do objeto
célula de memória
UEM/DIN – Prof. Flávio Uber
Algoritmos
• O tipo:
– especifica uma classe de valores que podem ser armazenados na célula de memória associada ao identificador;
– define as operações válidas sobre o identificador;
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Tipo de Dado
– Um identificador armazena um único dado num
instante, mas este dado não pode ser qualquer um;
– Os objetos serão classificados segundo um tipo;
– Os dados podem ter estruturas físicas diferentes;
– As células de memória do computador precisam ser compatíveis com o tipo de dado que vão
armazenar;
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Devemos informar ao computador qual o tipo de dado que vamos armazenar;
• Esta informação determina quantas células de memória serão necessárias para armazenar o dado;
• Esta informação define quais serão as operações possíveis de se aplicar sobre os dados;
– Exemplo: em um dado numérico pode-se aplicar uma operação aritmética.
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Os tipos de dados podem variar de uma
linguagem para outra. No entanto, existem dois tipos básicos:
– Tipos simples;
– Tipos estruturados (estudados mais adiante);
Tipos de Dados Simples
Numérico Caracter Lógico
Inteiro Real
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Os Tipos de Dados Numéricos são divididos basicamente em dois grandes conjuntos:
– Inteiros;
– Reais;
• Os inteiros podem ser positivos, negativos ou nulos, mas não possuem um componente
decimal;
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Os inteiros são compatíveis com os reais, mas os reais não são compatíveis com os inteiros;
• Assim, um objeto real pode receber um valor inteiro, mas um objeto inteiro não pode receber um valor real;
• Declaração:
LPE Pascal C inteiro integer int
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Os reais podem ser positivos, negativos ou nulos, e possuem sempre um componente decimal;
• Exemplos: 2,34; 0,0; -214,123;
• Computacionalmente, existem muitas
diferenças entre o armazenamento de
números inteiros e números reais;
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Os números inteiros consomem menos espaço de armazenamento em memória;
• Declaração:
LPE Pascal C
real real float
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Os tipos de dados não numéricos:
– Caracter: formado pelas letras (de A a Z, e de a a z), dígitos (de 0 a 9) e caracteres especiais (~, ., ?, >, <, ...);
– A diferença entre caracteres e dados numéricos estão na forma de armazenamento, e nas
operações legais permitidas sobre os mesmos;
• Exemplo: operações aritméticas sobre os dados numéricos.
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Para diferenciar um caracter de um
identificador ou de um dado numérico, utilizaremos apóstrofes. Assim:
– 8 é um dado numérico;
– ‘8’ é um caracter;
– A é um identificador;
– ‘A’ é um caracter
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Objetos declarados como do tipo caracter poderão armazenar um único caracter;
• Para armazenar uma seqüência de caracteres será utilizada a estrutura cadeia de caracteres, que
consiste num tipo de dado estruturado;
– Exemplo:
• ‘Z’ é um caracter;
• ‘ANA’ é uma cadeia de caracteres;
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Declaração:
LPE Pascal C
texto char char
UEM/DIN – Prof. Flávio Uber
Algoritmos
• Tipo Lógico: os valores lógicos podem assumir uma entre duas possibilidades (verdadeiro ou falso);
– Só poderá armazenar um destes dois valores;
• Muito utilizados em controle do fluxo lógico do algoritmo;
LPE Pascal C
logico boolean não existe