Sei sulla pagina 1di 71

Programaoemc/c++

Conceitoscomuns
Relembrando

Algoritmo CdigoFonte

Compilador
PrimeiroPrograma
#include<stdio.h>

intmain(intargc,char**argv)
{
printf("primeiraimpresso\n");
}
Anlisedoprograma

InclusodeBibliotecas:#include<nome>
ou#includecaminho
Programaprincipalintmain(intargc,char**
argv)
Inciodebloco{

Fimdobloco}
sintaxe
Onomedoprogramaprincipalspodeser
main
Osparmetrosargceargvsoobrigatriosna
declarao,pormnoprecisamserutilizados

Oqueseencontraentre{}chamadodecorpo
doprogramaprincipal
#include<stdio.h>ou<cstdio>incluia
bibliotecastdio.

Estabibliotecautilizadaparafazerentradae
sadaparaoprogramadediversasformas

Ocomandoprintfencontrasedefinidonesta
biblioteca
Bibliotecas
mathBibliotecacomfunesmatemticas
stringBibliotecaparalidarcomtextos
stdlibBibliotecadeutilidades
openglbibliotecaparalidarcomcomputao
grfica
mpibibliotecaparalidarcomcomunicao
entremaquinasdiferentes
qtbibliotecaparalidarcominterfacegrfica
Analisandooprograma
printf("primeiraimpresso\n");

Estecomandoimprimenatelaoqueestiverentre
as

Vaiimprimirnatelaprimeiraimpressoepassar
paraaprximalinha(\n)

Ousodo;obrigatrioapstodoocomando
Variveis
Definio:Posiesdememriaassociadasaum
nomequepodemtratadassegundoregrasdeum
tipoespecfico

Podemassumirqualquervalordentrode
conjuntosespecficos

Usadasparaarmazenardadosepodemser
termosemexpressesmatemticaselgicas
Declaraodevariveis
Adeclaraodevariveisusaaseguinte
sintaxe:
Tipoidentificador1,identificador2,...;
tipopertence{unsigned,int,long,float,
double,bool,charetiposnobsicos}
Obs.:ostiposnobsicospodemrequerero
usodeinclude
Obs.:c/c++sosensveisletrascapitais
Regrasparaidentificadores
Semprecomeamcomletras
Nocontmespaos
Podemconternmeros
Podemconteralgunscaracteresespeciais
(masnotodos)
Exemplo2
#include<stdio.h>

intmain(intargc,char**argv)
{
inta,b;
a=10;
b=2;
printf("asoma:%d\n",a+b);
}
Comandodeatribuio
Colocavaloresespecficosemvariveis

Varivel=valor;
Ladoesquerdodaigualdadesempreuma
varivelqueseralterada
Ladodireitodaigualdadesempreuma
expressocujovalorserguardadonavarivel
OperadoresMatemticos

a+bsomadeacomb
absubtraoentreaeb
a*bmultiplicaoentreaeb
a/bquocientedadivisoentreaeb
a%brestodadivisoentreaeb(somente
parainteiros)
Maisinformaeswww.cplusplus.com
Tipagemnogarantida
#include<stdio.h>
intmain(intargc,char**argv){
unsignedunsignedNumber=1;
intintNumber=4;
intaux=unsignedNumber+intNumber;
unsignedaux2=unsignedNumber+intNumber;
printf("resultado%d%u\n",aux,aux2);
}
Operadoreslgicos
&Operadorlgicoe
&&Operadorlgicoebitabit

|Operadorlgicoou
||Operadorlgicooubitabit

!Operadorlgiconegao
Operadoresrelacionais
>maiorque(>)
>=maiorouigualque()
<menorque(<)
<=menorouigualque()
==iguala(=)usadoparacompararvalores
!=diferentede()
Ocomandodeleitura
scanf(formato,pt1,pt2,...,ptn);

scanf(%d,&var1);

Associaumvalorinteiroinformadopeloteclado
aoendereodavarivelvar1
Exemplo3
#include<stdio.h>
intmain(intargc,char**argv)
{
intn1,n2;
scanf("%d%d",&n1,&n2);
printf("soma=%d\n",n1+n2);
}
Exemplo3.1
#include<stdio.h>
intmain(intargc,char**argv)
{
intn1;
int*pt1=&n1;
scanf("%d",pt1);
printf("n1=%d\n",n1);
}
DesvioIFSintaxe

