Pré-visualização parcial do texto
Baixe Apostila de Linguagem C - Rodrigo Franco e outras Notas de estudo em PDF para Engenharia Elétrica, somente na Docsity!
+ = mt tr Doi vá AZ: LOLLLLLLELHAS usa =. É q * ç CENTRO UNIVERSITÁRIO DO NORTE PAULISTA Apostila de Linguagem € Brof Rodrigo Adilio Franco 1380 pas « - = am Rs o, “ < em ja) fds E -, (o E poa) fa) fa ja) Em pu) pá as UM Ea Linguagem € =" =. .. em a, ma prio ir tdi Re ae o ado - Ea a E t , a pm . . ; 1 r . . É y Pd avo a] ' te 1 x LUA : “ e) a en MNA Mm DD RP) ODOR PALO DOL 00010 fo do DD O DD UU a a cao ca o a E danada Gt SÃO ÃO A a e a A é é | éété À dddddddd dd dd dd 2. s tóddddddo tedddddddd ds “44 A FUNÇÃO main() Sa - K Í o ERC oe eg era ame e AA Era F Todo programa em O e um conjunto de funções, inclusive O programa principal que tom um identificador reservado denominado main(). A função main() é especial por ser a primeira a ser chamad programa é executado. Significa o inicio de seu programa. E eistôncia da mainf + cm algum nonto do programa, para que O a 14 2 - ) “A a NE J a, & me E o, + , ' : Er ; nar f Ra u CONSIGA determinal oe iniciar à Execução. is AR : nm RE prod vaia a forma básica de um programa em & é a seguinte: a quando seu obrigaiória a compilador & : — = | | | definições de pré-processamento “4 | | ! | declarações-de variáveis globais *poo | - as - .s : void maint 31 | | & declarações de variáveis jocais Ê = E E o : FR corpo do programa principal * | | É | | 1º definição de outras funções */ | Exemplo de um programa em É: /* Este programa mostra a mensagem Hello World!! na tela Y Hinclude void mail X orintf( Hello World! An): 1 J Coservações: ce a = 1) À declaração Finciude serve para referenciar arquivos de bibilotecas. No exemplo acima & Hiblioteca referenciada é a , a qual é a bislioteca padrão para as funções de VO (Entrada/Saída) e que contém a função printf) utilizada no corpo da função maint 23 Os blocos são delimitados por abre-cnave “€, para indicar O início do bloco e facha-chave “Y para indicar O fim do Dioco! mto qo tutk bn 2 ne ne a e ne tTrittdde 10,020 Dal ve Dal y Dad er ua 0,0 CERNAUL VUCas MO ETTTTEITTTTETeEe Em PPA é TULL pe mca reta TT gal ars Ec Es Pal Moe - T. = ' E E 0 = - , - cm “= “ dão a rg NS reg TE gata apemioancia ain Ego 55d rd aee aa dE lo mi via ph arm a TRE Eh Dae; Tita =: EE e he ai ces ras l dem CG é sensivel ao case, ou seja, a linguagem diferencia letras. - PR E eh) e ds CEM SP gerais na É Ei = Pobre rap e ed . tão Tr ia TT ae a Eu To rea Tm [a e E maisecutas de letras minúsculas. Assim, todo comando de C deve ser escrito em letras minúsculas, prindff | não é um comando de C e sim uma função de saída de dados que se encontra na biblioteca nacrão stdio.n; 4 E IF a E ais 1.46 is est mt e ) fu, - comeniários na linguagem L aevem estar entre QNTIGI TA Portanto, deve- função maint 5 pn" Í Toda função em € pode receber parâmetros e retornar valores. Pa lor retornado pela função. A s nassados na linha de comando ou reto Eh ) ! ss declarar qual o tipo do va ET 1 mr também poderá receber valores £ y=iores.. entretanto, no caso da função main( ), em geral ela não retorna valores Para dizer ag compilador aus uma função não retornará valores, , véiliza-se a deciaraçãa void A e Lim segundo programa em o. . ppt dd e dd de = a — * Este programa solicita um nome via teclado e imprime O NO. * de caracteres digitados. etetode dede Sd A Ad A ted de e Tr = ARGEL AESA REA der dederde de deter he / Hinclude trefne MAX 15 Define uma constante cnamada MAX igual a 15% cnar cadeialMAXI, “Vetor global de MAX posições de caracteres”! void main(void) À inti=iô, puts(“Digite um nome com RO máximo 14 caracteres ); gets(cadeia); while (cadeiafi] |= 109) t++; | orinti((Esta cadeia tem %d caracteresm”, 1); ; 1.7 IDENTIFICADORES cadores nomeiam as variáveis, as constantes, tipos das variaveis, do fluxo de um programa escrito em €. A é muito parecida com a regra de outras -— Os identifl funções e atê mesmo O controle construção de um identificador em o linguagens, pri cipalmente com O Pascal: a) o conjunto de caracteres que podem compor um maiúsculas e minúsculas, sublinha( je dígitos; inha (3 ») todo identificador começa com letra ou sub Ea E" E al El - E | Ce SE E at Ae aratieres mai soHos Sao drerentes c) como já foi Gho anteriormente, em & 08 € dos minúsculos. Portanto, o identiic dor Xi é di Tsem valor elos modificadores r dificados ) e a E m exceção de tpo tipos primitivos CO so primitivo um tipo primitivo, + , e itembem à & sala, ão de UM mogificador junto tes de memória isfinido no padrão O ANS! il ja variável utilizada pela V e temest descrito na tabela a segui”: ' e [2.147 .463.647 “o mesmo que long !F 1 é rd £ f : 1 ; me Ê f UN 7 É o É ong ni — io a 4 294.967.299 —— i 41 sudaia Dal tuas www é déd Pi 'Y Do é já. é dd: é Da 6 fr UR ELUBLLESLELLSLLLLLLELCSILLALNAL! “variáveis deste tipo. Ele é usado para passagem de parâmetros nulos para funções, para indicar que as funções não retornam valores e na criação de ponteiros genericos, Embora seja usado para representar caracieres, O tipo char tambem armazena valores. isso porque em € um caracter (como uma letra por exemplo), & = 44 E ma ds A ÃO 2 : da s* cenrasconiado sor seu vnior ASS "Declara ch como tipo cnar/ at at ch='a” JaAtribulo ceracicr a para a variável cn“) ch=ch+1: * OK! pois o valor decimal de cn é 65 */ printf(AnCaracter representado por ch=%c, cujo valor ASCH é=%dº ch;ch):- Lança mt A execução do programa acima mostrará na tela a seguinte mensagem: Caracter representado por ch=b, cujo valor ASCIi é=5S Os tipos float e double são reservados para tratar números que exigem precisão numérica utilizando a notação de ponto flutuante. Neste tipo ce notação, os valores são armazenados na memória em duas partes, denominadas mantissa e expoente Por exemplo, o número 42345 em notação de ponie flutuante é representado por .42345e5, onde o número que segue o (8) € 9 a F Ed 4 É F expoente, e 12345 € o valor GO número. Seu armazenamento na memória & felt “da seguinte maneira: Mandtissa £ Na linguagem €, não existe o tipo lógico (como por exemplo, no PASCAL axiste o tipo Boolean), mas existe valcres lógicos. Fol convencionado que O é faiso e qualguer valor não nulo é verdadeiro. cxemopio: main() 1 int ilag; dddddd F f tu DD CCLLLLLLLLLELLL Tia Ma mim PE E Ee pus D.6,0 4 SD dd aà té ET 2227: . tELas D. 6 Css Dl ferra » 4 c=d=a; orinti(An a=%d In D=%d in c=%d in d=%d”, a b,c,d), Fim funcao main'/ EO 4 ENE Cos "ASTES fa Lira ÃE OM DRE DO: and trA Ss =; AUIção A Lica nE - CU ação A A Ee lAlem li ps furiplicação Ea DT! / E À Sal E 4 E aim, Em ed Cn o Pa aa a a, | md pad jo CADCUHO - TEIONNA O festo da divisao iniciia O = = 2" G = cha orinti(àn a=%d in b=%d in c=%Ad in d=%d a b,c.d); + Fim main“ | 143. Upera dores de incremento (++) e decremento €- - quando aplicados a uma variável, incrementam (++) em 1 em 1 O v valor da variável. yo Equivalen tea fazer. azar io F/ b-. Equivalente a à fazer printf(n Valor de a=od tn Valor de b=%%d”, a,D); :* Fim main*/ Estes operadores trabalnam em dois modos. o pes-fixado, quando o oberador vem depois da variável e o pre- fixado, quando qo operador vem antes da variável. A difarença entre os dois modos & que: e no pós-fixado o valor da variável é usada e depois seu valor é incrementade (ou decremeniaco); s No pe deco o valor da variável é incrementado (ou Cecrementado) antes ce main( 3 4 Cd em mf. int x, y=U] .— y Lo do dia A £ E EPs pr a Po Fa x=1 e y=0 */ omni Pos-decremento: valor de x=4d, valor de v="nd" my, —— T+ ER = - -Y f* Após a execução as variáveis terão os valores: x=0 e y=0 */ printfên Pre-decremento: valor de x=%%d, valor de y-od?, x,y): $.44. Operadores Reiacionais Como já foi dito anteriormente, na linguagem € não existe tipo lógico, mas existem valores lógicos. Para as expressões que resultam em um valor lógico, ficou convencionado que quando o valor retornado peia expressão for Gizero) significa FALSO e quando for d(um) significa VERDADEIRO. Os sinais usados para expressar as relações são: > maior < menor >= maior ou igual <= menor ou igual == igualdade i=, diferente | Exemplo: main() f int verdadeiro, falso; verdadeiro = (15 < 20): | “falso=(15==205 o primttn VERDADEIRO=%d, FALSO-%d”, verdadeiro, falso): | /*Fim imain*/ 1.4.5, Operadores Lógicos Os operadores lógicos são : && vara lógica and H nara lógica Or para lógica not [e PLA 14 ii s44 ( sssd 5 fr ddddds www desds ds A) dd. dd d Dina a ne el od dd DE Ra ' ca LE! e agr siigt quo RE io fo Rato 4 Seo + sddIdddA age AA Ch E derme aah mt mm ii E FEAR = Ti | “primo E * em decimal Yod da É > Car). printCe em hexadecimal vox An . car); printit “ Nro. de bytes que ocupa na memoria=od W”, sizeoftcar)); Fim main* 12 Camo norcoba-se foi usado um caracter especial * " que significa um açós & li mpressão. Existero outros come: ia apito Es retrocede uma posição n o caractere + RE nova linha & OUios E coloca um CAS v o caracters aspas (|) 7 salta página de formulario 1.6.2. scanil) | Tem a finalidade de ler um conjunto de caracteres contidos no buffer do teclado. Para a leitura dos valores deve-se formatar cada valor de entrada. A sintaxe é similar à sintaxe da função printf( ). scanil “expressão de controie”, lista de argumentos) - Exemolo: ginclude main() É char nomef[25!: int idads; à mn printi(tn Entre com seu Nome), flusnístein): RE) scami(%s",nome); Dn orintf('Entre com sua idade”) o filushístein); scani(%d" &idade): printf in Olá %s, voce tem %d anos!”, nome, idade), ssar O endereço de memória da variávei que 1) O símbolo & é utilizado para exprs ando o valor entrado é uma string (vetor de - vai armazenar 0 valor entrado. ou ars Em a ipi ra a caracteres) não é necessário colocar O &, neto endereço de seu primeiro caractere; 24 Como a leitura é feita no buffer do teclado & necessário limpá-lo antes de cictuar uma entrada, para isto utiliza-se a função: El ” Mo % Sos - o = a. + Ros a . - - a Pr PS ae qamdaça Ss * dog td a rem SS Ta a, sn PES 9 Pasto SST A, EE rata 2 2 317 joadladiids S sas bdgã tr EG] Sr 204 dg afidão ts dês PP Les 5 Ly 3; À função scanfl ) não consegue fazer a laitura de espaço em branco entre as paldvias Dor exemplo, considere a execução Co programa anterior como a seguir: =” Dntro com cel mo Tangara kãacd TA =nire com seu nome. inhaina siacãonaia Entre com sua isade: 25 Ota Janaina, voce tem 25 anos! Macdcnald) foi ignorado pela função scanif ) entrada de cadeia de caracieres. | Verifique que o sobrenoms ( Dortanto, ela não é recomendada par b . 0.4 & 1.6.3. puis() Tem a finalidade de enviar uma string para à saída padrão. Após imprimir a string, puts() já posiciona o cursor fa nróxima linha. Za 200 0.4 Exemplo: & include void main () 1 char nomel7i='Antonio” puts(“Esta é uma string Ea: HESSS dd. E Peri Exemplo: *% include void main() | char nome [30 cego e ri puts (“n Digite o seu nome. a Flush(sidin); | gets (nome); da q *Y Pen ) a é | PR, rita + AB :| ““4.) Elabore um programa que de xpory.. o A Tao ca qe . R ema - = ria o = no mao there gr Ag ÇÃO ar Dr MAE dia CEA e e nos A e f feat gRA ERC à es pai ge REP RE R — aa . e . RARA Rr . e “include main) 1 char ch; printi(On Digite algum caractere. 5, fiush(stdin); Pa Red go - O Td So, prini(tn A tecla digitada foi + fFim main” l (3 a ) Y 1.6.8. getei( ; ão, porém não ecoa o caracter na 1 = 4 . a poe E os À q x da : Pe da ; Bed é um caractere da endala pacrão, tela. Esta função é recomendaca quando deve-se esconder as teclas digitadas (no “caso de senhas) Ou deve-se tratar & tecla antes de ecoar na tela (no caso de ciores de fexio, DOF exemplo). 0BS. Existem muitas outras funções de entrada e saída de dados, . pertencentes a diversas bibliotecas. Para usá-las basta consultar O Help do Turbo C da Borland quanto aos formatos e estruturas. 4.7. Exercícios teia 2 valores int (x e y) e calcule o resto dadlivisão a 2.) Elabore um programa que leia 2 valores int (x e y) e calcule a media entre entre eles. 2.) Considere o programa abaixo. Antes de testé-lo, diga qual a saída de dados. “Teste-o e compare com sua resposia. “include main() | “tn=5: o char ch='À; orintf(An Hd, %d, Hd, %d?, n, nte, MH, mo printf(Am %c, Ye, HC", CA, ch++ ++ch) + Fim main” entrada de uma idade em anos e imprima a ÁS Faça um programa para solicitar a segundos. idade em dias, em horas, em minutos e em a voa | : f Ta DS SE aa siri ts Vga ST EEE a ES je RREO RE REo 2 E AS Põe 70 4E RATE dO EA A AS Es ST]. . Pa - : - - - . - ; dal qASe e Ss . . port combição sede rs EDER PS ZE: e > = pra cu prot Co) id sa a 8 ia 3º vet ER dem eo sm dans am o SUB pe pag SM Am dare) À CP oírois de muÃO Use Flog: alia ! | no 4 (O) O o 3 as O cD o to — C. pi 28 0 E mst, O (o, nodos ? 09 “+ UM void main O é intaD.c max, 17 2? | RE = MT, ) E dO, GUsdA Ss = a! 4 E) . 154. bodb o . E s Es ed So E ns sao deve ser uma constante do tipo inteiro OU caracter. Não €. “ea cada”caso d 3) pode haver uma OU mais instruções seguindo cada case. Estas instruções não necessitam estar entre chaves; | ao valor da expressão ou variável, a execução asos chaixo também serão execuiedos. comando break ro fina! nrouk cousa uma saida imediata do Switch; an , h as" e =. au a . O a bol ” 4 jiler OSSO SOLISTA utiliza-se O DO. (d by 0) O de O (3 o 0% [+] qa vm atisfeito e existir um case defauil, a axecução quit é opcional. ON (4 D = main() | o float numf, num2; char 0D; unile(!) ( “sempre verdadeiro*/ printf(Digite um numero, operador, numero), scant(%f %c Yf, &num?, &0p, hnum2); switcn(op) 1 case +: print = %f, num1 + num2), break, case -: o | | printf = %f, numi - num2). break, case *: case x” printf = %?, num? * num2), breax, case f: case W: printt = %f, num ! num2), Dreax; default o o orinti(Anin)); 2.8. Comando while ' 1 while ( expressão ) Sintaxe. comando; 19 uh LL d É RE = 2” SS4455 PRE FE Pa? Ea) À "E ; isa sia na bt " = f UNO Ao w BO GR ques Amit ç E E ER toa E sad. = a - sa imiat do-será-executado se a expressão for-di to à: ão for diferente de zero. pla, E * include void main () à char tecla; int; printf (nm Digite um caractere. para interromper. ); while ( (tecla = geteh( )) != Qd printf Nm Voce digitou: %c *, tecla), printf (Anin Digite um caractere. para interromper”; “d=o; while (1< 40) Cc printf (Nm %oi “, i) [++ = , v Fim main? 2.6. Comando de ... while — do À se Comeicio mito PE =" E Sintaxe; x ans while (expressão), — Q comando do ... white executa os comandos do bloco de comandos e “ logo em seguida, volta a executar o comando se a expressão tor diferente de “zero. a diferença entre o comando while e o do... while é que este executa O laço pelo menos uma vez. o | Exemplo: o io o = A | & include void main () 1 “char tecla; “printf (Mn Digite um caractere. para interromper: ), do ( o printf (Qn Digite um caractere. para interromper"); tecla = geteh(),. | printf “mn Voce digitou: %c “ tecla): as 20