Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Estruturada Prof.ª: Priscilla Abreu pbraz@unicarioca.edu.br Disciplina – Programação Estruturada Roteiro de aula: • Objetivo da aula – Linkedição – Exercícios – APS 2Programação Estruturada DIRETIVAS DE PRÉ-COMPILAÇÃO E LINKEDIÇÃO 3Programação Estruturada Pré-processador C A compilação de qualquer programa C começa com um pré-processamento que cuida das linhas do programa que começam com #. Esse pré-processamento é realizado por um módulo do compilador conhecido como pré-processador. 4Programação Estruturada Pré-processador C O pré-processador C examina o código fonte escrito em C e executa certas modificações nele, baseado nas diretivas de compilação. Portanto, o pré-processador modifica o código fonte, que ainda não estaria pronto para ser entregue ao compilador. 5Programação Estruturada Linkeditor O linkeditor tem basicamente duas funções: combinar várias partes do código-objeto e resolver os endereços de instruções de desvio e chamadas encontradas no arquivo-objeto. Compilação Separada: partes de um programa são compiladas separadamente e depois são linkeditadas para formar o programa executável completo. A saída do compilador é um arquivo-objeto e a saída do linkeditor é o executável. 6Programação Estruturada Diretivas de Compilação # é uma diretiva de pré-processador. São comandos que não são compilados, mas sim interpretados pelo pré- processador e, apesar de não serem expressos diretamente em C, expandem o escopo do ambiente de programação em C. A sintaxe é independente da linguagem C. O efeito de uma diretiva começa onde ela aparece em um arquivo e continua até o fim do arquivo ou até que a diretiva seja desativada. Principais diretivas definidas no C ANSI: #if, #ifdef, #ifndef, #else, #elif, #endif,#include, #define, #undef, #line, #error, #pragma. 7Programação Estruturada Diretiva #include Solicita ao compilador incluir um arquivo especificado no seu programa. Sintaxe: #include <nomeDoArquivo> O arquivo se encontra no path do compilador #include “nomeDoArquivo” O arquivo se encontra em outro local, em geral na pasta de trabalho. Exemplos: #include <string.h> #include “pessoa.h” 8Programação Estruturada Diretiva #include Exemplo: Criando a própria biblioteca resultado.h float calcMed(float n1, float n2){ return ((n1+n2)/2); } char * res(float media, float presenca){ if (media >=7 && presenca>=0.75) return "Aprovado"; return "Reprovado!"; } 9Programação Estruturada Diretiva #include #include <stdio.h> #include "resultado.h" int main(){ float n1, n2, med, pres; printf("Informe as notas 1 e 2:"); scanf("%f%f",&n1,&n2); printf("Informe a presença: "); scanf("%f",&pres); med=calcMed(n1,n2); printf("Média %.2f",med); printf("Resultado: %s", res(med, pres)); } 10Programação Estruturada Diretiva #define Define um identificador e um valor que o substituirá toda vez que ele for encontrado no arquivo-fonte. Também denominada de macro no compilador. Sintaxe: #define NOMEDAMACRO corpoDaMacro corpoDaMacro é opcional Exemplos: #define TAMANHO 10 #define MAX(a,b) ((a>b)?(a):(b)) 11Programação Estruturada Diretiva #define– exemplos #define ESTADO_PARADO 0 #define ESTADO_ANDANDO 1 int main(){ int estado = 0; scanf("%d", &estado); if( estado == ESTADO_PARADO){ printf("seu estado esta parado"); } else if (estado == ESTADO_ANDANDO) { printf("seu estado esta andando"); } } 12Programação Estruturada Diretiva #define – exemplos #include <stdio.h> #define SOMA(a,b) (a+b) int main(){ int a,b; int resultado = 0; printf("Digite Valor A: "); scanf("%d", &a); printf("Digite Valor B: "); scanf("%d", &b); printf(" A Soma de %d + %d e de %d", a,b, SOMA(a,b)); } 13Programação Estruturada Diretiva #undef Apaga uma macro do compilador Sintaxe: #undef nomeDaMacro Exemplo: #undef max 14Programação Estruturada Diretiva #undef Exemplo: #define LEN 10 #define WIDTH 10 char mat[LEN][WIDTH] #undef LEN #undef WIDTH // Nesse ponto LEN e WIDTH não estão mais definidos. 15Programação Estruturada UNDEF costuma ser utilizado para permitir que nomes de macros sejam localizados apenas naquelas seções que precisam deles. Diretiva #ifdef Permite a compilação condicional. Sintaxe: #ifdef nomeDaMacro corpoDaMacro // código #endif Se existir uma macro chamada nomeDaMacro no compilador corpoDaMacro será compilado. #endif é usada para indicar o fim da macro 16Programação Estruturada Diretiva #ifdef – exemplo #include <stdlib.h> #define DEBUG #ifdef DEBUG #include <stdio.h> #endif int main() { int teste=2+5; #ifdef DEBUG printf ("valor de teste: %d \n", teste); #endif system("Pause"); } 17Programação Estruturada Diretivas #if, #else e #elif Diferente da diretiva #ifdef, a diretiva #if não checa se a definição existe, mas sim se a condição imposta pela definição é verdadeira. Muito utilizado para softwares que fornecem e mantêm muitas versões de um programa. Sintaxe: #if expressãoConstante1 declarações1 ... #elif expressãoConstanteN declaraçõesN #else declarações #endif 20Programação Estruturada Diretivas #if, #else e #elif – exemplo #include <stdlib.h> #include <stdio.h> #define SO LINUX int main(void) { int teste=2+5; printf ("valor de teste: %d \n", teste); #if (SO == WINDOWS) system("Pause"); #elif (SO == LINUX) getchar(); #endif } 21Programação Estruturada Exercícios 1. Faça programa em C para implementar uma calculadora com as seguintes operações entre dois valores: 1. Soma 2. Subtração 3. Multiplicação 4. Divisão 5. Potência Onde cada operação deve estar implementada através de uma função em um arquivo de extensão .h e que será utilizado no arquivo C. 23Programação Estruturada DÚVIDAS ? 24Programação Estruturada
Compartilhar