unidade 1 programaÇÃo i. introdução programação i 2 princípios da solução de problemas...
TRANSCRIPT
UNIDADE 1
PROGRAMAÇÃO I
Programação I
2
Introdução
Princípios da Solução de Problemas
Problema
Solução na forma de Algoritmo
Solução como um programa de computador
Fase de Resolução do Problema
Fase de Implementação (ou codificação) do Algoritmo em alguma Ling. de Programação
2
1
08/2011
Programação I
3
Introdução
Princípios da Solução de Problemas Entendimento do problema Criação de uma seqüência de
operações (ou ações) que, quando executadas, produzem a solução do problema
Descrição desse conjunto de ações Codificação ( uso de uma linguagem
de programação)
Resolução de Problema
Programação
10/08/2010
Programação I
4
Processamento de Dados
EntradaProcessament
oSaída
Qualquer atividade ou conjunto de atividades ordenadamente realizadas que, utilizando informações (ou dados) básicos, efetua transformações para obter novas informações (ou dados) como resultado
10/08/2010
Programação I
5
Programa
10/08/2010
Dispositivo de
EntradaProcessamento
Dispositivo de Saída
Linguagem de Programação
ProgramaInstruções
(comandos) a serem
executadas pelo
computador
Teclado, Mouse, etc
Impressora, Video, Disco, etc
Programação I
6
Algoritmo X Programa
10/08/2010
AlgoritmoÉ uma sequencia de passos que visam atingir um objetivo
ProgramaInstruções (comandos) passo a passo para ser executado pelo computador
Codificação
Codigo
Converter as declarações de um algoritmo em um conjunto de instruções numa linguagem de programação específica
Programação I
7
Linguagem de Programação
10/08/2010
Linguagem de Alto Nível
Linguagem de Montagem
Linguagem de Máquina
Programação I
8
Linguagem de Máquina
10/08/2010
Código na forma binária (ou hexadecimal)Necessidade de conhecer as instruções da
máquina e seus respectivos códigos de operação
Necessidade de conhecer os componentes (registradores) do processador (UCP) e os endereços de memória
Ex: Programa para calcular 23 + 1000010 0001 0000 0000 0001 01110000 0001 0000 0000 0110 01000000 1001
Programação I
9
Linguagem de Montagem
10/08/2010
“Assembly Language”Instruções escritas através de símbolosCada instrução corresponde a uma única instrução
em linguagem de máquinaNecessidade de converter o programa para a
linguagem de máquina Processo chamado de Montagem realizado por um
programa chamado Montador (ou Assembler)Ex: programa para calcular 23+100
LD HL,23LD BC, 100ADD HL, BC
Programação I
10
Processo de Montagem
10/08/2010
Código Fonte
Código Objeto
Montagem
Programa original em linguagem de montagem
Montador
Programa resultante em linguagem binária
Programação I
11
Linguagem de Alto Nivel
10/08/2010
Estruturadas de acordo com a compreensão do programador
Cada instrução pode corresponder a dezenas de instruções de máquina
“orientada ao problema”Necessidade de converter o programa para
linguagem de máquina Processo chamado de Compilação realizado por um
programa chamado Compilador Ex. Linguagens: Fortran, Pascal, C, Java Ex: Programa para calcular 23+100
A=23B=100TOTAL=A+B
Programação I
12
Processo de Compilação
10/08/2010
Código Fonte
Código Objeto
Compilação
Programa original em linguagem de alto nivel
Compilador
Programa em linguagem binária
Programação I
13
Processo de Compilação
10/08/2010
Código Fonte
Código Objeto
Compilação
Programa original em linguagem de alto nível
Compilador
Programa em linguagem binária
Programação I
14
Funções do Compilador
10/08/2010
Compilação é semelhante a montagem mas é mais complexo e demorado (diferente da relação 1:1 das linguagens de montagem)
Também chamada de traduçãoRealiza várias tarefas:
Análise léxica Análise sintática Análise semântica Criação do código binário
Programação I
15
Funções do Compilador
10/08/2010
Análise léxica Verificar se todos os símbolos (comandos ou não)
utilizados são permitidos pela linguagem (Ex: o igual em Pascal é “:=“, em C é “=“ )
Análise Sintática Verifica a estrutura de cada comando
Análise semântica Análise semântica estática (regras de compilação) dos
comandos Ex: na linguagem Basic, o desvio para uma linha que
não existe
Programação I
16
Ligação ou Linkedição
10/08/2010
Facilidade criada para evitar que o programador precise codificar todas as operações
Algumas operações já são disponibilizadas (no sistema) em código binário pelas linguagens
O código é buscado e integrado ao programa que está sendo desenvolvido Processo chamado de linkedição (ou ligação) realizado por um
linkeditor (ou ligador)Exemplo de códigos (funções) existentes:
Impressão, raiz quadrada, comparação de dois nomes, etc.Esses códigos objetos (rotinas) são organizados em
Bibliotecas Identificados pelo nome da rotina Incorporados no programa a partir de uma chamada de biblioteca
Programação I
17
Processo de Linkedição
10/08/2010
Código Fonte
Código Objeto
Compilação
Programa original em linguagem de alto nível
Compilador
Programa em linguagem binária (arquivos “.obj”)
Código Executável
LigaçãoLigador/
Linkeditor
Programa resultante em linguagem binária (arquivos “.exe” ou “.com”)
Biblioteca 1Biblioteca 2
Biblioteca...
Programação I
18
Funções do Linkeditor
10/08/2010
Quando o compilador encontra uma chamada à rotina de biblioteca, cria uma “referência externa não resolvida”
Linkeditor analisa todo o código objeto procurando por “referência externa não resolvida”
Para cada “referência externa não resolvida” Procura na biblioteca a rotina correspondente Quando encontra, substitui a linha de comando
pelo código objeto encontrado na biblioteca
Programação I
19
Execução
10/08/2010
Execução propriamente dita do código executável
Existem bibliotecas dinâmicas que são carregadas somente na execução Processo realizado por um programa chamado
carregador (ou loader)
Existem carregadores (loaders) que fazem toda a linkedição e execução ao mesmo tempo (sem armazenar código executável, ou seja, o código é gerado mas não armazenado)
Programação I
20
Processo de Execução Completa
10/08/2010
Código Fonte
Código Objeto
Compilação
Programa original em linguagem de alto nível
Compilador
Programa em linguagem binária
Código Executável
Ligação Ligador/Linkeditor
Programa resultante em linguagem binária
Biblioteca 1
Biblioteca 2
Biblioteca...
Ligação Carregador
Programação I
21
10/08/2010
Código Fonte
Código Objeto
Compilação
Programa original em linguagem de alto nível
Compilador
Programa em linguagem binária
Ligação e Execução
Carregador
Programação I
22
Interpretação
10/08/2010
Usado por linguagens de alto nível
Execução das três fases (compilação, linkedição e execução) de uma só vez Processo chamado de interpretação realizado por um
programa chamado interpretador
Lê comando converte em código executável executa (antes que o comando seguinte seja lido)
Ex. linguagens: APL, ASP
Programação I
23
Compilação X Interpretação
10/08/2010
CompilaçãoMenor consumo de
memóriaTransformação de
partes comuns (rotinas de repetição) de uma única vez
InterpretaçãoMaior consumo de
memóriaNecessidade de partes
comuns (rotinas de interpretação) várias vezes
Necessidade de carregar o código fonte na memória durante a execução
Execução mais lenta (necessidade de tradução, linkedição e execução)
Programação I
24
Etapas de desenvolvimento e execução de um programa
10/08/2010
Desenvolver o algoritmo Elaborar como solucionar passo a passo o problema Envolve o que chamamos de “lógica de programação”
Codificar o algoritmo Escrever o algoritmo em uma linguagem de
programaçãoInterpretarouCompilarLinkeditarExecutar o programa
Programação I
25
Metodologia de desenvolvimento de Algoritmo
10/08/2010
Passo 1 Leia cuidadosamente a especificação do problema até o final Faça anotações
Passo 2 Senão entendeu, repita o passo 1 até entender (tire dúvidas
com quem especificou)Passo 3
Identificar todas as saídas exigidas na especificação do problema
Passo 4 Identificar todas as entradas exigidas na especificação do
problema
Programação I
26
Metodologia de desenvolvimento de Algoritmo
10/08/2010
Passo 5 Verificar se é necessário gerar valores internamente ao
algoritmo Fazer comentários
Passo 6 Identificar todas as transformações necessárias para, a partir
da entrada, produzir as saídas Fazer comentários
Passo 7 Testar cada passo do algoritmo Utilizar valores de teste
Passo 8 Fazer uma avaliação geral, elaborando o algoritmo
Programação I
27
Linguagem C
10/08/2010
É uma linguagem de alto nível com uma sintaxe bastante estruturada e flexível tornando sua programação bastante simplificada.
Programas em C são compilados, gerando programas executáveis.
O C compartilha recursos tanto de alto quanto de baixo nível, pois permite acesso e programação direta do microprocessador. Com isto, rotinas cuja dependência do tempo é crítica, podem ser facilmente implementadas usando instruções em Assembly. Por esta razão o C é a linguagem preferida dos programadores de aplicativos.
Programação I
28
Exemplo de programa em C
10/08/2010
/* Fatorial */ #include <stdio.h> #include <stdlib.h>
int main (void) { int k; int n; long int f = 1; printf("Digite um numero inteiro nao negativo:"); scanf("%d", &n); /* calcula fatorial */ k = 1; while (k <= n) { f = f * k; /* a expressão f = f * i é equivalente a f *= k */ k = k + 1; /* a expressão k = k + 1 é equivalente a k++ */ } printf(" Fatorial = %d \n", f); system("PAUSE"); return 0; }