3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C



Documentos relacionados
Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Programação de Computadores I. Linguagem C Função

Linguagem de Programação I

Montadores e Compiladores

TUTORIAL MATLAB Victor Breder 2016

Tipos Abstratos de Dados (TAD)

Linguagens de Programação:

Conhecendo a Linguagem de Programação C

Estruturas de Repetição

AULA 3 Alocação dinâmica de memória: Ponteiros

Introdução. Algoritmos

Linguagem de Programação C. Prof. Fabrício Olivetti de França

Orientação a Objetos

Introdução ao reconhecimento de padrões e expressões regulares; Aprendizagem dos conceitos através da realização de alguns exercícios;

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

BEMATECH PDV - CONFIGURAÇÃO

Introdução a Funções

Ambiente de desenvolvimento

O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho

MANUAL SERVIÇOS E AGENDAMENTO

TUTORIAL DO SISTEMA CE MERCANTE

Admistração de Redes de Computadores (ARC)

O AMBIENTE DELPHI. Programação de Computadores.

Sistemas Distribuídos Capítulo 4 - Aula 5

Departamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make

Fundamentos de Arquitetura e Organização de Computadores

Administração de Redes. Permissões gnu/linux

Introdução aos Sistemas Operacionais

Até o momento, vimos que a estrutura de um computador segue uma seqüência: ENTRADA => PROCESSAMENTO => SAÍDA

CARTILHA UTILIZAÇÃO DE PEN DRIVES NAS ESTAÇÕES DE TRABALHO DO TJPE NOVAS REGRAS DE UTILIZAÇÃO

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Algoritmo e Pseudo-código

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

MANUAL DE UTILIZAÇÃO DO AUTO ATENDIMENTO SETOR PÚBLICO DO BANCO DO BRASIL


Organização e Arquitetura de Computadores I

Atualizações de Software Guia do Usuário

Primeiros programas.

Universidade Federal do ABC Disciplina: Natureza da Informação Lista de Exercícios 02 Códigos e conversão A/D Prof. João Henrique Kleinschmidt

Atualização de Software Guia do Usuário

Linux e Computação Científica

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Estrutura de Dados Prof. a Mariella Berger. Trabalho 2 - Freecell

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Prova Modelo. Nome: Número:

Remoto Serial v. 1.0 Beta 10/8/ :41:04

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

Referências. Programação de Computadores II. Cap. 7 Cadeias de Caracteres. Caracteres. Tópicos

9. Tipos Abstratos de Dados

O Sistema de Computação

Introdução à Ciência da Informação

21 Strings O que são strings? 21.2 Leitura de Strings. Ronaldo F. Hashimoto e Carlos H. Morimoto

Linguagem C. Introdução à Programação C. Variáveis. Identificadores. Identificadores 12/03/2011 VARIÁVEIS E TIPOS DE DADOS

Manual do Usuário SISCOLE - Sistema de Cadastro de Organismos e Laboratórios Estrangeiros

Programação: Vetores

Desenvolvimento de Aplicações Desktop

3 Cadeias de Caracteres

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Introdução à Programação Aula 06. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Aula 1 Apresentação do Curso

Aula 05 Instalação e Uso do Arcabouço. Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Março 2016

Exercícios: Vetores e Matrizes

Escrito por Bruno Crivelari Sanches Qui, 01 de Outubro de :16 - Última atualização Ter, 13 de Setembro de :45

Maratona de Programação - Dicas Para Iniciantes

1. Estrutura de Dados

Aplicativo da Cultura

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Backup e Recuperação Guia do Usuário

Algoritmos e Programação

Processo de Desenvolvimento de Software

Sistemas de Objetos DistribuídosRevisão Java e Java ORBs p.1/26

3.1 - Funções para manipular dados de entrada e saída padrão

16. Compilação no Linux

MC Teste de Mesa e Comandos Repetitivos

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

FUNDAMENTOS DE WINDOWS INFORMÁTICA / IFRN/PRONATEC 1. O Windows

Comandos de Desvio 1

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Linguagem C. André Tavares da Silva.

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Do alto-nível ao assembly

Circuito Decodificador BCD para Display de Sete Segmentos

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

TOTVS Microsiga Protheus Gestor de Configuração

Histórico e Evolução da Computação

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Programação Básica. Estrutura de um algoritmo

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Laboratório de Introdução à Ciência da Computação I

Conversão Visualg à C++ Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Introdução à Programação Aula 16. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

PROVA DE NOÇÕES DE INFORMÁTICA

4. Estruturas Fundamentais de Programação em C

Manual Processos Produção

BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória

COMPILAÇÃO. Ricardo José Cabeça de Souza

Transcrição:

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C 3.1. Compilação de um Programa C O compilador C realiza a compilação do código-fonte de um programa em cinco etapas: edição, pré-processamento, compilação, montagem e ligação. Essas etapas de processamento são ilustradas na Figura 16. Figura 16: Processo de compilação de um programa C 3.1.1. Edição A etapa de edição consiste de um programa de edição para editar e/ou corrigir um programa C. Durante esta etapa os arquivos do programa C devem ser então armazenados em um dispositivo de armazenamento secundário, como por exemplo, o disco.

