Programação II Aula 2
Introdução Para que serve programação? Resolver algum problema 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;
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 Algoritmo: 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.
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 Té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 da posição final até a atual, efetuando a troca dos elementos quando o valor da posição à frente for menor que o valor da posição atual.
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
Variáveis e Memória Variáveis: espaço da memória reservado para guardar os dados a serem manipulados pelo programa. Declaração: <Tipo de Dado> <Identificador> Tipos de dados básicos Inteiro Ponto Flutuante Caracter
Variáveis e Células de Memória Atribuição de valor à variável Atribuição estática Na declaração da variável: <Tipo de Dado> <Identificador> = <expressão> No corpo do programa <Identificador> = <expressão> Atribuição Dinâmica Leitura do teclado scanf Leitura de arquivo Veremos mais adiante
Tipo de Dados Básicos Inteiro (int) Representa um intervalo finito do conjunto matemático dos números inteiros [-32768, 32767] Ponto flutuante (float) Representa um intervalo finito do conjunto matemático dos números racionais Caracter (char) Representa símbolos pré-definidos na tabela ASCII
Constantes # define <identificador> <valor>
Expressões Aritméticas
Expressões Aritméticas
Exercício Construa um programa em C que: Declara três variáveis do tipo inteiro, a, b, e c, e atribui a elas valores constantes quaisquer. Imprime na tela o valor das variáveis Soma b com c e guarda em a. Imprime na tela o valor de a.