39
Introdução à Programação C Introdução à Ciência da Computação I Prof. Jó Ueyama

Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

  • Upload
    lykiet

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

IntroduçãoàProgramaçãoC

IntroduçãoàCiênciadaComputaçãoI

Prof.JóUeyama

Page 2: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

LinguagemC

•  OrigemdeCestáassociadaaosistemaUnix•  Histórico:

–  1970:KenThompsondesenvolveB,baseadaemBCPL,paraoprimeiroUnixnoDECPDP-7

–  1972:DennisRitchieprojetaalinguagemC,baseadanalinguagemB.

–  1988:oAmericanNa+onalStandardIns+tute(ANSI)defineopadrãoANSIC

•  Éconsideradaumalinguagemdenívelmédio•  É“casesensi`ve”,ouseja,interpretacomodiferentes

letrasmaiúsculasdeminúsculas

2

Page 3: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

VARIÁVEISETIPOSDEDADOSProgramaçãoemC

Page 4: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Variáveis

•  Comoarmazenarosdadosdeentrada,fornecidospelousuário?

•  Oquefazercomosresultadosdasoperações?•  Variáveissãoelementosqueestãoassociadosaposiçõesdememória,cujoobje`voéoarmazenamentoinformações.

•  ...portemposuficienteaoseuprocessamento

4

Page 5: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Iden`ficadores

•  Nomequefazemreferênciaaelementostaiscomoasvariáveis

•  Regrasparaadefiniçãodeiden`ficadores:–  Naformaçãodoiden`ficadorsópodemseru`lizados:dígitos,letras(tantomaiúsculasquantominúsculas)eocaracteredesublinha(_)

–  Oiden`ficadordevecomeçarsemprecomumaletraoucaracteredesublinha

•  Apenasos31primeiroscaracteressãoconsiderados

Page 6: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Iden`ficadores

•  EmC,hádiferençaentremaiúsculoeminúsculo– Exemplo:– Nome≠nome≠NOME

•  NãopodeserempregarqualquerumadaspalavrasreservadasàlinguagemCcomoiden`ficadores

Page 7: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Palavras-chavedeC(ANSI)

autobreakcasecharconstcon`nuedefault

dodoubleelseenumexternfloatforgotoif

intlongregisterreturnshortsignedsizeof

sta`cstructswitchtypeofunionunsignedvoid

vola`lewhile

7

Page 8: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Variáveis

•  Exemplosdenomesdevariáveis: Corretos Incorretos Contador 1contador Teste23 oi!gente Alto_Paraiso Alto..Paraíso __sizeint _size-int

8

Page 9: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

9

TiposdeDados

•  O+podeumavariáveldefineosvaloresqueelapodeassumireasoperaçõesquepodemserrealizadascomela

•  Descreveanaturezadainformação•  Ex:

– variáveis`pointrecebemapenasvaloresinteiros– variáveis`pofloatarmazenamapenasvaloresreais

Page 10: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

10

TiposdedadosbásicosemC•  char:umbytequearmazenaocódigodeumcaracteredoconjuntodecaractereslocal

•  int:uminteirocujotamanhodependedoprocessador,`picamente16ou32bits

•  float:umnúmerorealcomprecisãosimples

•  double:umnúmerorealcomprecisãodupla

Page 11: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

11

ModificadoresdeTipos•  Osmodificadoresalteramalgumascaracterís`casdos`posbásicosparaadequá-losanecessidadesespecíficas

•  Modificadores:–  signed:indicanúmerocomsinal(inteirosecaracteres)–  unsigned:númeroapenasposi`vo(inteirosecaracteres)–  long:aumentaabrangência(inteirosereais)–  short:reduzaabrangência(inteiros)

Page 12: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Abrangênciadedados:16bits

Tipo Tamanho Abrangência (bytes)

char 1 -128 a 127

unsigned char 1 0 a 255

int 2 -32768 a 32767

unsigned int 2 0 a 65535

short int 2 -32768 a 32767

long int 4 -2.147.483.648 a 2.147.483.647

unsigned long int 4 0 a 4.294.967.295

float 4 ± 3,4·10 -38 a ± 3,4·10 38

double 8 ± 1,7·10 -308 a ± 1,7·10 308

long double 10 ± 3,4·10 -4932 a ± 3,4·10 4932

12

Page 13: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Abrangênciadedados:32bits

Tipo Tamanho Abrangência (bytes)

char 1 -128 a 127

unsigned char 1 0 a 255

int 4 -2.147.483.648 a 2.147.483.647

