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