Escolar Documentos
Profissional Documentos
Cultura Documentos
!nia "ogorn# $ original% bem como farto material est& dispon'vel no endereo (ttp)**+++.inf.ufrgs.br*,vbogorn#*
1
Introduo Linguagem C
Vania Bogorny
- .$/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 ...
/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+,-.;
12
- $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...
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
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
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
0eal) n:% n4% nS% media ler n: ler n4 ler nS ler n:% n4% nS
s#stem1W6A?JEW2P C 19
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
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 %
24
26
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
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 @
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
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 #
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
41