Os arquivos dos programas C devem ter a extensão.c. 3.1.2. Pré-processamento A etapa de pré-processamento é responsável por modificar o código-fonte do programa lexicamente. É nesta etapa que ocorre a suspensão de espaços desnecessários, substituição de macros e a inclusão de outros códigos (através das diretivas de pré-processamento). Esta etapa gera um código chamado de unidade de compilação. É possível realizar apenas a etapa de pré-processamento, através do comando gcc. Para isso, basta utilizar o seguinte comando: gcc E <nome_programa>.c (mostra a unidade de compilação no terminal). Pode-se usar também a opção o par armazenar a saída em um arquivo (gcc E <nome_programa>.c o <nome_unidade>.e) 3.1.3. Compilação É na compilação que o compilador faz a análise sintática e semântica da unidade de compilação. Não havendo erro de sintaxe e de semântica o compilador gera o código assembly correspondente. A opção S do gcc realiza a geração do código assembly e permite armazenar em um arquivo com a extensão.s (gcc S <nome_programa>.c). 3.1.4. Montagem A etapa de montagem é responsável por gerar o código-objeto. Ou seja, é nessa etapa que os comandos assembly são transformados em linguagem de máquina.

A opção c do gcc realiza a geração do código-objeto e permite armazenar em um arquivo com a extensão.o (gcc c <nome_programa>.c). 3.1.5. Ligação Essa é a etapa final, onde ocorre a combinação de todos os códigos-objetos que compõem um programa C. O resultado desta etapa é um código executável. 3.2. Estrutura de um Programa C Um programa C consiste em uma função ou várias funções, onde, a forma geral de uma função em C é a seguinte: <tipo de retorno> <nome da função>(<lista de parâmetro>) { instrução1; instrução2;... instrução; return <valor>; } Um programa C precisa ter uma função principal, que deve ser chamada de main, para inicia a execução do programa. Em todo programa C deve existir uma função chamada main. E essa função marca o ponto inicial do programa e a execução do programa só termina quando a função main encerrar. A função main, retornar um valor inteiro e pode ou não possuir parâmetros. Inicialmente vamos considerar a estrutura da função main, sem parâmetro, como mostrado no Programa 1. Programa 1: Primeiro código de um programa C 1 #include <stdio.h> 2 3 int main(void) { 4 printf( Meu primeiro programa!\n ); 5 return 0; 6 }