unsigned int 4 0 a 4.294.967.295

short int 2 -32768 a 32767

long int 4 -2.147.483.648 a 2.147.483.647

unsigned long int 4 0 a 4.294.967.295

float 4 ± 3,4·10 -38 a ± 3,4·10 38

double 8 ± 1,7·10 -308 a ± 1,7·10 308

long double 10 ± 3,4·10 -4932 a ± 3,4·10 4932

13

Page 14: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

14

Declaraçãodevariáveis

•  Adeclaraçãodeumavariávelsegueomodelo:TIPO_VARIÁVELlista_de_variaveis;

•  Ex:intx,y,z;floatf;unsignedintu;longdoubledf;charc=‘A’; /*variaveldefinidaeiniciada*/chars[]=“vetordecaracteres”;

Page 15: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

OPERADORESProgramaçãoemC

Page 16: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Operadores

•  Correspondemasímbolossimplesoucombinadosquerepresentamoperaçõesdenatureza:aritmé`ca,relacionaloulógica.

•  Podemserclassificadostambémquantoaquan`dadedeelementossobosquaisincidem,i.e.,unários,bináriosouternáriosa=b++;a=b-c;var=a>b?c:d;

Page 17: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Op.Aritmé`cos

•  Representamasoperaçõesaritmé`casbásicas

Operação Operador

Adição +Subtração -

Mul`plicação *Divisão /Resto %

Incremento ++Decremento --

Page 18: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Op.Relacionais

•  Estabelecemrelações/comparações

Operação Operador

Igualdade ==Diferença !=Maior >

Maiorouigual >=Menor <

Menorouigual <=

Page 19: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Op.Lógicos

•  Representamasoperaçõesbásicadadanalógicamatemá`ca

Operação Operador

Negação !Conjunção &&Disjunção ||

Page 20: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Op.deAtribuição(devariável)

•  Formageral:

variavel=expressãoouconstante

•  Armazenaoconteúdodadoadireitanoelementodadoàesquerda

•  Múl`plasatribuições–  Cpermiteaatribuiçãodemaisdeumavariávelemummesmocomando:

x=y=z=0;

20

Page 21: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Expressões•  Expressõessãocompostaspor:

–  Operandos:a,b,x,Meu_dado,2,...–  Operadores:+,-,%,...–  Pontuação:()–  Funções:sin(),abs(),sqrt(),...

•  Ex:X14x+y(x+y)*z+w–v(-b+sqrt(delta))/2*a

21

Page 22: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Expressões

•  Expressõesretornamumvalor:x=5+4/*retorna9*/

•  estaexpressãoatribui9axeretorna9comoresultadodaexpressão

((x=5+4)==9)/*retornaverdade=1*/•  naexpressãoacima,alémdeatribuir9ax,ovalorretornadoéu`lizadoemumacomparação

22

Page 23: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Expressões

•  aordememqueumaexpressãoéavaliadadependedaprioridadedosoperadoresedapontuação

•  expressõespodemapareceremdiversospontosdeumprograma–  comandos /*x=y;*/–  parâmetrosdefunções /*sqrt(x+y);*/–  condiçõesdeteste /*if(x==y)*/

23

Page 24: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

ConversãodeTipos

•  Quandoumavariáveldeum`poéatribuídaaumadeoutro`po,ocompiladorautoma`camenteconverteo`podavariáveladireitade“=”parao`podavariávelaesquerdade“=”

•  Ex:inti;charch;floatf;ch=i; /*chrecebe8bitsmenossignifica`vosdex*/i=f; /*irecebeparteinteiradef*/f=ch; /*frecebevalor8bitsconver`doparareal*/f=i; /*idemparainteiroi*/

24

Page 25: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

ESTRUTURABÁSICAProgramaçãoemC

Page 26: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

ProgramaçãoemC

•  Todoprograma,escritonalinguagemC,deveapresentarumafunçãoprincipalchamadamain,quedefinetodoocorpodoprograma

•  Exemplo:

int main() { /* corpo do programa */ }

Page 27: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

ComandosdeSaída

•  Empregadosparaqueosistemaforneça,emumdisposi`vodesaída,asmensagenseresultadosdeseuprocessamento.

•  Odisposi`vopadrãodesaídaéomonitor.

•  AlinguagemCoferecealgunscomandosdesaída,masoqueapresentapropósitomaisgeraléoprin�.

Page 28: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

ComandoPRINTF()

•  Sintaxe:prin�(“Mensagem”,listadevariáveis);