if(expressolgica)
{
instrues
}
Exemplo
#include<stdio.h>
intmain(intargc,char**argv)
{
intn1;
scanf("%d",&n1);
if(n1%2==0)
{
printf("onmerodigitadopar\n");
}
if(n1%2!=0)
{
printf("onmerodigitadoimpar\n");
}
}
Desvioifelse
#include<stdio.h>
intmain(intargc,char**argv)
{
intn1;
scanf("%d",&n1);
if(n1%2==0)
{
printf("onmerodigitadopar\n");
}
else
{
printf("onmerodigitadoimpar\n");
}
}
Exerccio
FaaumProgramaqueleiatrsnmerose
verifiqueseestesnmeroscorrespondemaos
ladosdeumtringulo
OperadorCondicional
expresso?expresso1:expresso2
Exemplo
#include<stdio.h>
intmain(intargc,char**argv)
{
intnumber;
scanf("%d",&number);
printf("omdulodonmerodigitado:%d\n",
((number<0)?number*1:number));
}
Ifaninhados
IF(expressoLgica){
instrues
IF(expressoLgica){
instrues
}
instrues
}
ELSE{
instrues
}
Desvioifelseif
IF(expressolgica1){
instrues1
}
ELSEIF(expressolgica2){
instrues2
}
ELSEIF(.....){
...........
}
ELSE{
instruesdoelse
}
Repetiocomcontador
for(inicializao;condio;passo)
{
instrues
}
Inicializaolocalondeasvariveisde
controleseroinicializadas
condiocondioquedevesersatisfeita
paracontinuararepetio
Passomodificaesnasvariveisde
controle
Exemplo
#include<stdio.h>
intmain(intargc,char**argv)
{
for(inti=0;i<11;i++)
{
printf("imprimindoonmero%d\n",i);
}
}
Repetiessemcontador

while(condio)
{
instrues
}
#include<stdio.h> if(nota>=0){

