Você está na página 1de 41

Introduo Linguagem C lvaro Degas degas@uesc.br Ateno! Este material uma adaptao das Transparncias da professora !

!nia "ogorn# $ original% bem como farto material est& dispon'vel no endereo (ttp)**+++.inf.ufrgs.br*,vbogorn#*
1

Introduo Linguagem C
Vania Bogorny

Adaptado de slides das Profas. Patrcia Ja ues! "#nica Py e $eise %accol

& processo de Compilao

- .$/TAD$0 1assembler2
3 Tradutor para linguagens de 4a gerao.

- 5$.678AD$0)
3 Tradu9 todo o programa de uma ve9.

- 7/TE060ETAD$0)
3 Tradu9 o programa instruo por instruo.
3

'ist(rico da Linguagem C
- 5riada por Denis 0itc(ie% na dcada de :;<=% para uso em um computador DE5 6D6>:: em ?ni@ - 5AA uma e@tenso da linguagem 5 - $ sistema ?ni@ escrito em 5 e 5AA

)Cara* de um programa C
diretivas para o pr>processador declarao de vari&veis globais main 12 B declarao de vari&veis locais da funo main comandos da funo main C **$utras funDes podem ser declaradas tambm E func:1...2 B ... C E func41...2 B ... C ...

$ireti+as para o processador , Bi-liotecas


- Diretiva #include permite incluir uma biblioteca - "ibliotecas contm funDes pr>definidas% utili9adas nos programas 3 6ara a gente aproveitar! - E@emplos
#include <stdio.h> FunDes de entrada e sa'da #include <stdlib.h> FunDes padro #include <math.h> FunDes matem&ticas

#include <string.h> FunDes de te@to

& am-iente $e+,C..


- $ Dev>5AA um ambiente de desenvolvimento de programas em 5 e 5AA 1editor% compilador% bibliotecas...2 - 6ode ser bai@ado de (ttp)**+++.bloods(ed.net*devcpp.(tml - 6ode ser bai@ado de inGmeros outros endereos 3 pesHuise no Ioogle.

/o 8inu@ (& um e@celente compilador 5 Hue instalado por padro) o gcc


7

/sando o $e+,C..
- 7nicie o Dev>5AA pelo 'cone ou pelo menu - 5rie um novo arHuivo% com o comando File, New Source File - 5opiar o programa da p&gina seguinte 1faa isso em sua casa. /o necess&ria a superviso de nen(um adulto2

/sando o $e+,C..
#include <stdio.h> #include <stdlib.h> main() { printf ("Alo mundo!"); system(" A!"#"); $

/sando o $e+,C..
- Jalve o programa com o nome e0emplo.cpp 3 Preste ateno em ue pasta +oc1 o sal+ou2 - 5ompile o programa com o comando 30ecutar% Compilar 3 $u com a tecla Ctrl,45 - Je (ouver algum erro K uma ou mais mensagens no rodap da Lanela. 3 5orriLa o programa e repita. - E@ecute o programa com o comando 30ecutar% 30ecutar ou com a tecla Ctrl,467
10

$icas
- Termine todas as lin(as com 8 3 /em todas% mas a gente v aos poucos - Jalve compilar% compile antes de e@ecutar - Erro de compilaoM Duplo cliHue na mensagem K destaca o comando errado no programa - A lin(a anterior pode ser a dona do erro 3 Especialmente se faltar o 8 - ?se coment&rios% iniciados por ** ou limitados por *N e N*
11

$eclara9es
- Declaram as vari&veis e seus tipos - $s nomes das vari&veis devem conter apenas letras% d'gitos e o s'mbolo O - $s principais tipos so) int% float% dou-le e c:ar - E@emplos
int n; int %uantidade&'alores; float () y) soma*alores; char se(o; char nome+,-.;

5 diferencia letras maiGsculas de minGsculas!


int n% /P n diferente de /!

12

Para ue ser+em as +ari;+eis< - $ obLetivo processar dados.


3 6rocessamento A Dados

- $s dados so aloLados na memQria% Hue possui bil(Des de endereos - 6odemos acess&>los usando um s'mbolo% ao invs do endereo. - R necess&rio informar ao compilador o tipo de dado Hue ser& arma9enado 1na verdade uma poro de "its2
3 6ara Hue ele interprete corretamente
13

$eclarando +ari;+eis
Algoritmo /a 8inguagem 5...

0eal) n:% n4% nS% media

Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B double n:% n4% nS% mediaP

s#stem1W6A?JEW2P C 14

Processando dados - Xavendo vari&veis K Dados - X& Hue (aver processamento) o Hue podemos 1e Hueremos2 fa9er com os dadosM
3 5Qpias 3 .ovimentaDes 3 7nclusDes 3 E@clusDes 3 5omparaDes

- 5omoM amos comear com o ...


15

Comando de atri-uio
- A Y "P - Atribui o valor da direita 1"2 Z vari&vel da esHuerda 1A2. $ valor de A pode ser)
3 uma constante% 3 uma vari&vel ou 3 uma e@presso

- E@emplos
( / ,; --> determina que x recebe 4 y / ( 0 1; --> y recebe o prprio y somado com 2 (computadores so timos em aritmtica) y / y 0 ,; 'alor / 1.2; se(o / 343

16

3ntrada e %ada de $ados

17

3ntrada de $ados
- Funo scanf 3 precisa de =include >stdio.:?
scanf ("formatos") 5'ar6) 5'ar1)...) E@emplos) int i) 7; float (; char c; scanf("8d") 5i); scanf("8d 8f") 57) 5(); scanf("8c") 5c); scanf("8s") nome);

