programação ii aula 1 - inf.ufes.brmberger/disciplinas/2011_2/progii/slides/... · programação...

Post on 22-Jan-2019

219 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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