Introdução à Programação Cwiki.icmc.usp.br/images/1/1f/Aula03_linguagemC_Jó2016.pdf ·...

Post on 20-Jan-2019

219 views 0 download

Transcript of Introdução à Programação Cwiki.icmc.usp.br/images/1/1f/Aula03_linguagemC_Jó2016.pdf ·...

IntroduçãoàProgramaçãoC

IntroduçãoàComputaçãoparaEngenharia

AmbientalProf.JóUeyama

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

VARIÁVEISETIPOSDEDADOSProgramaçãoemC

Variáveis

•  Comoarmazenarosdadosdeentrada,fornecidospelousuário?

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

•  ...portemposuficienteaoseuprocessamento

4

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

Iden_ficadores

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

•  NãopodeseempregarqualquerumadaspalavrasreservadasàlinguagemCcomoiden_ficadores

Palavras-chavedeC(ANSI)

autobreakcasecharconstcon_nuedefault

dodoubleelseenumexternfloatforgotoif

intlongregisterreturnshortsignedsizeof

sta_cstructswitchtypeofunionunsignedvoid

vola_lewhile

7

Variáveis

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

8

9

TiposdeDados

•  O+podeumavariáveldefineosvaloresqueelapodeassumireasoperaçõesquepodemserrealizadascomela

•  Descreveanaturezadainformação•  Ex:

– variáveis_pointrecebemapenasvaloresinteiros– variáveis_pofloatarmazenamapenasvaloresreais

10

TiposdedadosbásicosemC•  char:umbytequearmazenaocódigodeumcaracteredoconjuntodecaractereslocal

•  int:uminteirocujotamanhodependedoprocessador,_picamente16ou32bits

•  float:umnúmerorealcomprecisãosimples

•  double:umnúmerorealcomprecisãodupla

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)

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

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

14

Declaraçãodevariáveis

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

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

OPERADORESProgramaçãoemC

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;

Op.Aritmé_cos

•  Representamasoperaçõesaritmé_casbásicas

Operação Operador

Adição +Subtração -

Mul_plicação *Divisão /Resto %

Incremento ++Decremento --

Op.Relacionais

•  Estabelecemrelações/comparações

Operação Operador

Igualdade ==Diferença !=Maior >

Maiorouigual >=Menor <

Menorouigual <=

Op.Lógicos

•  Representamasoperaçõesbásicadadanalógicamatemá_ca

Operação Operador

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

Op.deAtribuição(devariável)

•  Formageral:

variavel=expressãoouconstante

•  Armazenaoconteúdodadoadireitanoelementodadoàesquerda

•  Múl_plasatribuições–  Cpermiteaatribuiçãodemaisdeumavariávelemummesmocomando:

x=y=z=0;

20

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

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

Expressões

•  aordememqueumaexpressãoéavaliadadependedaprioridadedosoperadoresedapontuação

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

23

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

ESTRUTURABÁSICAProgramaçãoemC

ProgramaçãoemC

•  Todoprograma,escritonalinguagemC,deveapresentarumafunçãoprincipalchamadamain,quedefinetodoocorpodoprograma

•  Exemplo:

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

ComandosdeSaída

•  Empregadosparaqueosistemaforneça,emumdisposi_vodesaída,asmensagenseresultadosdeseuprocessamento.

•  Odisposi_vopadrãodesaídaéomonitor.

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

ComandoPRINTF()

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

•  Funcionamento:–  Ocomandoescreveamensagemdadanodisposi_vopadrãodesaída,realizandoasubs_tuiçãodasmáscarasdeformataçãoencontradaspelasrespec_vasvariáveisdadasnalistasubseqüenteamensagem.

–  Odisposi_vopadrãoédadopelavariávelstdout

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)

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

31

ConstantesdoTipoChar•  Barrainver_daseguidodeumcaractere:

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

Comandosdeentrada

•  U_lizadoparareceberdadosfornecidospelousuário(dadosdeentrada)earmazená-losnamemóriaprincipal(emvariáveis)

•  Osdadossãofornecidosaosistemapormeiodeumdisposi_vodeentrada,cujaconfiguraçãodadacomopadrãoéoteclado.

•  AlinguagemCoferecevárioscomandosdeentrada,cadaqualmaisindicadoparaumasituaçãoempar_cular.

•  Oprincipalcomandodeentradaéoscanf

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

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);

UMEXEMPLOCOMPLETOProgramaçãoemC

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; }

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.

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

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.