You are on page 1of 20
JOperador Exempla | Comentario Operador [Exemplo | Comentério + xty |Semaxey Atvibui velon de y 6x xey | subtraly dex Equivale ax=x+Y = ety | Multipica ey Equivaleax=x-y Equivaleax=x*y FY | Retina Y mame trees ee Eaiveleax=xTy oe thy | Resto dace de pry oop Equvale axe x%y vee |Feeremewaen te ver dex oe Decrementa Stoo Equiveleax x1 eee se Tipo |Tamanho* | Valores Validos pes char | 1 byte Caracteres em Cédigo ASCII Rome int | 20u4 bytes |-2" a2" ou -2% aD" Beers float | 4 bytes -24 328 Ene) double | 8 bytes fei = Fungdes Matemdticas fcr oe ipa G@include ) ee fat aa) ae eT feos ar f= [eet ioe ar roma eae [ese pr abe st |r Fs ST aataiesi> | Fagiee dear wa fs [oa [terse or iscae cate. [gies pod fifo) [Rope esclae-atea> [Forges notereae pe —[ rt) et oe 6p icctie ayatan.30 [Frees de ster [ret | ren ep Ss TET Fciuse catriog. 19 [Pgs de text fe fon) [so fart [need [ara ie /) were Constantes ‘Sintaxe: ‘tistine Hoag _// cecil preci sinles Seale sia prc Se oe Sider Se itoeo of loa ou dou com notagso coms Ye oatou cole com ecacio oerdfea Sa dependendo do conte, ue Fou She print ("Endereco de matchar = tp\n" ,gnatchar) printf ("tanatho de natchar = ¢d\n", abreof (matchar) ) ; Comando de selecto miltipla escola (expressa0) ‘opto ‘eomandoi}>; opto ‘Sexes Sitch (empeesso) ‘comando(h : rans ice a com>: a {porte leet ‘comants > comands: finascine ’ ’ conte se main (>) ‘ Pines ("\acadigo (18 2 snitch (ega an (eg case 1: print® (“\eMensagen 2\n"> Geos 2: print (\atlenengen 240" fase 3: prince ("\eaneagen 3\2"> case 4: prance ("\amensagon 4\n") dorault: printe , ‘\nwonsagem de erzo\n"): Comando de, ngpeticio para nimero for ( Expressio 2: condicdo avaliada a cada tentativa de execugdo do(s) comando(s), para definir se ele(s) serd(@o) executado(s) ou ni. 3: Incrementos/decrementos das voriévels, de controle, Executados apés cada execucéo do(s) eamando(s), — Repeticao por contagem (comando for) — Repetico enquanto uma condicao for verdadeira (comando while) — Repeticao até que uma condicao se torne verdadeira (comando do-while) while (expressdo condilonal), ‘ UH comands) arepetic r TERT: as ches 60 uals avonce mal centroid plo Cc de rene 11 comands) 2060 while Prsadangragen tert) Comando do-while : si intaxe Heamerdos) erp gem SEMA ao ee : — verifica ‘Antes da comando | Yori | repericdes | Armes 62 Riera de reper for inicio | Qou+ | écefndoaeimeara ‘reside doloco Rimero de repens while inicio | 0 our (2) |" rtod conhecoe pace cer zero ldo-while | final | 1 ou+ (2) Riser de repetii ent aeee "meres una execugie ‘Seve oarrer Arranjos na Linguagem C Declaracao Tipo arranjo ‘tipo> nome doarranjo>[< ndiere de elementos da dimenSo >] + nimare de elementos de dimensio deve ser una constnte + Mpe ede ser, entre autres, int feet, double eu chor. Exemplos: float nota [3 int x [18]; Utilizacdo: varidvel indexada nome do arranjo> [] notal7] Inicializagtio automética de um ‘arranjo na declaragio Forme geval: tipo verinl = (valor, valor, ..- vals: Amt vetort3] = (10, 20, 30); o 42 vetor | 10 | 20 | 30 Posigées nao inicalizadae so preenchidae com o valor 0: Int vetorf5} = (10, 20, 30); vetor | 10 | 20 | 30] 0 | o Leitura (entrada) de caracteres em C sande 0 fanglo scant scant (° 40", Lembrer de coloear um espage ont ‘ignorar espares, caracteres de tot aque estejam no butfer antes do cc oar St sstnaetse) sand Fungo getchar: Estas duos fungdes este na bblio fo (saida) de caracteres em C sand o funedo print: Eines ("te", sarectere): sande a funglo putchar: putenar (earsctos Estas duas fungdes também esto na biblioteca stdio.h Declaragdio & Ez ide strings Decne de ume string zm iin The teins, selon Andatinido Leitura (entrada) de strings em C: scanf A fungiio scanf também pode ser usada para ler una string intera terminada por um espage ou ENTER (\n): 4. String terminada por expaco: . char estado (3017 scone ("48") estado) 2. String terminada por ENTER (\n): soant ("4IA\nI", estado): ora ler apenas um determinado nimero de coracteres {até tomanho de string menos 13) scant ("$201*\n]*, estado) Notes: NAO colocor "4" antes do nome da string | Coracteres no utlizados fieam ne buffer | Leitura (entrada) de strings em ¢: foets ‘A func fgets pode str sada para le ua sting intra erminaca por um ENTER « portir de on argue Ele tombém Ie eopagore tebuoses, mez controle fomene maximo da string, ermazerande eo moxine Exibigfo (saida) de strings em C ‘A fancdo printf também pode ser usada pore exible uma ‘tring inteira (exceto © mareador ‘\0"): char estado{301; print£("O nome do estado e!:\n printe ("be", estado) ; Outre ope & usar « Fungo puts: char estadof30};g ‘A fungio puts exibe a string e avanca pora nova linha, ‘Também equivale a usar a printf com o formato "%s\n". Biblioteca string.h Para simplificar algumas operacdes comumente utilizadas com strings, biblioteco string.h contém funces ‘especificas para este tipo de estrutura de dados, entre as quais: = strepy: copia contedo de uma string para outra = stremp: compara duos strings « streat: concatena conteside de dus strings strlen: devolve © tamanho da string (@xchindo 0 marcader \0}) Referdncia para outras funges pare manipulego de strings terminadas com \O' hftps://en.cppreference.com/w/e/string/byte Copiando strings: Funcdo strepy A funcio strepy copia 0 contetid de una string para sutra, inciindo © marcador "\O" ‘strepy (destino origen) ; [A string de destino deve"ter tamanho suficiente para armazenar os caracteres copiados ¢ 0 marcador de fim da'string de origem, para evitar problemas. Exenple: teroiose ‘Nie setangt (50]'2shodatghisHanopseatunenys®; toneneseeneecetecoeceretoe Peropy (strane?) striagi) peinte(Depoie, string 2 = e\ Comparando strings: funcéo stremp ‘A fun strep compara 0 conteido de duas strings © “evolve um valor de azordo com 0 resultado da amparagio: ‘stronp (atringl string?) ; ‘A comparagio é feita caractere a caractere, a partir do inicio das strings, e considerando o valor dos ‘cédigos dos caracteres na tabela ASCII. Se encontra tum par de caracteres diferentes, termina, 0 ‘valor devlvido pela funilo stremp pode ser + Zero, se a5 duas strings forem iguals (contém os ‘mesmos caracteres e tém 0 mesmo tamanhe) + Maior do que zero, se string! maior do que string? (fol encontrado um caractere maior em string!) + Menor do que zero, se stringt menor do que string? (oi encontrado um earactere menor em string!) Concatenando strings: funcio streat ‘A fungio streat coneatena a string de origem ao final da string de destino. streat (destino,origem) ; A string de destino deve ter tamanho suficiente para armazenar a string resultante da concatenagdo, incluindo uum marcador de fim "\O": char stringi[30] = "mais 18 caracteres"; char string2[23] = "14 caracteres "; streat (string2,stringl) ; printf ("[¢a]\n" string2) ; Tamanho de strings: fungao strlen ‘A fungio strlen develve um velor numérico inteiro que & Igual nimero de coracteres contisos ne string, Sem contar © marcador de fim NO" strlen (nomé_da_string) ; Inicializagéo de uma matriz na Varidveis Globais e Locais - Exemplo 3 ‘declaracdo Feeme geral tipo verimItn = { (valor o, valory ie «+» valor Gre. vl ss vor SEL Eay ie fwalor.: or valoras valor: 9a) i Sete 7 2, _ | Fungées void em C - Declaragéo Tipos de Funcées y "ne ol fem ree een or aw cs ~ sn pre peer i) | cote spent ye opcionals Decree vole finan ia eid foment) (an una ter prinetes omas copes elite Serbs a Sl i gm prone sven _ Declaragiio de fungies void com uso de protétipo mae Diaieeale sere Brotétipo ‘Quando a funcio no estiver declarada antes do programa principal nio'hé necessidade de Ura wm Dhncipal, deve ser Includa uma *pré-decloracdo", tambam -Prneal,le‘Né necessidade i Tinclade Senet Trond aid ecrowe-1inha (wotd) (77 precnene Tinks som 19 asterieces ake i) // variavel local for Galist207589) prinee( pranee(\n") Winelnde Sti lyosd escreve Linha (vosa) ; Protétipe_) 7" prototipo SEMPRE devo torminar com ';! da fungaio int main( 9 ; n ne maint > Chamada jocore_ shal ¥7 da funcio Jadreve isha t ); eratanka esd che Tinka com 15 arteriacos | Assim como as funcies chamadas por main devem ser Declaragio ||!“ snt"47"// varttyel toca Geclorodas antes dole, quando hetner, fangSan que. chara ia funcio | ecleradar qntes dele. quand hower funedee gue ck ddevem ser declaradas antes dos fungses "chamadoras" Varidveis locais estdticas (persistentes) Se necessério, é possivel manter estas varidveis e seus valores quando a execucdo da funcdo termina. Pare isto as varidveis precisam ser declaradas como static Hee empha Eonttt! // dacranenta cont CAUeereat) Fungées tipadas em C - Declaragio tipo> ([¢lista da pardnatros formaia>)}) Z. (ented vsti mee > opcionais d ‘Quando a funco tier pardmetros fermeis, coda parfetro a lista entre parénteses deve ser declaredo come! ‘ Exenple Exemplo de declrasio completa ‘Tloat maior de? (float vi, Host vay 17 exenpie de Fangso tipacs i at (i> v2) Fevurn vi; // devolve 0 valor de vi return v2: // davolva 0 valor de v2 Geragtio de nimeros “aleatérios" + Ger epee: Stas cept do oan 2506 cee nb toes) " dee nar ane conte eecaglo osegn foe ogo + ans can geome seq denier "pe eetix” SG ne bhatece seal * ir te sgn dele etre Oe a0 1 (estan rfidtm tema Nontec. cp ver £32787) +i or nal ann) fre arr ene neha Passagem de parametros “por referéncia” (ou endereco) + para receber pardmetros por referéncia nas fungées é preciso usar ponteiros (*) + um ponteiro é uma varidvel que contém o endereco de outra varivel (‘aponta” para outra varidvel) + uma variével que vai ser usada como ponteiro deve ser declarada com o tipo da varidvel para a qual 0 ponteire vai “apontar” + Exemplos: loaf, val 1] 1 om pontine pace vasiAve fort Sher a) by ty oy WT podem or deci pirariaveie cher doe unto oon veriivela do Peano tipo Exemplo: passagem de pardmetres por referéncia Fungo que recebe 2 voloresinteroe x ¢ y ¢ permuta os volores toe come STE tow oy we = he, eI int maint os an an5, bao, 5 10 prince (ances da toca: \nastd Desde Prine ("bepale da troca:\nasta Betaly =) Tipos de Funcées + Fane ved ou sen reo no deve ver orcad ga? ‘om procs Gartetre vit) - en prt sede por slor Chamadar fanceo2 warint, vert + posses per refer endere¢s} Dedlerog! vote funcno3 int wwe, float wer2} Chamads: fancao3 evarsnt, Evartloat) as fre vet pda devave rede tans de partes pss pr eferinda Tipos de Fungdes + Funer Speer 9 cm retrm deren um ce Volvo assred evacuie de fro ead ‘Sanda saeasn agg ia on hn i et roe Declaragéo de Ponteiros (variéveis que armazenam enderecos) Sintaxe: tipo “nome_da_variavel_ponteiro: Esnina eps centeio te tpeepecca Exemples we 1 rate oon fins 11 Yasstvete tape antetee 1) poatatron poden sot aniaraios junto com vartaveie do 14 Raaua tipo» poss ser preseaiss ou sopuise por eapagos Operadores de Ponteiros ‘ge 2perador undrio que devolve o valor da verivel lecelizada no endereco epontado pelo Ponteiro que 0 segue exemple: Ant count, q, tm: a=‘; // coloca om q 0 valor contido // no endereco de mondria // apontade por m Lé-se:"q recebe o valor que esté no enderego m" ‘Se a varivel m oponta para um endereso que contém ‘0 valor 100, o valor de q'serd 100. ¢ Operadores de Ponteiros &_ sperador unério que devolve o endereco de meméria de seu operando Exemple: int count, q, *m; m= gcount; // coleca em 2 0 enderego de 7/ memoria da variavel count Lé-se: "m recebe o endereco de count” ‘Se a variével count esté armazenada na posi¢do de meméria 2000, o valor de m seré 2000. Inicializag&o de Ponteiros + Como qualquer varidvel, se for declarado sem inicializacdo 0 valor inicial de um ponteiro é desconhecido + Para um ponteiro néo apontar pera um local de meméria invélido ("lixo") ele pode receber o valor nulo (NULL) + Exemplo: ant “pl; F pl = NOL Se ou gat “pl = NULL: - Aritmética de Ponteiros Podemos incrementar e decrementar ponteiros. Por exemplo: + Suponha que pt é um ponteiro para inteinos: (ant *p1) com um valor inicial 2000 + Cada inteiro ocupa 4 bytes + Apés 0 comando pit, o valor de pa pessaa ser 2004, ou $eja, p1 passa a apontar para a préxima posicdo de meméria apés o inteiro apontado por pt + O mesmo vele para o decremento (apés Subtragao 0 célculo da diferenca entre dois ponteiras para elementos do mesmo tipo permite saber quantos elementos daquele tipo existem entre um enderego e outro. Por exemplo, o comprimento de uma string (que é um arranjo de caracteres) pode ser obtido através da diferenca entre o endereco do caractere '\0' e 0 enderego do caractere original. Nota: o edleulo de diferenga entre ponteires 26 pode ser Ormesme vale para o decremento (apes ‘ealizoda entre ponteres do mean poly pimp o Generalizando: Comparagéo + Ao ser incrementado, um ponteiro passa a Tamer © possvel comparar dois ponteires do mesmo apontar para a posigdo de meméria do prdximo elemento do seu tipo bese. + Ao ser decrementado, um ponteiro passa a apontar para a posicdo de meméria do elemento anterior do seu tipo base. + Ovalor do ponteire ird aumentar ou diminuir de acorde com o ntimero de bytes que o tipo base ocupa na meméri char: 1, short int: 2, int e float: 4, double: 8, etc. Com os operadores == e 1= pocemos seber se dois ponteiros sio iguais ou diferentes (isto é, se apontam pare o mesme endereso ou nd). No caso de operagiies do tipo <, <=, >, >=, estamos comparando qual ponteire opente pera uma posigdo mais ‘alte na meméria, Ento uma comparacdo entre ponteiros pode nos dizer qual dos dois esté "mois adiante" na Noto: 0 comparagiie entre ponteiros 28 pode ser realizada entre ponteires do mesmo tipo! Resumo de aa de ea TOs: Ponteiros e Arranjos ‘0 compilader entae cloce este nimero de bytes em um ‘epoca livre de meméria cria um ponteire pore a Para que possomos entender a smileidods entre primeira posigdo deste espago,cuje nome € 6 mesmo do ponteirese orranjs, deveresprimeire entender come arvanje declared, © compiladerC trata arrenjos. Quando declarames um Portante, w ervanje de seguinte Forme: verdade oneme de um penieire de mesme tipo dee elementos do arranjo, eujo contedide € 0 enderezo do primeira elemento de erranjo, Por exemplo, para um eter vet thpo nome (DIM 1) [DIM 2]... [DIM_NT O conpiledor € calcula tamanho, em byte, do espace necennirio pore ormazenar este error. Ese tamanite é inal ao produto de todas as dinensies multpicade Ne petic,aaifenenga entre um nome de ateano ¢ um Polo tomatno se om cements do apo exposfiends’ porfuraparee primus clomante seaman & aus 0 «oma tenderece conte ne pantera pode ser alterade, mas 0 mun * stasortses) andrea contd to nas de nee oe pode (cana 5 Fosse uno constont Portanto, quando usames a notagée de referéncia a elementos de um vetor vista anteriarments: none (indice) ‘rise |e striate ut vale (oircs) a am fone {Eire ae ame xs pakms site o| | Tete equiva a uso: Teeraerte | ane pere | uwremne osalen (tip) oer * (nomeinaiice) Seer | eee) | eres ‘Assim, 08 notagdes obaixo para acesso « elementos de wma me | nape omen wicice vetores so equivalentes Saaoe ee Se etee eTecestees| te es Nets de ponte somece aur pacer aie en ams | 7 rieeize eleornte = * 7 some prierize clemeato arora | ptt = pire | Peters ster gual o# oe eeroion ere otva wera |) Sts} // aoones comine stonsnto (yes) // suman Tears otenants Aevonie eo potaire, Lose + Arve 86 SEMPRE passodos pr refer + Anangiee fats no ranje dent de Fungo ‘aedficam os clementos de evan no programa ‘amd da fun + Apena a enderega da princra clamenta da erran puosade (per stenpia vot ou vee fe}) Assi, por que «fing siba quarts elements ‘onto ro won a somenno eomprimerto) de vet" Smt dave sev astesa come angunato pares Fags Estruturas: Estrutura / | Sees Ponteiros e Arranjos Multidimensionais ‘Assim como para os vetores, uma variével matriz (ou arranjo multidimensional) corresponde a um ponteiro constante que aponta para o primeino elemento de uma Grea de meméria contigua que comporta © tamanho total da matriz, matriz == gmatriz(0] (0] =-8matiic Na prética, a diferenca entre um nome de arranjo e um pontsire para o primeire elemento do orranjo é que o enderege contido no ponteiro pode ser alterado, mas 0 endereca contido no nome do arranjo néio pode (é como se fosse uma constante). Notagde de matrizes Notacde de ponteiros mente tte rents 77 come (BUT Sintaxe - Provétipo: ateuct nome_estrutura 1 fora do main ‘ipot nome_eanpot ; [Acard omar ‘tipo? nome_campo2; | Wuecws sped none eames: | nance i secu ne nas Declaracio de uma varigvet€6 tipo struct jé definido: struct” nome_estrutura none_var; /senre.de main Cada campo é acessado individuelmente com a seguinte se18 1 « se Y pesoeee 3 acest PTT tla eee tlie rotacaa: ‘sie taesl = * NGgetaeizesoi) . oes pee soané ("td",e€zas_sune-ct) ones pm) inicializagao: Colocando valores em estruturas aninhadas U/ na dectaracio vari campo2 = valor? Yari.campe3 = Valor3: erveara var? = (vatort, vator2, yates? ‘Arranjo como campo de estruturas atribuigao: int main() t struct fiche pessoal fichal, ficha?; Fichel = iche2; // copia todos os campos "jut ome scmnie 17 de fiche 2 pare fiche 2 . // estruturas devem ser do mesmo tipo! » Definigtio de tipos - typedef programe. se usar maidscules para os nomes dos noves tips. Sintexe: ‘eypede® none_antige Novo_Now; double, float, -). ome estrutura, Ponteiros para estruturas Sintoxe de decor Exempe WPersct ponte at // protétipo de estrature ‘ h iat masa) t J) dectacacto de suas vertivats 6 oe Per vezes, para deixar ocbigo mois level, édesejével fertar sinnimos par os nomes de ipos defies no ‘A linguagem C prov um mecanisima para elarmes naves Inomes para tipos de dados com 0 comando typedef ‘Assim como 06 nomes usedes em Haines, recomende- -nome_antige € 0 nome de um tipo (ex: int, char, -nome_antige pode ser composto por virios nomes (xc unsigned int lng long int, struct Estruturas passadas por valor {Exenpl (contin) ‘void mostrar (DESSOA x) i ‘. Usando ponteiros para estruturas Shae aber are fee eer ono Peinet (Nome s0\ Peinef (‘Tdade—: sa\n", x.idado) 5 epee cape PEintf (‘Data Nasc: 424/¥24/t4a\e Pep oars Pinuse.diat Ainaveineo, Anaae: Seo} fuegeniamis Oper wa) éumotra ¥ Reed Seatacitart sheeted aca mesy nt main 0 Enno og tot i ‘ Sa es te Bi im 28908 p = (*Joao",25,(29, 5, x995)); Ss Sa mosteas” (pI! Hat Estruturas passadas por referéncia Usando ponteiros para estruturas cx comasey Save para faneereferdci um apo dest Exenples ‘oto ay ioe oo, oem) (pte pontol = 30 ae Cpiepentel = 30 © epurador Pete) tomar precedtctado gt speradar Porro (prs & prec user preess sarnos apenas tt -campo, © “ample va inerpeter como =. campe), me rt 6d esrarira, € tp prtere prgestrutre

You might also like