intmain(intargc,char**argv soma=soma+nota;
){ numAlunos=numAlunos
+1;
floatmedia=0.0, }
soma=0.0,nota=0.0; }//while
intnumAlunos=0; if(numAlunos>0)
while(nota>=0.0){ {
media=soma/numAlunos;
printf("digiteumanota\n");
printf("amedia:
scanf(%f,&nota); %f\n",media);
}
else
printf(nmerodealunos
zero\n);
}//main
DoWhile
DO{
instrues
}while(condio)
Lidandocomlaos(loops)
aninhados
while(condio)
{
instrues1
for(inicializao;condio;passo)
{
instrues2
}
instrues3
}
Comandobreakecontinue
Ocomandobreakpodeserusadopara
terminarumarepetioabruptamente
Ocomandocontinueusadoparasaltarparao
prximopassodarepetio
Estescomandosestorelacionadoaolao
maisinterno
#include<stdio.h> if(i==number)
intmain(intargc,char**argv){ {
intnumber,i=2;
printf("nmeroprimo\n");
scanf("%d",&number);
}
for(;i<number;i++){
else
if(i>2&&i%2==0){
continue; {
} printf("nmerono
elseif(number%i==0){ primo.divisivelpor%d\n",
i);
break;
} }
}//for }//main
VetoreseMatrizesMotivao
Muitasvezesanooagregadadeentradas
(somatrio,produtrio,etc)nosuficiente
pararesolverproblemas

necessriodesenvolvermecanismosde
armazenamentoparaqueosvaloresindividuais
dasentradasnosejamperdidos
Exemplo
Faaumaprogramaquerecebaumconjuntode
nmerosecalculeavarinciadesteconjunto.
n
1
Avarinciadadapor:
2
xi
n i=1

Ondeamdiadestaamostra.Testeparaa

sequncia{1,2,3,4,5,6}.Oresultadodevese
aproximarde2,9
Definio
Arrayouvetorcoleodeelementosdo
mesmotipo

Indexadosdemodosimilarmatemtica

ndicessovaloresinteirosdentrodeum
intervalo
Sintaxe
Tiponome[tamanho];

Exemplo:doublex[50];

Otamanhopodeserespecificadoporuma
varivel
Acesso
Paraacessaroarraydeveseusaraseguinte
sintaxe

Nome[ndice]

Nomenomedoarray
ndiceumvalordentrodointervalodoarray.
Comeaemzeroevaiattamanho1
Observao
Paraacessarumndicepossvelusaruma
expressoaritmticaqualquer,desdequeo
resultadoestejadentrodointervalodoarraye
sejaumnmerointeiro
Exemplo
#include<stdio.h>
intmain(intargc,char**argv){
intx[5];
for(inti=0;i<5;i++){
scanf("%d",&x[i]);
}
for(inti=0;i<5;i++){
printf("oelementodendice%d%d\n",i,x[i]);
}
}
Matrizes
Definio:Tabelaouconjuntodetabelas
Niteri VR Rio
1 1 2 3
2 4 5 6
3 7 8 9

n 10 7 8
Matrizes
Nocasoanterior,paraencontraruma
temperaturadeumsensordoisndicesso
necessrios:aidentificaoeacidade
Emvriosdias
Niteri VR Rio Niteri VR Rio

1 1 2 3 1 1 2 3

2 4 5 6 2 4 5 6

3 7 8 9 3 7 8 9

n 10 7 8 n 10 7 8

Niteri VR Rio
1 1 2 3
2 4 5 6
3 7 8 9

n 10 7 8
Matrizes
Nocasoanterior,paraencontraruma
temperaturatrsndicessonecessrios:o
ndice,acidadeeodia
Sintaxe
Tiponome[tamanho1][tamanho2]...[tamanhoN];

Doublemat[10][10];
Exemplo
#include<stdio.h>
intmain(intargc,char**argv){
intn=3;
intx[n][n];
for(inti=0;i<n;i++){
for(intj=0;j<n;j++){
scanf(%d,&x[i][j]);
}
}
Exemplo

printf("\n");
for(inti=0;i<n;i++){
for(intj=0;j<n;j++){
printf("%d",x[i][j]);
}
printf("\n");
}
}
PonteirosDefinio
Armazenaumaposiodememriatratadas
comotipodefinido

Destemodo,umponteironocontmumvalor,
massimumendereonoqualestcontidoum
valordotipodoponteiro
Sintaxe
tipo*nome,*nome2

Podemserdeclaradosponteirosparaqualquer
tipo

Obs:ponteirospodemserdeclaradossem
inicializao,pormissonorecomendado
Int*pt1=NULLouint*pt1=0
Operadores
&refernciaretornaoendereodeuma
varivelqualquer

*derrefernciaretornaovalorapontadopor
umendereo
Exemplo
#include<stdio.h>
intmain(intargc,char**argv){
intvar1=0;
int*ptr1=NULL;
ptr1=&var1;
printf("variaveldeendereo%pcontemovalor%d
\n",&var1,var1);
printf("oponteiroptr1temendereo%pquecontmovalor
%d\n",ptr1,*ptr1);
}
Exemploc
#include<stdio.h>
#include<stdlib.h>
intmain(intargc,char**argv){
intvar1=0;
int*ptr1=NULL;
ptr1=&var1;
ptr1=(int*)malloc(sizeof(int));
*ptr1=5;
printf("variaveldeendereo%pcontemovalor%d\n",&var1,var1);
printf("oponteiroptr1temendereo%pquecontmovalor%d\n",ptr1,*ptr1);
free(ptr1);
}
Exemploc++
#include<iostream>
usingnamespacestd;
intmain(intargc,char**argv){
intvar1=0;
int*ptr1=NULL;
ptr1=newint;
*ptr1=5;
cout<<"variaveldeendereo"<<&var1<<"contemovalor"<<var1<<endl;
cout<<"oponteiroptr1temendereo"<<ptr1<<"quecontmovalor
"<<*ptr1<<endl;
deleteptr1;
}
PonteiroseArrays
int*v=newint[5];
Vapontaparaaprimeiraposiodovetor
(ndice0)
v+1apontaparaasegundaposio(ndice1)
++deslocaoponteiroumaposioparaa
direita
deslocaoponteiroumaposioparaa
esquerda
Exemplo
#include<iostream>
usingnamespacestd;
intmain(intargc,char**argv){
int*ptr1=newint[5];
for(int*ptr2=ptr1,i=0;ptr2!=ptr1+4;ptr2++,i++)
*ptr2=i;

Exemplo
for(int*ptr2=ptr1;ptr2!=ptr1+4;ptr2++)
cout<<"ovetor[i]"<<(*ptr2)<<endl;
delete[]ptr1;
}//main
Diferena??
intv[5];
int*v=newint[5];
AlocaoDinmica
Ooperadornewusadoparaalocarmemria
dinamicamente
Limitedememriaamemriadamquina
Aalocaoestticaestrestritaaumafaixa
fixadememria(dependentedocompilador)
g++limitedadopeloS.O.(linux=8MB)
Observao
Nomesdearrayssoponteirosconstantese
nopodemserusadoscomoperadoresde
desolcamento
MauExemplo
#include<stdio.h>
#include<stdlib.h>
intmain(intargc,char**argv){
int*ptr1=(int*)malloc(sizeof(int)*5);
for(int*ptr2=ptr1,i=0;ptr2!=ptr1+4;ptr2++,i++)
*ptr2=i;
for(inti=0;i<5;i++,ptr1++)
printf("%d",(*ptr1));
free(ptr1);
}
Ponteirosdeponteiros
possvelcriarponteirosparaponteiros
Usadosprincipalmenteparadefiniode
arraysdearrays(matrizes)
Sintaxe:tipo**nome
Exemplo
double**m;
m=newdouble*[10];
for(inti=0;i<10;i++)
m[i]=newdouble[10];
...
for(inti=0;i<10;i++)
delete[]m[i];

delete[]m
Oparmetroargvdafunomain
intmain(intargc,char**argv)

Notequeoparmetroargvdafunomainum
arraydearrays
Esteparmetroumconjuntodecadeiasde
caracteresquepodemserusadoscomoentrada
paraoprogramaprincipaleargcotamanho
desteconjunto(calculadoautomaticamente).
structs
Usadosparaagrupardiferentestiposde
informaes

Uteisparaagruparinformaes
correlacionadas
#include<stdio.h>
typedefstructcontato
{
char*nome;
inttelefone;
char*email;
}Contato;
intmain(intargc,char**argv){
Contatoeu;
eu.nome="TiagoNeves";
eu.telefone=12341234;
eu.email="tneves@id.uff.br";
printf("Nome:%s\n",eu.nome);
}
intmain(intargc,char**argv){
Contatoeu;
Contato*euptr=&eu;
euptr>nome="TiagoNeves";
euptr>telefone=12341234;
euptr>email="tneves@id.uff.br";
printf("Nome:%s\n",euptr>nome);
}

Potrebbero piacerti anche