PROGRAMAÇÃO I Introdução
Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação (ou codificação) do Algoritmo em alguma Ling. de Programação
Introdução 3 Princípios da Solução de Problemas Entendimento do problema Criação de uma sequê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
Processamento de Dados 4 Entrada Processamento Saí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
Programa 5 Dispositivo de Entrada Processamento Dispositivo de Saída Teclado, Mouse, etc Linguagem de Programação Programa Instruções (comandos) a serem executadas pelo computador Impressora, Video, Disco, etc
Algoritmo X Programa 6 Algoritmo É uma sequência de passos que visa atingir um objetivo Codificação Programa Instruções (comandos) passo a passo para ser executado pelo computador Converter as declarações de um algoritmo em um conjunto de instruções numa linguagem de programação específica Código
Linguagem de Programação Linguagem de Alto Nível Linguagem de Montagem Linguagem de Máquina 7
Linguagem de Máquina 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 + 100 8 0010 0001 0000 0000 0001 0111 0000 0001 0000 0000 0110 0100 0000 1001
Linguagem de Montagem Assembly Language Instruções escritas através de símbolos Cada instrução corresponde a uma única instrução em linguagem de máquina Necessidade 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 9 LD HL,23 LD BC, 100 ADD HL, BC
Processo de Montagem 10 Código Fonte Programa original em linguagem de montagem Montagem Montador Código Objeto Programa resultante em linguagem binária
Linguagem de Alto Nível 11 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=23 B=100 TOTAL=A+B
Processo de Compilação 12 Código Fonte Programa original em linguagem de alto nivel Compilação Compilador Código Objeto Programa em linguagem binária
Funções do Compilador Compilação é semelhante a montagem porém é é um processo mais complexo e demorado (diferente da relação 1:1 das linguagens de montagem) Também chamada de tradução Realiza várias tarefas: Análise léxica Análise sintática Análise semântica Criação do código binário 13
Funções do Compilador Análise léxica Verificar se todos os símbolos (comandos ou não) utilizados são permitidos pela linguagem (Ex: atribuição 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: Desvio para uma linha que não existe 14
Ligação ou Linkedição 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 15 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)
Ligação ou Linkedição Exemplo de códigos (funções) existentes: Impressão, raiz quadrada, comparação de dois nomes, etc. 16 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
Processo de Linkedição 17 Código Fonte Programa original em linguagem de alto nível Compilação Compilador Código Objeto Programa em linguagem binária (arquivos.obj ) Ligação Ligador/ Linkeditor Biblioteca 1 Biblioteca 2 Biblioteca... Código Executável Programa resultante em linguagem binária (arquivos.exe ou.com )
Funções do Linkeditor 18 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
Execução 19 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)
Processo de Execução Completa 20 Código Fonte Programa original em linguagem de alto nível Compilação Compilador Código Objeto Programa em linguagem binária Ligação Ligador/ Linkeditor Biblioteca 1 Biblioteca 2 Biblioteca... Código Executável Programa resultante em linguagem binária Ligação Carregador
Interpretação 21 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: PHP, Python, Perl
Compilação X Interpretação Compilação Menor consumo de memória Utilização de partes comuns (rotinas de repetição) uma única vez 22 Interpretação Maior consumo de memória Necessidade 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)
Etapas de desenvolvimento e execução de um programa 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ção Interpretar ou Compilar Linkeditar Executar o programa 23
Linguagem C 24 É 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 (rotinas podem ser facilmente implementadas usando instruções em Assembly).
Compiladores de C 25 Os mais famosos são os softwares da Borland e da Microsoft, que são bons e oferecem muitos recursos. O problema é que estes compiladores são caros e voltados principalmente para programadores experientes, que podem fazer uso dos recursos avançados destes programas.
Compiladores de C 26 Existem muitos compiladores de C/C++ no mercado. Para quem está ainda aprendendo existem várias opções de compiladores freeware (software livre, de graça ), por exemplo: Dev-C++, CodeBlocks, Borland C++ Compiler, etc GNU C/C++ - gcc Para nos ajudar a aprender a programar em C utilizaremos um dos mais populares compiladores freeware, o DevC++.