Manual de Programacion en C - UTEM
-
Upload
katerynbrodriguez -
Category
Documents
-
view
230 -
download
0
Transcript of Manual de Programacion en C - UTEM
-
8/19/2019 Manual de Programacion en C - UTEM
1/136
MANUAL DE PROGRAMACION EN C[Subtítulo del documento]
0
[FECHA]UTEM
[Dirección de la compañía]
-
8/19/2019 Manual de Programacion en C - UTEM
2/136
Tabla de contenidoMANUAL DE PROGRAMACION EN C.............................................................................1
INTRODUCCION..................................................................................................................1Las variables en C...................................................................................................................3IF Y ELSE.............................................................................................................................1CICLOS !"#ile $ %&r'...........................................................................................................(1Pa)r&nes *e Pr&+ra,a-i n..................................................................................................... (P/n)er&s................................................................................................................................. 1Arre+l&s.................................................................................................................................
Me,&ria Din2,i-a........................................................................................................... 1S)rin+s................................................................................................................................... (
s)r-4$!-#ar 5*es)in&6 -#ar 5%/en)e'............................................................................... (in) s)r-,4!-#ar 5s16 -#ar 5s('....................................................................................... 3
in) s)rlen !-#ar 5s'.........................................................................................................s)r-a) !-#ar 5s16 -#ar 5s('.............................................................................................s)rn-4$ !-#ar 5s16 -#ar 5s(6 in) n'.................................................................................E7er-i-i&8.......................................................................................................................
Es)r/-)/ras.............................................................................................................................P/n)er&s a Es)r/-)/ras...................................................................................................
Pr&ble,a 4ara res&lver8........................................................................................................FUNCIONES........................................................................................................................ 9Ar-#iv&s................................................................................................................................:Re-/rsivi*a*........................................................................................................................10
INTRODUCCION
C&,& 4ri,er e7e,4l& *e /n 4r&+ra,a en C6 va,&s a -&nsi*erar el 4r&+ra,a;s +anarle*i-ien*& el s/-es&r. La 4an)alla ,/es)ra la sali*a *el 4r&+ra,a8
Por favor ingresa un número: 4944
Lo siento, te gano con el 4945
Es)e 4r&+ra,a 4&*r?a es-ribirse en ,/-#&s len+/a7es *is)in)&s6 - ,& C6 C@@Pas-al6 T/rin+6 S,all)al 6 e)-. N&s&)r&s /sare,&s -&,& len+/a7e *e 4r&+ra,a-i nC. Una veB /e /n& a4ren*e /n len+/a7e6 se #a-e ,/$ %2-il a4ren*er len+/a7es /e)en+an /n 4ara*i+,a si,ilar.
El programa ali!co" e!crito en C" e! el !iguiente
1
-
8/19/2019 Manual de Programacion en C - UTEM
3/136
1. /* Jalisco nunca pierde */2. main ()3. {4. /* Variables */5. int n;6. print (!"or a#or in$resa un n%mero&!);'. scan ( d +,n);-. print (! o siento+ te $ano con el !);
. print ( d 0n +n 1);1 .
P&r a#&ra6 n&s -&n-en)rare,&s en la 4ar)e 4rin-i4al *el 4r&+ra,a6 es *e-ir6 en lal?neas 3 a la 10. El si+ni%i-a*& $ /)ili*a* *e las &)ras l?neas va,&s a analiBarl&s ,2a*elan)e.
Línea EjecuciónUncomentario sirve 4ara a$/*arle al 4r&+ra,a*&r a re-&r*ar /> #a-e -a*a 4ar)e *e /n
4r&+ra,a. T&*&s l&s -&,en)ari&s e,4ieBan -&n 5 $ )er,inan -&n 5
Es)a ins)r/--i n declara /na variable 4ara +/ar*ar n=,er& en)er&s !int ' -/$&identi icador es n.P/e*es i,a+inar)e /na variable -&,& /n -a7 n en la ,e,&ria *&n*e se 4/e*e +/ar*ar /nval&r ! /e 4/e*e ir -a,bian*& */ran)e el )rans-/rs& *el 4r&+ra,a6 *e a#? el n&,bre;variable;'.Es)& se 4/e*e es /e,a)iBar *e la si+/ien)e %&r,a8
n
El 4r&+ra,a es-ribe en la 4an)alla /n ,ensa7e 4ara el /s/ari&8P&r %av&r in+resa /n n=,er&8
Para ,&s)rar /n ,ensa7e se /)iliBa elm!todo 4rin)%6 el -/al es-ribe s/ar"umento !l& /eva en)re 4ar>n)esis' en 4an)alla
Es)a ins)r/--i n le asi+na a n /n n=,er& en)er& /e selee *es*e )e-la*&. Para avisarle al/s/ari& /e se es)2 es4eran*& el in+res& *e /n n=,er&6 C ,/es)ra /n 4e /e & -/a*ra*& 4ar4a*ean)e lla,a*&cur#or8
P&r %av&r in+resa /n n=,er&8C es4era a /e el /s/ari& es-riba el n=,er& $ 4resi&ne la )e-la Enter . C/an*& es)& s/-e*e6
C le asi+na el n=,er& /e le$ a la variable *e n&,bre n.S/4&n+a,&s /e el /s/ari& in+resa el n=,er& 1( $ 4resi&na Enter 8P&r %av&r in+resa /n n=,er&8 1(En la variable n se al,a-ena es)e n=,er& n 1(
9 Es)a ins)r/--i n ,/es)ra /n n/ev& ,ensa7e en la 4an)alla8P&r %av&r in+resa /n n=,er&8 1(L& sien)&6 )e +an& -&n el
(
-
8/19/2019 Manual de Programacion en C - UTEM
4/136
: Final,en)e6 C -al-/la -/2l es el n=,er& /e si+/e a n $ l& ,/es)ra en la 4an)allaP&r %av&r in+resa /n n=,er&8 1(L& sien)&6 )e +an& -&n el 13
Las variables en CEn C /n& 4/e*e +/ar*ar in%&r,a-i n en ele,en)&s lla,a*&s variables. Ca*avariable )iene /n )i4&6 /e in*i-a /> es l& /e se +/ar*ar2 en ella. E is)en vari&s)i4&s n/,>ri-&s6 en)re l&s -/ales se en-/en)ran l&s n=,er&s en)er&s !in)' $ l&sn=,er&s reales !*&/ble'.
Las variables en C s&n *e-lara*as *e la si+/ien)e %&r,a8
tipo identi icador;
Por ejem$lo%
11. int alumnos;12. double temperatura;
La *e-lara-i n )iene /e 4re-e*er el /s& *e la variable en /n 4r&+ra,a. P&r e7e,4l&6 es in-&rre-)&8
1. alumnos 1 6;2. int alumnos;
Una veB /e la variable #a si*& *e-lara*a6 s/ )i4& n& 4/e*e -a,biarse. Ta,bi>n esin-&rre-)&8
2. int man anas;3. man anas ';
4. print (! a7 d man anas0n!+man anas);
5. print (!8e como media!);
6. loat man anas;
'. man anas 6.5;
-. print (!9:ora :a7 man anas0n!+man anas);
3
-
8/19/2019 Manual de Programacion en C - UTEM
5/136
Pon tu# conocimiento# a $rueba
Es-ribe /n 4r&+ra,a en C /e -al-/le el 2rea $ 4er?,e)r& *e /n -?r-/l&. Lasi+/ien)e 4an)alla ,/es)ra el *i2l&+& *el 4r&+ra,a8
. n$resa el radio del c
-
8/19/2019 Manual de Programacion en C - UTEM
6/136
In+resa el ra*i&8
( Se le asi+na a ra*i& /n n=,er& real /e se lee *es*e )e-la*&.In+resa el ra*i&8 3.0
ra*i& 3.0
( Es)a ins)r/--i n ,/es)ra /n n/ev& ,ensa7e en la 4an)alla8In+resa el ra*i&83.0El 2rea es8
( C -al-/la -/2l es el 2rea *el -?r-/l&6 es *e-ir6 el 4r&*/-)& *e la -&ns)an)e 4i $ el-/a*ra*& *e ra*i&.
In+resa el ra*i&83.0El 2rea es8 (9.(
(9 C ,/es)ra /n n/ev& ,ensa7e en la 4an)allaIn+resa el ra*i&83.0
El 2rea es8 (9.(El 4er?,e)r& es8
(: Para %inal,en)e -al-/lar el 4er?,e)r& $ ,&s)rarl&In+resa el ra*i&83.0El 2rea es8 (9.(El 4er?,e)r& es8 19.9 :
ExpresionesLas variables *e )i4&s n/,>ri-&s 4/e*en ser -&,bina*&s ,e*ian)e &4era*&resari),>)i-&s 4ara %&r,as e 4resi&nes.
L&s &4era*&res ari),>)i-&s se ven en la si+/ien)e )abla8
Símbolo
Operador
$ !uma
% re!ta
& multiplicación
' di(i!ión
) módulo
Las 4re-e*en-ia s&n i+/ales a las *el 2l+ebra8
-
8/19/2019 Manual de Programacion en C - UTEM
7/136
*+ e,pre!ione! entre par-nte!i!.+ multiplicación / di(i!ión0+ !uma / re!ta
En -as& *e *&s & ,2s &4era*&res *e i+/al 4re-e*en-ia6 se eval=a *e iB /ier*a a
*ere-#a.Ejem$lo#&E 4resi n Es-ri)a
-&rre-)a,en)eEs-ri)a
in-&rre-)a,en)e
!aHb' !(5-'!aHb' ( -
aHb (5-!aHb' (5-
a@b5-
a@!b5-'
!a@b'5-
En -as& *e */*as6 sie,4re se 4/e*e /sar 4ar>n)esis6 )&)al s&n +ra)is.
Tipo de una expresiónPara -&n&-er el )i4& *e /na e 4resi n6 se 4/e*e /)iliBar la si+/ien)e re+la8
E'$re#ión Ti$o Ejem$lo
Si,4le *&/ble si & $ esdouble
in) si a,b&s s&n in)
: (.0 .9 (.0 .0: (9 (
C&,4/es)a se+=n la 4re-e*en-ia *e l&s&4era*&res se a4li-a la re+laan)eri&r
Si * es /na variable *&/ble $ ) /na variabin)6 en)&n-es!* 1000' !) 3 00'!*&/ble in)' !in) in)'*&/ble in)*&/ble
El o$erador módulo ()*
-
8/19/2019 Manual de Programacion en C - UTEM
8/136
En C e is)e /n &4era*&r ,/$ =)il lla,a*& , */l&6 ,/$ rela-i&na*& -&n la *ivisi n$ /e se *en&)a 4&r J. El , */l& en)re *&s n=,er&s en)er&s a $ b es el res)& *e la*ivisi n en)era en)re a,b&s.
Por ejem$lo%
1'. → 01). → *
+,u! -ace el #i"uiente $ro"rama.
1. int s+minutos+se$undos;2. print (! n$resa la cantidad de se$undos
transcurridos!);
3. scan ( d +,s);
4. print (!=so e@ui#ale a !);
5. minutos s/6 ;
6. print ( d +minutos);
'. print (! minutos 7 !);
-. se$undos s 6 ;
. print ( d0n +se$undos);
AsignaciónEl al,a-ena,ien)& *e val&res en las variables se lleva a -ab& ,e*ian)e la asi+na-i n! '. Una variable 4/e*e ser asi+na*a rei)era*as ve-es. P&r e7e,4l&6
1 . int dolar;11. dolar 4- ;
12. print (!=l #alor del dAlar es d0n!+dolar);
13. dolar 5 ;14. print (!=l nue#o #alor del dAlar es d0n!.dAlar);
N& s&l& se 4/e*e asi+nar val&res n/,>ri-&s %i7&s6 )a,bi>n e 4resi&nes
15. double $ .-'+t+#;
-
8/19/2019 Manual de Programacion en C - UTEM
9/136
16. print (!Buanto tiempo :a transcurrido desde @ue sesoltA el obCetoD0n!);
1'. scan ( +,t);
1-. # $*t;1 . print (! a #elocidad es de 0n!+#);
Una *e las -&sas /e n& sie,4re se 4/e*e #a-er es asi+nar /na e 4resi n *e /n )i4&a /na variable *e &)r& )i4&. P&r e7e,4l&6 el si+/ien)e - *i+& es in-&rre-)&
2 . int super icie 3.1416*radio*radio;
Ya /e se es)2 )ra)an*& *e +/ar*ar /n n=,er& real en /na variable /e #a si*&*e-lara*a -&,& real. Es -&,& )ra)ar *e +/ar*ar 4el&)as *e )enis en /n envase *e
4el&)as *e 4in+H4&n+.
Una /e0 1ue una /ariable -a #ido a#i"nada% #u /alor no #e modi ica -a#ta 1ue#e le /uel/a a -acer una a#i"nación
Inicialización
Una variable n& 4/e*e ser /sa*a en /na e 4resi n #as)a /e se le #a *a*& /n val&r.Se lla,a ini-ialiBa-i n a la 4ri,era asi+na-i n *e /na variable.
21. double pi;22. pi 3.1415 ;
C&,& $a #e,&s vis)&6 C 4er,i)e ini-ialiBar /na variable en la ,is,a ins)r/--i n enla /e se le *e-lara8
23. double pi 3.1415 ;
Asignaciones con la variable asignada en laexpresión
C 4er,i)e realiBar asi+na-i&nes *&n*e la variable asi+na*a a4are-e en la e 4resi n*e la *ere-#a8
9
-
8/19/2019 Manual de Programacion en C - UTEM
10/136
24. int coneCos 5;25. coneCos coneCos 1;
C eval=a 4ri,er& la e 4resi n *e la *ere-#a $ l/e+& asi+na ese val&r a la variable.
En es)e -as& C -al-/la -/2n)& vale -&ne7&s@1. Re-i>n -/an*& sabe /e el val&r es l& asi+na a -&ne7&s.
El in-re,en)& *e /na variable6 es *e-ir6 /na asi+na-i n *el )i4&n2 n$ 13
se ven )an a ,en/*& en C /e e is)e /na n&)a-i n abrevia*a 4ara ella
n$$ ;
L& ,is,& 4ara el *e-re,en)&8
n%%; e! lo mi!mo 4ue n2 n%13
"Swap" del valor de dos variables
I,a+ina /e )ienes *&s variables en)eras6 e $6 /e s&n ini-ialiBa*as -&n el val&r -&n /n n=,er& le?*& *es*e el )e-la*&6 -&,& se ve en el - *i+& K
26. int E 5;2'. int 7;2-. scan ( d +,7);
+Cómo -aría# $ara intercambiar el /alor de amba# /ariable#.
Una s&l/-i n /e 4/e*e 4are-er -&rre-)a es
2 . E 7;3 . 7 E;
Sin e,bar+& l& /e #a-e real,en)e C es *e7ar en e $ el val&r &ri+inal *e $6 $a /e 4ri,er& se le asi+na el val&r *e $ a 6 -&n es)& el val&r *e se 4ier*e. Des4/>s se asi+na es)e val&r a $6 /e n& se ve ,&*i%i-a*&6 4/es )iene el val&r &ri+inal *e Y.
Una s&l/-i n -&nsis)e en /sar /na variable a/ iliar. a$ variables /e n& se &-/4an 4ara +/ar*ar val&res en %&r,a )e,4&ral6 +eneral,en)e 4ara %a-ili)ar la realiBa-i n *e/n -2l-/l& & )area. Es)as variables re-iben el n&,bre *e variables a/ iliares.
En es)e -as& va,&s a /sar /na variable a/ iliar 4ara +/ar*ar el val&r &ri+inal *e K.
:
-
8/19/2019 Manual de Programacion en C - UTEM
11/136
31. int auEiliar E;32. E 7;
33. 7 auEiliar;
unciones prede!nidasAl i+/al /e las -al-/la*&ras -ien)?%i-as6 C )rae in-&r4&ra*& /na +ran +a,a *e%/n-i&nes en la librer?ama #$# " en)re las /e se en-/en)ran las si+/ien)es8
s r)! ' ra?B -/a*ra*a *e
abs! ' val&r abs&l/)& *e
4&"! 6$' ;eleva*& a; $
e 4! ' e 4&nen-ial *e
l&+! ' l&+ari),& na)/ral *e sin! ' sen& *e !ra*ianes'
-&s! ' -&sen& *e !ra*ianes'
)an! ' )an+en)e *e !ra*ianes'
asin! ' ar-&sen& *e !ra*ianes'
A-&s! ' ar-&-&sen& *e !ra*ianes'
A)an! ' ar-&)an+en)e *e !ra*ianes'
r&/n*! ' re*&n*ea*&. P&r e7e,4l&6 r&/n* !3. ' es 6 r&/n*!3. ' es 3
Fl&&r! ' 4is& *e . P&r e7e,4l&6 %l&&r !3. ' es 36 al i+/al /e %l&&r !3. '
-eil! ' )e-#& *e . -eil !3. ' $ -eil !3. ' es
)r/n-! ' *ev/elve la 4ar)e en)era *e !el )i4& *e la %/n-i n es in)'
P&r e7e,4l&6 4ara -al-/lar el 2rea *e /n -?r-/l& -/$& ra*i& es ra*i& lae 4resi n en C es
double area 3.1416*poF(radio+2);
Para +/ar*ar en /na variable en)era l&s +ra*&s *el ar-&)an+en)e *e !0.3' se 4/e*e /sar
int $rados trunc(1- . *atan( .3)/3.1416);
10
-
8/19/2019 Manual de Programacion en C - UTEM
12/136
PROBLEMAS RESUELTOS
%roblema &' (a)uina reversadora de ci*ras
aB /n 4r&+ra,a /e re-iba /n n/,er& *e *i+i)&s !s/4&n+a /e l& in+resan bien'$ ,/es)re el n=,er& en %&r,a reversa8
8a@uina re#ersadora de numeros
n$rese un numero& D 12345
Gu n%mero en orma normal es 12345Gu numero al re#es es 54321
Solución'
34. int numero+ di$ito1+ di$ito2+ di$ito3+ di$ito4+di$ito5+ alre#es;
35. print (!8a@uina re#ersadora de numeros!);
36. print (! n$rese un numero& D !);
3'. scan ( d +,numero);
3-. /* desmenu amos el numero */
3 . di$ito1 numero / 1 ;
4 . di$ito2 (numero 1 ) / 1 ;
41. di$ito3 (numero 1 ) / 1 ;
42. di$ito4 (numero 1 ) / 1 ;43. di$ito5 (numero 1 );
44. /* lo armamos de nue#o */
45. alHe#es di$ito5 * 1 di$ito4 * 1 di$ito3* 1 di$ito2 * 1 di$ito1;
11
-
8/19/2019 Manual de Programacion en C - UTEM
13/136
46. // mostramos el resultado
4'. print (!Gu numero en orma normal d 0n !+ numero);
4-. println(!Gu numero al re#es es d 0n!+ alHe#es);
%roblema +' Calculo de dis anciasa+a /n 4r&+ra,a /e 4re+/n)e 4&r las -&&r*ena*as *e *&s 4/n)&s en el 4lan& $
-al-/le la *is)an-ia !e/-li*iana' en)re ell&s.
Balculo de distancia entre dos puntos
Boordenadas E 7 del primer punto D 1 .2 4.5
Boordenadas E 7 del se$undo punto D '.5 I3.5
Solución'
4 . double E1+71+E2+72+distancia;5 . print (!Balculo de distancia entre dos puntos
0n!);
51. print (!Boordenadas E 7 del primer punto D !);
52. scan ( +,E1);
53. scan ( +,71);
54. print(!Boordenadas E 7 del se$undo punto D !);
55. scan ( +,E2);
56. scan ( +,72);
5'. distancia s@rt( poF((E1IE2)+2) poF ((71I72)+2) );
5-. print (! a distancia euclidiana entre + 7 + es 0n +E1+71+E2+72+distancia );
1(
-
8/19/2019 Manual de Programacion en C - UTEM
14/136
Pon tu# conocimiento# a $rueba
23 El almacen 4Don Manolo4 nece#ita un $ro"rama 1ue a5ude a calcular la orma dedar /uelta con el mínimo de billete# 5 moneda# $o#ible3 La $antalla 6 mue#tra eldi7lo"o 1ue debe mantener el $ro"rama
5 . otal a pa$ar& '-236 . =l cliente pa$a& 1
61. Vuelto 21''
62. Kes$losado en&
63. billete(s) de 1
64. billete(s) de 5
65. 2 billete(s) de 1
66. billete(s) de 5
6'. 1 moneda(s) de 1
6-. 1 moneda de 5
6 . 2 moneda(s) de 1
' . 1 moneda de 5
'1. 2 moneda(s) de 1
'2. .+ 56u- e!cribe el !iguiente programa en la pantalla7
'3. int a 5+b 3+c 1;
'4. print (! os #alores de las #ariables son d dd!+a+b+c);
'5. a b;
'6. b ;
''. print (! os #alores de las #ariables son d dd!+a+b+c);
'-. cII;
13
-
8/19/2019 Manual de Programacion en C - UTEM
15/136
' . a c;
- . print (! os #alores de las #ariables son d dd!+a+b+c);
-1. cII;-2. a 2*cIb;
-3. print (! os #alores de las #ariables son d dd!+a+b+c);
3. C ,& #ar?as /n s"a4 *e *&s variables sin /sar /na variable a/ iliar Es)e 4r&ble,a *e in+eni& es real,en)e *i%?-il. In)en)a res&lverl&.
Errores ,demasiado- comunesEn)re l&s err&res ,2s -&,/nes *e)e-)a*&s en el 4ri,er -&n)r&l *e C&,4/)a-i n I *es)a-anl&s si+/ien)e8
• O-/4ar /na variable sin *e-lararla• O-/4ar /na variable sin ini-ialiBarla
• O-/4ar n&,bres -&r)&s *e variables8 si bien es)& n& es /n err&r6 en /n 4r&+ra,a lar+& 4/e*e in*/-ir a err&res. Es /na ,ala )>-ni-a )ra)ar *e ;a#&rrar )ie,4&; a-&r)an*& el i*en)i%i-a*&r *e /na variable. Para al,a-enar el ra*i& *e/na %i+/ra es ,/-#& ,e7&r /sar /na variable ra*i& en veB *e /na variable 4.
• Asi+nar /n *&/ble a /n in) sin /sar la %/n-i n *e -&nversi n )r/n- ! '. Es)&err&r es *e)e-)a*& en )ie,4& *e -&,4ila-i n.
• Inven)ar &4era*&res & n&)a-i&nes8
N&)a-i n ;inven)a*a; 4&r al/,n& C !-&rre-)&'
area=3.1416*radio*radio;
radio=diametro/3.1416;
radio=diámetro/pi; !si 4i #a si*& *e-lara*&'
Re-/er*a sie,4re /e l&s len+/a7es *e 4r&+ra,a-i n s&n s/,a,en)e e )ri-)&s -&n res4e-)&a la sin)2 is !- ,& seescriben las -&sas'
1
-
8/19/2019 Manual de Programacion en C - UTEM
16/136
1
-
8/19/2019 Manual de Programacion en C - UTEM
17/136
I8 9 EL:E
as)a a#&ra l&s 4r&+ra,as /e #e,&s vis)& -&nsis)en en /na serie *e ins)r/--i&nes/e se van e7e-/)an*& /na )ras &)ra en %&r,a se-/en-ial6 -&,& se ve en la %i+/ra 18
8i"ura 2 8i"ura ;
Sin e,bar+& #a$ &-asi&nes en las /e /n& 4/e*e /erer /e /na ins)r/--i n see7e-/)e s l& si se -/,4le /na -&n*i-i n *e)er,ina*a6 -&,& se ve en la %i+/ra (.
En C es)& se lleva a -ab& +ra-ias a la sen)en-ia ;i%;6 /e 4er,i)e e7e-/)ar /nains)r/--i n !& bl& /e *e ins)r/--i&nes' *e4en*ien*& *el val&r *e ver*a* *e /nae 4resi n l +i-a.
1
-
8/19/2019 Manual de Programacion en C - UTEM
18/136
En el si+/ien)e 4r&+ra,a se ,/es)a el /s& *e i% 4ara -al-/lar el ,2 i,& *e *&sn=,er&s8
1. int a+b+maEimo;2. print (! n$resa dos n%meros!);
3. scan ( d d +,a+,b);
4. m>Eimo a;
5. i (bLa)
6. m>Eimo b;
'. print (!=l m>Eimo es d!+m>Eimo);
Línea(#* Ejecución1H3 Se 4i*e al /s/ari& /e es-riba *&s n=,er&s *es*e el )e-la*&
Se ini-ialiBa la variable ,2 i,& -&n el val&r *e a
6 Si b es ,a$&r /e a en)&n-es el val&r *e b se le asi+na a ,2 i,&
Se es-ribe el ,2 i,& en la 4an)allan)esis $ la ins)r/--i n /e se *ebe e7e-/)ar si la-&n*i-i n es ver*a*era8
1 . i (condiciAn)
11. instrucciAn;
Si la -&n*i-i n n& se -/,4le6 en)&n-es la ins)r/--i n n& se e7e-/)a $ se 4asa a lasi+/ien)e ins)r/--i n.
Condicione#Una -&n*i-i n es /na e 4resi n /e )iene /n val&r ver*a*er& & %als& & /n-&,bina-i n *e ellas. En es)e -a4?)/l& analiBare,&s las e 4resi&nes en las /e-&,4ara,&s e 4resi&nes ari),>)i-as en)re s?.
1
-
8/19/2019 Manual de Programacion en C - UTEM
19/136
O4era*&res *e rela-i n6 s/ si+ni%i-a*& $ /n e7e,4l&8
O4era*&r Si+ni%i-a*& E7e,4l&
i+/al a ! 10'
,en&r /e ! $'
Q ,a$&r /e ! @ Q$'
,en&r & i+/al a !(5 H '
Q ,a$&r & i+/al a !val&rAn)i+/&Q val&rN/ev&'
*is)in)& *e ! 19 $'
Las -&n*i-i&nes -&,4/es)as se %&r,an a 4ar)ir *e -&n*i-i&nes si,4les /ni*as,e*ian)e l&s &4era*&res l +i-&s O6 Y $ ne+a-i n8
O4era*&r Si+ni%i-a*& E7e,4l&
O l +i-& !)&)al 0 &r )&)alQ 100'Y l +i-& !4/n)a7e 00 l/+ar 00'
ne+a-i n ! !l/+ar ,ini,&''
I =el#e
M/-#as ve-es6 l& /e n&s in)eresa es e7e-/)ar /na ins)r/--i n si se -/,4le /na*e)er,ina*a -&n*i-i n $ e7e-/)ar &)ra si n& se -/,4le. Es /e,2)i-a,en)e8
19
-
8/19/2019 Manual de Programacion en C - UTEM
20/136
P&r e7e,4l&6
12. int a;13. print (! n$resa el aMo&!);
14. scan ( d +,a);
15. i (a 4 ,, a 1 N )
16. print (!=l aMo es bisiesto0n!);
1'. else
1-. print (!=l aMo es normal0n!);
Línea(#* Ejecución
1:
-
8/19/2019 Manual de Programacion en C - UTEM
21/136
10...1( Se 4i*e /n a & $ se +/ar*a en la variable a &
13 Se eval=a la -&n*i-i n ; es el a & *ivisible 4&r $ n& 4&r 100 ;
1 Si la -&n*i-i n es ver*a*era se es-ribe ;El a & es bisies)& en la 4an)alla;
1 H1 Si la -&n*i-i n es %alsa6 se ,/es)ra el ,ensa7e ;El a & es n&r,al;19.Bloques de instrucciones
.8+ Si uno 4uiere 4ue !e e9ecute m:! de una in!trucción !i lacondición del i; !e cumple uno puede agrupar la! in!truccione! enun blo4ue#
21. loat a+b+c+d;
22. print (! n$resa los coe icientes a+ b 7 c!);
23. scan ( +,a+,b+,c);
24. d b*bI4*a*c;
25. i (dL ) {
26. loat E1+ E2;2'. print (! as soluciones son reales 7 #alen!);
2-. E1 (Ib s@rt(d))/(2*a);
2 . E2 (IbIs@rt(d))/(2*a);
3 . print (! 7 0n!+E1+E2);
31. i (discriminante ) {
32. loat E;
33. print (!=Eiste una sola soluciAn real !);
34. E (Ib s@rt(d))/(2*a);
35. print ( 0n +E);
(0
-
8/19/2019 Manual de Programacion en C - UTEM
22/136
36. else {
3'. loat real+ ima$inario;
3-. print (! as soluciones son compleCas 7 #alen!);
3 . ima$inario s@rt(Id))/(2*a);
4 . real Ib/(2*a);
41. print ( i 7 +real+ima$inario);
42. print ( I i 0n +real+ima$inario);
43.
Si+a,&s la e7e-/-i n8Línea(#* Ejecución1 H1: Se leen *es*e el )e-la*& l&s -&e%i-ien)es *e la e-/a-i&n a(@b @- 0
(0 Se -al-/la el *is-ri,inan)e
(1H( Si el *e)er,inan)e es ,a$&r /e 06 en)&n-es se ,/es)ran las *&ss&l/-i&nes reales
( H31 Si el *e)er,inan)e es i+/al a 06 en)&n-es se ,/es)ra la =ni-a s&l/-i nreal
N&)a8 En la 4r2-)i-a n& es b/ena i*ea -&,4arar /n n=,er& *e )i4&*&/ble -&n &)r& n=,er& *e )i4& *&/ble 4&r 4r&ble,as *ere4resen)a-i n in)erna.
33H39 Si nin+/na *e las *&s -&n*i-i&nes an)eri&res se #a -/,4li*&6 en)&n-esse es-ribe el val&r *e las *&s s&l/-i&nes -&,4le7as
Un bl& /e *e ins)r/--i&nes es /n -&n7/n)& *e ins)r/--i&nes /e a-)=an -&,&si %/eran /na s&la. P&r l& +eneral6 C 4er,i)e -&l&-ar /n bl& /e *eins)r/--i&nes en el -&n)e )& *&n*e se 4/e*e -&l&-ar /na ins)r/--i n. Un bl& /e *e ins)r/--i&nes -&,ienBa -&n /n 4ar>n)esis $ )er,ina -&n /n 4ar>n)esis .
Problema# re#uelto#
Problema 2& :uma de raccione#La s/,a *e *&s n=,er&s ra-i&nales se *e%ine -&,&
(1
-
8/19/2019 Manual de Programacion en C - UTEM
23/136
Es-ribe /n 4r&+ra,a /e lea *&s n=,er&s ra-i&nales $ es-riba el res/l)a*&. Siel res/l)a*& es /n n=,er& en)er&6 es-r?bel& *e esa %&r,a )a,b?en. F?7a)e /el&s *en&,ina*&res sean *is)in)&s *e 0. Si n& es as?6 en veB *e es-ribir eres/l)a*& es-ribe /na a*ver)en-ia /e *i+a /e el res/l)a*& es err ne&
:olución&
44. int num1+den1+num2+den2+num+den;45. /* "re$untar los numeradores 7 denominadores */
46. print (! n$resa el numerador de la primeraraccion& !);
4'. scan ( d +,num1);
4-. print (! n$resa el denominador de la primeraraccion& !);
4 . scan ( d +,den1);
5 . print (! n$resa el numerador de la se$undaraccion& !);
51. scan ( d +,num2);
52. print (! n$resa el denominador de la se$undaraccion& !);
53. scan ( d +,den2);
54. num num1*den2 num2*den1
55. den den1*den2
56. i (den )
5'. print (!Ono de los dos denominadores in$resados es0n!);
5-. else
5 . print (!=l resultado es d/ d!+num+den);
((
-
8/19/2019 Manual de Programacion en C - UTEM
24/136
6 . i (num den )
61. print (! o @ue es e@ui#alente a d!+num/den);
Pon tu# conocimiento# a $rueba
• Es-ribe /n 4r&+ra,a /e lea /n n=,er& *es*e el )e-la*& $ es-riba si es 4ar & n&
• Es-ribe /n 4r&+ra,a /e lea )res n=,er&s *el )e-la*& $ l&s es-riba &r*ena*&s *e,en&r a ,a$&r
Errore# (dema#iado* comune#
Un err&r -&,=n es a+re+ar /na -la/s/la else /e n& #a-e na*a. A/n /e es)& n& es err&nel - *i+& se v/elve ,2s -&,4li-a*& *e en)en*er. P&r e7e,4l&6 la -la/s/la else *esi+/ien)e 4r&+ra,a es)2 *e,2s. Es)a )ra)a *e re4resen)ar ;si la vel&-i*a* s/4era l&s
il&,e)r&s 4&r #&ra6 en)&n-es #a$ /e s/bir el -a,bi&6 si n&6 el -a,bi& se ,an)iene;
1. i (#elocidadL5 )2. cambio cambio 1;
3. else
4. cambio cambio;
L& -&rre-)& es
5. i (#elocidadL5 )6. cambio cambio 1;
(3
-
8/19/2019 Manual de Programacion en C - UTEM
25/136
CICLO: (>-ile 5 or*Es-ribe /n 4r&+ra,a /e lea *&s n=,er&s en)er&s $ es-riba )&*&s l&sn=,er&s ,a$&res /e el 4ri,er& $ ,en&res /e el se+/n*&
n$resa el primer n%mero& 3-n$resa el se$undo& 45os n%meros son& 3 4 41 42 43 44
8uc:as $racias por usar este pro$rama
Un in)en)& !in-&rre-)&' *e s&l/-i n es8
1. int a+b;2. print (! n$resa el primer n%mero &!);
3. scan ( d +,a);
4. print (! n$resa el se$undo&!);
5. scan ( d +,b);
6. print (! os numeros son!);
'. i (a 1Pb) print ( d0n +a 1);
-. i (a 2Pb) print ( d0n +a 2);
. i (a 3Pb) print ( d0n +a 3);
1 . i (a 4Pb) print ( d0n +a 4);
11. i (a 5Pb) print ( d0n +a 5);
12. i (a 6Pb) print ( d0n +a 6);
13. i (a 'Pb) print ( d0n +a 5);
14. i (a -Pb) print ( d0n +a 6);
15. ... etcQtera
8lujo de un $ro"rama
as)a a#&ra )&*&s l&s 4r&+ra,as /e #e,&s vis)& se -ara-)eriBan 4&r el #e-#& */e las ins)r/--i&nes se van e7e-/)an*& en &r*en $ /na s&la veB. Es)& i,4i*e realiBar
/n 4r&+ra,a -&,& el /ere,&s #a-er.
(
-
8/19/2019 Manual de Programacion en C - UTEM
26/136
Sin e,bar+&6 C6 al i+/al /e ,/-#&s &)r&s len+/a7es6 4er,i)e re4e)ir /na -ier)a-an)i*a* *e ins)r/--i&nes ,ien)ras /na -&n*i-i n se -/,4la.
Es)a ins)r/--i n *e -&n)r&l *e %l/7& se lla,a "#ile6 se es /e,a)iBa en la %i+/ra 1 $s/ sin)a is es8
F:ile
F:ile eval=a la -&n*i-i n en)re 4ar>n)esis $ si es)a es ver*a*era6 e7e-/)a )&*as lasins)r/--i&nes en)re l&s 4ar>n)esis . C/an*& #a e7e-/)a*& la =l)i,a ins)r/--i n6v/elve a eval/ar la -&n*i-i n. El 4r&-es& se re4i)e #as)a /e al )er,inar *e e7e-/)ar las ins)r/--i&nes se eval=a la -&n*i-i n $ es)a es %alsa.
Fi+/ra 1
En -as& /e s l& se re4i)a /na s&la ins)r/--i n6 se 4/e*en eli,inar l&s 4ar>n)esis
F:ile
-
8/19/2019 Manual de Programacion en C - UTEM
27/136
1-. scan ( d +,a);
1 . print (! n$resa el se$undo&!);
2 . scan ( d +,b);
21. print (! os numeros son!);
22. i a 1;
23. F:ile (iPb) {
24. print ( d !+i);
25. i i 1;
26.
2'. print (!0n8uc:as $racias por usar estepro$rama0n!);
Línea(#* Ejecución
*?%.8 Se e!criben lo! men!a9e! en la pantalla / !e leen la! re!pue!ta!del u!uario de!de el teclado
n$resa el primer n%mero& 3-n$resa el se$undo& 45os n%meros son &
.*@a (ariable au,iliar i !e (a a u!ar para e!cribir lo! (alore!aPiPb. Se iniciali a con a$*" en e!te ca!o" 0B+
.. Si i e! menor 4ue b" entonce! la! in!truccione! en la! línea! .a . !e e9ecutan una (e + Si no e! a!í !e !igue la e9ecución conla línea .1
. Se e!cribe el (alor de in$resa el primer n%mero& 3-n$resa el se$undo& 45
os n%meros son & 3. El (alor de i !e incrementa en *
i 8
.. Cuando !e llega al nal de la! in!truccione!" el programa !ede(uel(e a la in!trucción F:ile / la condición !e ree(alGa+ Ene!te ca!o !e compara i < 8= con b < =+ Como i e! menor 4ue
(
-
8/19/2019 Manual de Programacion en C - UTEM
28/136
b la condición e! (erdadera / nue(amente !e e9ecutan la!línea! .. a .0
. %. Se e!cribe el (alor de i / luego !e incrementan$resa el primer n%mero& 3-
n$resa el se$undo& 45os n%meros son & 3 4i *
.. Como nue(amente !e llego al nal de la! in!truccione! dentrodel F:ile+ !e ree(alua la condición del F:ile+ 4ue e!(erdadera / !e (uel(e a iterar+
+++ +++
. %. El programa a !eguido iterando" / !e a entrado a la!in!truccione! con un (alor de i de + Se e!cribe el (alor de i
/ !e incrementa n$resa el primer n%mero& 3-n$resa el se$undo& 45os n%meros son & 3 4 41 42 43 44
i
.. Se (uel(e a e(aluar la condición del F:ile+ en e!te ca!o e!;al!a+ C !alta inmediatamente a la línea 4ue !igue a la!in!truccione! del F:ile+ e! decir" la línea .
.? Se e!cribe el men!a9e de agradecimiento / nali a el programan$resa el primer n%mero& 3-n$resa el se$undo& 45os n%meros son & 3 4 41 42 43 44
8uc:as $racias por usar estre pro$rama
(9.A ve-es e is)en ,/-#as %&r,as *e llevar a -ab& /na )area. En el -as& *el 4r&+ra,a /e a-aba,&s *e analiBar se 4/e*e /sar /n -&n)a*&r en el -i-l&"#ile.
(:.Un -&n)a*&r es /na variable a/ iliar /e se /sa 7/n)& a /n "#ile 4ara re4e)ir /n )r&B& *e - *i+& /na -ier)a -an)i*a* *e ve-es. En n/es)r& e7e,4l&6 sabe,&s
/e la -an)i*a* *e n=,er&s en)re a $ b s&n bHaH1. P&r e7e,4l&6 si a vale $ 96 #a$ /e es-ribir 9H H1 ( n=,er&s6 /e s&n $ .
08+ Una nue(a (er!ión del programa e!#
31. print (! n$resa el primer n%mero& !);
32. ...
(
-
8/19/2019 Manual de Programacion en C - UTEM
29/136
33. print (! os numeros son!);
34. i bIaI1;
35. F:ile (iL ) {
36. print ( d +bIi);
3'. i iI1;
3-.
Otra /er#ión% i"ualmente correcta e#&
3 . print (! n$resa el primer n%mero& !);4 . ...
41. print (! os numeros son!);
42. i bIaI1;
43. F:ile (iL ) {
44. i iI1;
45. print ( d +bI(i 1));
46.
• Una e7e-/-i n *el +r/4& *e ins)r/--i&nes se *en&,ina i)era-i n. Si se e7e-/)a10 ve-es el +r/4& *e ins)r/--i&nes6 se *i-e /e el -i-l& )/v& 10 i)era-i&nes.
• N& e is)e /n l?,i)e al n=,er& *e i)era-i&nes /e se 4/e*en llevar a -ab& en/n -i-l&.
?mbito de una /ariableEl 2,bi)& *e /na variable es la 4ar)e *el 4r&+ra,a *&n*e la variable es -&n&-i*a $ 4/e*e ser /sa*a. C&,& $a vi,&s6 /na variable 4/e*e ser /sa*a s l& *es4/>s /e se#a *e%ini*&. En C6 el 2,bi)& *e la variable )er,ina -/an*& se en-/en)ra el 4ar>n)esis /e -ierra al 4ar>n)esis /e 4re-e*?a la *e-lara-i n *e la variable.
(9
-
8/19/2019 Manual de Programacion en C - UTEM
30/136
-
8/19/2019 Manual de Programacion en C - UTEM
31/136
In*en)ar es &r*enar /n 4r&+ra,a a+re+an*& es4a-i&s al la*& iB /ier*& *e lasins)r/--i&nes. D&s %&r,as *e in*en)ar /n "#ile s&n las si+/ien)es8
Parente#i# de comien0o de blo1ue en la mi#ma línea de la cl7u#ula >-ile
F:ile (condiciAn) {instrucciAn;
instrucciAn;
instrucciAn;
Par!nte#i# de comien0o de blo1ue en una nue/a línea
F:ile (condiciAn)
{
instrucciAn;
instrucciAn;
instrucciAn;
En a,b&s -as&s se *e7a /n es4a-i& an)es *el -&,ienB& *e -a*a ins)r/--i n *en)r&*el bl& /e 4ara -lari%i-ar el 4r&+ra,a. N/n-a &lvi*es in*en)ar. Si bien n& es&bli+a-i n #a-erl& )e 4/e*e si,4li%i-ar bas)an)e en)en*er l& /e #a-e el 4r&+ra,a.
@-ile# anidado#
Es 4er%e-)a,en)e 4&sible -&l&-ar /n "#ile *en)r& *e &)r& "#ile !"#ile ani*a*&'.C&,& e7e,4l&6 -&nsi*era el si+/ien)e 4r&+ra,a6 /e es-ribe la )abla *e ,/l)i4li-ar *el 1 al 108
30
-
8/19/2019 Manual de Programacion en C - UTEM
32/136
1. int i ;
2. F:ile (iP1 ) {
3. int C ;
4. F:ile (CP1 ) {
5. print (! d E d es d !+i+C+(i*C));
6. C ;
'.
-. i ;
.
reaB
La ins)r/--i n brea in)err/,4e la e7e-/-i n *el "#ile /e la -&n)iene. Es =)il enal+/n&s -&n)e )&s *&n*e /na -&n*i-i n #a-e /e n& sea *eseable se+/ir -&n lai)era-i n.
El si+/ien)e 4se/*&H- *i+& ,/es)ra /n -&n)e )& *&n*e brea es =)il8
F:ile (Cu$ador1 ni Cu$ador2 :a $anado) {Cu$ador1 mue#e pie ai Cu$ador1R$anA {escribeRmensaCe ($anA Cu$ador 1)breaS;
Cu$ador2 mue#e pie ai Cu$ador2R$anAescribeRmensaCe ($anA Cu$ador 2)
31
-
8/19/2019 Manual de Programacion en C - UTEM
33/136
Errore# (dema#iado* comune#
Un err&r ,/$ -&,=n es -reer /e /n "#ile 4/e*e )er,inar !salir *e' en la ,i)a**el bl& /e *e ins)r/--i&nes6 bas)an*& /e /na ins)r/--i n #a+a /e la -&n*i-i n*el "#ile sea %alsa6 &lvi*an*& /e l& /e real,en)e &-/rre es /e C eval=a la-&n*i-i n *el "#ile an)es *e en)rar 4&r 4ri,era veB al bl& /e $ an)es *e reen)rar en-a*a i)era-i n.
C&nsi*era el si+/ien)e 4r&+ra,a8
1. int i 3;2. F:ile (iL1) {
3. i iI1;
4. print ( d +i);
5.
6. print (! in!);
La )raBa !&r*en en /e se e7e-/)an las ins)r/--i&nes' *e es)e 4r&+ra,a es
-
8/19/2019 Manual de Programacion en C - UTEM
34/136
6. int actorial actorial*i;
'. i i 1;
-.
. print (!Tactorial d0n!+ actorial);
• En la l?nea se es)2 )ra)an*& *e asi+nar a la variable %a-)&rial s/ 4r&*/-)& -&i !l& /e es in*e%ini*&6 $a /e %a-)&rial6 al es)ar re-i>n *e-lara*a n& )ival&r'
• En la =l)i,a l?nea6 se #a-e re%eren-ia a la variable %a-)&rial6 -/$& 2,bi)& va*e la l?nea a .
La s&l/-i n -&rre-)a6 /e s&l& ,&*i%i-a li+era,en)e el 4r&+ra,a6 es8
1. int i+n+ actorial 1;2. print (!in$resa n&!);
3. scan ( d +,n);
4. i 1;
5. F:ile (iP n) {
6. actorial actorial*i;
'. i i 1;
-.
. print (!Tactorial d0n!+ actorial);
Problema# re#uelto#Problema 2& 8actore# de un n mero
Es-ribe /n 4r&+ra,a /e 4i*a in+resar /n n=,er& ,a$&r /e 1 $ en)re+/e )&*&s l&s
%a-)&res *e ese n=,er&. Si el n=,er& in+resa*& n& es ,a$&r /e 16 el 4r&+ra,a*ebe )er,inar. Re-/er*a /e -/al /ier n=,er& )iene al ,en&s -&,& %a-)&r al 1.
*8+ Solución#11. int n+ actor;
12. /* "re$untamos por el numero */
33
-
8/19/2019 Manual de Programacion en C - UTEM
35/136
13. print (!B9 BO U K= T9B UH=G!);
14. print (! n$rese un numero ma7or @ue 1 D !);
15. scan ( d +,n);
16. /* Veri icamos @ue este en el ran$o */
1'. i (nL1)
1-. {
1 . print (! os actores son& !);
2 . actor 1;
21. /* acemos un ciclo probando todos los posiblesactores */
22. F:ile( actorP n){
23. i (n actor )
24. print ( d !+ actor);
25. actor ;
26.
2'. /* ndicamos @ue termina la lista */
2-. print (!.0n!);
2 .
3 . else
31. print (!=l numero debe ser ma7or @ue 10n!);
Problema ;& Di"ito /eri icador del carn! de identidad
El sis)e,a *e i*en)i%i-a-i n /e se /sa en C#ile sa basa en /n - *i+& !lla,a*&n/,er& *el -arn> *e i*en)i*a*' /e -&rres4&n*e a /n n=,er& en)er& ! /e se leasi+na a -a*a #abi)an)e' $ /n *?+i)& veri%i-a*&r ! /e se -al-/la /san*& el n/,er&an)eri&r' 4ara saber si al+/n&s *e l&s *?+i)&s *el -arne) #an si*& ,&*i%i-a*&s. As? 4ara saber si la ->*/la 1(. . 39H1 es)2 -&rre-)a6 *ebe,&s -al-/lar el *?+i)&
3
-
8/19/2019 Manual de Programacion en C - UTEM
36/136
veri%i-a*&r 4ara 1( 39 $ -&,4ararl& -&n 1. Si s&n i+/ales6 el n=,er& es)2 bien6si n&6 %/e a*/l)era*&.
Para -al-/lar el *?+i)& veri%i-a*&r se /)iliBa el si+/ien)e al+&ri),&8
• Se ,/l)i4li-an l&s *i+i)&s *el n=,er& en)er&6 4ar)ien*& *el =l)i,&6res4e-)iva,en)e -&n (636 6 6 6 6( $ 3• L/e+& se s/,an )&*&s es)&s res/l)a*&s 4ar-iales6 $ /e se lla,ar2 SUMA.
• Se -al-/la el *i+i)& veri%i-a*&r -&,&8 D 11 H ! SUMA ,&*/l& 11 '
• Si D 11 en)&n-es el *i+i)& veri%i-a*&r es ;0; !-er&'.
• Si D 106 en)&n-es el *i+i)& veri%i-a*&r es ;V;.
• En -/al /ier &)r& -as& el *i+i)& veri%i-a*&r es D.
:olución
1. int carnet+resultado;2. /* "re$untamos por el numero */
3. print (! n$rese un numero de carnet (ma7or @ue 1) D !);
4. scan ( d +,carnet);
5. /* Veri icamos @ue este en el ran$o */
6. i (carnetL1)
'. {
-. int actor 2+suma +di$ito ;
. /* acemos un ciclo @ue termina cuando carnet sea
1 . "ara rescatar los di$itos rescatamos el ultimo 7
11. lue $o lo @uitamos. */
12. F:ile (carnetL )
13. {
14. /* Hescatamos es ultimo di$ito */
3
-
8/19/2019 Manual de Programacion en C - UTEM
37/136
15. di$ito carnet 1 ;
16. /* uitamos el ultimo di$ito del numero */
1'. carnet carnet/1 ;
1-. suma suma di$ito* actor;
1 . actor ;
2 . i ( actorL -)
21. actor 2;
22.
23. resultado 11I(suma 11);
24. i (resultado 11)
25. resultado ;
26. /* 8ostramos el resultado */
2'. i (resultado 1 )
2-. print (!=l di$ito #eri icador es& W!);
2 . else
3 . print (!=l di$ito #eri icador es& d!+ resultado);
31.
32. else
33. print (!=l numero debe ser ma7or @ue 1!);
3
-
8/19/2019 Manual de Programacion en C - UTEM
38/136
Problema & :a$o de Micro
Un sa4& *e ,i-r& -al-/la -/2n)& )ie,4& #a )rans-/rri*& en)re el 4as& *e *&s ,i-r&s*el ,is,& re-&rri*&. Un Sa4& 4&s,&*ern& /sar2 /n N&)eb&& 4ara a$/*arse en el
-2l-/l&.a. Es-ribe /n 4r&+ra,a en C /e s&s)en+a el si+/ien)e *i2l&+& 8
A /> #&ra 4as la 4ri,era ,i-r& !,in/)&s'
A /> #&ra 4as la ,i-r& ( 3
La *i%eren-ia en)re la 1 $ la ( es *e 9 ,in/)&s
A /> #&ra 4as la ,i-r& 3 9
La *i%eren-ia en)re la ( $ la 3 es *e ,in/)&s
A /> #&ra 4as la ,i-r& H1
M/-#as +ra-ias 4&r /sar es)e 4r&+ra,a
Es *e-ir6 /e 4re+/n)e la #&ra en ,in/)&s. S/4 n /e el 4r&+ra,a se /sa en /n,is,& *?a sie,4re.
b' Es-ribe el ,is,& 4r&+ra,a6 4er& la #&ra se in+resa a#&ra *e la si+/ien)e %&r,a8A /> #&ra 4as la 4ri,era ,i-r& !,in/)&s' 1
A /> #&ra 4as la ,i-r& ( 1 13
La *i%eren-ia en)re la 1 $ la ( es *e 9 ,in/)&s
A /> #&ra 4as la ,i-r& 3 ( 19
La *i%eren-ia en)re la ( $ la 3 es *e 1 #&ra ,in/)&s
A /> #&ra 4as la ,i-r& H1
M/-#as +ra-ias 4&r /sar es)e 4r&+ra,a
Es *e-ir6 la #&ra se ,/es)ra en #&ras $ ,in/)&s
3
-
8/19/2019 Manual de Programacion en C - UTEM
39/136
-
8/19/2019 Manual de Programacion en C - UTEM
40/136
22. int :ora;
23. print (!9 @ue :ora paso la micro dD!+i);
24. scan ( d d +,:ora+,minutos);
25. actual :ora*6 minutos;
26. i (actualN I1){
2'. di : (actualIantes)/6 ;
2-. di m (actualIantes) 6 ;
2 . print (! a di erencia entre la d 7 la d es de!+iI1+i);
3 . i (di :L )
31. print ( d :oras 7 !+di :);
32. print (! d minutos!+di m);
33. antes actual;
34. i i 1;
35.
36.
3'. print (!8uc:as $racias por usar este pro$rama0n!);
Pon tu# conocimiento# a $rueba
Es-ribe /n 4r&+ra,a /e lea las n&)as *e /n al/,n& *el )e-la*& $ es-riba s/ 4r&,e*i& en la 4an)alla. Es-ribe *&s versi&nesW la 4ri,era versi n 4re+/n)a al/s/ari& la -an)i*a* *e n&)as6 la se+/n*a versi n 4re+/n)a n&)as #as)a /e sein+resa /n 0 4ara in*i-ar el %in.
Bu>ntas notas sonD 4
Xota 1& '.
Xota 2& 6.
3:
-
8/19/2019 Manual de Programacion en C - UTEM
41/136
Xota 3& 5.5
Xota 4& 4.
"romedio& 5.5
er#ión 2
n$resa las notas ( in)
Xota 1& '.
Xota 2& 6.
Xota 3& 5.
Xota 5& "romedio& 6.
er#ión ;
Dia"rama# de lujo
Un *ia+ra,a *e %l/7& es /na re4resen)a-i n +r2%i-a *el &r*en en /e se vane7e-/)an*& las ins)r/--i&nes *e /n 4r&+ra,a6 - ,& $a #e,&s vis)& *e %&r,as/4er%i-ial en es)e -a4?)/l& $ el an)eri&r. as)a a#&ra #e,&s vis)& )res )i4&s *e7e-/-i n8 se-/en-ial6 -?-li-a $ -&n*i-i&nal6 -a*a /n& *e l&s -/ales )iene /n*ia+ra,a as&-ia*&8
:ecuencial Condicional Cíclicainst1;
inst2;
inst3;
i (cond)
inst1;
else
inst2;
F:ile (cond)
inst;
0
-
8/19/2019 Manual de Programacion en C - UTEM
42/136
Para 4r&+ra,as ,2s -&,4le7&s6 bas)a -&n -&,binar l&s *is)in)&s *ia+ra,as.
Ejem$lo de un dia"rama de lujo
El si+/ien)e - *i+& es-ribe si /n n=,er& +/ar*a*& en la variable es 4&si)iv&6ne+a)iv& & i+/al a -er&. A s/ *ere-#a se ve s/ *ia+ra,a *e %l/7&6 /e es /na-&,4&si-i n *e *&s *ia+ra,as *e se-/en-ias -&n*i-i&nales.
i (EL )
print (!positi#o );
else {
i (EP )print (!ne$ati#o!);
else
print (!cero!);
L&s *ia+ra,as 4/e*en a$/*ar a *es-/brir 4&r /> /n - *i+& n& %/n-i&na. P&r e7e,4l&6 en el si+/ien)e 4r&+ra,a6 /e in)en)a #a-er l& ,is,& /e el an)eri&r6 el*ia+ra,a 4&ne *e ,ani%ies)& -/al es el err&r -&,e)i*&8
1
-
8/19/2019 Manual de Programacion en C - UTEM
43/136
i (EL )
print (!positi#o);
i (EP )
print (!ne$ati#o!);
else
print (!cero!);
• En el -as& en /e el n=,er& sea ne+a)iv&6 la 4ri,era -&n*i-i n es %alsa $ seeval=a la se+/n*a. C&,& es)a es ver*a*era6 se es-ribe ;ne+a)iv&; en la 4an)alla.
• Si el n=,er& es -er&6 la 4ri,era -&n*i-i n es %alsa6 se eval=a la se+/n*a6 /e)a,bi>n es %alsa $ se es-ribe ;-er&;
• Si el n=,er& es 4&si)iv&6 se es-ribe ;4&si)iv&;. Sin e,bar+&6 el err&r se 4r&*/-e al 4asar a eval/ar la se+/n*a -&n*i-i n6 /e es %alsa6 4&r l& /e sees-ribe ;-er&;. Es *e-ir6 si el n=,er& es ,a$&r /e -er&6 se es-ribe ;4&si)iv&;
$ ;-er&; en la 4an)alla.Ejecución $a#o a $a#o
La e7e-/-i n 4as& a 4as& -&nsis)e en es-ribir el &r*en en /e las ins)r/--i&nes se vane7e-/)an*& al -&rrer el 4r&+ra,a. Para ell& se le asi+na /n n=,er& a -a*a l?nea *el 4r&+ra,a. Al la*& *e -a*a l?nea se es-ribe8
Si la ins)r/--i n es ... Se *ebe es-ribir
asi+na-i n el n/ev& val&r *e la variable
"#ile & i% el val&r *e ver*a* *e la -&n*i-i n
Prin) /> se es-ribe en la 4an)alla
El si+/ien)e 4r&+ra,a lee n=,er&s en)er&s *es*e el )e-la*& $ es-ribe -/2n)& vale s/s/,a a-/,/la*a. El 4r&+ra,a i)era #as)a /e se in+resa /n -er&.
(
-
8/19/2019 Manual de Programacion en C - UTEM
44/136
-
8/19/2019 Manual de Programacion en C - UTEM
45/136
-
8/19/2019 Manual de Programacion en C - UTEM
46/136
5. E EI7;
6. else
'. 7 7IE;
-.
. print ( d +E);
:olución&
-
8/19/2019 Manual de Programacion en C - UTEM
47/136
-
8/19/2019 Manual de Programacion en C - UTEM
48/136
8orEn C e is)e /na %&r,a abrevia*a *e es-ribir /n -i-l& "#ile8 la ins)r/--i n %&r. N& s l&abrevia6 sin& /e a*e,as a4&r)a -lari*a* en -ier)&s -as&s. S/ %&r,a es
or (instrucciAn1; condiciAn; instrucciAn2) {
instrucciones;
e4ui(ale a
instrucciAn 1;
F:ile (condiciAn) {instrucciones;
instrucciAn2;
L&s si+/ien)es 4r&+ra,as ,/es)ran e7e,4l&s *e la e /ivalen-ia en)re "#ile $ %&r8
Con or333 Con >-ile333
nt i;
or (i ; iP 1 ; i )
print (!=l n%mero es d!+i);
int i ;
F:ile (iP1 ) {
print (!=l n%mero es ! i);
i ;
Tloat tiempo;
or (tiempo . ;tiempoP1 . ;tiempo .1)
{
print (! iempo +posicion!+tiempo+pos);
loat tiempo . ;
F:ile (tiempoP1 . ) {
print (! iempo +posicion !+tiempo+pos);
pos .1*#elocidad;
-
8/19/2019 Manual de Programacion en C - UTEM
49/136
pos .1*#elocidad;
#elocidad #elocidad .3;
#elocidad #elocidad .3;
9
-
8/19/2019 Manual de Programacion en C - UTEM
50/136
Patrone# de Pro"ramación
Al es-ribir /n 4r&+ra,a n& se 4ar)e sie,4re *e -er&. M/-#as ve-es es 4&siblere/)iliBar $ -&,binar ele,en)&s *e 4r&+ra,as $a -&n&-i*&s. Al es)/*iar *ivers&s 4r&+ra,as es 4&sible i*en)i%i-ar$atrone# *e ins)r/--i&nes /e se re4i)en.
El -&n-&-er *ivers&s 4a)r&nes n&s a$/*a a res&lver n/ev&s 4r&ble,as6 4/es n&)ene,&s /e reinven)ar s&l/-i&nes 4ara 4r&ble,as si,ilares /na $ &)ra veB.
Patrón de acumulación
Un e7e,4l& *e es)&s 4a)r&nes *e 4r&+ra,a-i n es la a-/,/la-i n. Es)e 4a)r n se /sa 4ara realiBar -2l-/l&s -&,& la s/,a *e vari&s val&res -al-/la*&s en las i)era-i&nes*e /n -i-l&8
!uma2 (al* $ (al. $ (al0 $ +++ $ (alnproducto2 ;ac* & ;ac. & ;ac0 & +++ & ;acn
@a ;orma general de e!te patrón e!#
tipo variable = valor inicial ;
...
while ( ... ) {
...
variable = variable operador expresión ;
...
}
:
-
8/19/2019 Manual de Programacion en C - UTEM
51/136
La si+/ien)e 4an)alla ,/es)ra /n 4r&+ra,a /e -/en)a -/2n)&s n=,er&s in+resa el/s/ari&6 #as)a lle+ar al n=,er& -er&8
D 4.
D 5.D 6.
D .
Bontador 3
El 4r&+ra,a6 en el /e a4are-e -lara,en)e el 4a)r n *e a-/,/la-i n es8
1. int cont ;
2. loat nota;3. print (!D !);
4. scan ( +,nota);
. F:ile (notaN . ) { 5 O
-
8/19/2019 Manual de Programacion en C - UTEM
52/136
D .
"romedio 5.
12. loat suma + nota;
13. int cont ;14. print (!D !);
15. scan ( +,nota);
16. F:ile (notaN . ) {
1'. suma suma nota;
1-. cont cont 1;
1 . print (!D !);
2 . scan ( +,nota);
21.
22. print (!"romedio 1.1 0n!+ suma/cont);
Patrón de lectura de dato#
En el =l)i,& 4r&+ra,a se 4resen)a )a,bi>n el 4a)r n *e le-)/ra *e *a)&s. S/ %&r,a+eneral es8
tipo variable;
...
leer(variable);
while (...) {
....
leer(variable);
}
T?4i-a,en)e se ,ar-a el %in *e l&s *a)&s -&n /n -er& & H1 !& /n n=,er& /e n& 4er)eneB-a al /nivers& *e *a)&s'
1
-
8/19/2019 Manual de Programacion en C - UTEM
53/136
Patrón de Recorrido de Inter/alo de Entero#
Si -&nsi*era,&s /n 4r&+ra,a /e *es4lie+/e l&s n=,er&s en)er&s *e 1 a n6 -&,& seve en la 4an)alla si+/ien)e6 4&*e,&s /sar el 4a)r n *e a-/,/la-i n8
D 41
2
3
4
El 4r&+ra,a )er,ina -/an*& la variable i e -e*e en val&r a n
23. int n+i;24. print (!D !);
25. scan ( d +,n);
26. i 1;
2'. F:ile (iP n) {
2-. print ( d +i);
2 . i i 1;
3 .
En reali*a* es)a,&s en 4resen-ia *e &)r& 4a)r n ,/$ /)iliBa*&8 re-&rri*& *e /nin)erval& *e en)er&s. S/ %&r,a +eneral es8
int i= valorInicial;
while ( i
-
8/19/2019 Manual de Programacion en C - UTEM
54/136
Ejem$lo#
8actorial de un n mero
Para -al-/lar el %a-)&rial *e /n n=,er& se a+re+a el 4r&*/-)& *e l&s val&res
s/-esiv&s /e )&,a la variable i en -a*a i)era-i n. Usare,&s el 4a)r n *ea-/,/la-i n -&n el &4era*&r 5.
31. int act+ n+ i;32. print (!D !);
33. scan ( d +,n);
34. act 1;
35. i 1;
36. F:ile (iP n) {
3'. act act*i;
3-. i i 1;
3 .
4 . print (!=l actorial es d0n!+ act);
E'$onencial de un n mero u#ando una a$ro'imación&C&,& se sabe *e -2l-/l&6 e 4! ' se 4/e*e -al-/lar ,e*ian)e la si+/ien)ea4r& i,a-i n8
exp(x)= 1 + x + x^2/2! + x^3/3! + ... + x^i/i! + ... + x^n/n!
El si+/ien)e 4r&+ra,a -al-/la i al ,is,& )ie,4& /e -al-/la \i.
41. loat Ei 1. + acti 1. ;42. int i 1;
43. F:ile (iP n) {
44. Ei Ei*E;
45. acti acti*i;
46. i i 1;
3
-
8/19/2019 Manual de Programacion en C - UTEM
55/136
4'.
R+ A e!te programa podemo! agregarle una acumulación de,i';acti#
4 . loat E ...; /* Ubtener E 7 n */
5 . int n ...;
51. loat Ei 1. ;
52. loat acti 1. ;
53. loat eEpE 1. ;
54. int i 1;
55. F:ile (iP n) {
56. Ei Ei*E;
5'. acti acti*i;
5-. eEpE eEpE Ei/ acti;
5 . i i 1;
6 .
61. print ( 0n +eEpE);
La ins)r/--i n *e la l?nea 0 si,4le,en)e *es4lie+a el res/l)a*& %inal
Pon tu# conocimiento# a $rueba
Es-rbe /n 4r&+ra,a /e lea n=,er&s #as)a /e el /s/ari& in+rese /n -er& $ *i+a
-/2n)&s n=,er&s s&n 4ares $ -/2n)&s s&n i,4ares6 -&,& se ve en la 4an)allasi+/ein)e8
D1
D2
D5
Ob#er/a 1ue en la i=!#ima iteración% la /ariable 'i e# 'Fi 5 acti e# i
-
8/19/2019 Manual de Programacion en C - UTEM
56/136
D2
D4
D6
D
D14
D12
D-
a7 ' pares 7 3 impares
Calculo del m7'imo de un conjunto de dato#C&nsi*era /n 4r&+ra,a /e /san*& el 4a)r n *e le-)/ra *e *a)&s lea /n -&n7/n)& *en=,er&s 4&si)iv&s $ es-riba el ,a$&r *e )&*&s ell&s al %inal8
D1
D4
D2
D1D
=l m>Eimo es& 4
Usan*& al+& 4are-i*& al 4a)r n *e a-/,/la-i n6 &b)ene,&s
62. int num;63. int maEimo;
64. print (!D !);65. scan ( d +,num);
66. maEimo num;
6'. F:ile (numN ) {
-
8/19/2019 Manual de Programacion en C - UTEM
57/136
6-. i (numLmaEimo)
6 . maEimo num;
' . print (!D !);
'1. scan ( d +,num);
'2.
'3. print (!=l m>Eimo es d0n!+ maEimo);
A 4ri,era vis)a 4/e*e 4are-er /e es)e - *i+& n& /sa el 4a)r n *e a-/,/la-i n6 4er&si )e %i7as bien6 las l?neas $ 9 e /ivalen a
ma,imo2ma,
-
8/19/2019 Manual de Programacion en C - UTEM
58/136
El 4r&ble,a *e es)e al+&ri),&6 es /e si n& #a$ nin+=n #i4&4 )a,& el b/s-a*&r se-ae al ,e*i)err2ne& !
-
8/19/2019 Manual de Programacion en C - UTEM
59/136
D2
D5
D2
D4
D
=l ran$o es Z1+5[
De a#&ra en a*elan)e $ #as)a el %inal *el -/rs&6 ire,&s in)r&*/-ien*& *is)in)& 4a)r&nes *e 4r&+ra,a-i n. Es i,4&r)an)e )ener 4resen)e /> #a-e -a*a 4a)r n $- ,& in)e+rarl& a /n n/ev& 4r&+ra,a. Es /n e -elen)e e7er-i-i& b/s-ar 4a)r&nes $a-&n&-i*&s en )/s 4r&+ra,as6 $ ,e7&r a=n6 en-&n)rar 4a)r&nes n/ev&s.
9
-
8/19/2019 Manual de Programacion en C - UTEM
60/136
Puntero#
“Un puntero es una variable que contiene la direcci n de una variable ]
F2-il6 n& . En reali*a* n& es ,as /e es&6 sin e,bar+& si /n& n& l& )iene -lar& es 4r&ba/e en)re en /n es)a*& *e 42ni-& $ -&n%/si n *ebi*& a /e n& se sabe si se )iene el val&r
la variable & la *ire--i n *&n*e >s)a se /bi-a.
Puntero# 5 Direccione#
^ea,&s la re4resen)a-i n $ &r+aniBa-i n *e l&s *a)&s en la ,e,&ria 4ri,aria !RAM 4aral&s a,i+&s'. T?4i-a,en)e se &r+aniBan en -el*as -&n)i+/as *e ,e,&ria6 -&n /na *ire--i nasi+na*a a -a*a /na *e ellas. La i*ea es 4&*er /)iliBar /na -el*a & /n +r/4& *e ellas *e ser ne-esari&.
C&,=n,en)e /n b5te es /n c-ar 6 ( b$)es re4resen)an /n#-ort inte"er $ b$)esre4resen)an /ninte"er. Un 4/n)er& es /n +r/4& *e -el*as !en la ,a$&r?a *e l&s PCs,&*ern&sH' /e al,a-ena /na *ire--i n *e ,e,&ria.
El &4era*&r /nari& asi+na la *ire--i n *e /na variableW 4&r e7e,4l&6 seac /n -#ar $ $ /n 4/n)er&6 en)&n-es la &4era-i n$ J c
asi+na la *ire--i n *ec a la variable$6 se *i-e en)&n-es /e$ a$unta a c. N&)ar /e el&4era*&r s l& *ebe ser a4li-a*& s&bre variables6 7a,2s s&bre e 4resi&nes6 -&ns)an)ere+is)r&s.Se )iene a*e,2s el &4era*&rK -&n el -/al se &b)ienelo a$untado $or el 4/n)er& en &)ras 4alabras6 si se )iene l& an)eri&r en)&n-es se -/,4le /e8
K$ JJ c
Declaracione#Para *e-larar /n 4/n)er& se le *ebe in%&r,ar a C1ue e# lo 1ue uno de#ea almacenar enmemoria6 4&r l& )an)& se le in%&r,a el )i4& *e l& al,a-ena*&6 4&r e7e,4l&8
-#ar 54W !4/n)er& a -#ar'in) 54W !4/n)er& a in)'
%l&a) 54W !4/n)er& a %l&a)'
La %&r,a +eneral *e la *e-lara-i n *e /n 4/n)er& esti$o K/ariable
E7e,4l& !Pe /e & e7er-i-i& ,en)al6 si l& en)ien*en van bien en-a,ina*&s'8
:
-
8/19/2019 Manual de Programacion en C - UTEM
61/136
in) 16 $ (W
in) 5i4W 5 i4 es /n 4/n)er& a in)5
i4 W 5 i4 a4/n)a a la *ire--i n *e 5
$ 5i4W 5 $ 1 5
5i4 0W 5 0 5
Aritm!tica de $untero#
Una *e las _+ra-ias] *e l&s 4/n)er&s *e C ra*i-a en /e6 al ser ,ane7a*&s -&,& /navariable ,2s6 s&n v2li*as )&*as las &4era-i&nes ari),>)i-as *e en)er&s s&bre ell&s. L& ,a*e es)& !4&r /e n& )&*& 4/e*e ser b/en& en la vi*a' es /e el 4r&+ra,a*&r 4/e*e 4er*er e-&n)r&l s&bre ell&s *en)r& *e /n 4r&+ra,a &-asi&nan*& ,2s *e /n *&l&r *e -abeBa a /ienrealiBan l&s 4r&+ra,as.
a$ /n vie7& le,a /e reBa8ma# $eli"ro#o 1ue $untero $erdido en C.
P&r l& )an)&6 sii$ es /n 4/n)er& a /na *ire--i n *e ,e,&ria6 en)&n-esi$ #ar2 /e ese 4/n)er& a4/n)e a la *ire--i n si+/ien)e ei$== #ar2 /e a4/n)e a la an)eri&r.
ERRORE: COMUNE:
Se *ebe )ener ,/-#& -/i*a*& al ,ane7ar 4/n)er&s $ *i%eren-iar bien en)relo a$untado $ el1ue a$unta al /)iliBar la ari),>)i-a6 4&r e7e,4l& en el -as& an)eri&r en /ei$ a4/n)a a ' se 4/e*e )ener a*e,2s /e8
5i4 5i4@10W 5 11 se a/,en)a el val&r *e l& a4/n)a*& 5
$ 5i4 @1 5 $ 1( n/eva,en)e se /)iliBa l& a4/n)a*&5
L& en)re)eni*& es -/an*& se )iene8
5i4@@W
Se a/,en)a l& a4/n)a*& & la *ire--i n *e la ,e,&ria ... la res4/es)a es...
DEPENDE DEL COMPUTADOR !,=si-a *e s/s4ens& *e %&n*&'
0
-
8/19/2019 Manual de Programacion en C - UTEM
62/136
As? /e 4ara evi)arse ,al&s ra)&s se /)iliBan 4ar>n)esis8
!5i4'@@W 5 A/,en)a el val&r *e l& a4/n)a*& en 1 5
5!i4@@'W 5 L& /e #a-e es)& es en)re+ar l& a4/n)a*& 4&r i4 $ l/e+& -a,biar el 4/n)er& a*ire--i n si+/ien)e 5
5!@@i4'W 5 Ca,bia el 4/n)er& a la *ire--i n si+/ien)e $ en)re+a l& a4/n)a*& 5
O)r& err&r -&,=n al /)iliBar 4/n)er&s es -reer /e 4&r -&4iar 4/n)er&s se -rea /na -&4ia *elo a$untado6 4&r e7e,4l&8
in) 10W
in) 54 6 54$W
4 W 5 54 10 5
4$ 4 W 5 54$ 10 5
!54 '@@W 5 54 11 $ O
-
8/19/2019 Manual de Programacion en C - UTEM
63/136
P&r e7e,4l&6 si /n& n& sabe el )i4& *e l& /e se a4/n)ar2 -&n an)eri&ri*a* se 4/e*e *e%in-&,& /oid K6 $ l/e+& -&n elca#t se le in%&r,a al -&,4/)a*&r el )i4& *e l& al,a-ena*&. P&re7e,4l&8
v&i* 54W 5 4/n)er& a -/al /ier -&sa 5
in) iW
-#ar -W
... 5 bla6 bla6 bla 5
i% !-&n*i-i&n'
4 !v&i* 5' iW
else
4 !v&i* 5' -W
W
... 5 ,2s bla6 bla6 bla 5
i% !-&n*i-i&n'
i !in)' 54W
else
- !-#ar' 54W
(
-
8/19/2019 Manual de Programacion en C - UTEM
64/136
En el e7e,4l& an)eri&r se /)iliBa el -as) !v&i* 5' 4ara /e se 4/e*a asi+nar a 4 la *ire--i n*e las variables6 $ l/e+& se /)iliBan l&s -as)s *e l&s )i4&s res4e-)iv&s 4ara re-/4erar l&*a)&s.
3
-
8/19/2019 Manual de Programacion en C - UTEM
65/136
Arre"lo#
Invertir algunos números
C&nsi*era /n 4r&+ra,a /e lea *el )e-la*& 9 n=,er&s $ l&s *es4lie+/e l/e+& en&r*en invers&6 -&,& se ve a -&n)in/a-i n8
n$resa los n%meros
X%mero 1& 45
X%mero 2& 54
X%mero 3& 32
X%mero 4& '6
X%mero 5& 32
X%mero 6& 16
X%mero '& -
X%mero -& '
os n%meros al re#Qs son&
X%mero -& '
X%mero '& -
X%mero 6& 16
X%mero 5& 32
X%mero 4& '6
X%mero 3& 32X%mero 2& 54
X%mero 1& 45
-
8/19/2019 Manual de Programacion en C - UTEM
66/136
La s&l/-i n es bas)an)e %2-il *e 4r&+ra,ar. Xas)a -&n *e-larar 9 variables en)eras6leerlas *el )e-la*& $ es-ribirlas en &r*en invers&8
1. int #1+#2+#3+#4+#5+#6+#'+#-;2. print (! n$resa los n%meros0n!);
3. print (!X%mero 1&!);
4. scan ( d +,#1);
5. print (!X%mero 2&!);
6. scan ( d +,#2);
'. print (!X%mero 3&!);
-. scan ( d +,#3);. print (!X%mero 4&!);
1 . scan ( d +,#4);
11. print (!X%mero 5&!);
12. scan ( d +,#5);
13. print (!X%mero 6&!);
14. scan ( d +,#6);
15. print (!X%mero '&!);
16. scan ( d +,#');
1'. print (!X%mero -&!);
1-. scan ( d +,#-);
1 . print (! os n%meros al re#Qs son&0n!);
2 . print (!X%mero - d0n!+#-);
21. print (!X%mero ' d0n!+#');
22. print (!X%mero 6 d0n!+#6);
-
8/19/2019 Manual de Programacion en C - UTEM
67/136
23. print (!X%mero 5 d0n!+#5);
24. print (!X%mero 4 d0n!+#4);
25. print (!X%mero 3 d0n!+#3);
26. print (!X%mero 2 d0n!+#2);
2'. print (!X%mero 1 d0n!+#1);
`/> 4asar?a6 sin e,bar+&6 si %/eran 100 n=,er&s en veB *e s l& 9 abr?a /e*e-larar 100 n=,er&s en)er&s
-
8/19/2019 Manual de Programacion en C - UTEM
68/136
Arre"lo#
Un arre+l& es /n &b7e)& /e sirve 4ara al,a-enar /n -&n7/n)& *e val&res *el ,is,&)i4&. S/ *e-lara-i n es8
tipoVariable nombreVariableZ[;
S/ -rea-i n es si,ilar a la -rea-i n *e /n &b7e)& -&,=n6 4er& se *ebe es4e-i%i-ar a*e,2s la -an)i*a* *e ele,en)&s8
tipoVariable nombreVariableZcantidad[;
P&r e7e,4l&6 si se *esea +/ar*ar en el arre+l& v las v&)a-i&nes *e 9 -an*i*a)&s *e-lara-i n *ebe ser #e-#a *e la si+/ien)e ,anera8
int #Z-[;
# neF int Z-[;
L&s arre+l&s )ienen a*e,2s /na %/er)e rela-i n -&n l&s 4/n)er&s6 4/es)& /e s&2reas en la ,e,&ria a las -/ales s&n _a4/n)a*&s]. P&r e7e,4l& el ,is,& arre+l&an)eri&r se 4/e*e *e-larar *e la si+/ien)e ,anera8
int *#;
# (int *) malloc (si eo (int) * -);
L& /e se )ra*/-e en la -rea-i n *e /n &b7e)& *e 9 ele,en)&s en)er&s /e esa4/n)a*& !re%eren-ia*& 4&r v'. Mall&- se /)iliBa 4ara 4e*ir ,e,&ria6 es *e-ir6 C le*i-e al -&,4/)a*&r _ne-esi)& -el*as *e ,e,&ria]6 en es)e -as& s&n 9 -el*as 4araal,a-enar en)er&s8
Ca*a ele,en)& se re%eren-ia -&n el n&,bre *el arre+l& $ /n ?n*i-e en)er&. El ran+&*e l&s ?n*i-es va *e 0 a -an)i*a*H1.
-
8/19/2019 Manual de Programacion en C - UTEM
69/136
P&r e7e,4l&6 4ara #a-er re%eren-ia al val&r *el -/ar)& ele,en)& *e v #a$ /e es-ribir
vZ3[. El in*i-e *en)r& *e l&s 4ar>n)esis -/a*ra*&s 4/e*e ser -/al /ier e 4resi nen)era /e es)e *en)r& *el ran+& Z06 -an)i*a*H1[.
El si+/ien)e - *i+& asi+na val&r 0 a )&*&s l&s ele,en)&s *e v8
2-. i ;2 . F:ile (iP-) {
3 . #Zi[ ;
31. i ;
C&,& vZi[ es /n arre+l& *e en)er&s6 s/s ele,en)&s 4/e*en ser -&l&-a*& en -/al /ier -&n)e )& *&n*e sea vali*& 4&ner /na variable *e )i4& en)er&. Un 4ar *e e7e,4l-lari%i-a es)&8
int a;
scan ( d +,a);
int #Z-[;
i ;
F:ile (iP-) {
scan( d +,#Zi[);
i ;
int E a*2; int E #Z'[*2;
a a 1; #Z2[ #Z2[ 1;
9
-
8/19/2019 Manual de Programacion en C - UTEM
70/136
-
8/19/2019 Manual de Programacion en C - UTEM
71/136
Arre"lo# de do# dimen#ione#
En /n -/rs& *e -&,4/)a-i n *e 100 al/,n&s se #an ren*i*& )es) a l& lar+& *el a &.Las n&)as 4&*r?an +/ar*arse en arre+l&s *e 100 ele,en)&s -a*a /n&8
loat c1Z1 [;
...
loat c51 [;
loat c6Z1 [;
o en una matri de *88 , ?
double notasZ1 [Z6[;C&,& e7e,4l&6 si l&s *a)&s se en-/en)ran en la ,a)riB8
notas
6.' 6.5 6.3 6.1 6.- '.
1.2 2.3 3.1 4. 4. 2.1
4.5 4.4 4.1 4. 4. 3.5
...
El 4r&,e*i& *e -a*a al/,n& es si,4le *e -al-/lar8
41. or (alumno ; alumnoP1 ; alumno ) {42. loat suma . ;
43. int test;
44. or (test ; test P6; test )
45. suma suma notasZalumno[Ztest[;
46. println (!=l promedio del alumno d es1.2 !+alumno 1+suma/6);
0
-
8/19/2019 Manual de Programacion en C - UTEM
72/136
-
8/19/2019 Manual de Programacion en C - UTEM
73/136
+8ila# o columna#.
Una *e las 4re+/n)as ,2s -&,/nes en arre+l&s bi*i,ensi&nales es -/2l in*i-ere4resen)a las -&l/,nas $ -/2l las %ilas. P&r e7e,4l&6 si se )e 4i*e -rear /n arre+l&
4ara +/ar*ar las n&)as *e 100 al/,n&s a l& lar+& *e 4r/ebas6 -/2l *e lassi+/ien)es *e-lara-i&nes es la -&rre-)a
loat notaZ1 [Z5[;
o
loat notaZ5[Z1 [;
En reali*a* *a l& ,is,&6 s l& i,4&r)a ser -&nse-/en)e !a/n /e ser -&nse-/en)e n&es /na vir)/*' *es4/>s *e la *e-lara-i n $ res4e)ar la -&nven-i n /e /n& ,is,& se*a.
El - *i+& *e la %i+/ra 1 es -&rre-)&6 a *i%eren-ia *el *e la %i+/ra (6 /e n& res4esen)i*& *e la *e-lara-i n8
1. loat notaZ1 [Z5[;2. or (i ; iP1 ;i )
3. or (C ; CP5; i ) {
4. print (! n$resa la nota d del 9lumno d +C+i);
5. scan ( !+,notaZi[ZC[);
6.
Figura *
'. loat notaZ5[Z1 [;-. or (int i ; iP1 ;i )
. or (int C ; CP5; i ) {
1 . print (! n$resa la nota d del 9lumno d +C+i);
11. scan ( !+,notaZi[ZC[);
12.
(
-
8/19/2019 Manual de Programacion en C - UTEM
74/136
Figura .
El - *i+& *e la %i+/ra ( -&rre+i*& es
13. loat notaZ5[Z1 [;14. or (int i ; iP1 ;i )
15. or (int C ; CP5; i ) {
16. print (! n$resa la nota d del 9lumno d +C+i);
1'. scan ( !+,notaZC[Zi[);
1-.
A#i"nacion de arre"lo#I,a+ina /e )ienes /n arre+l& A *e 100 n=,er&s *e )i4& en)er& $ /ieres -&4iarl& en/n arre+l& X. El - *i+& /e es-ribir?a /n al/,n& *e 4&-as l/-es es8
1 . int 9Z1 [+ \Z1 [;2 . /* leer 9 de el teclado+ o calcularo */
21. ...
22. \ 9;
Es)e - *i+& -&,4ila6 4er& /> es l& /e #a-e . En es)e -as& es)a,&s -rean*& /n&b7e)& /e -&nsis)e *e 100 ele,en)&s en)er&s $ +/ar*a,&s /na re%eren-ia a >l en A.
En la se+/n*a *e-lara-i n se le *i-e a C /e en X se +/ar*ar2 /na re%eren-ia a /narre+l& *e en)er&s. En la l?nea (( se #a-e /e X #a+a re%eren-ia al ,is,& &b7e)&!arre+l& *e en)er&s' /e A8
En )&*& -as&6 el -&,4ila*&r *e C re-la,ar2 4&r /e *ir2 /e X es es)2)i-& $ n&*in2,i-& !averi+/e la *i%eren-ia... inves)i+/e6 n& sea %l&7&'6 l& -/al se _,e7&rar?ase *e-lara X -&,& in) 5X 6 sin e,bar+& la s&l/-i n a=n n& es -&rre-)a. El si+/ien)e
3
-
8/19/2019 Manual de Programacion en C - UTEM
75/136
es /n e7e,4l& err&ne& *e /erer /sar X 4ara +/ar*ar /na ;-&4ia; *e A 4ara l/e+&rees)able-er l&s val&res &ri+inales8
23. int 9Z1 [+ *\;24. ....
25. \ 9; /* $uardamos copia de 9 */
26. /* se modi ica 9 */
2'. or (int i ; iP1 ;i )
2-. 9Zi[ ...;
2 . /* reestablecemos los #alores de 9 */
3 . 9 \;C/al /ier -a,bi& #e-#& en el arre+l& en la l?nea (9 es 4er,anen)e6 en el sen)i*& /ela linea 30 n& )iene nin+=n e%e-)&6 4/es A $ X $a #a-en re%eren-ia al ,is,& &b7e)& 4ar)ir *e la l?nea ( .
El - *i+& -&rre-)& es
31. int 9Z1 [+ \Z1 [;32. /* o bien& int *\; \ (int *) malloc
(1 *si eo (int));*/
33. ...
34. or (int i ;iP1 ;i )
35. \Zi[ 9Zi[;
36. // se modi ica 9
3'. or (int i ; iP1 ;i )
3-. 9Zi[ ...;3 . // reestablecemos los #alores de 9
4 . or (int i ;iP1 ;i )
41. 9Zi[ \Zi[;
-
8/19/2019 Manual de Programacion en C - UTEM
76/136
El si+/ien)e *ia+ra,a ,/es)ra la si)/a-i n *es4/>s *e la l?nea 318
Patróne# en arre"lo#
El 4a)r n ,2s -&,=n es el *e re-&rrer /n arre+l&8
int i=!;
while (i
-
8/19/2019 Manual de Programacion en C - UTEM
77/136
int i=!;
while (i< lar"o (#)) {
i' (#$i% i" al a ele ento*b scado) {
encontrado=tr e;
brea ;
}
i++;
}
El 4a)r n *e b=s /e*a *el ?n*i-e *e /n ele,en)& es ,/$ /sa*&8
int indice=, ;
int i=!;
while (i< lar"o(#)) {
i' (#$i% i" al a ele ento*b scado) {
indice=i;
brea ;
}
i++;
}
- si indice==, entonces el ele ento no existe -
Recorrido de una matri0
E is)en varias %&r,as *e re-&rrer /n arre+l&6 *e4en*ien*& *e la %&r,a en /e sin-re,en)en l&s ?n*i-es. a$ ve-es en las /e la %&r,a *el re-&rri*& n& )ienenin+/na i,4&r)an-ia !s/,ar )&*&s l&s *a)&s *e la ,a)riB'6 4er& en 4r&ble,as -&,&res&lver /n sis)e,a *e e-/a-i&nes lineales s? i,4&r)a8
-
8/19/2019 Manual de Programacion en C - UTEM
78/136
or ( ila ; ilaPn; ila )or (col ; colPm; col )
... 9Z ila[Zcol[;
or ( ila ; ilaPn; ila )or (col mI1; colL ; colII)
... 9Z ila[Zcol[;
Pon tu# conocimiento# a $rueba• C ,& #ar?as 4ara al,a-enar /na ,a)riB *e , n ele,en)&s en /n arre+l&
*e /na s&la *i,ensi n• Es-ribe /n 4r&+ra,a /e ,/l)i4li /e ,a)ri-es
Problema# re#uelto#
Problema 2& Matri0 #im!trica
M/-#&s 4r&ble,as *e al+ebra lineal s&n si,4li%i-ables si las ,a)ri-es inv&l/-ra*as-/,4len -ier)as 4r&4ie*a*es. Den)r& *e las )an)as 4r&4ie*a*es /e 4/e*e )ener /na,a)riB6 es ser si,>)ri-a.
Un e7e,4l& *e ,a)riB si,>)ri-a es >s)e8
Es *e-ir6 si A es ,a)riB *e n n6 en)&n-es A es si,>)ri-a si8
-
8/19/2019 Manual de Programacion en C - UTEM
79/136
Es-riba /n 4r&+ra,a en )ri-a & n&. S/4&n+a/e $a )iene /na ,a)riB A *e )a,a & n n. Ten+a -/i*a*& -&n la s&l/-i n6
a4r&ve-#e las 4r&4ie*a*es *e la ,a)riB 4ara res&lver el 4r&ble,a e%i-ien)e,en)e.
1. /* =n este caso+ es solo un HU]U de cAdi$o
2. Ge tienen la matri 9 de tamano nEn 7 los indices @uesean
3. necesarios. Osaremos una #ariable la$+ @ue re$istra un
4. estado como interruptor */
5. int 9Zn[Zn[;
6. int i+C+ la$ true;
'. or(i ; iPn; i )-. or(C ; CPi; C )
. i (9Zi[ZC[ N 9ZC[Zi[)
1 . la$ alse;
11. i ( la$) /* =s simetrica+ no cambio nunca */
12. print (!8atri simetrica0n!);
13. else
14. print (!8atri no simetrica0n!);
Problema ;& Con#ultoría #entimental
9
-
8/19/2019 Manual de Programacion en C - UTEM
80/136
Una empre!a de con!ultoría !entimental !e encarga deponer en contacto per!ona! 4ue podrían tener a nidad para4ue !e cono can+
Oara e!to tienen un programa en C
-
8/19/2019 Manual de Programacion en C - UTEM
81/136
'. print (! d 7 d son compatibles 7 :acenpareCa0n!i+compatibleZi[);
-.
:olución b*. int maEcomp ; /* ̂ uarda la compatibilidades del maEimo
*/1 . int ncomp; /* ̂ uarda el Xo. de compat. de la
persona actual */
11. int indmaEcomp ; /* ndice del mas compatible */
12. /* Hecorremos todas las personas */
13. int i;
14. or(i ; iPX"=HGUX9G; i )
15. {
16. int C;
1'. ncomp ;
1-. or(C ; CPX"=HGUX9G; C )
1 . /* B:e@ueamos si es compatible */
2 . i (compatibleZC[ i)
21. ncomp ;
22. /* Gi tenemos un nue#o maEimo */
23. i (ncompLmaEcomp)
24. {
25. maEcomp ncomp;
26. indmaEcomp i;
2'.
2-.
90
-
8/19/2019 Manual de Programacion en C - UTEM
82/136
2 . print (!Bon d son compatibles dpersonas!+indmaEcomp+maEcomp);
:olución c*
3 . /* B:e@ueamos todas las personas */31. int i;
32. or(int i ; iPX"=HGUX9G; i )
33. {
34. ncomp ;
35. /* He#isamos si tiene al$uien compatible */
36. int C;3'. or(C ; CPX"=HGUX9G; C )
3-. // Gi tiene al$uien compatible terminamos
3 . i (compatibleZC[ i)
4 . {
41. ncomp 1;
42. breaS;
43.
44. i (ncomp )
45. print (!Xadie es compatible con d0n!+i);
46.
91
-
8/19/2019 Manual de Programacion en C - UTEM
83/136
Memoria Din7mica
La %/n-i n b2si-a esmalloc6 /e reserva /nr es4a-i& *e ,e,&ria *el )a,a & /e sele in*i /e !en b$)es' $ re)&rna /n 4/n)er&. Sie,4re #a$ /e an)e4&nerle /n -as) a lalla,a*a6 4ara /e el )i4& *el 4/n)er& re)&rna*& se a*a4)e a l& /e se es4era.
#include
char *s;
s = (char *)malloc(100); /* reserva un área de 100 bytes */
Para 4e*ir es4a-i& 4ara /n arre+l& #a$ *&s al)erna)ivas. Una es /sar ,all&- $-al-/lar ;a ,an&; el es4a-i& )&)al re /eri*&. P&r e7e,4l&6
= (int *)malloc(100*si!eo"(int)); /* a unta a un arre lo de100 int$s */
La &)ra %&r,a es /sar &)ra %/n-i n6 -all&-6 /e )iene *&s 4ar2,e)r&s !n=,er& *e-el*as $ )a,a & *e -a*a -el*a'8
= (int *)calloc(100% si!eo"(int)); /* a unta a un arre lo de100 int$s */
Un e%e-)& la)eral *e -all&- es /e ini-ialiBa en -er& la ,e,&ria /e en)re+a.
Al )er,inar *e /sar /n 2rea *e ,e,&ria 4e*i*a *in2,i-a,en)e6 se le *ebe re)&rnaral sis)e,a /san*&
"ree( );
*&n*e a4/n)a al 4rin-i4i& *el 2rea /e se libera.
En C n& #a$ re-&le--i n a/)&,2)i-a *e bas/ra6 es res4&nsabili*a* *el 4r&+ra,a*&r liberar la ,e,&ria /e $a n& /se. L&s 4r&+ra,as /e %/n-i&nan */ran)e ,/-#&)ie,4& $ /e van &lvi*an*& liberar ,e,&ria se *i-e /e )ienen /n err&r *e )i4&;,e,&r$ lea ;6 el -/al 4/e*e ser ,/$ *i%?-il *e inves)i+ar.
9(
-
8/19/2019 Manual de Programacion en C - UTEM
84/136
:trin"#
Un S)rin+6 es-ri)& -&,& _ &la6 s&$ /n s)rin+] es en reali*a* /n arre+l& *e-ara-)eres. En la re4resen)a-i n in)erna6 el arre+l& es )er,ina*& -&n el -ar2-)er n/l&0 !& bien 0 'W as? l& s4r&+ra,as sabes -/al es s/ %inal. P&r l& )an)& el )a&-/4a*& en el al,a-ena,ien)& es sie,4re /n -ar2-)er ,2s /e el lar+& *el s)rin+ ens?.
E is)e /na +ran *i%eren-ia en)re las si+/ien)es *e%ini-i&nes8
-#ar as)rin+ Z[ _*e%ini)iva,en)e s&$ s)rin+]W 5 /n arre+l& 5
-#ar 4s)rin+ _*e%ini)iva,en)e s&$ s)rin+]W 5 /n 4/n)er& 5
a #trin" es /n arre+l&6 *el )a,a & *e%ini*& s l& 4&r el ,ensa7e $ el 0 6 es)2)ina,&bible. Tal veB se 4/e*an ,&*i%i-ar al+/n&s -ara-)eres *el ,ensa7e6 4er& -a*are%eren-ia aa#trin" se re%erir2 sie,4re a la ,is,a *ire--i n *e ,e,&ria /e )ienereserva*a la ,is,a -an)i*a* *e es4a-i&. P&r &)r& la*&$#trin" es /n 4/n)er&6ini-ialiBa*& 4ara a4/n)ar a /n arre+l& *e -ara-)eresW -&,& b/en 4/n)er& /n& l& 4/e*e ,&ver a la *ire--i n *e ,e,&ria /e *esee6 sin e,bar+& n& se 4/e*en,&*i%i-ar l&s -ara-)eres *el s)rin+ *e-lara*& es)2)i-a,en)e.
C 4&see /na librer?a !s)rin+.#' -&n %/n-i&nes 4ara el _)ra)a,ien)&] *e l&s s)rin+s6 la,2s -&,/nes las vere,&s a -&n)in/a-i n.
#trc$5(c-ar Kde#tino% c-ar K uente*Es)a %/n-i n -&4ia )&*&s l&s -ara-)eres *el s)rin+ %/en)e a la *ire--i n *e ,e,&ria*es)in& !&bvia,en)e *es)in& *ebe )ener asi+na*& /n es4a-i& en ,e,&ria *&n*e
/e4a el s)rin+ %/en)e' *es*e el 4ri,er -ar2-)er a4/n)a*& 4&r *es)in& #as)a la 4ri,era a4ari-i n *el -ar2-)er n/l& ! 0'.
I,4le,en)a*& -&n arre+l&s se ver?a as?8
in) i 0W
"#ile !!*es)in&Zi[ %/en)eZi[' 0' i@@W
E 4li-a-i n8
93
-
8/19/2019 Manual de Programacion en C - UTEM
85/136
o C&4ia el -ar2-)er iH>si,& *ede#tino en el es4a-i& iH>si,& *euente.
o Mien)ras l& /e #a -&4ia*& n& sea el -ar2-)er n/l&6 a/,en)a el -&n)a*&r i en/n&.
P&r &)r& la*&6 la ,is,a %/n-i n i,4le,en)a*a -&n ari),>)i-a *e 4/n)er&s es as?8
"#ile !!5*es)in& 5%/en)e' 0'
*es)in&@@W
%/en)e@@W
W
W
La e 4li-a-i n es la ,is,a. A#&ra si /ieren ver real,en)e si en)en*ier&n 4/n)er&s6 /e les 4are-e el si+/ien)e - *i+& /e #a-e l& ,is,&8
"#ile !5!*es)in&@@' 5!%/en)e@@''W
W
N&)a8 El val&r 0 es -&nsi*era*& -&,& FALSO 4ara /na -&n*i-i n.
int #trcm$(c-ar K#2% c-ar K#;*
Es)a %/n-i n se /)iliBa 4ara -&,4arar *&s s)rin+s6 *ev&lvien*& el val&r *e -&,4arar#2 $ #;.Clara,en)e si re)&rna 0 si+ni%i-a /e l&s *&s s)rin+s s&n i+/ales.
La i,4le,en)a-i n *e es)a %/n-i n /)iliBan*& ari),>)i-a *e arre+l&s es8
in) iW
%&r !i 0W s1Zi[ s(Zi[W i@@'
i% !s1Zi[ 0 s(Zi[ 0' re)/rn 0W
9
-
8/19/2019 Manual de Programacion en C - UTEM
86/136
re)/rn s1Zi[ H s(Zi[W
W
La e 4li-a-i n es si,4le8
o Ini-ialiB& el -&n)a*&r en 0Wo C&,4ar& le)ra 4&r le)ra l&s s)rin+s6 si es el -ar2-)er n/l& /iere *e-ir /e
a,b&s s&n i+/ales.
o Re)&rn& la *i%eren-ia en)re ell&s al ,&,en)& *e salir *el -i-l& !-/an*&a,b&s -ara-)eres s&n *is)in)&s'.
A#&ra la versi n -&n 4/n)er&s *el ,is,& es8
%&r ! W 5s1 5s(W s1@@6 s(@@'
i% !5s1 0 5s( 0' re)/rn 0W
re)/rn 5s1 H 5s(W
int #trlen (c-ar K#*
En)re+a el lar+& en -ara-)eres *e /n s)rin+#.#trcat (c-ar K#2% c-ar K#;*
C&4ia el s)rin+#; al %inal *el s)rin+#2.
#trnc$5 (c-ar K#2% c-ar K#;% int n*
C&4ia l&s 4ri,er&sn -ara-)eres *e#; a la *ire--i n *e ,e,&ria a4/n)a*a 4&r#2.
Ejercicio&
o I,4le,en)ar las 3 %/n-i&nes an)eri&res /)iliBan*& l +i-a *e arre+l&s $ l +i-a*e 4/n)er&s.
P&r =l)i,&6 4ara leer s l& /n -ar2-)er *es*e el )e-la*& se /)iliBa la %/n-i n"etc-ar *e lasi+/ien)e ,anera8
-#ar -W
9
-
8/19/2019 Manual de Programacion en C - UTEM
87/136
..- +e)-#ar!'W
E#tructura#Una es)r/-)/ra es /na a+r/4a-i n *e /n -&n7/n)& *e -a,4&s. *e i+/al & *is)in)& )i4&W s/%&r,a )?4i-a es8#truct nombre
ti$oQ2 /ariableQ2
ti$oQ; /ariableQ;
333
ti$oQn /ariableQn
L&s )i4&s /)iliBa*&s 4/e*en ser l&s b2si-&s !-#ar6 in)6 %l&a)' & bien 4/n)er&s / &)rases)r/-)/ras.
E7e,4l&8
5 De%ini-i n *e la es)r/-)/ra 5
s)r/-) 4/n)&
%l&a) W
%l&a) $W
W
5 De-lara-i&nes *e variables 5s)r/-) 4/n)& /6 vW
s)r/-) 4/n)& B 1.06 H(. W
5 A--es& a -&,4&nen)es 5
9
-
8/19/2019 Manual de Programacion en C - UTEM
88/136
B. (.0W
4rin)%!;B !J%6 J%' n;6 B. 6 B.$'W
Puntero# a E#tructura#
s)r/-) 4/n)& 54W
4 BW
4rin)%!;J% n;6 !54'. 'W
4rin)%!;J% n;6 4HQ 'W 5 n&)a-i n al)erna)iva ,2s si,4le 5
9
-
8/19/2019 Manual de Programacion en C - UTEM
89/136
-
8/19/2019 Manual de Programacion en C - UTEM
90/136
8UNCIONE:
!otivación
Es-ribe /n 4r&+ra,a /e *e)er,ine la -an)i*a* *e -&,bina-i&nes /e se 4/e*enrealiBar )&,an*& ele,en)&s *e /n +r/4& *e n ele,en)&s6 es *e-ir6
P&r e7e,4l&6
La s&l/-i n es
1. int i+ n+ S + n actorial 1+ S actorial 1+ nS actorial 1;2. int combinaciones;
3. scan ( d d +,n+,S);
4. or (i 1; iPn; i )
5. n actorial n actorial*i;
6. or (i 1; iPS; i )
'. S actorial S actorial*i;
-. or (int i 1; iPnIS; i )
. nS actorial nS actorial*i;
1 . combinaciones n actorial/(S actorial*nS actorial);
11. print (!=l n%mero de combinaciones esd0n!+combinaciones!);
Si )e %i7as6 las l?neas H 6 H $ 9H: #a-en 4ra-)i-a,en)e l& ,is,&8 -al-/lar e%a-)&rial *e /n n=,er& !n6 $ nH res4e-)iva,en)e'.
9:
-
8/19/2019 Manual de Programacion en C - UTEM
91/136
C 4er,i)e *e%inir %/n-i&nes6 /e s&n s/b4r&+ra,as /e llevan a -ab& )areases4e-?%i-as. A ,&*& *e e7e,4l&6 si s/4&ne,&s /e e is)e /na %/n-i n *e n&,bre%a-)&rial /e re-ibe /n n=,er& en)er& $ *ev/elve s/ %a-)&rial6 en)&n-es el 4r&+ra,a
/e*a
1. int n+S+combinaciones;2. scan ( d d +,n+ ,S);
3. combinaciones actorial(n)/( actorial(S)* actorial(nIS));
4. print (!=l n%mero de combinaciones esd0n!+combinaciones!);
El 4r&+ra,a n& s l& #a /e*a*& ,/-#& ,2s 4e /e &6 sin& /e a*e,2s es ,2s %2-il*e en)en*er.
la unción actorial
El 4r&ble,a a#&ra es es-ribir la %/n-i n %a-)&rial8
1. int actorial (int E)2. {
3. int producto 1+ i;
4. or (i 1; iP E; i )
5. producto producto*i;
6. return producto;
'.
Línea(#* E'$licación
El encabe ado de la ;unción e!peci ca 4u- de(uel(e la;unción" el nombre de la ;unción / 4ue e! lo 4ue recibe+En e!te ca!o" la ;unción !e llama ;actorial" recibe unentero , / !u re!ultado e! un entero+
1 a ** Se calcula el ;actorial con un ciclo ;or+ @a (ariableau,iliar producto contiene el (alor+
:0
-
8/19/2019 Manual de Programacion en C - UTEM
92/136
-
8/19/2019 Manual de Programacion en C - UTEM
93/136
tipo nombre
-
8/19/2019 Manual de Programacion en C - UTEM
94/136
;actorial
-
8/19/2019 Manual de Programacion en C - UTEM
95/136
in(ocación
Tiene 4ue aber corre!pondencia entre lo! (alore! 4ue !e le entreganal ;unción / la declaración de lo! par:metro! de la ;unción+
Con!idera la ;unción
char *nombreRey (char *nombre, int repeticion)
E!ta ;unción recibe un nombre / PnGmeroP de un re/ / de(uel(e !unombre con el nGmero romano#
c:ar *re7 nombreHe7 (!=nri@ue!+-);
print (re7); // escribe =nri@ue V
E! erroneo e!cribir
c:ar *re7 nombreHe7 (-+!=nri@ue!)
:
-
8/19/2019 Manual de Programacion en C - UTEM
96/136
pue! la ;unción nombre e/ e!pera 4ue el primer par:metro !ea unae,pre!ión de tipo String+
funciones void
@o! ;uncione! 4ue no de(uel(en un (alor !e declaran como (oid
-
8/19/2019 Manual de Programacion en C - UTEM
97/136
alguna condición#
1'. #oid dibuCarHectan$ulo(int E+ int 7)1-. {
1 . i (EL- __ 7L25) /* dimensiones mu7 $randesD */
2 . return ; /* no se dibuCa nada */
21. c:ar linea orZ- [;
22. ...
:
-
8/19/2019 Manual de Programacion en C - UTEM
98/136
Forma general de un programa
Un programa puede !er (i!to como un con9unto de ;uncione! 4uetraba9an en ;orma con9unta para lle(ar a cabo un ob9eti(o+ @a
;orma del programa e!`include ....
tipo nombreTuncion1 (par>metros)
{
...
tipo nombreTuncion2 (par>metros)
{
...
tipo nombreTuncion3 (par>metros)
{
...
#oid main()
{
...
in#ocaciones a los distintos unciones
...
El !iguiente programa e! un e9emplo de programa con m:! de un;unción+
:
-
8/19/2019 Manual de Programacion en C - UTEM
99/136
23. int actorial (int E)24. {
25. int producto 1+i;
26. or (i 1; iP E; i )2'. producto producto*i;
2-. return producto;
2 .
3 . int combinatoria(int n+ int S)
31. {
32. int resultado actorial(n)/( actorial(S)* actorial(nIS));
33. return resultado;
34.
35. #oid main()
36. {
3'. print (! n$resa la cantidad total deelementos0n!);
3-. scan ( d +,n);
3 . print (! n$resa cunatos elementos :a7 @ueesco$er0n!);
4 . scan ( d +,S);
41. print (!Ge pueden esco$er de dmaneras!+combinatoria(n+S));
42.
:9
-
8/19/2019 Manual de Programacion en C - UTEM
100/136
-
8/19/2019 Manual de Programacion en C - UTEM
101/136
0 Se lla,a a in-re,en)a -&n l&s val&res ! 63'
3 El val&r se -&4ia en /na n/eva variable . El val&r 3 se -&4ia en -/an)&
4 se in-re,en)a en 3
9 4
1 se es-ribe el val&r *e 46 /e es
100
-
8/19/2019 Manual de Programacion