programação ii aula 1 - inf.ufes.brmberger/disciplinas/2011_2/progii/slides/... · programação...
Post on 22-Jan-2019
219 Views
Preview:
TRANSCRIPT
Programação II
Aula 1
Programação II
Objetivo: O aluno deverá ser capaz de construir algoritmos de forma organizada segundo o programação procedural utilizando a linguagem de programação C.
Introdução
John Von Neumann, pesquisador envolvido no projeto do ENIAC, construiu para o Instituto de Estudos Avançado de Princeton (Princeton Institute of Advanced Studies – IAS) a máquina IAS.
Ele imaginou que os programas poderiam ser representados em formato digital na memória, junto com os dados.
Arquitetura de Von Neumann:
Introdução
Para que serve programação?
Resolver problemas computacionalmente.
Desenvolver um programa de computador (solução) cuja execução leve a um resultado (aceitável) de um dado problema.
Nem todos os problemas têm solução computacional viável.
Entender a natureza do problema e estar atento aos requisitos da solução desejada
Escolha do paradigma de programação;
Escolha do método/estrutura de dados (procedural);
Escolha da linguagem de programação;
Paradigmas de Programação
Visões sobre a estruturação da solução do problema.
Prog. Funcional: consiste em representar a solução em forma de funções (matemáticas).
Prog. Procedural: consiste em representar a solução em forma de uma série de ações/procedimentos que são executados sequencialmente para produzir a solução.
Prog. Orientada a Objetos: consiste em representar a solução em forma de objetos que enviam e recebem mensagens entre si e assim produzem a solução.
Prog. em Lógica: consiste em representar o problema em forma de lógica simbólica e usar um processo de inferência para produzir resultados.
Prog. Procedural X Funcional
Descreve como computar (manipulando variáveis)
Fatorial(n)
begin
a := 1;
while n>0 do
begin a := a*n;
n := n-l
end;
return n;
end;
Descreve o que está sendo computado.
fatorial :: Int → Int
fatorial 0 = 1
fatorial n = n * fatorial (n-1)
Prog. Procedural - Conceitos Básicos
Programa: solução computacional para um dado problema.
Programa correto: implementação (correta) de um algoritmo (correto) em uma dada linguagem de programação (adequada).
Algoritmo: qualquer procedimento computacional bem definido que toma algum valor como entrada e produz algum valor como saída. [Cormen]
Algoritmo correto é tal que para cada instância de entrada ele termina e produz a saída esperada (no tempo esperado) para um dado problema.
Análise de algoritmos (antes de implementar):
Corretude: mostrar que o algoritmo sempre produz a saída esperada.
Complexidade: envolve prever os recursos necessários como tempo, espaço (memória), hardware, largura de banda.
Testes (alternativa** à análise – depois de implementar)
Algoritmo para escovar dentes
1.Pegar a escova e a pasta de dentes;
2.Colocar um pouco de pasta sobre as cerdas da escova;
3.Escovar os dentes do maxilar inferior;
4.Escovar os dentes do maxilar superior;
5.Expelir da boca o excesso de espuma;
6.Bochechar um pouco de água;
7.Lavar a escova e guardá-la;
8.Enxugar o rosto.
Algoritmo para escovar dentes
• Onde está a escova a ser usada?
• Quanto, exatamente, se deve colocar de pasta sobre as cerdas?
• O que fazer se não houver pasta? Escovar mesmo sem a pasta ou interromper o processo de escovação?
Melhorando o Algoritmo para escovar dentesAlgoritmo:
qualquer procedimento bem definido que toma algum valor como entrada e produz algum valor como saída.
Entrada: Dentes sujos com restos de alimentos, uma escova dental em condições de uso, 90 gramas de creme dental e 300 mililitros de água tratada.
Saída: Dentes limpos (sem restos de alimentos visíveis), uma escova dental em condições de uso e 85 gramas de creme dental. Toda a quantidade de água deve ser utilizada.
Melhorando o Algoritmo para escovar dentesTécnica de refinamentos sucessivos: dividir um
processo complexo em processos-componentes menores, especificando-se a entrada e a saída de cada um deles.
Processo-componente “pegar a escova e a pasta de dentes”:
1. Enquanto não encontrar a escova e o tubo de pasta, continuar procurando por cada gaveta do armário;
2. Caso tenham acabado as gavetas e não tenha encontrado a escova e o tubo, interromper a tarefa.
Etapas de programação
Entendimento do problema a ser resolvido;
Planejamento de uma solução => algoritmo;
Formalização da solução usando uma linguagem de programação;
Verificação da conformidade da solução obtida com o problema proposto.
Algoritmo para ordenar lista de números
Construir uma lista ordenada à partir de uma lista original
Entrada: lista qualquer
Saída: lista ordenada
1. Se a lista tem menos de 2 elementos, termina;
2. Senão, para cada posição da lista,
Percorre-se a lista do final até a posição atual, efetuando a troca dos elementos quando o valor da posição à frente for menor que o valor da posição atual.
Linguagem C
Histórico
Algol (60) → CPL (67) → BCPL (67) → B (70) → C (72).
Criada por Dennis Ritchie e Ken Thompson.
Em 1985 estabeleceu-se uma padrão oficial “C ANSI”
Características Principais
Eficiência
Flexibilidade (permissiva)
Portabilidade
Linguagem C
Código fonte Compilador Montador Ligador
Código Assembly
Código Objeto
ProgramaExecutável
Manipulação de variáveis → manipulação de memória
Linguagem C
Erros comuns de implementação:
Loop infinito – problema na condição de parada de alguma estrutura de repetição;
Segmentation fault – tentativa de acesso não permitido à uma área de memória;
Memory overflow – tentativa de utilizar mais memória do que há disponível no momento.
Má previsão da quantidade de memória necessária
Utilização de técnica apropriada.
Má utilização da memória
Memory leak (vazamento de memória)
Partes de um Programa
Nome da receita;
Ingredientes: descreve todo o material necessário para o preparo da receita;
Modo de preparo: descreve a forma de trabalhar com os ingredientes para que se obtenha o resultado esperado;
Comentários sobre certos procedimentos ou ingredientes a fim de detalhar alguma peculiaridade que o cozinheiro poderia não conhecer previamente.
Partes de um Programa
Cabeçalho: contém informações sobre o programa, como o seu nome;
Dicionário de dados: define quais são os dados manipulados pelo programa;
Corpo: define os procedimentos que o programa deve executar;
Documentação: explica certos aspectos não muito claros do programa, tanto no corpo do programa quanto no cabeçalho ou no dicionário de dados.
Partes de um Programa
Exercícios
Use o conceito de algoritmos e a técnica de refinamentos sucessivos para detalhar as seguintes atividades:
Trocar o pneu de um carro
Preparação de um bolo de aniversário
Cálculo da distância entre dois pontos no plano cartesiano.
top related