Vous êtes sur la page 1sur 58

P R O G R A M A O

E M
L I N G U A G E M C / C++
Por Marcos Romero
http://romerogames.bogspot.com
!UM"RIO
Parte I # Co$hece$%o a &$g'agem C
Captulo 1 : Primeiros programas em C
Captulo 2 : Variveis e Operadores
Captulo 3 : Controle de fluxo
Captulo 4 : Matrizes e trings
Programa exemplo da parte ! : Criptografia
Parte II # !e apro('$%a$%o $a &$g'agem C
Captulo " : #struturas
Captulo $ : Ponteiros
Captulo % : &un'(es
Captulo ) : *r+uivos
Programa exemplo da parte !! : *genda
Parte III # Programa)*o or&e$ta%a a ob+etos com C++
Captulo , : Primeiros programas em C--
Captulo 1. : Classes e O/0etos
Captulo 11 : Mel1orando as 2lasses
Captulo 12 : 3eran'a e Polimorfismo
Programa exemplo da parte !!! : Contas de um 4an2o
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 3 / ,-
Parte I # Co$hece$%o a &$g'agem C
Captulo 1 : Primeiros programas em C
# Programa .:
Come)aremos $osso est'%o %a &$g'agem C e/am&$a$%o 'm programa bem s&mpes
0'e escre1e $a tea o te/to 2Ao 3'rma2:
/* Nome do arquivo : cap1_1.c */
main()
{
printf("Alo Turma");
4
A pr&me&ra &$ha %o programa 5 ape$as 'm come$t6r&o &$%&ca$%o o $ome %o ar0'&1o.
Na &$g'agem C os come$t6r&os s*o %e&m&ta%os por /7 e 7/. O ar0'&1o 0'e co$t5m o
c8%&go %e1e ter a e/te$s*o 2.C2. Em seg'&%a est6 a ('$)*o 2ma&$9 :2 0'e to%o programa
em C %e1e ter. ; $esta ('$)*o 0'e o programa &$&c&a s'a e/ec')*o. O par %e cha1es < 4
%e&m&tam 'm boco %e c8%&go 0'e= $este caso= 5 o co$te>%o %a ('$)*o 2ma&$9 :2.
A ('$)*o 2pr&$t(9 :2 5 'sa%a para escre1er te/to $a tea. Ea recebe como arg'me$to
'ma str&$g 9co$+'$to %e caracteres: 0'e est6 e$tre aspas %'pas 2...2. ?epo&s %o pr&$t( h6
'm po$to#e#1@rg'a 0'e &$%&ca o (&m %e 'm coma$%o em C.
; &mporta$te obser1ar 0'e a &$g'agem C %&(ere$c&a as etras ma&>sc'as %as
m&$>sc'as= &sto s&g$&(&ca 0'e se (or escr&to 2Ma&$9 :2 o' 2MAIN9 :2 'm erro ocorrer6.
# Programa A:
/* Nome do arquivo : cap1_.c */
main()
{
int nota;
nota ! ";
printf("#nA nota da prova foi $d #n"% nota);
printf("&'( )* +,-.,A(A");
/
Este programa &$tro%'B 'm co$ce&to m'&to &mporta$te: as 1ar&61e&s. Eas s*o 'sa%as
para armaBe$ar 1aores. No e/empo= o coma$%o 2&$t $otaC2 %e(&$e 'ma 1ar&61e 0'e
g'ar%ar6 1aores %o t&po &$te&ro. A &$ha seg'&$te atr&b'& o 1aor - D 1ar&61e. No C o
s@mboo 2E2 5 o opera%or %e atr&b'&)*o e s'a ('$)*o 5 %e pegar o 1aor 0'e est6 a s'a
%&re&ta e armaBe$ar $a 1ar&61e 0'e est6 a s'a es0'er%a.
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 4 / ,-
A ('$)*o pr&$t(9 : 'sa o c8%&go %e (ormata)*o F% %e$tro %a str&$g para &$%&car 0'e
'm &$te&ro em (ormato %ec&ma ser6 escr&to $esta pos&)*o. A 1ar&61e 5 passa%a como
seg'$%o arg'me$to= 5 'sa%a 'ma 1@rg'a para separar os arg'me$tos. O 2G$2 tamb5m 5
'm c8%&go %e (ormata)*o co$hec&%o como +ue/ra9de9lin1a e (aB o c'rsor %e &$ser)*o
%o te/to &r para a &$ha seg'&$te.
# Programa H:
/* Nome do arquivo : cap1_0.c */
main()
{
int num1%num%re1ultado;
printf("#n)i2ite um numero de 1 a 3 e pre11ione *NT*, : ");
1canf("$d"%4num1);
printf("#n)i2ite outro numero de 1 a 3 e pre11ione *NT*, : ");
1canf("$d"%4num);
re1ultado ! num1 5 num;
printf("#n $d 5 $d ! $d"% num1% num% re1ultado);
4
Po%e#se %e(&$&r 16r&as 1ar&61e&s %o mesmo t&po em 'ma >$&ca &$ha como &1sto $este
e/empo. ; 'sa%o a ('$)*o sca$(9 : para er 'm 1aor %&g&ta%o peo 's'6r&o. O c8%&go
F% &$%&ca 0'e ser6 &%o 'm &$te&ro e armaBe$a%o $a 1ar&61e 2$'m.2. O 2I2 0'e
prece%e o 2$'m.2 5 sempre $ecess6r&o para 0'e 'm 1aor possa ser g'ar%a%o em 'ma
1ar&61e= ma&s a%&a$te $o c'rso e$te$%eremos mehor o mot&1o.
?epo&s %a e&t'ra %o seg'$%o $>mero h6 'ma e/press*o 0'e soma os %o&s $>meros
&%os e armaBe$a o 1aor res'ta$te $a 1ar&61e 2res'ta%o2. J&$ame$te= 5 'sa%o 'm
pr&$t(9 : para &'strar a e/press*o. Ca%a 2F%2 correspo$%e a 'm arg'me$to $a or%em em
0'e aparecem.
Dica : O es0'ec&me$to %o 2I2 $a ('$)*o sca$(9 : 5 'ma (o$te m'&to com'm %e erros=
pr&$c&pame$te por0'e o comp&a%or $*o &r6 he a1&sar 0'a$%o &sto ocorrer.
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 " / ,-
Captulo 2 : Variveis e Operadores
# Kar&61e&s:
L6 ag'mas regras b6s&cas para a cr&a)*o %e $omes %e 1ar&61e&s :
# O pr&me&ro caractere %e1e ser 'ma etra o' 'm s'b&$ha%o= mas $*o 'm $>mero.
# Os caracteres seg'&$tes po%em ser $>meros= etras o' s'b&$ha%os.
# N*o po%em ser 'sa%os $e$h'm %os opera%ores %a &$g'agem C.
# N*o po%em ser 'sa%os caracteres ace$t'a%os.
E/empos:
corretos incorretos
a'$o. .a'$o
cac'o c6c'o
e$%ereco e$%ere)o
$omeMa'$o $ome#a'$o
Dica: Lembre#se 0'e a &$g'agem C %&st&$g'e os caracteres ma&>sc'os %os m&$>sc'os=
e$t*o se (or %e(&$&%a 'ma 1ar&61e %e $ome 2NO3A2 e %epo&s ho'1er 'ma re(erN$c&a
como 2$ota2= o comp&a%or $*o assoc&ar6 as %'as e ocorrer6 'm erro.
A tabea seg'&$te co$t5m os t&pos %e %a%os b6s&cos %o C.
Tipo Bits Faixa
char - #.A- a .AO
&$t .P #HAOP- a HAOPO
(oat HA H.Q E#H- a H.Q E+H-
%o'be PQ ..O E#HR- a ..O E+HR-
O t&po char 5 'sa%o para g'ar%ar caracteres %o pa%r*o A!CII %e - b&ts 0'e co$t5m
etras= %@g&tos e s@mboos. As 1ar&61e&s %o t&po int po%em co$ter 1aores &$te&ros. O t&po
float 5 $ecess6r&o para armaBe$ar $>meros (rac&o$6r&os 0'e tamb5m s*o chama%os %e
po$to ('t'a$te. O t&po double e0S&1ae ao (oat s8 0'e tem 'ma capac&%a%e bem ma&or
%e armaBe$ame$to.
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 $ / ,-
Po%e#se ap&car o mo%&(&ca%or %e t&po unsigned a$tes %e char e int= (aBe$%o com
0'e as 1ar&61e&s s5 ace&tem 1aores pos&t&1os. O t&po char passa a ace&tar 1aores e$tre R
e A,, e o t&po int e$tre R e P,,H,. O t&po char po%e ser 'sa%o tamb5m como se (osse
'm &$te&ro pe0'e$o. Os mo%&(&ca%ores long e short s*o 'sa%os com o t&po int. O long
(aB com 0'e a 1ar&61e te$ha HA b&ts para armaBe$ame$to e$0'a$to o short tem ape$as
.P b&ts. Nos comp&a%ores para s&stemas operac&o$a&s %e HA b&ts 9como o T&$%oUs V,:
o tama$ho pa%r*o %o t&po int 5 %e HA b&ts.
O programa a seg'&r &'stra o 'so %as 1ar&61e&s:
/* cap_1.c */
main()
{
c6ar letra ! 7m7;
int num_inteiro;
float num_real;
un1i2ned int 1em_1inal;
16ort int num_189;
lon2 int num_09;
printf("#n *** *:T;)- )A: <A,'A<*': *** #n");
printf("#n )i2ite um valor inteiro e um valor fracionario :#n");
1canf("$d $f"% 4num_inteiro% 4num_real);
printf("#n - no. inteiro di2itado foi : $d"% num_inteiro);
printf("#n - no. fracionario di2itado foi : $f"% num_real);
printf("#n No. fracionario com formatacao : $.0f"% num_real);
printf("#n#n A letra #7$c#7 tem o codi2o A:='' de $d"%letra%letra);
1em_1inal ! >1?; /* e1ta variavel nao 1uporta no. ne2ativo1*/
printf("#n#n <alor da variavel 1em_1inal : $u"% 1em_1inal);
num_189 ! 0@???; /*e1te valor eAcede o limite maAimo da variavel*/
num_09 ! 0@???;/* 1em pro9lema1*/
printf("#n <alor do num_189 : $d"% num_189);
printf("#n <alor do num_09 (lon2): $ld"% num_09);
4
Logo $o come)o %o programa 5 %e(&$&%a 'ma 1ar&61e %o t&po char 0'e recebe 'ma
etra &$&c&a. Um >$&co caractere %e1e ter aspas s&mpes 9e/: WaW: e$0'a$to 0'e 'ma str&$g
tem aspas %'pas 9e/: 2a2:. Em seg'&%a s*o %e(&$&%as o'tras 1ar&61e&s %e %&1ersos t&pos.
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 % / ,-
; 'sa%o o'tros c8%&gos %e (ormata)*o %o printf( ) $o programa. Na &sta a seg'&r h6
come$t6r&os sobre os c8%&gos ma&s com'$s.
cdigo significado
Fc caractere
F% &$te&ro %ec&ma
F( $>mero (rac&o$6r&o
F' &$te&ro sem s&$a
F% &$te&ro o$go
FF &mpr&me o s&$a F
G$ m'%a$)a %e &$ha
Gt tab'a)*o
G2 &mpr&me aspas %'pas
GW &mpr&me aspas s&mpes
GG &mpr&me a barra &$1ert&%a
No programa a ('$)*o scanf( ) est6 e$%o %o&s 1aores %e 'ma >$&ca 1eB. Para
separar os 1aores $a %&g&ta)*o po%e#se 'sar 'm espa)o= 'm tab o' 'ma 0'ebra#%e#&$ha
9teca EN3ER:. Ma&s a%&a$te 5 1&sto em 'm pr&$t( o c8%&go 2F.H(2 0'e espec&(&ca 'm
$>mero (rac&o$6r&o %e H casas %ec&ma&s.
A &$ha seg'&$te %emo$stra 0'e a 1ar&61e %o t&po char po%e ser 'sa%a como
caractere o' como 'm 1aor %ec&ma. ?epo&s %&sso 5 (e&to 'm teste com os &m&tes %as
1ar&61e&s.
# Opera%ores:
Um opera%or 5 'm s@mboo 0'e &$str'& o comp&a%or a e/ec'tar certas ma$&p'a)Xes
matem6t&cas o' 8g&cas. A &sta a seg'&r mostra os opera%ores ar&tm5t&cos.
Operador Ao
+ a%&)*o
# s'btra)*o
7 m't&p&ca)*o
/ %&1&s*o
F resto %a %&1&s*o
Estes opera%ores e/ec'tam as opera)Xes b6s&cas %a matem6t&ca. ?e1e#se ter c'&%a%o
com o opera%or %e %&1&s*o= se ee (or 'sa%o com $>meros &$te&ros= se' res'ta%o
tamb5m ser6 &$te&ro 9E/: V / Q ser6 &g'a a A:. O opera%or F retor$a o resto %e 'ma
%&1&s*o e$tre &$te&ros 9E/: V F Q ser6 &g'a a .:.
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 ) / ,-
L6 tamb5m os opera%ores %e rea)*o e os opera%ores 8g&cos= 0'e retor$am sempre
(aso 9R: o' 1er%a%e&ro 9.:. Em C= o 1er%a%e&ro 5 represe$ta%o por 0'a0'er 1aor
%&(ere$te %e Bero= e$0'a$to 0'e o (aso 5 Bero.
Opera%ores %e Rea)*o
Operador Ao
Y ma&or 0'e
YE ma&or o' &g'a a
Z me$or 0'e
ZE me$or o' &g'a a
E E &g'a a
[E %&(ere$te %e
Opera%ores L8g&cos
Operador Ao
II AN? 9E:
\ \ OR 9OU:
[ NO3 9NO:
Dica: ; com'm co$('$%&r o opera%or %e rea)*o 2E E2= 0'e compara %o&s 1aores e
retor$a 1er%a%e&ro 9.: se (orem &g'a&s o' (aso 9R: se (orem %&(ere$tes= com o opera%or
%e atr&b'&)*o 2E2 0'e pega o 1aor 0'e est6 D s'a %&re&ta e armaBe$a $a 1ar&61e D s'a
es0'er%a.
Os opera%ores b&t a b&t s*o opera%ores a1a$)a%os gerame$te 't&&Ba%os em
programa)*o %e ba&/o $@1e. Ees trabaham %&retame$te com o $>mero em s'a (orma
b&$6r&a= s8 po%em ser 'sa%os com os t&pos char e &$t.
Operador Ao
I AN? 9E:
\ OR 9OU:
] ^OR 9OU e/c's&1o:
_ NO3 9NO:
YY ?esocame$to para a %&re&ta
ZZ ?esocame$to para a es0'er%a
A &$g'agem C poss'& ag'mas (ormas abre1&a%as %e opera%ores como o %e
&$creme$to 9++: 0'e soma 'm ao se' opera$%o e opera%or %e %ecreme$to 9##: 0'e
s'btra& 'm. E/: $'m++C $'m##C
O'tra (orma %e abre1&a)*o 5 %emo$stra%a a seg'&r:
/ E / + .RC
Po%e ser reescr&to como :
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 , / ,-
/ +E .RC
Este (ormato po%e ser 'sa%o com os opera%ores ar&tm5t&cos %o C.
E/: /#E,C / /E HC
Po%e#se (or)ar 'ma e/press*o a ser %e 'm t&po 'sa$%o 'ma co$str')*o chama%a 2ast.
Por e/empo= se / (or 'm &$te&ro e 1ocN 0'er gara$t&r 0'e o res'ta%o %a e/press*o / / H
se+a 'm (oat 9(rac&o$6r&o:= 'se o seg'&$te coma$%o :
9(oat: / / HC
L6 o'tro opera%or a1a$)a%o co$hec&%o como opera%or ter$6r&o 9 `: :.
E/: a E / Z .R ` .RR : ARR C
!e a e/press*o 9/ Z .R: (or 1er%a%e&ra e$t*o o 1aor res'ta$te ser6 o .RR= se a
e/press*o (or (asa= o 1aor res'ta$te ser6 o ARR.
A &sta a seg'&r mostra a or%em %e prece%N$c&a 0'e os opera%ores tNm em 'ma
e/press*o.
Prece%N$c&a %os opera%ores
Ma&or
[ _ ++ ## # 9cast:
7 / F
+ #
ZZ YY
Z ZE Y YE
E E [E
I
]
\
II
\ \
`:
E +E #E 7E /E
Me$or
Use sempre parN$teses para %e&/ar cara a or%em %e e/ec')*o %e 'ma e/press*o. Por
e/empo= compare as seg'&$tes e/pressXes :
/ E m7A + H7+ / ( # ,C
/ E 9 m7A : + 9 9H 7 + / ( : # , :C
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 1. / ,-
/*
cap_.c
Autor: (arco1 ,omero
*/
main()
{
int A%B;
int re1to1% re1to;
printf("#n *** *:T;)- )-: -+*,A)-,*: *** #n");
printf("#n )i2ite doi1 numero1 inteiro1:#n");
1canf("$d $d"% 4A% 4B);
printf("#n#n -peradore1 Aritmetico1 ");
printf("#n $d 5 $d ! $d "% A% B% A5B);
printf("#n $d > $d ! $d "% A% B% A>B);
printf("#n $d * $d ! $d "% A% B% A*B);
printf("#n $d / $d ! $d (divi1ao inteira)"% A% B% A/B);
printf("#n $d / $d ! $.f (divi1ao fracionaria)"% A% B%(float) A/B);
printf("#n $d $$ $d ! $d (re1to da divi1ao)"% A% B% A$B);
printf("#n#n -peradore1 de ,elacao ");
printf("#n $d !! $d retorna $d"% A% B% A!!B);
printf("#n $d C! $d retorna $d"% A% B% AC!B);
printf("#n $d D $d retorna $d"% A% B% ADB);
printf("#n $d E $d retorna $d"% A% B% AEB);
re1to1 ! A $ ; /* o re1ultado 1era ? ou 1 */
re1to ! B $ ;
printf("#n#n -peradore1 Fo2ico1 ");
printf("#n$d 44 $d retorna $d >(AN))"%re1to1%re1to%re1to144re1to);
printf("#n$d GG $d retorna $d >(-,)"%re1to1%re1to%re1to1 GGre1to);
printf("#n C $d retorna $d >(N-T)"% re1to1% Cre1to1);
printf("#n#n ;1o de +arente1e1 ");
printf("#n $d 5 $d * H ! $d"% A% B% A 5 B * H);
printf("#n($d 5 $d)* H ! $d"% A% B% (A 5 B) * H);
printf("#n#n ,e1ultado da eApre11ao: $dD!@ I @??:1??? e i2ual a $d"%
A% A D! @ I @??:1???);
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 11 / ,-
Captulo 3: Controle de fluxo
# O coma$%o &(:
O coma$%o if 9se: 5 'sa%o para 0'e 'm c8%&go s8 se+a e/ec'ta%o me%&a$te 'ma
co$%&)*o ser 1er%a%e&ra 90'a0'er 1aor %&(ere$te %e R:.
E/: &( 9/ Z .R: pr&$t(92F% 5 me$or 0'e .R2= /:C
L6 tamb5m a c6's'a else 9se$*o: 0'e 5 'sa%a em co$+'$to com o &( para 0'e 'm
c8%&go se+a e/ec'ta%a caso a co$%&)*o se+a (asa 9R:.
E/: &(9 se$ha E E .AH: pr&$t(92Acesso co$ce%&%o2:C
ese pr&$t(92Acesso $ega%o2:C
!e (or $ecess6r&o assoc&ar ma&s %e 'm coma$%o a 'ma co$%&)*o &( 9o' ese: po%e#se
'sar 'm boco %e c8%&go= 0'e 5 %e&m&ta%o por cha1es < 4. A e/press*o co$%&c&o$a %o
&( po%e ser %e %&1ersas (ormas= basta$%o 0'e o res'ta%o se+a 'm 1aor Bero o' $*o#Bero=
por e/empo= o c8%&go a seg'&r s8 &mpr&m&r6 a %&1&s*o se o %e$om&$a%or (or %&(ere$te %e
Bero.
E/: &(9 a : pr&$t(92 F%2= / / a:C
/* cap0_1.c */
main()
{
int nota;
printf("#n)i2ite a nota da prova (?>1?): ");
1canf("$d"%4nota);
if(nota !! 1?)
{
printf("#n +A,AJ*N:. Aprovado com nota maAima.");
/
el1e if(nota E! K 44 nota D 1?)
{
printf("#n Aprovado com conceito J-(");
/
el1e if(nota E! @ 44 nota D K)
{
printf("#n Aprovado com conceito ,*.;FA,");
/
el1e if(nota E! ? 44 nota D @)
{
printf("#n ,eprovado");
/
el1e
{
printf("Nota invalida");
/
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 12 / ,-
O coma$%o sU&tch :
O coma$%o sitch 9cha1e: testa o 1aor %e 'ma 1ar&61e co$tra 'ma &sta %e
co$sta$tes &$te&ras o' %e caracteres. !e 'm 1aor &g'a (or e$co$tra%o e$t*o o boco %e
c8%&go assoc&a%o a este 1aor ser6 e/ec'ta%o.
A (orma %o coma$%o sU&tch 5 :
switch( varivel )
{
case constante1:
seqncia de comandos
break;
case constante2:
seqncia de comandos
break;
...
default:
seqncia de comandos
/
O coma$%o default 5 opc&o$a e 5 e/ec'ta%o 0'a$%o $*o (or e$co$tra%o $e$h'm
1aor &g'a. O coma$%o brea! 5 'sa%o para &$%&car o (&m %a se0SN$c&a %e coma$%os %e
ca%a case.
/* cap0_.c */
main()
{
int e1col6a;
int A%B;
printf("#n )i2ite doi1 numero1 inteiro1:#n");
1canf("$d $d"% 4A% 4B);
printf("#n 1. Adicao");
printf("#n . :u9tracao");
printf("#n 0. (ultiplicacao");
printf("#n H. )ivi1ao");
printf("#n *1col6a a operacao: ");
1canf("$d"%4e1col6a);
1Litc6(e1col6a)
{
ca1e 1:
printf("#n Adicao ! $d"%A 5 B);
9reaM;
ca1e :
printf("#n :u9tracao ! $d"%A > B);
9reaM;
ca1e 0:
printf("#n (ultiplicacao ! $d"%A * B);
9reaM;
ca1e H:
/*te1tar 1e o denominador nao e Nero*/
if(B) printf("#n )ivi1ao : $.f"% (float) A / B);
el1e printf("#n )ivi1ao por Nero");
9reaM;
default:
printf("#n -peracao invalida");
/
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 13 / ,-
# O a)o (or :
Os a)os $a &$g'agem C s*o 'sa%os para repet&r 'm co$+'$to %e &$str')Xes at5 0'e
'ma certa co$%&)*o se+a sat&s(e&ta. O coma$%o (or 5 'm %os t&pos %e a)o= 'm e/empo
%e 'so est6 a seg'&r:
for(A ! 1; A D!?; A55) printf("#n $d"% A);
Este e/empo escre1er6 $a tea os $>meros %e . a AR.
O coma$%o for tem trNs partes pr&$c&pa&s: &$&c&a&Ba)*o= co$%&)*o= &$creme$to. No
e/empo= a &$&c&a&Ba)*o 5 o 2/ E .2= 0'e atr&b'& 'm 1aor &$&c&a D 1ar&61e %e co$troe
%o a)o 9/:. A co$%&)*o 5 o 2/ ZE AR2= e$0'a$to esta co$%&)*o (or 1er%a%e&ra o a)o
co$t&$'ar6 e/ec'ta$%o= o se' teste 5 (e&to $o &$@c&o %o a)o. A >t&ma parte %o (or 5 o
&$creme$to 0'e $o e/empo 5 2/++2= esta parte %e(&$e como ser6 atera%a a 1ar&61e %e
co$troe %o a)o.
/* cap0_0.c */
main()
{
int min% maA% 1oma ! ?% i;
printf("#n*** *1te pro2rama 1oma uma faiAa de valore1 ***");
printf("#n#n'nforme o valor minimo e maAimo:#n");
1canf("$d $d"% 4min% 4maA);
if(maA D min)
{
printf("- valor maAimo deve 1er maior ou i2ual que o minimo");
/
el1e
{
for(i ! min; i D! maA; i55)
{
printf("#n <alor: $d"% i);
1oma 5! i;
printf("#t :oma: $d"% 1oma);
/
printf("#n#n ,e1ultado final: $d"% 1oma);
/
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 14 / ,-
# Os a)os Uh&e e %o...Uh&e :
L6 o'tro t&po %e a)o %&spo$@1e $o C chama%o hile 9e$0'a$to:. Ee tem o seg'&$te
(ormato:
Uh&e9 2ondi'5o : 2omando
E$0'a$to a 2ondi'5o (or 1er%a%e&ra o 2omando ser6 e/ec'ta%o= o$%e 2omando po%e
ser 'm >$&co coma$%o o' 'm boco %e c8%&go.
O'tra (orma %e se %e(&$&r 'm a)o %este t&po 5 'sa$%o o %o...Uh&e :
%o <
2omandos
4 Uh&e 92ondi'5o: C
A >$&ca %&(ere$)a %esta (orma para a a$ter&or 5 0'e a co$%&)*o 5 testa%a $o (&$a=
(aBe$%o com 0'e os coma$%os se+am e/ec'ta%os ao me$os 'ma 1eB.
/* cap0_H.c */
main()
{
int A;
printf("#n *** =AF=;F- )- =;J- )* ;( N;(*,- ***#n");
do {
printf("#n )i2ite um numero (ou ? p/ 1air) : ");
1canf("$d"% 4A);
printf("#n:eu cu9o e : $d #n"% A*A*A);
/ L6ile(A C! ?);
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 1" / ,-
# I$terr'p)*o %e a)os:
Po%e#se 'sar o coma$%o brea! para &$terromper &me%&atame$te 'm a)o. Ee 5
gerame$te 'sa%o 0'a$%o ag'm e1e$to e/tra tem &$('N$c&a $o e$cerrame$to %o a)o.
A &$g'agem C perm&te o 'so %e a)os &$(&$&tos. E/: (or9 C C : o' Uh&e9 . : . A >$&ca
(orma %e term&$6#os 5 'sa$%o o coma$%o brea!.
O'tro coma$%o 't&&Ba%o %e$tro %e a)os 5 o continue. Ee (aB com 0'e o a)o 16
para a pr8/&ma &tera)*o sem e/ec'tar o resta$te %o c8%&go.
/* cap0_@.c */
main()
{
c6ar letra;
int i;
printf("#n *Aemplo de u1o do continue #n");
printf("#n 'mprime o1 pare1 #n");
for(i!?; iD1?; i55)
{
if(i $ ) continue; /*te1ta 1e o numero e impar */
printf("#n$d"%i);
/
printf("#n#n *Aemplo de u1o do 9reaM #n");
printf("#n <alore1 A:='' da1 letra1 #n");
L6ile(1) /*laco infinito */
{
printf("#n)i2ite uma letra (ou 7.7 p/ 1air) : ");
1canf("#n$c"%4letra);
if(letra !! 7.7) 9reaM;
printf("#nA letra $c tem codi2o A:='': $d #n"% letra% letra);
/
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 1$ / ,-
Captulo 4: Matrizes e trings
# Matr&Bes:
Uma matr&B 5 'sa%a para g'ar%ar 'm co$+'$to %e 1ar&61e&s %e mesmo t&po 'sa$%o
'm >$&co $ome. Um @$%&ce 5 'sa%o para acessar 'm eeme$to %a matr&B.
E/: &$t $otasb.RcC
O $>mero e$tre cochetes &$%&ca a 0'a$t&%a%e %e eeme$tos 0'e a matr&B tem. Em C=
to%as as matr&Bes co"ea" e" #ero= e$t*o $o e/empo o pr&me&ro eeme$to 5 $otasb R c
e o >t&mo 5 $otasb V c. Para acessar 'm %os eeme$tos %a matr&B basta coocar o se'
@$%&ce e$tre os cochetes. O e/empo a seg'&r pree$che a matr&B com os 1aores %e R a V.
E/: (or9& E RC & Z .RC &++: $otasb&c E & C
A &$g'agem C $*o (aB 1er&(&ca)*o %e &m&tes em matr&Bes= por &sso 5 poss@1e
atr&b'&r 1aores D pos&)Xes 0'e $*o perte$cem a matr&B. Este ato aterar6 %e (orma
&$%e1&%a a mem8r&a %o s&stema e po%e gerar erros $a e/ec')*o %o programa.
E/: $otasb.Ac E , C /7 o @$%&ce m6/&mo 5 V 7/
/* capH_1.c */
main()
{
int i;
int nota1OHP;
printf("#n )i2ite a1 nota1: #n");
for(i ! ?; i D H; i55)
{
printf("Nota $d: "% i 5 1);
1canf("$d"% 4nota1OiP);
/
printf("#n#n A1 nota1 em ordem inver1a: #n");
for(i ! 0; i E! ?; i>>)
{
printf("#n Nota $d ! $d "% i 5 1% nota1OiP);
/
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 1% / ,-
# !tr&$gs :
A &$g'agem C $*o poss'& 'm t&po &$ter$o %e(&$&%o como str&$g= para 's6#a em C 5
$ecess6r&o cr&ar 'ma matr&B %e caracteres. Uma str&$g 5 (&$a&Ba%a por 'm Bero
represe$ta%o como WGRW= por &sso 5 prec&so %e(&$&r o tama$ho %e 'ma str&$g como te$%o
'm espa)o a ma&s para armaBe$ar o Bero. Por e/empo= para %ecarar 'ma str&$g 0'e ter6
- caracteres= 'se:
char te/tobVcC
Para er 'ma str&$g peo teca%o 5 't&&Ba%a 'ma ('$)*o %a b&b&oteca %e C chama%a
gets( ). O pardmetro 5 o $ome %a matr&B sem 0'a0'er @$%&ce.
E/: gets9 te/to :C
Para escre1N#a $a tea po%e#se 'sar a ('$)*o pr&$t(9 : com o c8%&go %e (ormata)*o
$s e o $ome %a matr&B sem 0'a0'er @$%&ce.
E/: pr&$t(92Fs2= te/to:C
A &$g'agem C %e(&$e %&1ersas ('$)Xes para ma$&p'a)*o %e str&$gs. A ('$)*o
strcp%( ) 5 'sa%a para cop&ar o co$te>%o %e 'ma str&$g para o'tra= e$0'a$to 0'e a
('$)*o strcat( ) a$e/a 'ma str&$g ao (&$a %a o'tra. A ('$)*o strc"p( ) compara %'as
str&$gs e retor$a Bero se (orem &g'a&s= se a pr&me&ra str&$g (or ma&or e$t*o o res'ta%o
ser6 'm 1aor pos&t&1o= se a seg'$%a str&$g (or ma&or o res'ta%o ser6 $egat&1o. O'tra
('$)*o %e 'so com'm 5 a strlen( ) 0'e retor$a o compr&me$to %a str&$g.
/* capH_.c */
main()
{
c6ar nomeO1P% fra1eOH?P ;
do {
printf("#n +ara finaliNar o pro2rama di2ite #"1air#" #n");
printf("#n )i2ite 1eu nome (maA!? letra1): ");
2et1(nome);
1trcpB(fra1e% "#n 9om dia ");
1trcat(fra1e% nome);
printf("$1"% fra1e);
printf("#n - nome $1 tem $d letra1 #n"%nome% 1trlen(nome) );
/ L6ile (1trcmp(nome%"1air") C! ?);
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 1) / ,-
# Matr&Bes %e %'as %&me$sXes
Uma matr&B %e %'as %&me$sXes tem 'ma (orma parec&%a a 'ma tabea. Para %e(&$&#a
em C 'se %o&s @$%&ces.
E/: &$t matA%bHcbQc C
Para acessar ca%a pos&)*o %a matr&B basta espec&(&car os %o&s @$%&ces %e1&%ame$te.
E/: matA%b . cb . c E , C
Um 'so com'm para a matr&B %e %'as %&me$sXes 5 como matr&Bes %e str&$gs.
E/: char matMstr&$gb.Rcb,RcC
O seg'$%o @$%&ce 9,R: est6 reac&o$a%o ao tama$ho %e 'ma str&$g e$0'a$to 0'e o
pr&me&ro @$%&ce &$%&ca a 0'a$t&a%e %e str&$gs. Para er 'ma str&$g e g'ar%6#a em 'ma
pos&)*o %a matr&B= %e1e#se passar como pardmetro para a ('$)*o gets( ) o $ome %a
matr&B some$te com o @$%&ce es0'er%o.
E/: gets9 matMstr&$gbHc :C
; perm&t&%o &$&c&a&Bar as matr&Bes= %es%e 0'e eas se+am goba&s 9este co$ce&to ser6
1&sto ma&s a%&a$te $o c'rso:= o' se+a ea 5 %e(&$&%a a$tes %a ('$)*o "ain( ). Po%e#se
%e&/ar %e espec&(&car o @$%&ce (aBe$%o com 0'e o C a'tomat&came$te %&me$s&o$e a
matr&B.
E/: &$t paresb , c E < R= A= Q= P= - 4C
char msgb c E 2!e+a bem 1&$%o2 C
/* capH_0.c */
/*1trin2 2lo9al */
c6ar m12OP ! ")i2ite 0 nome1: ";
main()
{
c6ar nome1O0PO@?P;
int i;
printf("#n $1 #n"%m12);
for(i ! ?; i D 0; i55) 2et1(nome1OiP);
printf("#n Nome1 di2itado1: #n");
for(i ! ?; i D 0; i55)
{
printf("#n Nome $d ! $1 "% i51% nome1OiP);
/
printf("#n#n A 0a. letra do 1o. nome ! $c"%nome1O?POP);
printf("#n A Ha. letra do o. nome ! $c"%nome1O1PO0P);
printf("#n A a. letra do 0o. nome ! $c"%nome1OPO1P);
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 1, / ,-
# Programa de exemplo da Parte !
Este programa 'sa 'ma (orma bem s&mpes %e cr&ptogra(&a 0'e ape$as aterar o 1aor
A!CII %e ca%a etra. L6 %'as matr&Bes %e str&$gs 0'e g'ar%am as paa1ras or&g&$a&s e as
cr&ptogra(a%as. Eas (&cam armaBe$a%as $a mem8r&a para 0'e se+am &sta%as
poster&orme$te. No come)o %o programa 5 'sa%o o coma$%o &define para %e(&$&r
co$sta$tes.
/*
Nome : cripto.c
Autor : (arco1 ,omero
+ro2rama de eAemplo da parte '
*/
/* valore1 con1tante1 */
Qdefine TA(_+AFA<,A @?
Qdefine (AR_+AFA<,A: 0?
Qdefine =SA<* @
main()
{
int n_palavra1 ! ?% e1col6a% parar;
int i % T;
c6ar palavra1O(AR_+AFA<,A:POTA(_+AFA<,AP;
c6ar criptoO(AR_+AFA<,A:POTA(_+AFA<,AP;
printf("#n#n *** *R*(+F- )* =,'+T-.,A&'A *** #n");
L6ile(1)
{
printf("#n#n ( * N ; #n");
printf("#n 1. 'n1erir palavra1");
printf("#n . Fi1tar palavra1");
printf("#n 0. *ncerrar pro2rama");
printf("#n#n *1col6a: ");
1canf("$d$*c"% 4e1col6a);
1Litc6(e1col6a)
{
ca1e 1:
/* te1tar limite1 de palavra1 */
if(n_palavra1 E! (AR_+AFA<,A:)
{
printf("#n Alcancou limite de palavra1.");
eAit(?); /*encerra o pro2rama */
/
printf("#n#n )i2ite #"1air#" para voltar ao menu#n#n");
parar ! ?;
do {
printf("#n )i2ite a palavra a 1er cripto2rafada:#n");
2et1(palavra1On_palavra1P);
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 2. / ,-
/*pa11ar palavra p/ minu1cula */
for(i!?; palavra1On_palavra1POiP ; i55)
{
palavra1On_palavra1POiP! toloLer(palavra1On_palavra1P OiP);
/
if( 1trcmp(palavra1On_palavra1P%"1air") !! ? )
{
parar ! 1;
/
el1e
{
/*copiar a palavra*/
1trcpB( criptoOn_palavra1P% palavra1On_palavra1P );
/*cripto2rafar*/
for(i!?; criptoOn_palavra1POiP ; i55)
{
criptoOn_palavra1POiP ! criptoOn_palavra1POiP 5 =SA<*;
/
printf("#n=ripto2rafia : $1 #n"%criptoOn_palavra1P);
n_palavra155; /*atualiNa o contador de palavra1*/
//*fim el1e*/
/ L6ile(Cparar);
9reaM; /*fim ca1e 1*/
ca1e :
if(n_palavra1 !! ?) printf("#n#n Nao 6a palavra1 #n");
el1e
{
printf("#n +alavra1 =ripto2rafada1 #n#n");
printf("#n -,'.'NAF #t =,'+T-.,A&A)A#n");
for(i!?; iD n_palavra1; i55)
{
printf("#n $"1 #t $1"%palavra1OiP% criptoOiP);
/
printf("#n#n &'( )A F':TA #n#n");
/
9reaM; /*fim ca1e */
ca1e 0:
eAit(?);
9reaM;
default: printf("#n -pcao invalida#n ");
9reaM;
//*fim 1Litc6*/
/ /*fim L6ile*/
//*fim main*/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 21 / ,-
PAR3E I I # !e apro('$%a$%o $a &$g'agem C.
Captulo " : #struturas
A estr't'ra 5 'sa%a para ma$ter +'$tas %&1ersas 1ar&61e&s 0'e tem &$(orma)Xes
reac&o$a%as. A %e(&$&)*o %e 'ma estr't'ra (orma 'm gabar&to 0'e 5 't&&Ba%o para cr&ar
1ar&61e&s %e estr't'ra.
E/:
1truct info {
c6ar tituloO0?P;
c6ar autorO0?P;
int edicao;
/;
Dica: ?epo&s %a cha1e 0'e (echa a %e(&$&)*o %a estr't'ra 5 prec&so coocar o po$to e
1@rg'a.
Para cr&ar 'ma 1ar&61e com essa estr't'ra 'se:
1truct info livro;
Para acessar os eeme$tos &$%&1&%'a&s %a estr't'ra= 't&&Ba#se o e.f ap8s o $ome
%a 1ar&61e %e estr't'ra e em seg'&%a o $ome %a 1ar&61e &$ter$a 0'e %ese+a acessar.
E/: livro.edicao ! 1;
1trcpB( livro.titulo % U+ro2ramando em =V);
/* cap@_1.c */
1truct retan2ulo {
int lar2ura;
int altura;
int area;
/;
main()
{
1truct retan2ulo ret1% ret;
printf("#n)i2ite a lar2ura do 1o. retan2ulo : ");
1canf("$d"%4ret1.lar2ura);
printf("#n)i2ite a altura do 1o. retan2ulo : ");
1canf("$d"%4ret1.altura);
ret1.area ! ret1.lar2ura * ret1.altura;
printf("#n)i2ite a lar2ura do o. retan2ulo : ");
1canf("$d"%4ret.lar2ura);
printf("#n)i2ite a altura do o. retan2ulo : ");
1canf("$d"%4ret.altura);
ret.area ! ret.lar2ura * ret.altura;
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 22 / ,-
printf("#n#nArea do 1o. retan2ulo ! $d"% ret1.area);
printf("#n#nArea do o. retan2ulo ! $d #n"% ret.area);
if(ret1.area !! ret.area)
{
printf("#nA1 area1 do1 retan2ulo1 1ao i2uai1.#n");
/
el1e if(ret1.area E ret.area)
{
printf("#nA area do 1o. retan2ulo e maior.#n");
/
el1e
{
printf("#nA area do o. retan2ulo e maior.#n");
/
/
; m'&to com'm o 'so %e matr&Bes %e estr't'ra. Por e/empo= para %ecarar 'ma
matr&B %e AR &1ros 0'e tem o (ormato %a estr't'ra g&$(oh %e(&$&%o a$ter&orme$te= 'se:
str'ct &$(o &1rosbARcC
Para acessar 'm eeme$to %e 'm %os &te$s %a matr&B basta &$%e/ar o $ome %a
estr't'ra e %epo&s coocar o e.f com o $ome %o eeme$to.
E/: pr&$t(9 gFsh = &1rosbAc.t&t'o : C
?e$tro %e 'ma estr't'ra po%e ha1er matr&Bes e o'tras estr't'ras. Ke+a o seg'&$te
e/empo :
1truct _end {
c6ar ruaOH?P;
int numero;
/;
1truct _tra9 {
c6ar nomeOH?P;
int 1alario;
1truct _end endereco;
/;
1truct _tra9 tra9al6adore1;
tra9al6adore1.endereco.numero ! 1???;
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 23 / ,-
L6 'm coma$%o $a &$g'agem C chama%o t%pedef 0'e 5 'sa%o para %e(&$&r 'm
$o1o $ome para 'm t&po e/&ste$te. !e 1ocN 0'&ser cr&ar 'm $o1o $ome para (oat= e
%epo&s %e(&$&r 'ma 1ar&61e com este $o1o $ome= 'se:
tape%e( (oat &$%&ce C
&$%&ce +'rosC
O tape%e( 5 m'&to 't&&Ba%o para cr&ar $omes para estr't'ras= (ac&&ta$%o as
%e(&$&)Xes %e $o1as 1ar&61e&s. Por co$1e$)*o= o $o1o t&po cr&a%o 'sa etras ma&>sc'as
para %&(ere$c&ar %as 1ar&61e&s.
E/: tBpedef 1truct {
c6ar nomeOH?P ;
c6ar cur1oO0?P ;
int nota1O@P ;
/ AF;N-;
AF;N- turmaO?P;
/* cap@_.c */
Qdefine (AR_AF;N-: 0
tBpedef 1truct {
c6ar nomeOH?P;
int nota;
/ AF;N-;
main()
{
AF;N- turmaO(AR_AF;N-:P;
int i% total;
float media;
for(i!?; iD (AR_AF;N-:; i55)
{
printf("#n#n)i2ite o nome do $do. aluno : "% i51);
2et1(turmaOiP.nome);
printf("#n)i2ite a nota : ");
1canf("$d$*c"%4turmaOiP.nota);
/
total ! ?;
printf("#n >>>>>>>>>>>>>>>>>>>>> #n");
for(i!?; iD (AR_AF;N-:; i55)
{
printf("#nAluno : $"1 #t Nota: $d"%turmaOiP.nome%turmaOiP.nota);
total 5! turmaOiP.nota;
/
media ! (float) total / (AR_AF;N-:;
printf("#n#n A media da1 nota1 e : $.f"% media);
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 24 / ,-
Captulo $ : Ponteiros
Um po$te&ro 5 'm t&po %e 1ar&61e 0'e co$t5m 'm e$%ere)o %e mem8r&a 0'e 5 a
oca&Ba)*o %e 'ma o'tra 1ar&61e. Para %e(&$&r 'ma 1ar&61e como se$%o 'm po$te&ro
%e1e#se coocar o s@mboo e7f a$tes %o $ome %a 1ar&61e.
E/: char 7 po$t.C
&$t 7 po$tAC
(oat 7 po$tHC
L6 %o&s opera%ores espec&a&s %e po$te&ros: e7f e eIf. O eIf retor$a o e$%ere)o
%e mem8r&a %a 1ar&61e= e$0'a$to o e7f %e1o1e o 1aor 0'e est6 g'ar%a%o $o e$%ere)o
0'e o po$te&ro co$t5m. Para po%ermos e$te$%er os po$te&ros= %e1emos ter 'ma &%5&a %a
(orma 0'e as 1ar&61e&s s*o armaBe$a%as $a mem8r&a.
E/:
E$%ere)o
%e mem8r&a
Nome %a
1ar&61e
Co$te>%o
.RR / ,
.R.
.RA po$t .RR
.RH
Co$s&%era$%o e/f 'ma 1ar&61e %o t&po &$te&ro e epo$tf 'm po$te&ro para 'm
&$te&ro= temos os seg'&$tes res'ta%os:
# / retorna , C
# I / retorna .RRC
# po$t retorna .RRC
# 7po$t retorna ,C
/* cap8_1.c */
main()
{
int A;
int *pont;
printf("#n*1tudo do1 ponteiro1#n");
printf("#n)i2ite um valor para R: ");
1canf("$d"% 4A);
pont ! 4A; /* o ponteiro rece9e o endereco de A*/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 2" / ,-
printf("#nA ! $d"%A);
printf("#n*ndereco de memoria de R ! $p"% 4A);
printf("#n=onteudo de pont ! $p"% pont);
printf("#n<alor que e1ta no endereco apontado por pont ! $d"%*pont);
/*alterar o conteudo de A atrave1 do ponteiro */
*pont 5! 1?;
printf("#nR alterado pelo ponteiro ! $d"% A);
/
; poss@1e cop&ar o co$te>%o %e 'm po$te&ro para o'tro 'sa$%o o opera%or %e
atr&b'&)*o eEf.
E/:
&$t /C
&$t 7p.= 7pAC
/ E .RC
p. E I/ C
pA E p.C
pr&$t(9gF%h= 7pA:C /7 &mpr&m&r6 .R 7/
!8 po%emos 'sar %'as opera)Xes ar&tm5t&cas com po$te&ros : + e # . !e 1ocN
somar . ao po$te&ro ee passar6 a apo$tar para a pr8/&ma pos&)*o %e mem8r&a %e acor%o
com o se' t&po. Por e/empo= se epo$tf 5 'm po$te&ro apo$ta$%o para 'm float 9tama$ho
%e Q bates: e tem o co$te>%o %e .RRR= a opera)*o epo$t++f (ar6 o co$te>%o %e epo$tf
m'%ar para .RRQ 0'e 5 a pos&)*o o$%e est6 o pr8/&mo float.
Os po$te&ros est*o %&retame$te reac&o$a%os Ds matr&Bes. O $ome %e 'ma matr&B
sem 'm @$%&ce 5 o e$%ere)o %o pr&me&ro eeme$to e a &$%e/a)*o ('$c&o$a como 'ma
soma ao po$te&ro. Por e/empo= para acessar o terce&ro eeme$to %e 'ma matr&B= 1ocN
po%er&a escre1er :
matbAc o' 79mat + A:
!empre 0'e se %ecarar 'm po$te&ro e $*o atr&b'&r ogo 'm 1aor= 5 aco$seh61e
0'e se+a atr&b'@%o NULL a ee. NULL 5 'ma co$sta$te %e(&$&%a $a b&b&oteca %o C para
represe$tar os po$te&ros $'os. Isto a+'%a $a 1er&(&ca)*o %a 1a&%a%e %os po$te&ros.
E/: &$t 7po$t E NULL C
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 2$ / ,-
Os po$te&ros s*o m'&to 'sa%os para trabahar com aoca)*o %&$dm&ca %e
mem8r&a em C. Este m5to%o %e aoca)*o 5 'sa%a %'ra$te a e/ec')*o %o programa e
perm&te 'm co$troe ma&s e(&c&e$te %a 't&&Ba)*o %a mem8r&a peo programa. As %'as
('$)Xes pr&$c&pa&s %e aoca)*o %&$dm&ca s*o "alloc( ) e free( ). A ('$)*o maoc9 :
recebe como pardmetro o $>mero %e bates 0'e %e1em ser aoca%os e retor$a 'm
po$te&ro sem t&po= &sto s&g$&(&ca 0'e 5 prec&so 'sar 'm 2ast para %e(&$&r o t&po %e
po$te&ro. O e/empo a seg'&r aoca .RR bates %e mem8r&a.
E/:
char 7p C
p E 9 char 7 : maoc9 .RR :C
i'a$%o a mem8r&a 'sa%a $*o (or ma&s $ecess6r&a= 5 prec&so &ber6#a para o
s&stema 'sa$%o a ('$)*o free( ) 0'e recebe 'm po$te&ro como pardmetro.
E/: (ree9 p :C
/* cap8_.c */
main()
{
c6ar *p;
int i;
p ! (c6ar *) malloc(@?);
printf("#n)i2ite 1eu nome em minu1culo : ");
2et1(p);
printf("#n Jem vindo $1"% p);
printf("#n :eu nome em maiu1culo : ");
for(i!?; pOiP; i55) printf("$c"%toupper(*(p5i)));
free(p);
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 2% / ,-
; poss@1e tamb5m %e(&$&r 'm po$te&ro para 'ma estr't'ra. Co$s&%era$%o 0'e h6
'm gabar&to %e estr't'ra chama%o ea'$of= o e/empo a seg'&r %e(&$e 'm po$te&ro para
essa estr't'ra:
str'ct a'$o 7 a'$oMpo$t C
Para acessar os membros %e 'ma estr't'ra a part&r %e 'm po$te&ro= 't&&Bamos
'ma e#Yf ao &$15s %o po$to e.f .
E/: a'$oMpo$t#Y$omeC
a'$oMpo$t#Y$otaC
/* cap8_0.c */
1truct pe11oa {
c6ar nomeOH?P;
int idade;
/;
main()
{
1truct pe11oa pe11% pe1% pe10;
1truct pe11oa *pe1_pont;
int re1p;
1trcpB(pe11.nome% "(arco1");
pe11.idade ! 0;
1trcpB(pe1.nome% ")iana");
pe1.idade ! 1;
1trcpB(pe10.nome% ",enaldo");
pe10.idade ! ";
printf("#n)i2ite um numero de 1 a 0 : ");
1canf("$d"% 4re1p);
1Litc6(re1p)
{
ca1e 1: pe1_pont ! 4pe11; 9reaM;
ca1e : pe1_pont ! 4pe1; 9reaM;
ca1e 0: pe1_pont ! 4pe10; 9reaM;
default:printf("#n opcao invalida");
eAit(?);
/
printf("#nNome ! $1 "% pe1_pont>Enome);
printf("#n'dade ! $d"%pe1_pont>Eidade);
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 2) / ,-
Captulo %: &un'(es
As ('$)Xes s*o os bocos %e co$str')*o %e 'm programa em C. Ca%a ('$)*o tem
'm $ome e co$t5m %&1ersos coma$%os C. Eas s*o 'sa%as para %&1&%&r 'm programa
gra$%e em %&1ersas partes me$ores.
E/:
main( )
{
te1te( );
/
te1te( )
{
printf(U&uncionaV);
/
No e/empo ac&ma 5 %e(&$&%a 'ma ('$)*o chama%a teste( ). ?e$tro %o "ain( )
s&mpesme$te 5 (e&ta 'ma chama%a a esta ('$)*o. As ('$)Xes tamb5m ace&tam
arg'me$tos= 0'e s*o 1aores passa%os D ('$)*o.
E/:
main( )
{
int valor;
printf(U)i2ite um numero : V);
1canf(U$dV% 4valor);
cu9o( valor );
/
cu9o( int A )
{
printf(U$d ao cu9o ! $dV% A% A * A * A);
/
As ('$)Xes tamb5m po%em retor$ar 1aores 'sa$%o o coma$%o return.
E/:
ma&$9 :
<
&$t res'ta%oC
res'ta%o E soma9 ,= H :C
pr&$t(9gF%h= res'ta%o:C
4
soma9 &$t /= &$t a:
<
ret'r$ / + a C
4
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 2, / ,-
/* capK_1.c */
main()
{
int A% B;
int re1ultado;
printf("#n +-T*N='A#n");
printf("#n)i2ite a 9a1e : ");
1canf("$d"% 4A);
printf("#n)i2ite o eApoente : ");
1canf("$d"% 4B);
re1ultado ! potencia(A% B);
printf("#n$d elevado a $d ! $d"% A% B% re1ultado);
/
potencia(int 9a1e% int eAp)
{
int total !1;
L6ile(eAp E ?)
{
total *! 9a1e;
eAp>>;
/
return total;
/
As 1ar&61e&s %e(&$&%as %e$tro %e 'ma ('$)*o s*o chama%as %e 1ar&61e&s oca&s.
Eas s*o cr&a%as 0'a$%o &$&c&a o processame$to %a ('$)*o o$%e eas est*o e s*o
%estr'@%as 0'a$%o a ('$)*o term&$a= %essa (orma as 1ar&61e&s oca&s $*o g'ar%am
1aores e$tre as e/ec')Xes %a ('$)*o. Uma 1ar&61e oca $*o po%e ser acessa%a (ora %a
('$)*o= &sto a+'%a $a %&1&s*o %o programa em bocos. As 1ar&61e&s 0'e s*o %ecara%as
(ora %e 0'a0'er ('$)*o 9gerame$te $o &$@c&o %o programa: s*o chama%as %e 1ar&61e&s
goba&s e po%em ser acessa%as em 0'a0'er parte %o programa. L6 'm mo%&(&ca%or
chama%o static 0'e se (or ap&ca%o Ds 1ar&61e&s oca&s= (aB com 0'e eas g'ar%em os
se's 1aores mesmo ap8s o e$cerrame$to %a ('$)*o.
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 3. / ,-
/* capK_.c */
int 2lo9al ! ?;
main()
{
int i% c1% c;
printf("#n=-NT1 >>> =-NT >>> .F-JAF #n");
for(i!?; iD@; i55)
{
c1 ! cont1();
c ! cont();
printf("#n $d >>> $d >>> $d #n"%c1% c% 2lo9al);
/
/
cont1()
{
int A!?;
A55;
2lo9al55;
return A;
/
cont()
{
1tatic int A!?;
A55;
2lo9al55;
return A;
/
L6 %'as (ormas %e passar arg'me$tos para ('$)Xes= por 1aor e por re(erN$c&a. O
pr&me&ro m5to%o cop&a o 1aor %e 'm arg'me$to para a 1ar&61e %e pardmetro %a
('$)*o= %e (orma 0'e 0'a0'er atera)*o 0'e (orem (e&tas $os pardmetros %e$tro %a
('$)*o $*o a(etar*o a 1ar&61e or&g&$a 0'e (o& passa%a D ('$)*o. O seg'$%o m5to%o
cop&a o e$%ere)o %e 'm arg'me$to para a 1ar&61e %e pardmetro= &sto s&g$&(&ca 0'e as
atera)Xes 0'e (orem (e&tas $os pardmetros %e$tro %a ('$)*o a(etar*o a 1ar&61e 0'e (o&
'sa%a 0'a$%o a ('$)*o (o& chama%a. Este m5to%o %e re(erN$c&a 5 &mpeme$ta%a 'sa$%o
po$te&ros.
/* capK_0.c */
main()
{
int A !?;
por_valor(A);
printf("#n=6amada por valor. A ! $d"% A );
por_referencia(4A);
printf("#n=6amada por referencia. A ! $d"% A );
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 31 / ,-
por_valor(int a)
{
a ! 1?;
/
por_referencia( int * a)
{
*a ! 1?;
/
A (orma %e passagem %e arg'me$tos por re(erN$c&a 5 m'&to 't&&Ba%o com
matr&Bes e estr't'ras= embra$%o 0'e o $ome %e 'ma matr&B sem o @$%&ce 5 'm po$te&ro
para o .j eeme$to %a matr&B. A 1a$tagem %e 'sar a passagem por re(erN$c&a com
estr't'ras 5 0'e ape$as 'm e$%ere)o 5 passa%o D ('$)*o= ao &$15s %e cop&ar to%a a
estr't'ra $a mem8r&a.
/* capK_H.c */
1truct pe11oa {
c6ar nomeOH?P;
c6ar telO1?P;
c6ar endOH?P;
/;
main()
{
1truct pe11oa p1;
1trcpB(p1.nome% "marco1 romero");
1trcpB(p1.tel% "8>K1K8");
1trcpB(p1.end% "Av. )r. &reita1 @8");
maiu1culo(p1.nome);
imprime_e1tru(4p1);
/
maiu1culo(c6ar *teAto)
{
int i;
for(i!?; teAtoOiP; i55)
{
teAtoOiP ! toupper(teAtoOiP);
/
/
imprime_e1tru(1truct pe11oa *p)
{
printf("#nNome ! $1"% p>Enome);
printf("#nTel ! $1"% p>Etel);
printf("#n*nd ! $1"% p>Eend);
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 32 / ,-
O 1aor pa%r*o %e retor$o %e 'ma ('$)*o 5 int o' $e$h'm. !e 'ma ('$)Do
%e1o1e 'm o'tro t&po 9como float: 5 prec&so %e&/ar &sto e/p@c&to para o programa
atra15s %o 'so %e prot8t&pos %e ('$)*o 0'e espec&(&cam o t&po %e retor$o e os t&pos %os
pardmteros. Esses prot8t&pos s*o &$ser&%os ogo $o come)o %o programa.
E/:
/7 protot&po 7/
(oat %&1&sao9(oat /= (oat a:C
ma&$9 :
<
(oat aE,= bEA= resC
res E %&1&sao9a= b:C
pr&$t(92Res'ta%o E F(2= res:C
4
(oat %&1&sao9(oat /= (oat a:
<
ret'r$ / / aC
4
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 33 / ,-
Captulo ) : *r+uivos
Os ar0'&1os s*o 'sa%os para g'ar%ar %a%os %e (orma perma$e$te. L6 %o&s t&pos
%e ar0'&1os: em mo%o te/to e em mo%o b&$6r&o.
Os ar0'&1os em mo%o te/to s*o orga$&Ba%os como se0SN$c&a %e caracteres em
&$has 0'e s*o e$cerra%as por caracteres WG$W. Neste (ormato po%em ha1er c8%&gos %e
(ormata)*o (aBe$%o com 0'e o $>mero %e caracteres &%os $*o se+am &g'a&s D0'ee
e$co$tra%o $o ar0'&1o.
Os ar0'&1os em mo%o b&$6r&o 5 'ma se0SN$c&a %e bates 0'e tem
correspo$%N$c&a %e 'm#para#'m com os caracteres &%os= po&s ee $*o poss'& $e$h'm
t&po %e c8%&go %e (ormata)*o.
Para 'sarmos as ('$)Xes 0'e &%am com os ar0'&1os= prec&samos &$ser&r o
ar0'&1o cabe)aho 2st%&o.h2 $o come)o %o programa 'sa$%o o coma$%o &include= po&s
ee co$t5m &$(orma)Xes sobre as estr't'ras e ('$)Xes %e ar0'&1os.
E/: k&$c'%e 2st%&o.h2
Para ma$&p'ar 'm ar0'&1o 5 prec&so 'sar 'm po$te&ro %e ar0'&1o 0'e 5 'ma
1ar&61e %e po$te&ro %o t&po JILE %e(&$&%a em 2st%&o.h2.
E/: JILE 7(pC
A ('$)*o 't&&Ba%a para abr&r 'm ar0'&1o 5 a 2(ope$9 :2 0'e recebe como
arg'me$tos o $ome %o ar0'&1o= 0'e po%e ter a espec&(&ca)*o %e %&ret8r&o= e o mo%o
como ee ser6 aberto. A tabea a seg'&r mostra os mo%os ma&s com'$s.
mo%o
te/to
mo%o
b&$6r&o
opera)*o
2r2 2rb2 Abre ar0'&1o para e&t'ra
2U2 2Ub2 Abre ar0'&1o para gra1a)*o
2a2 2ab2 A$e/a D 'm ar0'&1o +6 e/&ste$te
E/: (p E (ope$92teste.t/t2= 2U2:C
Para gra1ar caracteres em 'm ar0'&1o aberto 5 't&&Ba%a a ('$)*o putc( ).
E/: p'tc9 WmW = (p :C
Para er caracteres %e 'm ar0'&1o aberto 5 't&&Ba%a a ('$)*o getc( ).
E/: char etraC
etra E getc9 (p :C
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 34 / ,-
; m'&to &mporta$te (echar o ar0'&1o ass&m 0'e a s'a opera)*o se+a (&$a&Ba%a. A ('$)*o
(cose9 : e/ec'ta esta tare(a.
E/: (cose9 (p :C
L6 'ma o'tra ('$)*o 't&&t6r&a chama%a feof( ) 0'e %etecta se o (&m %o ar0'&1o (o&
aca$)a%o.
E/: &( 9 (eo(9 (p : : pr&$t(9 2(&m %e ar0'&1o 2:C
/* cap"_1.c */
Qinclude "1tdio.6"
main()
{
&'F* *fp;
int e1col6a% i;
c6ar teAtoO@?P;
printf("#n Arquivo em modo teAto #n#n#n");
printf("#n1. .ravar Arquivo");
printf("#n. Fer Arquivo");
printf("#n -pcao : ");
1canf("$d$*c"%4e1col6a);
if(e1col6a !! 1)
{
fp ! fopen("te1te.tAt"%"L");
printf("#n)i2ite um nome : ");
2et1(teAto);
for(i!?; teAtoOiP; i55) putc(teAtoOiP% fp);
fclo1e(fp);
printf("#n:alvo em te1te.tAt");
/
el1e
if(e1col6a !! )
{
fp ! fopen("te1te.tAt"%"r");
if (fp !! N;FF) printf("#n*rro ao a9rir arquivo");
el1e
{
printf("#n =onteudo do arquivo : #n");
L6ile(Cfeof(fp)) printf("$c"% 2etc(fp) );
/
/
el1e
{
printf("#n-pcao invalida.");
/
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 3" / ,-
As ('$)Xes get( ) e put( ) trabaham com 1aores &$te&ros e ('$c&o$am %a
mesma (orma 0'e getc( ) e get( ). A ('$)*o fputs( ) escre1e str&$gs em 'm ar0'&1o
e$0'a$to 0'e a fgets( ) N str&$gs a part&r %e 'm ar0'&1o. A ('$)*o fgets( ) recebe como
arg'me$to o compr&me$to %a str&$g 0'e %e1e ser &%a= ea co$c'&r6 0'a$%o at&$g&r este
compr&me$to o' 0'a$%o e$co$trar 'm WG$W.
E/: (p'ts92te/to2= (p:C
char $omebQRcC
(gets9$ome= QR= (p:C
L6 tamb5m as 1ersXes %e pr&$t(9 : / sca$(9 : 0'e trabaham com ar0'&1os= se's
$omes s*o fprintf( ) e fscanf( ).
E/: (pr&$t(9(p= 2F%2= 1aor:C
(sca$(9(p= 2F%2= I1aor:C
As ('$)Xes fread( ) e frite( ) trabaham com bocos %e %a%os e s*o as ma&s
't&&Ba%as 0'a$%o se ma$&p'a m'&tos %a%os.
E/: &$t saar&osb,RcC
/7 pree$cher saar&os e abr&r ar0'&1os p/ escr&ta... 7/
(Ur&te9saar&os= s&Beo(9saar&os:= .= (p:C
O coma$%o si#eof( ) retor$a a 0'a$t&%a%e %e bates 0'e 'm t&po co$t5m. Para er
%e 1ota o boco %e %a%os 'se o fread( )'
E/: /7 abr&r ar0'&1o p/ e&t'ra... 7/
(rea%9saar&os= s&Beo(9saar&os:= .= (p:C
L6 'ma ('$)*o 0'e retor$a a pos&)*o %o ar0'&1o para o &$@c&o= esta ('$)*o 5 a
reind( )= para 's6#a= basta passar o po$te&ro para o ar0'&1o. A ('$)*o re"o(e( )
apaga 'm ar0'&1o= ea recebe como pardmetro o $ome %o ar0'&1o 90'e po%e ter os
%&ret8r&os:.
E/: remo1e92teste.t/t2:C
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 3$ / ,-
/* cap"_.c */
Qinclude "1tdio.6"
1truct 6eroi {
c6ar nomeOH?P;
int ener2ia;
int moeda1;
/;
main()
{
int e1col6a;
1truct 6eroi 61;
&'F* *fp;
printf("#n Arquivo em modo 9inario #n#n#n");
printf("#n1. .ravar Arquivo");
printf("#n. Fer Arquivo");
printf("#n -pcao : ");
1canf("$d$*c"%4e1col6a);
1Litc6(e1col6a)
{
ca1e 1: /* preenc6er informacoe1 do 6eroi */
1trcpB(61.nome% "(e1tre");
61.ener2ia ! 1??;
61.moeda1 ! 1@;
/* 1alvar em arquivo */
fp ! fopen("6eroi.tAt"%"L9");
if(fp !! N;FF)
{
printf("#n erro ao a9rir arquivo");
eAit(?);
/
el1e
{
fLrite(461% 1iNeof(1truct 6eroi)% 1% fp);
fclo1e(fp);
printf("#n :alvo em 6eroi.tAt");
/
9reaM;
ca1e : fp ! fopen("6eroi.tAt"%"r9");
if(fp !! N;FF)
{
printf("#n erro ao a9rir arquivo");
eAit(?);
/el1e
{
fread(461% 1iNeof(1truct 6eroi)% 1% fp);
fclo1e(fp);
printf("#n )ado1 do Seroi : #n");
printf("#n Nome : $1"% 61.nome);
printf("#n *ner2ia : $d"% 61.ener2ia);
printf("#n (oeda1 : $d"% 61.moeda1);
/
9reaM;
default: printf("#n-pcao invalida");
/
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 3% / ,-
# Programa de #xemplo da Parte !!
O programa seg'&$te mostra o %ese$1o1&me$to %e 'ma age$%a %e e$%ere)os
bem s&mpes. Os %a%os s*o armaBe$a%as em 'ma matr&B %e estr't'ra e h6 a
poss&b&&%a%e %e gra1ar e rec'perar as &$(orma)Xes em ar0'&1o. As %&1ersas opera)Xes
%o programa s*o %&1&%&%os em ('$)Xes para (ac&&tar a co%&(&ca)*o.
/*
Nome : a2enda.c
Autor : (arco1 ,omero
+ro2rama de eAemplo da parte ''
*/
Qinclude "1tdio.6"
/* valore1 con1tante1 */
Qdefine (AR_'T*N: 1??
tBpedef 1truct {
c6ar nomeO0?P;
c6ar telefoneO1@P;
c6ar enderecoO0?P;
/ 'N&-;
'N&- a2endaO(AR_'T*N:P;
int n_iten1 ! ?;
main()
{
int e1col6a;
printf("#n#n *** *R*(+F- )* A.*N)A *** #n");
L6ile(1)
{
printf("#n#n ( * N ; #n");
printf("#n 1. *ntrar dado1");
printf("#n . Fi1tar dado1");
printf("#n 0. :alvar");
printf("#n H. =arre2ar");
printf("#n @. *ncerrar pro2rama");
printf("#n#n *1col6a: ");
1canf("$d$*c"% 4e1col6a);
1Litc6(e1col6a)
{
ca1e 1:
*ntrar_)ado1();
9reaM;
ca1e :
Fi1tar_)ado1();
9reaM;
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 3) / ,-
ca1e 0:
:alvar();
9reaM;
ca1e H:
=arre2ar();
9reaM;
ca1e @:
eAit(?);
9reaM;
default: printf("#n -pcao invalida#n ");
9reaM;
//*fim 1Litc6*/
/ /*fim L6ile*/
//*fim main*/
*ntrar_)ado1()
{
c6ar re1p;
do {
if(n_iten1 E! (AR_'T*N:)
{
printf("#nA2enda c6eia");
return;
/
printf("#n Nome : ");
2et1(a2endaOn_iten1P.nome);
printf("#n Telefone : ");
2et1(a2endaOn_iten1P.telefone);
printf("#n *ndereco : ");
2et1(a2endaOn_iten1P.endereco);
n_iten155;
printf("#n =ontinuar(1/n) : ");
1canf("$c$*c"% 4re1p);
/ L6ile(re1p !! 717 GG re1p !! 7:7);
/
Fi1tar_)ado1()
{
int i;
if(n_iten1 !! ?)
{
printf("#n A2enda vaNia.");
return;
/
for(i!?; i D n_iten1; i55)
{
printf("#n $1 >>> $1 >>> $1"% a2endaOiP.nome%
a2endaOiP.telefone% a2endaOiP.endereco);
/
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 3, / ,-
:alvar()
{
&'F* *fp;
if(n_iten1 !! ?)
{
printf("#n A2enda vaNia.");
return;
/
fp ! fopen("dado1.9d"% "L9");
if(fp!!N;FF)
{
printf("#n *rro ao a9rir arquivo.");
return;
/
//1alvar o numero de iten1 primeiro
putL(n_iten1% fp);
//1alvar todo1 o1 dado1 em um unico 9loco
fLrite(a2enda% 1iNeof('N&-)% n_iten1% fp);
fclo1e(fp);
printf("#n :alvo em dado1.9d");
/
=arre2ar()
{
&'F* *fp;
fp ! fopen("dado1.9d"% "r9");
if(fp!!N;FF)
{
printf("#n *rro ao a9rir arquivo.");
return;
/
//ler o numero de iten1 primeiro
n_iten1 ! 2etL(fp);
//recuperar todo1 o1 dado1 em um unico 9loco
fread(a2enda% 1iNeof('N&-)% n_iten1% fp);
fclo1e(fp);
printf("#n )ado1 recuperado1.");
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 4. / ,-
Parte III : Programa)*o Or&e$ta%a a Ob+etos com C++
Captulo , : Primeiros programas em C--
A &$g'agem C++ (o& cr&a%a com o ob+et&1o %e &$corporar D &$g'agem C os
co$ce&tos %e programa)*o or&e$ta%a a ob+etos. A5m %&sso= ea %e1er&a ser totame$te
compat@1e com programas em C= e ser t*o r6p&%o 0'a$to a &$g'agem C.
A &$g'agem C++ 5 co$s&%era%a h@br&%a por0'e perm&te a programa)*o %e (orma
estr't'ra%a 9como 5 (e&to em C: e a programa)*o or&e$ta%a a ob+etos. Neste cap@t'o
1eremos %&1ersos $o1os t8p&cos %e C++ mas 0'e $*o est*o %&retame$te reac&o$a%os a
or&e$ta)*o a ob+etos.
// cap3_1.cpp
Qinclude "io1tream.6"
con1t int (AR_N;( ! 0;
void main()
{
cout DD "#n Jem vindo ao =55 #n";
cout DD ")i2ite " DD (AR_N;( DD " numero1 : ";
int numero1O(AR_N;(P;
for(int i!?; i D (AR_N;(; i55)
{
cin EE numero1OiP;
/
cout DD "#n -1 quadrado1 do1 numero1 : #n";
for(i!?; i D (AR_N;(; i55)
{
cout DD numero1OiP DD " >>> " DD numero1OiP * numero1OiP DD endl;
/
/
Na pr&me&ra &$ha 5 'sa%a 'ma (orma %e come$t6r&o= t'%o 0'e 1&er %epo&s %e
%'as barras l//l at5 o (&$a %a &$ha 5 co$s&%era%o come$t6r&o. Em seg'&%a 5 &$c'@%o o
ar0'&1o %e cabe)aho g&ostream.hh 0'e 5 $ecess6r&o para as $o1as ('$)Xes %e e$tra%a e
sa@%a. Po%e#se %e(&$&r 1aores co$sta$tes 'sa$%o o coma$%o gconsth a$tes %a %e(&$&)*o
%a 1ar&61e. O C++ re0'er 0'e se+am espec&(&ca%os os pardmetros e 1aor %e retor$o %e
'ma ('$)*o= por &sso a ('$)*o ma&$9 : est6 %ecara%a como (oid "ain( )) se$%o 0'e
(oid &$%&ca 0'e $*o e/&ste. ; perm&t&%a a %e(&$&)*o %e 1ar&61e&s em 0'a0'er pos&)*o %a
('$)*o. O C++ 'sa 'm $o1o meca$&smo %e e$tra%a e sa@%a %e &$(orma)Xes= 0'e s*o os
ob+etos cout e cin'
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 41 / ,-
// cap3_.cpp
Qinclude "io1tream.6"
//prototipo1 da1 funcoe1
void inicia_var(int 4var% int valor ! ?);
void inicia_var(float 4var% float valor ! ?.?);
void main()
{
int var_inteira;
float var_fracionaria;
inicia_var(var_inteira% @);
cout DD "#n var_inteira ! " DD var_inteira;
inicia_var(var_inteira);
cout DD "#n var_inteira ! " DD var_inteira;
inicia_var(var_fracionaria% 0.K@);
cout DD "#n var_fracionaria ! " DD var_fracionaria;
/
void inicia_var(int 4 var% int valor)
{
var ! valor;
/
void inicia_var(float 4 var% float valor)
{
var ! valor;
/
C++ (or$ece $o1as caracter@st&cas Ds ('$)Xes. Os prot8t&pos %as ('$)Xes
passaram a ser obr&gat8r&as para 0'e o C++ possa se cert&(&car %e 0'e eas est*o se$%o
chama%as %e (orma correta. ; poss@1e passar 'ma 1ar&61e por re(erN$c&a 9'sa$%o o lIl
$a %ecara)*o %o pardmetro: (aBe$%o com 0'e a 1ar&61e or&g&$a so(ra as atera)Xes
(e&tas %e$tro %a ('$)*o. L6 tamb5m o co$ce&to %e sobrecarga %e ('$)*o 0'e perm&te 0'e
16r&as ('$)Xes te$ham o mesmo $ome= %es%e 0'e te$ham arg'me$tos %e t&pos
%&(ere$tes o' $>meros %&(ere$tes %e arg'me$tos. J&$ame$te= h6 a op)*o %e atr&b'&r
1aores pa%rXes D arg'me$tos %as ('$)Xes= estes 1aores %e1em ser espec&(&ca%os $o
prot8t&po %a ('$)*o.
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 42 / ,-
Captulo 1.: Classes e O/0etos
A programa)*o or&e$ta%a a ob+etos 5 basea%a $o co$ce&to %e casses. Uma casse
%escre1e os atr&b'tos e a)Xes 0'e os ob+etos poss'em. Por e/empo= po%er@amos ter 'ma
casse chama%a gPessoah e %&1ersos ob+etos %esta casse como gMarcos= gRobertoh. A
%e(&$&)*o %e 'ma casse 5 m'&to semeha$te D %e(&$&)*o %e 'ma estr't'ra= por5m 5
poss@1e %e(&$&r ('$)Xes %e$tro %a casse.
// cap1?_1.cpp
Qinclude "io1tream.6"
cla11 retan2ulo {
pu9lic :
int altura;
int lar2ura;
int area()
{
return altura * lar2ura;
/
/;
void main()
{
retan2ulo r1% r;
r1.altura ! @;
r1.lar2ura ! 0;
r.altura ! ";
r.lar2ura ! H;
cout DD "#n Area do retan2ulo 1 ! " DD r1.area();
cout DD "#n Area do retan2ulo ! " DD r.area();
/
O C++ perm&te 0'e as ('$)Xes %as casses se+am %e(&$&%as (ora %a %ecara)*o %a
casse= basta$%o coocar 'm prot8t&po %a ('$)*o $a casse. A 1a$tagem %&sto 5 0'e (&ca
(6c& %e 1&s'a&Bar to%as as ('$)Xes 0'e perte$ce D casse.
; poss@1e acessar as ('$)Xes %a casse a part&r %e po$te&ros %a casse 'sa$%o o
opera%or l#Yl= %a mesma (orma 0'e 'm po$te&ro %e estr't'ra acessa os %a%os %a
estr't'ra.
As casses tNm 'ma ('$)*o espec&a chama%a %e *onstrutor 0'e 5 'sa%o para
&$&c&ar se's %a%os. O co$str'tor 5 chama%o a'tomat&came$te 0'a$%o 'm ob+eto 5
cr&a%o.
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 43 / ,-
// cap1?_.cpp
Qinclude "io1tream.6"
cla11 relo2io {
pu9lic:
relo2io();
void aTu1ta_6ora(int 6% int m!?% int 1!?);
void mo1tra_6ora();
int 6ora;
int minuto;
int 1e2undo;
/;
relo2io::relo2io()
{
6ora ! 1;
minuto ! ?;
1e2undo ! ?;
/
void relo2io::aTu1ta_6ora(int 6% int m% int 1)
{
if(6 E! ? 44 6 D H) 6ora ! 6;
if(m E!? 44 m D 8?) minuto ! m;
if(1 E!? 44 1 D 8?) 1e2undo ! 1;
/
void relo2io::mo1tra_6ora()
{
cout DD 6ora DD " 6ora1% "
DD minuto DD " minuto1% "
DD 1e2undo DD " 1e2undo1.#n";
/
void main()
{
relo2io r1;
relo2io * r_ptr; //ponteiro
cout DD "#nSora definida no =on1trutor :";
r1.mo1tra_6ora();
r1.aTu1ta_6ora("% H@% 0?);
cout DD "#nSora no r1 :";
r1.mo1tra_6ora();
r_ptr ! 4r1; //o ponteiro rece9e o endereco de r1
r_ptr>EaTu1ta_6ora(1@% 0?);
cout DD "#nSora no r_ptr : ";
r_ptr>Emo1tra_6ora();
cout DD "#nSora no r1 : ";
r1.mo1tra_6ora();
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 44 / ,-
Os membros %e 'ma casse po%em ser espec&(&ca%os como proteg&%os
9protected:= (aBe$%o com 0'e ees $*o possam ser acessa%os (ora %a casse. O ob+et&1o
%&sso 5 &m&tar a &$ter(ace %a casse e tor$ar a casse respo$s61e por co$troar o 'so %e
se's %a%os e/ter$os. Po%e#se espec&(&car tamb5m o $@1e %e acesso como pr&1at&1o
9pri(ate:. A %&(ere$)a e$tre protecte% e pr&1ate se tor$ar6 cara $o cap@t'o sobre
hera$)a.
E1e$t'ame$te= po%e ocorrer 0'e 'ma ('$)*o 0'e $*o (aB parte %e 'ma casse
prec&se acessar os membros proteg&%os %esta casse. ; poss@1e (aBer &sso %ecara$%o $a
casse 0'e a ('$)*o 5 am&ga 9friend:.
// cap1?_0.cpp
Qinclude "io1tream.6"
cla11 empre2ado {
friend void aumentar_1alario(empre2ado 4 e% int valor);
pu9lic:
empre2ado()
{
1alario ! 1??;
/
int vlr_1alario()
{
return 1alario;
/
protected:
int 1alario;
/;
void aumentar_1alario(empre2ado 4 e% int valor)
{
//o ace11o a variavel 1alario e permitido aqui
//por que e1ta funcao e friend da cla11e empre2ado
e.1alario 5! valor;
/
void main()
{
empre2ado emp;
//a lin6a 1e2uinte iria 2erar um erro :
// emp.1alario ! 1@??;
cout DD "#n :alario ! " DD emp.vlr_1alario();
aumentar_1alario(emp% ??);
cout DD "#n Novo 1alario ! " DD emp.vlr_1alario();
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 4" / ,-
Captulo 11 : Mel1orando as 2lasses
O co$str'tor %e 'ma casse 5 'm t&po espec&a %e ('$)*o= se$%o ass&m ee po%e
receber arg'me$tos= po%e ser sobrecarrega%o e ter 1aores pa%rXes. Os arg'me$tos s*o
passa%os $o mome$to %a cr&a)*o %a 1ar&61e.
Po%e#se 't&&Bar o coma$%o static a$tes %a %e(&$&)*o %e 'ma 1ar&61e $a casse.
Isto (aB com 0'e o co$te>%o %esta 1ar&61e se+a com'm a to%os os ob+etos= o' se+a= ea
$*o perte$ce a $e$h'm ob+eto= mas s&m a casse.
?a mesma (orma 0'e e/&ste o co$str'tor= h6 o'tra ('$)*o espec&a co$hec&%o
como %estr'&%ores 0'e s*o chama%os a'tomat&came$te 0'a$%o os ob+etos s*o
(&$a&Ba%os. O $ome %o %estr'tor 5 o $ome %a casse com o s@mboo %e $ega)*o l_l $a
(re$te.
// cap11_1.cpp
Qinclude "io1tream.6"
Qinclude "1trin2.6"
cla11 Aluno {
pu9lic :
//con1trutor
Aluno(c6ar * p_nome ! ":em nome")
{
1trcpB(nome% p_nome);
n_aluno155;
/
//de1truidor
WAluno()
{
n_aluno1>>;
/
int num_aluno1()
{
return n_aluno1;
/
c6ar nomeOH?P;
protected:
1tatic int n_aluno1;
/;
//alocar memoria p/ mem9ro 1tatic
int Aluno::n_aluno1 ! ?;
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 4$ / ,-
void fn()
{
Aluno aH(")iana");
cout DD "#n Aluna :" DD aH.nome;
cout DD "#nNumero de aluno1 ! " DD aH.num_aluno1();
/
void main()
{
Aluno a1;
Aluno a("(arco1");
cout DD "#n =riado aluno1 : " DD a1.nome DD " e " DD a.nome;
cout DD "#n Numero de aluno1 ! "DD a1.num_aluno1();
Aluno a0("Andre");
cout DD "#n =riado o " DD a0.nome;
cout DD "#n Numero de aluno1 ! "DD a1.num_aluno1();
fn();
cout DD "#n Numero de aluno1 ! "DD a1.num_aluno1();
/
O C++ (or$ece $o1os meca$&smo para trabahar com aoca)*o %e mem8r&a: ne
para aocar a mem8r&a e delete para &ber6#a.
E/:
A'$o 7 pMa'$oC
pMa'$o E $eU A'$oC
%eete pMa'$oC
; poss@1e aocar matr&Bes %a seg'&$te (orma:
A'$o 7pMa'$oC
pMa'$o E $eU a'$ob.RcC // aoca mem8r&a p/ .R a'$os
%eete bc pMa'$oC // &bera a mem8r&a %e to%a a matr&B
?e1e#se ter 'm c'&%a%o espec&a com casses 0'e trabaham com aoca)*o
%&$dm&ca %e mem8r&a. O c8%&go para &bera)*o %e mem8r&a %e1e ser posto $o
destruidor %a casse. !empre 0'e (or prec&so passar 'm ob+eto para 'ma ('$)*o= passe#
o por re(erN$c&a= e e1&te 'sar o s&$a %e atr&b'&)*o lEl e$tre casses.
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 4% / ,-
// cap11_.cpp
Qinclude "io1tream.6"
Qinclude "1trin2.6"
cla11 =liente {
pu9lic :
c6ar * nome;
//con1trutor
=liente( c6ar * _nome ! "1em nome")
{
nome ! neL c6arO 1trlen(_nome) 5 1 P;
1trcpB(nome% _nome);
/
//de1truidor
W=liente()
{
deleteOP nome;
/
/;
void main()
{
=liente c1("Xona1")% c("(ateu1");
cout DD "#n=liente 1 : " DD c1.nome;
cout DD "#n=liente : " DD c.nome;
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 4) / ,-
Captulo 12 : 3eran'a e Polimorfismo
+ ,erana:
A hera$)a 5 'm meca$&smo 0'e perm&te 0'e 'ma $o1a casse her%e os atr&b'tos
%e 'ma casse +6 e/&ste$te. Este 5 'm co$ce&to ('$%ame$ta %a or&e$ta)*o a ob+etos e
est6 %&retame$te &ga%o D re't&&Ba)*o %e so(tUare.
E/:
cass 1e&c'o
<
//%e(&$&)*o...
4C
cass carro: p'b&c 1e&c'o
<
//%e(&$&)*o %as $o1as caracter@st&cas %e carro...
4C
cass moto: p'b&c 1e&c'o
<
//%e(&$&)*o %as $o1as caracter@st&cas %e moto...
4C
A casse (eiculo 5 chama%a %e casse base= ea poss'& some$te &$(orma)Xes e
('$)Xes 0'e s*o com'$s a to%os os t&pos %e 1e@c'os= por e/empo= gpesoh= gmo1er9 :h.
A casse carro her%a as propr&e%a%es %a casse 1e&c'o= o' se+a= os atr&b'tos %a casse
carro s*o a0'ees 0'e est*o %e(&$&%os %e$tro %a casse carro ma&s os 0'e est*o %e(&$&%os
$a casse 1e&c'o. Po%emos %&Ber tamb5m 0'e 'm carro ; UM 1e@c'o. ?a mesma
(orma= a casse "oto her%a %a casse 1e@c'os= e$t*o 'ma moto ; UM 1e@c'o.
Esta rea)*o 5 m'&to &mporta$te. !'po$hamos 0'e temos 'ma ('$)*o 0'e receba
'm g1e@c'oh como arg'me$to= po%er@amos e$t*o passar 1ar&61e&s %a casse 1e@c'o= %a
casse carro= %a casse moto= o' %e 0'a0'er casse 0'e her%e %e 1e@c'o.
*A:
void fn( veiculo 4 v )
{
// proce11amento...
/
void main( )
{
veiculo v1;
carro ferrari;
moto 1uNuMi;
fn( v1 );
fn( ferrari );
fn( 1uNuMi );
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 4, / ,-
L6 'm o'tro t&po %e rea)*o e$tre casses chama%o %e *o"posio= 0'e $*o
%e1e ser co$('$%&%o com a Lera$)a. A e/press*o 0'e est6 &ga%a D Compos&)*o 5 a
g3EM UMh= por e/empo= 'm carro 3EM UM motor.
E/: cla11 carro: pu9lic veiculo
{
motor m;
/
// cap1_1.cpp
Qinclude "io1tream.6"
cla11 +onto {
pu9lic:
//con1trutor
+onto(int _A ! ?% int _B !?)
{
A ! _A;
B ! _B;
/
void def_ponto(int _A% int _B)
{
A ! _A;
B ! _B;
/
int vlr_A()
{
return A;
/
int vlr_B()
{
return B;
/
void imprime()
{
cout DD"#n +-NT- :";
cout DD" O " DD A DD "%" DD B DD" P#n";
/
protected:
int A% B;
/;
cla11 ,eta : pu9lic +onto
{
pu9lic:
//con1trutor
,eta(int Af!?% int Bf!?% int Ai!?% int Bi!?): +onto(Ai% Bi)
{
A_final ! Af;
B_final ! Bf;
/
void def_final(int Af% int Bf)
{
A_final ! Af;
B_final ! Bf;
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 ". / ,-
int vlr_A_final()
{
return A_final;
/
int vlr_B_final()
{
return B_final;
/
void imprime()
{
cout DD "#n ,*TA : ";
cout DD" O " DD A DD "%" DD B DD" P >>> O "
DD A_final DD "%" DD B_final DD" P#n";
/
protected:
int A_final% B_final;
/;
void main()
{
+onto p1% p(@%);
,eta r1% r("%H)% r0(1?% 8% >% 1);
cout DD "#n=oordenada1 do +onto 1 :";
p1.imprime();
cout DD "#n=oordenada1 do +onto :";
p.imprime();
p1.def_ponto(>0% 8);
cout DD "#nNova1 coordenada1 do +onto 1 :";
p1.imprime();
cout DD"#n =oordenada1 da ,eta 1 : ";
r1.imprime();
cout DD"#n =oordenada1 da ,eta : ";
r.imprime();
cout DD"#n =oordenada1 da ,eta 0 : ";
r0.imprime();
r1.def_ponto(>% >H);
r1.def_final(K% 0);
cout DD "#n Nova1 coordenada1 da ,eta 1 :";
r1.imprime();
/
+ -oli"orfis"o
Le1a$%o em co$ta o programa gcap.AM..cpph= &mag&$emos a seg'&$te s&t'a)*o:
1o&% ($9 Po$to I p:
<
p#Y&mpr&me9 :C
4
1o&% ma&$9 :
<
Po$to p.C
Reta r.C
($9 p. :C // sem probemas
($9 r. :C // i'a ('$)*o g&mpr&me9 :h ser6 e/ec'ta%a `
4 // A %a casse Po$to o' %a casse Reta `
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 "1 / ,-
Na (orma 0'e as casses (oram %e(&$&%as= a ('$)*o chama%a ser6 sempre a %a
casse Po$to. Gostar@amos 0'e o programa p'%esse 1er&(&car 0'a o t&po rea %o ob+eto e
chamasse a s'a ('$)*o correspo$%e$te. O meca$&smo 0'e &mpeme$ta &sso 5 chama%o
%e &ga)*o %&$dm&ca o' po&mor(&smo. Para &$%&car 0'e 'ma ('$)*o ter6 Po&mor(&smo
%e1e#se coocar a paa1ra g(irtualh a$tes %e s'a %ecara)*o $a casse base. ;
recome$%a%o coocar a paa1ra g1&rt'ah tamb5m $as s'bcasses= apesar %e $*o ser
$ecess6r&o.
E/: cass Po$to <
// %e(&$&)Xes...
(irtual 1o&% &mpr&me9 :C
4C
Na programa)*o or&e$ta%a a ob+etos h6 o co$ce&to %e classes abstratas 0'e s*o
casses 0'e $*o poss'& to%as as s'as ('$)Xes &mpeme$ta%as. Eas e/&stem com o
ob+et&1o %e ser1&rem como base para 'ma h&erar0'&a %e casses. As s'bcasses 5 0'e
1*o &mpeme$tar as ('$)Xes 0'e (atam %a casse abstrata. N*o 5 poss@1e %e(&$&r ob+etos
%e 'ma casse abstrata= po&s a s'a %e(&$&)*o (&car&a &$competa= mas 5 poss@1e %e(&$&r
po$te&ros o' re(erN$c&as. Para &$%&car 0'e 'ma ('$)*o 1&rt'a $*o poss'& &mpeme$ta)*o
cooca#se gERh %epo&s %e s'a %ecara)*o.
E/: 1&rt'a 1o&% Impr&me9 : . /C
Dica: !e 'ma casse poss'&r 'm %estr'&%or e perte$cer D 'ma h&erar0'&a %e
casses= 5 aco$seh61e 0'e a casse base te$ha 'm %estr'&%or %ecara%o como 1&rt'a.
// cap1_.cpp
Qinclude "io1tream.6"
//cla11e a91trata
cla11 &ormad {
pu9lic:
virtual float area()
{
return ?.?;
/
virtual void mo1tra_nome() ! ?;
/;
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 "2 / ,-
cla11 ,etan2ulo : pu9lic &ormad
{
pu9lic :
//con1trutor
,etan2ulo(float lar2 ! ?.?% float alt ! ?.?)
{
lar2ura ! lar2;
altura ! alt;
/
virtual float area()
{
return lar2ura * altura;
/
virtual void mo1tra_nome()
{
cout DD "#n ,etan2ulo ";
/
protected:
float lar2ura% altura;
/;
cla11 =irculo : pu9lic &ormad
{
pu9lic:
=irculo( float r ! ?.?)
{
raio ! r;
/
virtual float area()
{
return 0.1H18 * raio * raio;
/
virtual void mo1tra_nome()
{
cout DD "#n =irculo ";
/
protected:
float raio;
/;
void main()
{
,etan2ulo r1(@%0)% r(1?% ");
=irculo c1(H);
&ormad * forma1O0P;
forma1O?P ! 4r1;
forma1O1P ! 4r;
forma1OP ! 4c1;
//aTu1tar a 1aida para mo1trar dua1 ca1a1 decimai1
cout.preci1ion();
for(int i!?; i D 0; i55)
{
forma1OiP>Emo1tra_nome();
cout DD "#n Area ! " DD forma1OiP>Earea() DD endl;
/
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 "3 / ,-
- Programa de exemplo da Parte !!!
Este programa tem como ob+et&1o co$troar as co$tas %e 'm ba$co. Jo& 'sa%a
'ma abor%agem or&e$ta%a a ob+etos= %e (orma 0'e e/&ste 'ma casse abstrata chama%a
conta 0'e %escre1e as caracter@st&cas 0'e s*o com'$s a to%o t&po %e co$ta. Neste
e/empo s8 h6 %o&s t&pos %e co$tas: Co$ta *orrente e -oupana. A %&(ere$)a e$tre eas
est6 $a ret&ra%a %e %&$he&ro= po&s $a co$ta %o t&po po'pa$)a ser6 cobra%a 'ma ta/a ata
ca%a 1eB 0'e (or (e&to 'ma ret&ra%a= e$0'a$to 0'e $a co$ta corre$te s8 ser6 cobra%a 'ma
pe0'e$a ta/a caso o sa%o este+a m'&to ba&/o.
//9anco.cpp
//+ro2rama eAemplo da parte '''
//Autor : (arco1 ,omero
Qinclude "io1tream.6"
Qinclude "1trin2.6"
Qinclude "1tdli9.6"
Qinclude "1tdio.6"
//prototipo1
void =riar_=onta();
void Ace11ar_=onta();
cla11 =onta
{
pu9lic:
=onta(int num% c6ar * _cliente)
{
conta_num ! num;
1trcpB(cliente% _cliente);
1aldo ! ?.?;
contador55; //acompan6a quanta1 conta1 e1tao a9erta1
/
int =onta_Num()
{
return conta_num;
/
float :aldo()
{
return 1aldo;
/
1tatic int Yuant_=onta1()
{
return contador;
/
void )epo1ito(float valor)
{
if(valor E ?.?) 1aldo 5! valor;
/
virtual void ,etirada(float valor) ! ?;
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 "4 / ,-
void *Ai9ir()
{
cout DD "#n=onta : " DD conta_num
DD " >>> " DD cliente
DD " >>> Tipo : " DD tipo;
/
protected:
int conta_num;
float 1aldo;
c6ar clienteO@?P;
c6ar tipoO?P;
1tatic int contador;
/;
//alocar variavel e1tatica
int =onta::contador ! ?;
cla11 =orrente : pu9lic =onta
{
pu9lic:
=orrente(int num% c6ar * _cliente):=onta(num% _cliente)
{
1trcpB(tipo% "=orrente");
/
// 1o9recarre2ar funcao virtual pura
virtual void ,etirada(float valor)
{
if (1aldo D valor)
{
cout DD "#n'n1uficiencia de fundo1: 1aldo ! " DD 1aldo ;
/
el1e
{
1aldo >! valor;
// 1e 1aldo 9aiAo% co9rar taAa de 1ervico
if (1aldo D @??.??)
{
1aldo >! ?.?;
/
/
/
/;
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 "" / ,-
cla11 +oupanca : pu9lic =onta
{
pu9lic:
+oupanca(int num% c6ar * _cliente):=onta(num% _cliente)
{
1trcpB(tipo% "+oupanca");
/
virtual void ,etirada(float valor)
{
if (1aldo D valor)
{
cout DD "'n1uficiencia de fundo1: 1aldo ! " DD 1aldo;
/
el1e
{
1aldo >! valor;
1aldo >! @.??; //taAa de retirada da poupanca
/
/
/;
con1t int (AR_=-NTA: ! 1??;
=onta * conta_li1taO(AR_=-NTA:P;
void main()
{
int e1col6a;
cout DD "#n#n *** =-NT,-F* )* =-NTA: *( ;( JAN=- *** #n";
L6ile(1)
{
cout DD "#n#n ( * N ; #n"
DD "#n 1. =riar nova conta"
DD "#n . Ace11ar conta"
DD "#n 0. *ncerrar pro2rama"
DD "#n#n *1col6a: ";
cin EE e1col6a;
1Litc6(e1col6a)
{
ca1e 1:
=riar_=onta();
9reaM;
ca1e :
Ace11ar_=onta();
9reaM;
ca1e 0:
//limpar memoria da1 conta1
int n_conta1 ! =onta::Yuant_=onta1();
for(int i!?; i D n_conta1; i55)
{
delete conta_li1taOiP;
/
eAit(?);
9reaM;
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 "$ / ,-
default: cout DD"#n -pcao invalida#n ";
9reaM;
//*fim 1Litc6*/
/ /*fim L6ile*/
/
void =riar_=onta()
{
int novo_num;
c6ar novo_clienteO@?P;
float dep_inicial;
int novo_tipo;
cout DD "#n =riando nova conta : #n";
cout DD "#n )i2ite o numero da nova conta: ";
cin EE novo_num;
cout DD "#n )i2ite o nome do cliente: ";
2et1(novo_cliente);
do {
cout DD "#n 1. =orrente"
DD "#n . +oupanca"
DD "#n )i2ite o tipo da nova conta: ";
cin EE novo_tipo;
/ L6ile (novo_tipo C! 1 44 novo_tipo C!);
cout DD "#n )i2ite o valor do depo1ito inicial: ";
cin EE dep_inicial;
int po1icao ! =onta::Yuant_=onta1();
if(novo_tipo !! 1)
{
conta_li1taOpo1icaoP ! neL =orrente(novo_num% novo_cliente);
conta_li1taOpo1icaoP>E)epo1ito(dep_inicial);
/
el1e
{
conta_li1taOpo1icaoP ! neL +oupanca(novo_num% novo_cliente);
conta_li1taOpo1icaoP>E)epo1ito(dep_inicial);
/
cout DD "#n=onta criada : #n";
conta_li1taOpo1icaoP>E*Ai9ir();
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 "% / ,-
void Ace11ar_=onta()
{
int n_conta1 ! =onta::Yuant_=onta1();
if(n_conta1 !! ?)
{
cout DD "Nao eAi1te conta1";
return;
/
cout DD "#n#n=onta1 *Ai1tente1 : ";
for(int i!?; i D n_conta1; i55)
{
conta_li1taOiP>E*Ai9ir();
/
int num% id!>1;
do {
cout DD "#n Numero da conta : ";
cin EE num;
for(i!?; i D n_conta1; i55)
{
if(num !! conta_li1taOiP>E=onta_Num())
{
id ! i;
9reaM;
/
/
if(id !! >1) cout DD "#nNumero invalido.";
/ L6ile (id !! >1);
conta_li1taOiP>E*Ai9ir();
cout.preci1ion();
cout DD "#n :aldo ! " DD conta_li1taOiP>E:aldo();
cout DD "#n#n Tran1acoe1 : ";
float vlr;
do {
cout DD "#n#n )i2ite um valor po1itivo p/ depo1ito%#n"
DD " ne2ativo p/ retirada e ? p/ 1air.";
cout DD "#n <alor : " ;
cin EE vlr;
if(vlr E ?.?) conta_li1taOiP>E)epo1ito(vlr);
el1e if(vlr D ?.?) conta_li1taOiP>E,etirada(>vlr);
cout DD"#n :aldo atual : " DD conta_li1taOiP>E:aldo();
/ L6ile(vlr C! ?.?);
/
Programa'5o em linguagem C 6 C-- *utor : Mar2os 7omero pg8 ") / ,-
4i/liografia:
# !ch&%t= Lerbert. Turbo * + 0uia do 1su2rio. !*o Pa'o: McGraU#L&= .V--.
# ?a1&s= !tephe$. *33 para 4eigos. !*o Pa'o: merneea= .VV,.
# ?e&te= Larea. *33: *o"o -rogra"ar. Porto Aegre: moonma$= ARRR.
# LaMothe= A$%r5. Tric!s of the 5indos 0a"e -rogra""ing 0urus. I$%&a$apo&s:
!AM!= .VVV.

Vous aimerez peut-être aussi