Programação de ComputadoresII · Programação de ComputadoresII 1. ProgramaçãoBásica Raphael...

Post on 23-Sep-2020

13 views 0 download

Transcript of Programação de ComputadoresII · Programação de ComputadoresII 1. ProgramaçãoBásica Raphael...

ProgramaçãodeComputadores II1.Programação Básica

RaphaelM.

2019.1

Raphael M. Aula 02.L inguagem C

SlidesadaptadosdomaterialdeKarinaMochetti

Problema,Algoritmo,Programa

Umprograma decomputador é a implementação deumalgoritmo pararesolver umproblema .

Ummesmoproblemapodesersolucionadoporalgoritmosdiferentes.Umprogramaéadefiniçãodessespassospormeiosdecomandosemumadeterminadalinguagem.

Raphael M. Aula 01.Programação Bás ica

Compilador

Éumaferramentaquetraduzumcódigo(fonte)escritoemumalinguagemdeprogramaçãomaisfamiliaraoshumanos,paraumoutrocódigo(binário)emlinguagemdemáquina,criandoumarquivoexecutável.

UmIDEnãoéumcompilador,eleutilizao compilador.Umcompiladornãoexecutaseuprograma,elesomentecriaum executável.Alémdedefinirerrosdecompilação,ocompiladortambémmostramensagensdeaviso(presteatenção nelas!).

Raphael M. Aula 01.Programação Bás ica

Variáveis

Variáveissãoespaçosreservadosnamemóriaparaguardarparaguardardados.

Onomedeumavariáveldeveseguiralgumasregraseajudarnocompreendimentodo programa.Umavariáveldeveterumtipodedadoassociadoaela(integer,character,float, boolean).Amudançadeumtipoparaoutroéchamadade casting.Adeclaraçãodeumavariávelnormalmenteéfeitanocomeçodoprograma(embora,emalgumaslinguagensde programação,podendoserfeitanomeio).

Raphael M. Aula 01.Programação Bás ica

Variáveis

Variáveissãoespaçosreservadosnamemóriaparaguardarparaguardardados.

Python

n = 0c = ’ c ’

Pascal

var n : in tege r ; var c : char ;

C

i n t n ; char c ;

Fortran

in teger : : n character : : c

Raphael M. Aula 01.Programação Bás ica

EntradaeSaída

Éamaneiracomooprogramaeo usuário secomunicam.

Aentradaesaídabásicadeumcomputadoréfeitaatravésdemensagens,semutilizaçãodomouseouqualquerinterfacegráfica.Normalmentesãoutilizadasfunçõesespecíficasdeleituraeescritade variáveis.

Raphael M. Aula 01.Programação Bás ica

EntradaeSaída

Éamaneiracomooprogramaeo usuáriosecomunicam.

Python

n = inpu t ( ) p r in t (n )

Pascal

read ln(n) ; wr i te ln (n) ;

C

scanf(" d" , &n);p r i n t f ( " d" , n ) ;

Fortran

read(*,*) n wri te(* ,*) n

Raphael M. Aula 01.Programação Bás ica

Expressões

Sãooperaçõesenvolvendoosmanipulaçõesnosvaloresdas variáveis.

Aatribuiçãoéaformacomocolocamosumvalornamemóriaalocadaparadeterminadavariável.Alémdeatribuirumvalor,podemosrealizardiversasoperaçõessobreelescomosomas,multiplicaçõese comparações.

Raphael M. Aula 01.Programação Bás ica

Expressões

Sãooperaçõesenvolvendoosmanipulaçõesnosvaloresdas variáveis.

Python

i = 10c = ’ c ’

Pascal

i := 10; c := ’ c ’ ;

C

i = 10;c = ’ c ’ ;

Fortran

i = 10c = "c"

Raphael M. Aula 01.Programação Bás ica

Condicional

Éumcomandoquerealizaaçõesdeacordocomdeterminadas condições.

A açãocondicionaléumdosprincipaisrecursosdaprogramaçãoeénormalmenteativadapelocomandoif.Acondiçãodoifdeveresultarnumavariávellógica,podendoser,portanto,qualquerexpressãológicaouumavariávellógica,casoelaexistir.Associado ao comando if,podemos ter umconjunto deações aseremexecutadas nocaso deascondiçõesnãoseremverdadeiras,normalmente ativado pelo comandoelse.

Raphael M. Aula 01.Programação Bás ica