A primeira linha do Programa 1 não é uma instrução da linguagem C (não tem ponto-e-vírgula no final), ela é uma diretiva de pré-processamento (#include <stdio.h>), necessária para o compilador verificar a referência à função printf. A diretiva de pré-processamento include é responsável por incluir um arquivo no código-fonte, antes da compilação. Ou seja, o compilador substitui a linha contendo essa diretiva pelo conteúdo de arquivos-cabeçalho antes de compilar o programa. As diretivas de pré-processamento é iniciada pelo símbolo # e não fazem parte da linguagem C e só servem para auxiliar no desenvolvimento do código-fonte. A função main está definida nas linhas 2 a 6. Na linha 4 existe uma chamada a função printf (O resultado dessa chamada é a impressão dos caracteres entre aspas Meu primeiro programa!). O comando da linha 5, retorna para o sistema operacional o valor 0 (zero) e interrompe a execução do programa. 3.2.1. Biblioteca Padrão A linguagem C disponibiliza um conjunto de bibliotecas (conjunto de funções) para serem incorporadas aos programas dos usuários. Onde as funções dessas bibliotecas são declaradas em arquivos-cabeçalhos, que são organizados por finalidade ou área de aplicação. As funções de entrada (scanf) e saída (printf) são declaradas no arquivo-cabeçalho chamado stdio.h e as funções matemáticas são declaradas no arquivo-cabeçalho math.h. 3.2.1.1. Arquivos-cabeçalhos do Sistema Os arquivos-cabeçalhos do sistema contêm as declarações das variáveis e funções dos objetos armazenados na biblioteca padrão. Os arquivos-cabeçalhos do sistema são referenciados entre chaves angulares (< e >), para que o compilador interprete como uma referência a um arquivo-cabeçalho do sistema. Os arquivoscabeçalhos do sistema são criados durante a instalação do compilador.

3.2.1.2. Arquivos-cabeçalhos do usuário Os arquivos-cabeçalhos do usuário são declarações de funções e variáveis desenvolvidas pelo usuário (programador) e que ele deseja que elas sejam disponibilizadas para outros programas. O compilador interpreta uma referência a um arquivo-cabeçalho do usuário através de aspas duplas ( ). 3.3. Comandos de Compilação O comando mais simples do compilador gcc, mostrado abaixo, realiza todas as etapas da compilação, bastando somente relacionar o código-fonte, do programa C, que quer compilar e gera um código executável com o nome a.out. gcc <nome_programa>.c Dica Compilando o programa com a opção de compilação o (gcc <nome_programa>.c o <nome_executavel>) faz o código executável ser armazenado em um arquivo executável. A Tabela 2 apresenta alguns dos comandos de compilação do gcc usados para compilar programas C. gcc prog.c Tabela 2: Alguns comandos de compilação do compilador gcc. Comandos Descrição gcc prog.c aux.c io.c gcc prog.c o exe gcc prog.c aux.c io.c o exe Compila o programa prog.c e gera um executável a.out. Compila o programa prog.c e os códigos distribuídos aux.c e io.c e gera um executável a.out. Compila o programa prog.c e gera um executável exe. Compila o programa prog.c e os códigos distribuídos aux.c e io.c e gera um executável exe.

3.4. Laboratório: Compilando o Primeiro Programa C Este laboratório tem como finalidade mostrar como pode ser feita a compilação de um programa C. Um programa em C é dividido em vários arquivos, que são usados para formar um único arquivo executável. Compilar um programa C significa transformar o código-fonte em uma linguagem que será entendida e interpretada pelo sistema computacional alvo. O objetivo deste laboratório é mostrar através de um exemplo, algumas maneiras de compilar um programa em C. 3.4.1. Programa Exemplo Digite o código-fonte apresentado no Programa 1, da seção 3.2, em um arquivo texto e salve com o nome primeiro_programa.c. O Programa 1, faz uso de uma biblioteca padrão (biblioteca de entrada/saída) stdio.h, necessária para o compilador verificar a referência à função printf, causando a impressão do argumento passado a essa função. Recomendação O código deve ser digitado da mesma forma, ou seja, todos os caracteres devem ser digitados da forma mostrada, respeitando o uso de maiúsculas e minúsculas e colocando o ponto e vírgula no final de cada instrução. Pois, é muito comum programadores iniciantes esquecerem os caracteres como: chaves, aspas e ponto e vírgula. Outros detalhes desse código serão discutidos apenas nos capítulos subsequentes. Dica Cuidado para que o nome do arquivo-fonte criado não tenha extensões escondidas. Alguns editores de texto (Windows) costumam colocar a extensão.txt no nome do arquivo, fazendo o arquivo ficar com o nome primeiro_programa.c.txt. 3.4.2. Compilação Em um terminal, e no mesmo diretório em que se encontra o arquivo primeiro_programa.c, digite o comando:

gcc primeiro_programa.c o primeiro_programa Esse comando ira compilar o código-fonte. E a compilação dever ocorrer sem mensagem de erro e o programa executável terá o nome primeiro_programa. Execute o programa, e observe a impressão da mensagem: Meu primeiro programa! no terminal, como mostra a Figura 17. Figura 17: Execução do primeiro programa C Dica Se o comando gcc não puder ser executado, é possível que o seu ambiente não esteja identificando o local onde o compilador está instalado. Geralmente o problema está relacionado à variável de ambiente (PATH). O Uso do ponto seguido da barra inclinada é usado para executar o programa, em sistemas em que o diretório local não faz parte do caminho-padrão dos arquivos executáveis (Linux). Mas em alguns sistemas como o Windows, basta digitar primeiro_programa.

Exercícios 1. Descreva e explique cada etapa do processo de compilação. 2. Quais são as extensões do código-fonte, código-objeto e código assembly? 3. O que cada comando de compilação abaixo faz: a) gcc c programa_a.c b) gcc programa_b.c o programa_b.exe c) gcc E programa_c.c d) gcc S programa_d.c e) gcc programa_e.o f) gcc programa_f.s o programa_f 4. O que será impresso pelo programa a seguir? 1 #include <stdio.h> 2 int main(void){ 3 printf( Fundamentos de programação usando C ); 4 return 0; 5 } 5. Quantas funções são chamadas no interior da função main do programa da questão anterior? 6. Utilize o compilador gcc para gerar o assembly do programa a seguir: 1 #include <stdio.h> 2 int main(void){ 3 int x; 4 x = 2; 5 return 0; 6 } 7. O seguinte programa pode ter um erro de tempo de execução em: 1 #include <stdio.h> 2 int main(void){ 3 printf( Fundamentos de programação usando C ); 4 return 0; 5 }

8. Escreva um programa que imprima no terminal a seguinte saída: 1 9 2 8 3 7 4 6 5 9. A diretiva #include é: a) Uma instrução da linguagem C. b) Uma instrução do compilador gcc. c) Uma instrução do pré-processamento. d) Uma instrução do sistema operacional e) Uma instrução do editor de texto. 10. Os arquivos-cabeçalhos incluídos pela diretiva #include servem para: a) Auxiliar o compilador a compilar o código-fonte. b) Auxiliar o programador na escrita do programa C. c) Executar instruções. d) Incluir programas no código-fonte do programa C. e) Nomear arquivos escondidos.