50
 Linguagem C: vari áveis, operadores, entrada/sa í da Prof. Críston Algoritmos e Programação

aula03.2

Embed Size (px)

DESCRIPTION

Aula

Citation preview

  • LinguagemC:variveis,operadores,entrada/sada

    Prof.CrstonAlgoritmoseProgramao

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    LinguagemC

    Linguagemdeusogeral(qualquertipodeaplicao) Umadaslinguagensmaisutilizadas FoiutilizadaparadesenvolverosistemaUNIX(eoutros

    baseadosneste,comoLinux,FreeBSD) Disponvelemvriossistemasoperacionaise

    arquiteturas Porm,algumascaractersticaspodemdependerdaarquitetura

    (ex.:tamanhoembytesdostiposdedados) Possuivriosdialetos

    Em1988surgiuapadronizaoANSIC,queincluiutambmumabibliotecadefunesmnima.

    Nabibliotecatemosmuitosalgoritmosquepodemosreutilizar!

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    LinguagemC Relativamentebaixonvel

    Permiteenderearqualquerposiodamemria Noforneceoperaesparamanipulardiretamentetextos,conjuntos,

    listas.Ex.:comparartextos. Noforneceoperaesparaentrada/sada Maspodemosutilizarumaamplabibliotecasdefunes!

    Desvantagem:oprogramadorcometemaiserrosqueemlinguagensdemaisaltonvel Acessoindevidomemria Muitoserrosnosoavisados:assumequeoprogramadorsabeoque

    estfazendo Vantagens

    Linguagempequena(rpidoaprendizado) Eficincia(podemoscodificarpensandoemumproblemaespecfico)

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    LinguagemC

    Compilada Cdigofonte(.c)-> cdigoobjeto(.o) Linkediotransformavriosobjetosemumexecutvel(.exe) Assim,bastacompilarcdigoobjetodecdigofontemodificado

    Compiladorgcc #>mangcc #>geditprimeiro.c& #>gccprimeiro.c #>./a.out hello! #>_ ansiWallc..gccprimeiro.o

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ printf("Hello!\n"); }

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    ProgramandoemC AlinguagemCpossui32palavraschaves. Aspalavraschavesnopodemserusadasparanenhum

    outropropsito. Cdiferenciapalavrasmaisculasdeminsculas.Todas

    aspalavraschavesdevemserescritasemminsculo. Exempo:

    if(A>B) IF(a>b)

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    ProgramandoemC

    Palavrasreservadas(palavraschave) auto,break,case,char,const,continue, default,do,double,else,enum,extern, float,for,goto,if,int,long,register,return, short,signed,sizeof,static,struct,switch, typedef,union,unsigned,void,volatile,while.

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    ProgramandoemC

    TodososprogramasescritosemCconsistemdeumaoumaisfunes.

    Afunomain()sempreprecisaestarpresenteemumprograma.

    Afunomain()aprimeirafunoaserexecutadaquandooprogramaforcarregado.

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    ProgramandoemC

    FormageraldeumprogramaemC:

    declaraodevariveisglobaistipodevolvidofn(listadeparmetros){seqnciadecomandos}

    tipodevolvidomain(listadeparmetros){seqnciadecomandos}

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Comentriosemprogramas

    Comentartrechosdocdigofonteumaformadedocumentaroprograma.

    Adocumentaoserveparaqueosprogramaspossamserusados,corrigidoseaperfeioadospeloprprioprogramadorouporoutraspessoas.

    Oscomentrionoinfluenciamemnadanaexecuodoprograma.

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Comentriosemprogramas

    EmCcomentriossocadeiasdecaracteresdelimitadaspelassubcadeias/**/.

    OscomentriosemCpodemtambmserdeapenasumalinha,usandooscaracteres//.

    Exemplo: /*Esteprograma...*/

    //Estafunofaz...

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    /*Este programa altamente complexo escreve Hello! na tela.*/main(){ printf("Hello!\n"); // escreve Hello!}

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Variveis

    Nomes: Qualquertamanho,masapenasos31primeiroscaracteresso

    considerados Nopodemosutilizarpalavrasreservadas Podemterletrasoudgitos Deveminiciarcomletraou_,masdevemosevitarcomearcom_,

    paranodarconflitocomfunesdabiblioteca Diferenciamaisculasdeminsculas

    (ex.:xeXsovariveisdiferentes) Prticatradicional:

    quandoavarivelnomodificaovalorduranteoalgoritmo(constante),utilizeapenasletrasmaisculas

    paraasoutrasvariveis,utilizeapenasminsculas devesugerirautilizaco:idade,altura,numero_eleitores..

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Tiposdedados Bsicos:

    Inteiros: char1byte,permitearmazenar1caracterASCII inttamanhodependedamquinahospedeira shortpossivelmentemenorqueint longpossivelmentemaiorqueint

    Pontoflutuante(aproximaodenmerosreais): floatprecisosimples(quantidadededgitosrepresentativos) doubleprecisodupla

    Qualificadorunsignedindicaqueonmerointeironotemsinal,assimganhamos1bitnarepresentao.

    Podemosutilizarsizeof()paradeterminaronmerodebytesdecadatipo.Ex.:sizeof(char)retorna1.

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Declaraodevariveis

    Variveisdevemserdeclaradasantesdeutilizadas Emqualquerpontodocdigo,preferencialmentenoincio

    Formato: , , ..., ; Ex.:int inicio, fim, incremento;

    Podemosinicializarumavarivelnadeclarao Ex.:int inicio = 0, fim, incremento = 1;

    Variveisnoinicializadastemvalorindefinido! Podemosutilizaroqualificadorconstparaindicarqueovalorda

    varivelnopodesermodificadonocdigo Amodificaopodegerarerrodecompilao(dependedocompilador) Inicializaonecessria Ex.:const double PI = 3.14;

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Declaraodevariveis

    Tiposdefinidospelousurio typedefcharletra,digito; typedefinttamanho; typedeffloatpreco; Exemplo:

    precovalor; letraa,b,c;

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Comandodeatribuio

    Ocomandodeatribuioserveparaguardar(atribuir)umavaloraumavarivel. Exemplo:

    soma=A+B fat=fatorial(x)

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ int i; // NO INICIALIZADA!! printf("%d\n", i); }

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ const int i = 0; i = 1; // TENTATIVA DE MODIFICAR VARIVEL const

    printf("%d\n", i); }

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ char c; int i; short s; long l; float f; double d; printf("%d\n", sizeof(double)); printf("%d\n", sizeof(d));}

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Tiposdedados Tamanhosemnossasmquinas(inteirosem32bits)...

    char(sempre 8 bits), short(16 bits), int(32 bits), long(igual ao int), float(32 bits), double(64 bits)

    Maior char: 27 - 1 = 127 = 01111111 Menor char: -27 = -128 = 10000000

    Maior unsigned char: 28 - 1 = 255 = 11111111 Menor unsigned char: 0 = 00000000

    Maior short: 215 - 1 = 32.767 = 01111111 11111111 Menor short: -215 = -32.768 = 10000000 00000000

    Maior unsigned short: 2161 =65.535= 11111111 11111111 Menor unsigned short: 0= 00000000 00000000

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Tiposdedados Tamanhosemnossasmquinas(inteirosem32bits)...

    char(sempre 8 bits), short(16 bits), int(32 bits), long(igual ao int), float(32 bits), double(64 bits)

    Maior int: 231 - 1 = 2.147.483.64701111111 11111111 11111111 11111111

    Menor int: -231 = -2.147.483.64810000000 00000000 00000000 00000000

    Maior unsigned int: 232 - 1 = 4.294.967.29511111111 11111111 11111111 11111111

    Menor unsigned int: 000000000 00000000 00000000 00000000

    Omenorvalordecadatipointeiropodeserobtidosporoverflow:omaior+1.(representaoemcomplementode2)

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ char c = 128; unsigned char uc = 128; printf("%d\n", c); printf("%d\n", uc);}

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Tiposdedados

    Tamanhosemnossasmquinas... char(sempre 8 bits), short(16 bits), int(32 bits),

    long(igual ao int), float(32 bits), double(64 bits)

    Representao de ponto flutuante: 1. * 2^ (se expoente 0) * 2^ (se expoente = 0) Expoente somado com 2^ - 1 Mantissa normalizada: M.MMMMMMM

    Ex.: 1.0*2127 = 01111111 00000000 00000000 00000000 01111111(127) + 01111111(127) = 11111110

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Tiposdedados Tamanhosemnossasmquinas...

    float: 1bit(sinal) +8bits(exp) +23bits(mant) = 32bits Expoente: -27 + 1 at 27 1 => -127 at 127

    128 = Inf Menor positivo: 2-126-23 = 2-149 = 1.4*10-45

    2-126 = 00000000 10000000 00000000 00000000 2-127 = 00000000 01000000 00000000 00000000 2-128 = 00000000 00100000 00000000 00000000 2-149 = 00000000 00000000 00000000 00000001 2-150 = 0.0 (underflow)

    Maior: 01111111 01111111 11111111 11111111 224 1 = 01001011 01111111 11111111 11111111 00010111(23) + 01111111(127) = 10010110 (224 1)*2127-23 = 3.4*1038

    7 dgitos significativos: 224 = 16,777,216 Cuidado: 224 + 1 = 224 (erro de preciso)

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Tiposdedados Tamanhosemnossasmquinas...

    double: 1bit(sinal)+11bits(exp) +52bits(mant)= 64bits Expoente: -210 + 1 at 210 1 => -1023 at 1023

    1024 = Inf Menor positivo: 2-1022-52 = 2-1074 = 4.9*10-324

    2-1022 = 00000000 00010000 ... 00000000 00000000 2-1023 = 00000000 00001000 ... 00000000 00000000 2-1024 = 00000000 00000100 ... 00000000 00000000 2-1074 = 00000000 00000000 ... 00000000 00000001 2-1075 = 0.0 (underflow)

    Maior: 01111111 11101111 ... 11111111 11111111 253 1 = 01000011 00111111 ... 11111111 11111111 110100(52) + 11111111(1023) = 10000110011 (253 1)*21023-52 = 1.8*10308

    15 dgitos significativos: 253 = 9,007,199,254,740,992 Cuidado: 253 + 1 = 253 (erro de preciso)

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ float f1 = 16777216; // 2^24 float f2 = 16777217; // 2^24 + 1 double d = 16777217; printf("%f\n", f1); printf("%f\n", f2); printf("%f\n", d);}

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ // 45 zeros float f1 = 0.000000000000000000000000000000000000000000001; // 46 zeros float f2 = 0.0000000000000000000000000000000000000000000001; printf("%e\n", f1); // %e escreve em potncia de 10 printf("%e\n", f2);}

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ float f1 = 3.402823e+38; // 3.402823 * 10^38 float f2 = 3.402824e+38; // 3.402824 * 10^38 printf("%e\n", f1); // %e escreve em potncia de 10 printf("%e\n", f2);}

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Constantes Valoresfixosqueaparecemnocdigo Todonmerointeiroquecabeemum intumint

    Senocabe,eleumlong Paratornlolong,colocaseumL(oul)nofinal:ex.:123L Zeroantesdonmerointeiroindicavaloremoctal,0X(ou0x)antes

    donmeroindicavalorhexadecimal Ex.:31=037=0x1F

    Paraconstantesunsigned,colocamosU(ouu)nofinal Paraunsigned long,colocamosUL(ouul)nofinal

    Todonmerocompontodecimal(12.3)ouexpoente(1e2)consideradodouble Paraserconsideradofloat,colocaseumF(ouf)nofinal

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Constantes

    Paraconstanteschar(1caractere)utilizamosaspassimples,erepresentadacomoointeirocorrespondentenatabelaASCII Ex.:Arepresentadocomoointeiro65,0como48 Podemosrealizaroperaesaritmticascomcaracteres!

    Algunscaracteresespeciais: \nnovalinha \ttabulao \\barrainvertida \aspassimples \aspasduplas \0armazenaonmerozero '%%'representao%

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ char c = A; printf("%d\n", c); printf("%c\n", c); // %c escreve o caracter (tabela ASCII)}

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Conversesdetipo Implcitas(automticas):

    Expressesenvolvendomaisde1tipo Resultanomaiortipo.Ex.:intelong>long,floateint>float

    Atribuiodeexpressodeumtipoemvariveldeoutro Informaopodeserperdida(truncagem)seotipodaexpressoformaior,

    masaoperaopermitidaEx.:charc=300;(algunscompiladoresdoumaadvertncia)

    Explcita(forada) Formato: () expresso Ex.: float x; sqrt((double) x); Mesmoefeitodaatribuioaumavariveldonovotipo Utilidades:

    Algumasfunesexigemumtipoespecfico Evitaadvertnciasefacilitaverificao

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Operadoresaritmticos

    Binrios:+(soma)(subtrao)*(multiplicao)/(diviso) %(restodadiviso)

    Unrios:(trocadesinal) Quandoosoperandossointeiros,adivisointeira(a

    partefracionriatruncada) Ooperador%nopermiteoperandosfloatoudouble

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ int a = 7, b = 2; printf("%d\n", a + b); printf("%d\n", a - b); printf("%d\n", a * b); printf("%d\n", a / b); printf("%f\n", ((double) a) / b); printf("%d\n", a % b); printf("%d\n", -a);}

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Operadoresrelacionaiselgicos >>=

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    #include

    main(){ int a = 7, b = 2; printf("%d\n", a == b); printf("%d\n", a != b); printf("%d\n", (a > 0) && (b

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Operadoresdeincrementoedecremento ++(soma1varivel)(subtrai1varivel)

    int x = 3; x++; // agora x vale 4

    Prefixado(++/antesdavarivel):utilizanaexpressoovalordavariveldepoisdoincremento

    Psfixado(++/depoisdavarivel):utilizanaexpressoovalordavarivelantesdoincremento

    int x = 3, y; y = x++; // agora x vale 4 e y vale 3 y = ++x; // agora x e y valem 5

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Operadoresbitabit &(e)|(ou)^(ouexclusivo)~(complemento)

    (deslocamentoadireita)

    char x = 1, y = 2; // x = 00000001 // y = 00000010 printf(%d\n, x & y); // vale 0 = 00000000 printf(%d\n, x | y); // vale 3 = 00000011 printf(%d\n, x ^ y); // vale 3 = 00000011 printf(%d\n, ~y); // vale -3 = 11111101 printf(%d\n, x > 1); // vale 1 = 00000001

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Operadoresdeatribuio =(atribuiosimples) += -= *= /= %= = &= |= ^=

    int x = 2; x = 2*3 + 1 // x vale 7 x += 2; // x vale 9 (o mesmo que x = x + 2) x -= 5; // x vale 4 (o mesmo que x = x - 5) x *= 2; // x vale 8 (o mesmo que x = x * 2) x /= 3; // x vale 2 (o mesmo que x = x / 3) x %= 3; // x vale 2 (o mesmo que x = x % 3) x

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Precednciadeoperadores()! ~ ++ -- +(unrio) -(unrio) () sizeof* / %+ ->< >=== !=&^|&&||= += -= *= /= %= = &= |= ^=

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Sadaformatada

    printf(, arg1, arg2, ..., argN); Converteosargumentosemcaracteredeacordocom

    eimprimenatela :

    Caracterescomunssomantidos Onsimo%associadoaonsimo

    argumento

    int i = 1; double media = 7.0; printf(resultado do aluno %d = %f\n, i, media);

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Sadaformatada

    Caracteresdeconverso d,i:int,nmerodecimal o:int,nmerooctal x:int,nmerohexadecimal u:int,semsinal c:int,1caractere s:cadeiadecaracteres(veremosposteriormente) f:double,[]m.dddddd(default6casasdecimais) e:double,noformatox.xe+y(ex.:1.2e+3==1200) g:double,formatodofseexpoentemenorque4oumaior

    queonmerodecasasdecimais,formatodoecasocontrrio %:caractere%

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    int x = 31; printf("%d\n", x); // 31 printf("%o\n", x); // 37 printf("%x\n", x); // 1f

    x = -1; printf("%u\n", x); // 4294967295

    x = 64; printf("%c\n", x); // A

    double d = 1200.0; printf("%f\n", d); // 1200.000000 printf("%e\n", x); // 1.200000e+003 printf("%g\n", x); // 1200.000000

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Sadaformatada Entreo%eocaracteredeconversopodemoster

    Nmeroindicandoalarguramnimadocampo

    double d = 1.0; printf("%10f\n", d); // [ 1.000000]

    Umpontoseparandoalarguradonmerodecasasdecimais printf("%10.2f\n", d); // [ 1.00]

    Sinaldemenos,indicandoalinhamentoaesquerda printf("%-10f\n", d); // [1.000000 ]

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Entradaformatadascanf(, &var1, &var2, ..., varN);

    Ldaentradapadro(teclado)umasequnciadecaracteres,interpretadeacordocom,egravaosvaloresobtidosnasvariveis(naordemencontrada)

    int i, r; float d; r = scanf(%d, %f, &i, &d); // espera inteiro e real separados p/ vrgula

    Espaosetabulaosoignorados Outroscaracteresdevemcasarexatamente Retornanmerodecamposcasados Caracteresdeconverso:uselfparadouble

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Diretivasdeprprocessamento

    Prprocessamentoumafasedecompilaoanteriortraduodoprogramaparaalinguagemassembly.

    Oprprocessamentoengloba,entreoutras,tarefastaiscomoainclusodearquivosauxiliares,atraduodeconstantessimblicasedemacros.

    Asdiretivasdeprprocessamentosocomandosauxiliaresquesinalizamaocompiladoranecessidadederealizartarefasdeprprocessamento.

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Diretivasdeprprocessamento NalinguagemCocaractere#adiretivaqueindicaa

    necessidadedeprprocessamento. Ocompiladorpodeincluirarquivosquandoistofor

    indicadonocontedodeoutroaquivo. Exemplo:

    #include #include

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Diretivasdeprprocessamento

    AlinguagemCpossuiadiretiva#definequeserveparaincluirnoprogramaconstantessimblicaseexpressesdenominadasmacros.

    Exemplo: #definePI3.14159 #defineseif #defineeq=

  • AlgoritmoseProgramao:linguagemC(variveis,operadores,entradaAlgoritmoseProgramao:linguagemC(variveis,operadores,entrada//sada)sada)

    Diretivasdeprprocessamento

    Macrossoexpressesusadasparaabreviarconstruesmuitolongas,usadascomomuitafreqncianumprograma.

    Exemplo: #defineEHPAR(X)(((x)%2)?0:1) #defineERRO(mens)printf(ERRO:%s\n,mens)

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49Slide 50