UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas...

28
UNIDADE 1 PROGRAMAÇÃO I

Transcript of UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas...

Page 1: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

UNIDADE 1

PROGRAMAÇÃO I

Page 2: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 3: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 4: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 5: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 6: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 7: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

Programação I

7

Linguagem de Programação

10/08/2010

Linguagem de Alto Nível

Linguagem de Montagem

Linguagem de Máquina

Page 8: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 9: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 10: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 11: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 12: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 13: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 14: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 15: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 16: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 17: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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...

Page 18: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 19: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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)

Page 20: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 21: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 22: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 23: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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)

Page 24: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 25: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um 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

Page 26: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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

Page 27: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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.

Page 28: UNIDADE 1 PROGRAMAÇÃO I. Introdução Programação I 2 Princípios da Solução de Problemas Problema Solução na forma de Algoritmo Solução como um programa.

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; }