•  Funcionamento:–  Ocomandoescreveamensagemdadanodisposi`vopadrãodesaída,realizandoasubs`tuiçãodasmáscarasdeformataçãoencontradaspelasrespec`vasvariáveisdadasnalistasubseqüenteamensagem.

–  Odisposi`vopadrãoédadopelavariávelstdout

Page 29: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

29

Máscarasdeformatação•  Símbolodeporcentoseguidodeumaletra:

•  %c Caractere•  %d Inteiroscomsinal•  %u Inteirossemsinal•  %f Númerosreais•  %e Notaçãocien�fica•  %x Númerosemhexadecimal•  %s Cadeiadecaracteres(strings)

Page 30: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

30

Exemplo

•  Saídaformatadaprin�().Ex:– Otrechoabaixo:inti=10;floatr=3.1514;chars[]=“Blablabla”;/*cadeiadecaracteres*/prin�(“Inteiro:%d,Real:%f,String:%s”,i,r,s);

–  Produz:Inteiro:10,Real:3.151400,String:Blablabla

Page 31: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

31

ConstantesdoTipoChar•  Barrainver`daseguidodeumcaractere:

•  \a bip•  \b backspace•  \n novalinha•  \r return•  \t tabulaçãohorizontal•  \’ apóstrofe•  \” aspas•  \\ barrainver`da•  %%percent

Page 32: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Comandosdeentrada

•  U`lizadoparareceberdadosfornecidospelousuário(dadosdeentrada)earmazená-losnamemóriaprincipal(emvariáveis)

•  Osdadossãofornecidosaosistemapormeiodeumdisposi`vodeentrada,cujaconfiguraçãodadacomopadrãoéoteclado.

•  AlinguagemCoferecevárioscomandosdeentrada,cadaqualmaisindicadoparaumasituaçãoempar`cular.

•  Oprincipalcomandodeentradaéoscanf

Page 33: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

ComandoSCANF()•  Sintaxe:

scanf(“formato”,&variável);

•  Funcionamento:–  Ocomandocoletaasinformaçõesdadasnodisposi`vopadrãodeentrada,interpretandoasinformaçõessegundoamáscaradeformataçãoearmazenandona(s)respec`va(s)variável(is)dada(s)subseqüentementeaoformato.

–  Odisposi`vopadrãoédadopelavariávelstdin

Page 34: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

34

Exemplo

•  Entradaformatadascanf().–  Ex:inti;floatr;charstr[10];scanf(“%d”,&i);scanf(“%f”,&r);scanf(“%s”,&str);

–  Ouainda:intdia,mes,ano;scanf(“%d/%d/%d”,&dia,&mes,&ano);

Page 35: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

UMEXEMPLOCOMPLETOProgramaçãoemC

Page 36: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

ProgramaC#include <stdio.h> #include <math.h> int main(){ int num1, num2, media; printf("Digite 2 numeros: ");

scanf("%d %d",&num1, &num2); media=(num1+num2)/2; printf("\nMedia: %d", media);

getch(); return 0; }

Page 37: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Exercícios

37

1)Ler o tamanho do lado de um quadrado e imprimir sua área.

2) Ler um número inteiro e imprimir a soma do sucessor de seu triplo com o antecessor de seu dobro.

Page 38: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Exercícios

38

3) Elaborar um algoritmo que calcula e exibe as médias de prova (MP), de 2 trabalhos (MT) e final (MF). MP: (2P1 + 3P2 + 3P3)/8 MT = (T1+T2)/2

MFinal = (7MP + 3MT)/10 4) Faça um programa que determine o perímetro de um

polígono regular de N lados, circunscrito a uma circunferência de raio R. Sabe-se que o perímetro é dado por:

#include <math.h> Função seno: #include <stdio.h> a = sin(b);

⎟⎠

⎞⎜⎝

⎛∗=N

senNRper π2

Page 39: Introdução à Programação C - wiki.icmc.usp.brwiki.icmc.usp.br/images/7/76/Aula_03_-_Linguagem_C.pdf · Linguagem C • Origem de C está associada ao sistema Unix • Histórico:

Exercícios

39

5) Fazer um programa que leia 2 valores inteiros para duas variáveis A e B, escreva os conteúdos das variáveis na tela, e em seguida troque os conteúdos das duas variáveis, exibindo novamente os seus conteúdos na tela.

6) Faça um programa para ler um número inteiro, positivo de três dígitos, e gerar outro número formado pelos dígitos invertidos do número lido.