Tem que interpretar! %d inteiro %f float %lf double %c char % pala!ra "#trin$%

&' um moti!o para e u ar o ( ante da !ari'!ei ) e*ceto a do +ltimo comando, -or ora dei*emo como e t'! 18

3ntrada de $ados @30emplo AB


Algoritmo /a 8inguagem 5... Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B double n:% n4% nS% mediaP scanf 1W[lfW%\n:2P scanf 1W[lfW%\n42P scanf 1W[lfW%\nS2P
scanf 1W[lf [lf [lfW%\n:% \n4% \nS2P

0eal) n:% n4% nS% media ler n: ler n4 ler nS ler n:% n4% nS

s#stem1W6A?JEW2P C 19

3ntrada de $ados @30emplo AB


Algoritmo . que e te pro$rama a/ fa01 0eal) n:% n4% nS% media ler n: ler n4 ler nS ler n:% n4% nS /a 8inguagem 5... Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B double n:% n4% nS% mediaP scanf 1W[lfW%\n:2P scanf 1W[lfW%\n42P scanf 1W[lfW%\nS2P
scanf 1W[lf [lf [lfW%\n:% \n4% \nS2P

s#stem1W6A?JEW2P C 20

"ais opera9es de processamento - 6odemos usar a atribuio para criar% destruir% alterar% mover e copiar dados. - 6ara operaDes aritmticas precisamos usar operadores - 6or e@emplo% se eu Huiser atribuit a uma vari&vel soma6luviometrico a soma dos 'ndices pluviomtricos registrados nos ] trimestres do anoM
3 Joma6luviometrico Y indT:A indT4 A indTS A indT]P 3 E se fosse a mdiaM
21

&peradores matem;ticos
a Y bAcP K a recebe a soma de b e c a Y b>cP K 1adivin(e!2 a Y bNcP K a recebe a multiplicao de b e c a Y b*cP K a recebe a diviso de b e c 1se a for int vai truncar!2 - a Y b[cP K a recebe o resto da diviso de b e c 1b e c precisam ser int!2 - aAAP ou a>>P K a incrementado ou decrementado em : - aAYbP ou a>YbP K a incrementado ou decremantado de b 1a Y aAbP2
22

3ntrada . Processamento @e0emplo CB


2l$oritmo /a 8inguagem 5... Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B double n:% n4% nS% mediaP
scanf 1W[lf [lf [lfW%\n:% \n4% \nS2P

0eal) n:% n4% nS% media ler n:% n4% nS mediaY1n:An4AnS2*S

mediaY1n:An4AnS2*SP s#stem1W6A?JEW2P C 23

%ada de $ados
- Funo printf @stdio.:B
printf ("formatos") 'ar6) 'ar1)...) E@emplos) int i) 7; float (; char c; printf("8d") i); printf("8d) 8f") 7) (); printf("8c") c); printf("8s") nome);

-reci %d %f %lf %c %

a interpretar! inteiro float double char pala!ra "#trin$%

24

%ada de $ados @30emplo DB


Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B int i% LP float @P c(ar cP c(ar nome ^:=_P i Y :P L Y 4P @ Y SP printf1W[dW% i2P printf1W[d% [fW% L% @2P s#stem1W6A?JEW2P C 25

%ada de $ados @30emplo EB


Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B ** definicao de variaveis double n:% n4% nS% mediaP ** entrada de dados scanf 1W[lf [lf [lfW%\n:% \n4% \nS2P ** processamento mediaY1n:An4AnS2*SP ** saida de dados printf1W[fW% n:2P printf1W[fW% n42P printf1W[fW% nS2P printf1W[fW% media2P s#stem1W6A?JEW2P

26

%ada de $ados @30emplo FB


Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B ** definicao de variaveis int i% LP float @P c(ar cP c(ar nome^S=_P **entrada de dados scanf1W[dW% \i2P scanf1W[d [fW% \L% \@2P scanf1W[cW% \c2P scanf1W[sW% nome2P ** e@ibicao de dados printf1W[dW% i2P printf1W[d% [fW% L% @2P printf1W[cW% c2P printf1W[sW% nome2P s#stem1W6A?JEW2P C

27

30emplo G
Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B **declaracao de variaveis int nP int HuantidadeOvaloresP float @% #% soma aloresP c(ar se@oP c(ar nome^]=_P ** processamento soma alores Y:A:P **saida de dados printf1Wsoma aloresY[fW% soma alores2P s#stem1W6A?JEW2P C

28

30emplo H
Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B ** definicao de vairiaveis int nP int HuantidadeOvaloresP int @% #% soma aloresP c(ar se@oP c(ar nome^]=_P @ Y :P # Y 4P **atribuicao soma alores Y @ A #P ** mostra mensagem de te@to na tela printf1Walo mundoW2P ** mostra valor na tela printf1Wsoma aloresY[dW% soma alores2P s#stem1W6A?JEW2P C

29

30emplo H
Tinclude Ustdio.(V 2 a/da mo trou Tinclude Ustdlib.(V main12 um te*to "con tante% B 3untamente ao !alor de ** definicao de vairiaveis uma !ari'!el! int nP int HuantidadeOvaloresP int @% #% soma aloresP c(ar se@oP c(ar nome^]=_P @ Y :P # Y 4P Alo mundosoma'alores/, **atribuicao soma alores Y @ A #P ** mostra mensagem de te@to na tela printf1Walo mundoW2P ** mostra valor na tela printf1Wsoma aloresY[dW% soma alores2P s#stem1W6A?JEW2P C

30

3ntrada e %ada
E@emplo ;
Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B double n:% n4% nS% mediaP scanf 1W[lf [lf [lfW%\n:% \n4% \nS2P mediaY1n:An4AnS2*SP printf 1W[lfW%media2P

E@emplo :=
Tinclude Ustdio.(V Tinclude Ustdlib.(V main12 B double n:% n4% nS% mediaP printf1WDigite S notas) W2P scanf 1W[lf [lf [lfW%\n:% \n4% \nS2P mediaY1n:An4AnS2*SP printf 1W.edia) [.4lfW%media2P s#stem1W6A?JEW2P

s#stem1W6A?JEW2P C

31

30emplo 66
:2 Tendo como dados de entrada a altura e o se@o de uma pessoa% construa um programa Hue calcule seu peso ideal% utili9ando a seguinte fQrmula) peso ideal Y 1<4.<N(2 3 `a

Tinclude Ustdio.(V Tinclude Ustdlib.(V Tinclude Uconio.(V main12 B float altura% peso7dealP c(ar se@oP printf 1WbnDigite sua altura em metros) W2P scanf 1W[fW%\altura2P printf 1WbnDigite seu se@o 1F*.2) W2P se@oYgetc(e12P peso7dealY1<4.<Naltura2>`aP printf 1Wbn$ se@o digitado foi [c e o peso ideal desta pessoa e( [.4f HuilosbnW% se@o% peso7deal2P s#stem1W6A?JEW2P C

32

&peradores de Atri-uio 4' conhecemo 56 e 76, 8e3amo a fam/lia completa


$perador E@emplo 5oment&rio
/ 0/ ;/ :/ 9/ 8/ ( / y ( 0/ y ( ;/ y ( :/ y ( 9/ y ( 8/ y Atribui o valor de # a @ EHuivale a @ Y @ A # EHuivale a @ Y @ 3 # EHuivale a @ Y @ N # EHuivale a @ Y @ * # EHuivale a @ Y @ [ #

33

4un9es "atem;ticas
Funo ceil cos e(p fabs floor log log6po< sin s%rt tan E@emplo ceil(() cos(() e(p(() fabs(() floor(() log(() log6-(() po<(() y) sin(() s%rt(() tan(() 5oment&rio Arredonda o nGmero real para cimaP ceil1S.42 ] 5osseno de @ 1@ em radianos2 e elevado Z potencia @ alor absoluto de @ Arredonda o nGmero deal para bai@oP floor1S.42 S 8ogaritmo natural de @ 8ogaritmo decimal de @ 5alcula @ elevado Z potncia # Jeno de @ 0ai9 Huadrada de @ Tangente de @

#include <math h>


34

30emplo 6A
42 5onstrua um programa Hue tendo como entrada dois pontos HuaisHuer do plano 61@:%#:2 e c1@4%#42% imprima a dist!ncia entre eles. A fQrmula da dist!ncia )
Tinclude Ustdio.(V Tinclude Ustdlib.(V Tinclude Umat(.(V main12 B float @:% #:% @4% #4P float distanciaP printf 1WbnDigite o valor de @:) W2P scanf 1W[fW%\@:2P printf 1WbnDigite o valor de #:) W2P scanf 1W[fW%\#:2P printf 1WbnDigite o valor de @4) W2P scanf 1W[fW%\@42P printf 1WbnDigite o valor de #4) W2P scanf 1W[fW%\#42P distanciaYsHrt1po+11@4>@:2%42Apo+11#4>#:2%422P printf 1WbnA distancia entre os pontos 6: e 64 e( [.4fbnW% distancia2P s#stem1W6A?JEW2P C

35

30ercicio I
S2 5onstrua um programa Hue calcule a Huantidade de latas de tinta necess&rias e o custo para pintar tanHues cil'ndricos de combust'vel% onde so fornecidos a altura e o raio desse cilindro. Jabendo Hue) > a lata de tinta custa 0d4=%== > cada lata contm ` litros > cada litro de tinta pinta S metros Huadrados. Jabendo Hue) rea do cilindroYS.:]Nraio4 A 4NS.:]NraioNaltura e Hue raio e altura so dados de entrada.

36

Iesposta do 30erccio I
Tinclude Ustdio.(V Tinclude Ustdlib.(V Tinclude Umat(.(V main12 B float altura% raio% area5ilindro% Htdade8itros% Htdade8atas% custoP printf 1WbnDigite o valor da altura em metros) W2P scanf 1W[fW%\altura2P printf 1WbnDigite o valor do raio em metros) W2P scanf 1W[fW%\raio2P area5ilindroYS.:]NraioNraio A 4NS.:]NraioNalturaP printf 1WbnA area do cilindro e( [.4f metros HuadradosW% area5ilindro2P Htdade8itrosYarea5ilindro*SP printf 1WbnA Htidade de litros necessaria e( de [.4f W% Htdade8itros2P Htdade8atasYHtdade8itros*`P printf 1WbnA Htidade de latas necessaria e( de [.4f W% Htdade8atas2P custoYHtdade8atasN4=P printf 1Wbn$ valor total das tintas e( de 0d [.4f bnW% custo2P s#stem1W6A?JEW2P C

37

&peradores Ielacionais @para comparaoB


$perador
// !/ </ >/ < >

E@emplo
( // y ( !/ y ( </ y ( >/ y ( < y ( > y

5oment&rio
$ conteGdo de @ igual ao de # $ conteGdo de @ diferente do de #
$ conteGdo de @ menor ou igual ao de #

$ conteGdo de @ maior ou igual ao de # $ conteGdo de @ menor Hue o de # $ conteGdo de @ maior Hue o de #

As e0press9es relacionais em C retornam J - 6 se +erdadeiro e8 - 7 se falso.

38

&peradores L(gicos
- KK 1E lQgico2) retorna verdadeiro se ambos os operandos so verdadeiros e falso nos demais casos. E@emplo) if1 aV4 \\ bUS2. - LL 1$? lQgico2) retorna verdadeiro se um ou ambos os operandos so verdadeiros e falso se ambos so falsos. E@emplo) if1 aV: ee bU42. - 2 1/f$ lQgico2) usada com apenas um operando. 0etorna verdadeiro se o operando falso e vice>versa. E@emplo) if1 !var 2.

39

&peradores L(gicos
Ma-ela 3 e Ma-ela &/ ou Ma-ela NO& /o /o F F

eFF Fe F

ou F F ou

FeFF

F ou F F
40

30erccios

- 4aPer e0erccios
3 Pegar ar ui+o na p;gina

- 4aPer e0erccios e0tras


3 Pegar ar ui+o na p;gina

41

Você também pode gostar