Condicional

i f <condição>:<ações>

Éumcomandoquerealizaaçõesdeacordocomdeterminadas condições.

Python Pascal

i f (<condição>) then begin

<ações>;end;

C

i f (<condição>) {<ações>;

}

Fortran

i f (<condição>) then<ações>

end i f

Raphael M. Aula 01.Programação Bás ica

RepetiçãocomContador

Repeteaçõesecomandosumnúmerodedeterminadodevezes,dadoporumavariável contadora.

Acadarepetiçãoovalordocontador émodificado.Ocontadorpodesermodificadopelasações(CePascal)ounãopodesermodificadoatéofimdarepetição (Fortran).Modificandoocontadordentrodarepetiçãocorremosoriscodecriarumloopinfinitooualgumoutrotipode erro.Normalmenteocontadorincrementa1emcadapasso,masépossívelincrementá-locom outrosvalores.

Raphael M. Aula 01.Programação Bás ica

RepetiçãocomContador

fo r i in range (10) :<ações>

Repeteaçõesecomandosumnúmerodedeterminadodevezes,dadoporumavariável contadora.

Python Pascal

fo r i := 0 to 9 do begin

<ações>;end;

C

fo r ( i=0 ; i<10; i++) {<ações>;

}

Fortran

do i = 0 , 10<ações>

end doRaphael M. Aula 01.Programação Bás ica

RepetiçãocomCondição

Repeteaçõesecomandosenquantoumadeterminadacondiçãoésatisfeita.

Asvariáveisutilizadasnacondição(seexistirem)podemedevemserlivrementemodificadaspelasaçõesda repetição.Seacondiçãonãoforsatisfeitaantesdoloop,todasasaçõesserãoignoradasna execução.Seacondiçãosempreforsatisfeita,todasasaçõesserãoexecutadasumnúmeroinfinitovezes(loopinfinito).ésemprepossívelreescreverumarepetiçãocomcontadorutilizandoumarepetiçãocom condição.

Raphael M. Aula 01.Programação Bás ica

RepetiçãocomCondição

while i == 10:<ações>

Repeteaçõesecomandosenquantoumadeterminadacondiçãoésatisfeita.

Python Pascal

while ( i = 10) do begin

<ações>;end;

C

while (n == 10) {<ações>;

}

Fortran

do while (x == 10)<ações>

end do

Raphael M. Aula 01.Programação Bás ica

Vetores

Éumasequênciadevariáveisdomesmotipoquepodeseracessadoatravésdeum índice.

Normalmenteéarmazenadodeformasequencialnamemóriaeseutamanhodeveserfixoedadanaentrada.Osíndicesdeumvetorsãodadosporinteirosepodemcomeçardovalor0(C),dovalor1(Pascal)oudeumvalordefinidopelousuário (Fortran).Todososelementosdevemserdomesmotipoeotamanhodovetornãopodesermodificadonomeiodo programa.Uma repetição com contador é normalmente utilizada parapercorrer todos os elementos do vetor, sendo o contador, oíndice do vetor.

Raphael M. Aula 01.Programação Bás ica

Vetores

Éumasequênciadevariáveisdomesmotipoquepodeseracessadoatravésdeum índice.

Python Pascal

v = [ ] i : Array[1..100] of in tege r ;

C

i n t n[100];

Fortran

i n t ege r , dimension(100) : : x

Raphael M. Aula 01.Programação Bás ica

Exercício

FaçaumprogramaemCquedadoumvetorv comn númerosinteiros,ordeneseuselementosdeformacrescente.Assumaqueovetorjáfoi lido.

Raphael M. Aula 01.Programação Bás ica

Exercício: Solução

FaçaumprogramaemCquedadoumvetorv comn númerosinteiros,ordeneseuselementosdeformacrescente.Assumaqueovetorjáfoi lido.

fo r ( i n t i = 0 ; i < n-1; i++) { menor = i ;fo r ( i n t j = i+1; j < n ; j++) {

i f ( v [ j ] < v[menor]) menor = j ;}aux = v [ i ] ;v [ i ] = v[menor]; v[menor] = aux;

}

Raphael M. Aula 01.Programação Bás ica

ProgramaçãodeComputadores II2.ALinguagemC

RaphaelM.

2019.1

Raphael M. Aula 02.L inguagem C

Cvs Pascal

