Buscar

Programação Estruturada parte 11

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

Continue navegando