INTRODUÇÃO • ALGORITMO PROGRAMAÇÃO: – Visa solucionar um problema – Receita para um processo computacional – Comparável à uma “receita de bolo” COMO FUNCIONA ? Programação: o que é ? • ETAPAS: Resumindo: • PROGRAMA – Conhecer precisamente o problema e seus requisitos – Criar o algoritmo para solucionásolucioná-lo – Codificar o algoritmo em uma linguagem de programação (programação (programação)) – Verificar se o programa gerado não contém erros e se resolve efetivamente o problema (depuração) depuração) Depuração ? • Programas podem apresentar erros – a maior parte dos erros é causada pelo programador – alguns erros ocorrem devido a problemas externos – Tradução de um algoritmo para uma linguagem de programação • LINGUAGEM – Maneira através da qual é possível traduzir um algoritmo para uma forma que o computador compreenda – Pascal, C, Basic, Basic, Java, Prolog, Modula, etc. Tipos de erros! • Dois tipos de erros: – Sintaxe: programa escrito de forma incorreta, como escrever errado em português: esseção, esseção, pissina, pissina, etc. – Semântica: programa escrito corretamente, mas que não resolve efetivamente o problema – Exceções: geradas por erros de semântica, como por exemplo, divisão por zero 1 O Mundo Antes de C (1) • ALGOL 60 LINGUAGEM C Origens e Histórico – Definida em 1960 por um comitê internacional – Linguagem de alto nível: permitia ao programador trabalhar “longe” da máquina – Criada para substituir o FORTRAN • MAS NÃO TEVE SUCESSO PORQUE... PORQUE... – Maioria dos sistemas operacionais ainda exigia do usuário um grande conhecimento do hardware O Mundo Antes de C (2) • CPL (Combined (Combined Programming Language) Language) – 1967 - Univers. Univers. de Londres e Cambridge – Objetivo de “trazer ALGOL à Terra” O Mundo Antes de C (3) • BCPL (Basic (Basic CPL) – Simplificação da CPL, tentando manter apenas as “boas coisas” da linguagem • 1970 - Ken Thompson • MAS NÃO FOI BEM ACEITA PORQUE... – Projetistas de sistemas operacionais a consideravam difícil de implementar O Surgimento de C (1) • BCPL e B ? Qual foi o problema ? – Ambas mostraram-se muito limitadas, prestando-se apenas para alguns problemas – Havia uma intenção de reescrever o UNIX em uma linguagem de alto nível, mas ambas eram consideradas lentas para isso – Chefe da equipe de projeto do UNIX para o PDP-11 (Bell Labs) Labs) – Inventou uma versão ainda mais reduzida : B O Surgimento de C (2) • C (Dennis Ritchie) - 1970 – Sucessora de B – Objetivo: manter o contato com o computador real e permitir o desenvolvimento de programas em diversas áreas – Característica mais importante: PORTABILIDADE 2 C Hoje • 1985 – ANSI (American (American National Standards Institute) Institute) estabelece o padrão oficial de C (ANSI C) – Diferença: alguns comandos a mais na linguagem – Utilizada até hoje PROGRAMAÇÃO EM C ETAPAS • C++ – C orientada a objetos, definido sobre o padrão ANSI C Processo de Programação (1) • Edição de um programa fonte Processo de Programação (2) • Este é submetido a um Compilador – Criado em um editor de texto (sem formatação) #include <iostream.h> main() { int x,y; cout << “blablabla…”; ... – Analisa o código fonte e converte este para um código objeto (ou programa objeto) – O código objeto é a versão em linguagem de máquina do código fonte #include <iostream.h> main() { int x,y; cout << “blablabla”; … 010101010 010111101 010111010 111101011 teste.cpp teste.cpp Processo de Programação (3) • Utilização de uma biblioteca de funções – são utilizadas para realizar tarefas comuns, para facilitar a vida do programador. Ex: entrada e saída, raiz quadrada, etc. teste.obj teste.obj Processo de Programação (4) • Necessidade de um ligador (linker (linker)) – Junta o objeto com as bibliotecas e gera um código executável (ou programa executável) math. math.lib teste.exe teste.exe 010101010 010111101 010111010 111101011 3 Processo de Programação (5) • Programa executável é o resultado final Terminologia • Código fonte – criado em editor de texto, contendo comandos na linguagem de programação utilizada teste.exe teste.exe • Código objeto – criado pela conversão de código fonte em linguagem de máquina - gerado pelo compilador Terminologia • Ligador – junta o código objeto com as bibliotecas necessárias para gerar o programa executável • Tempo de Compilação – durante o processo de conversão entre fonte e objeto • Tempo de Execução – quando o programa é executado (ativado) 4