Possuemamesmaorigem:ALGOL.Sãolinguagensdeprogramação estruturada.Sãodamesmaépoca:Pascalde1969eCde 1972.OssistemasUNIXforamfeitosemCeossistemadaAppleforamfeitosemPascal.HojeemdiaCémuitomais usado.

Raphael M. Aula 02.L inguagem C

Cvs Python

Python éuma linguagem muito mais nova, de 1991.C émuito mais eficiente, os programas rodam mais rápido.Seuobjetivoémelhoraracompreensãodocódigoegerarcódigos menores.Pythonpossuimuitasbibliotecasprontas,Cprecisaquemuitacoisasejaprogramada dozero.

Pythoné bom paraprototipagem eintegração decomponentes

Raphael M. Aula 02.L inguagem C

Hello World

/* Hello World program * / #include <stdio.h>

i n t main ( ) {p r i n t f ("Hello World.\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

DefiniçãodePrograma

UmprogramaemCcomeçaapósocabeçalhointmain(){ eterminaaoencontraroreturn.

/* Hello World program * / #include <stdio.h>

i n t main ( ) {p r i n t f ("Hello World.\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

Comentário

UmcomentárioemCpodeserdelimitadopor/*e*/oucontersomenteumalinhacomeçandocom //.

/* Hello World program * / #include <stdio.h>

i n t main ( ) {p r i n t f ("Hello World.\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

Comentário

UmcomentárioemCpodeserdelimitadopor/*e*/oucontersomenteumalinhacomeçandocom //.

/ / Hello World program #include <stdio.h>

