Manual de Programacion en C - UTEM

Embed Size (px)

Citation preview

  • 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