i n t main ( ) {p r i n t f ("Hello World.\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

Include

AlgumasfunçõesdeCestãodeclaradasembibliotecaseparaseremusadasessasbibliotecasdevemserincluídasnocomeçodoprogramausando#include < > .

/* Hello World program * / #include <stdio.h>

i n t main ( ) {p r i n t f ("Hello World.\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

argceargv

Aoexecutarmosoprogramaemlinhadecomandopodemospassarvaloresextrasparaoprograma,comoparâmetrosdafunçãomain().

/* Hello World program * / #include <stdio.h>

i n t main ( i n t a rgc , char*argv[]) { p r i n t f ("Hello World.\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

argceargv

Aoexecutarmosoprogramaemlinhadecomandopodemospassarvaloresextrasparaoprograma,comoparâmetrosdafunçãomain().Onúmerodeparâmetrospassadoséguardadonavariávelinteiraargc.Osparâmetrossãoguardadosemordemnovetordestrings argv.

Raphael M. Aula 02.L inguagem C

# i n c l u d e < s t d i o . h >i n t m a i n ( i n t a r g c , c h a r * a r g v [ ] ) {

p r i n t f ( " a r g c = % d \ n " , a r g c ) ;f o r ( i n t i = 0 ; i < a r g c ; + + i ) {

p r i n t f ( " a r g v [ % d ] = % s \ n " , i , a r g v [ i ] ) ;

}}

~raphaelmachado$ gcc teste-input.c -o teste-input~raphaelmachado$ ./teste-inputargc = 1argv[ 0 ] = ./teste-input~raphaelmachado$ ./teste-input xyx 43argc = 3argv[ 0 ] = ./teste-inputargv[ 1 ] = xyxargv[ 2 ] = 43

Chaves

Aschaves{ e} sãoosgrandesdelimitadoresdeescopoemC.Indicamocomeçoefimdoprograma,defunçõeseprocedimentos,derepetiçõese condições.

/* Hello World program * / #include <stdio.h>

i n t main ( i n t a rgc , char*argv[]) { p r i n t f ("Hello World.\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

EntradaeSaída

AsfunçõesdeentradaesaídaemCestãolocalizadasnabibliotecastdio.h(StandartInandOut).Assim,éprecisoacrescentar#include<stdio.h>aocomeçodoprograma,parausá-las.

/* Hello World program * / #include <stdio.h>

i n t main ( i n t a rgc , char*argv[]) { p r i n t f ("Hello World.\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

EntradaeSaída

A função”básica”desaídadedadosnoCéaprintf.Recebe,como entrada,uma stringe,opcionalmente,uma lista devariáveis aser impressa(ver nos próximos slides).

/* Hello World program * / #include <stdio.h>

i n t main ( i n t a rgc , char*argv[]) { p r i n t f ("Hello World.\n");re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

EntradaeSaída

printf()É aformadeimprimirmosvaloresnatela.Otextodeveestarentreaspasecadavariáveldeveserrepresentadapeloseucódigo.Asvariáveisdevemvirdepois,separadasporvírgulanamesmaordem.

#include <stdio.h>

d d f\n", i , j , x ) ;

i n t main ( ) {i n t i , j ; f l o a t x ;p r i n t f ("Os valores sao: re turn 0 ;

}

Parapularalinhanaimpressãodeve-seusaro \n.

Raphael M. Aula 02.L inguagem C

EntradaeSaída

scanf()É aformadelermosvalores.Cadavariáveldeveestarrepresentadapeloseucódigoentreaspaseseusnomesdevemvirdepois,separadosporvírgulanamesma ordem.

#include <stdio.h>

i n t main ( ) {i n t i , j ; char c ;p r i n t f ("Digite 2 numeros e um ca rac te r : " ) ; scanf ( " d d c " , &i, &j, &c);p r i n t f ("Os valores sao: d d c\n", i , j , c ) ; re turn 0 ;

}

Antesdecadavariávelénecessáriacolocarosímbolo&.Raphael M. Aula 02.L inguagem C

Variáveis

inteiro 4 bytes short n; %hiinteiro 4 bytes int n; %dinteiro 8 bytes long n; %liinteiro 16 bytes longlong n; %llireal 4 bytes float f; %freal 8 bytes double f; %fcaracter 1 bytes char c; %c

unsignedTodos os tipos inteiros podem ser declarados como unsigned,forçando o valor a ser sempre positivo, assim, dobrando o limitemáximo da variável.

Raphael M. Aula 02.L inguagem C

Variáveis

BooleanNãoexisteotipobooleanemC.Normalmenteusamosuminteiro,onde1representaverdadeiroe0representa falso.

StringNãoexisteotipostringemC,umstringéumvetordecaracteresquepodeserdeclaradocomchaves(charstr[100];)ouasterisco(char*str;).

Raphael M. Aula 02.L inguagem C

Expressões

adição a+ bsubtração a- bmultiplicação a* bdivisão a/ bresto a% batribuição a= bincremento a+ = bdecremento a- = b

IncrementarAoincrementar1emCpodemosfazer:i= i +1 ou i + +

DecrementarAodecrementar1emCpodemosfazer:i= i-1 ou i−−

Raphael M. Aula 02.L inguagem C

Incrementação

Em C podemos incrementar de duas formas: i + + ou + + i

i + + retorna,depois incrementa.

/ / x recebe v[0]/ / i recebe 1

i = 0 ;x = v[i++]

+ + i incrementa,depois retorna.

/ / x recebe v[1]/ / i recebe 1

i = 0 ;x = v[++i]

Raphael M. Aula 02.L inguagem C

Operadores lógicos

e a&& bou a||bnão !bigual a= = bdiferente a! = bmenor a< bmaior a> bmenore igual a< = bmaiore igual a> = b

AtribuiçãoeComparaçãoEmC= éatribuiçãoe= = écomparaçãodeigualdade.

Raphael M. Aula 02.L inguagem C

Condicional if

O condicional deve ter a condição entre parênteses e as ações entrechaves. O if pode vir acompanhado por um else, com ações tambémentre chaves. Um if ou else semchave realiza somente uma ação.

#include <stdio.h> i n t main ( ) {

i n t i ;i f ( i > 10) pr in t f ("E maior que 10\n"); e l se printf("Nao e maior que 10\n");i f ( i == 100) {

p r i n t f ("E igual a 100.\n"); i = 0 ;p r i n t f ("O valor f o i zerado.\n");

}re turn 0 ;

}Raphael M. Aula 02.L inguagem C

Exemplo 1

Verificaseumnúmeroestáentre0e 100.

#include <stdio.h>

i n t main() {i n t num;p r i n t f ("Digite o numero: " ) ; scanf ( " d" , &num);i f (num >=0 && num <= 100)

p r i n t f ("Sim\n");e l se

p r i n t f ("Não\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C

Exemplo 2

Verificaseumnúmeroéparounão.

#include <stdio.h>

i n t main() {i n t num;p r i n t f ("Digite o numero: " ) ; scanf ( " % d" , &num);i f (num %2 == 0)

p r i n t f ("Sim\n");e l se

p r i n t f ("Nao\n"); re turn 0 ;

}

Raphael M. Aula 02.L inguagem C