la esencia de la programaciÓn -...

140
LA ESENCIA DE LA PROGRAMACIÓN: Leonardo Romero Muñoz Luis Rubén Rusiles Zamora Federico Cizniega Rojas Miguel Angel Bucio Cedeño Karina Mariela Figueroa Mora

Upload: nguyenngoc

Post on 04-Oct-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

LA ESENCIA DE LAPROGRAMACIÓN:�� ������� ���� ������ ��� ��� � ���� ���

Leonardo Romero MuñozLuis Rubén Rusiles Zamora Federico Cizniega RojasMiguel Angel Bucio CedeñoKarina Mariela Figueroa Mora

Page 2: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

UNIVERSIDAD MICHOACANA DE SAN NICOLÁS DE HIDALGO

FACULTAD DE INGENIERÍA ELÉCTRICA

LA ESENCIA DE LAPROGRAMACIÓN:�� ������� ������ ������ ��� !�� �� ��"� #����

Leonardo Romero MuñozLuis Rubén Rusiles Zamora Federico Cizniega RojasMiguel Angel Bucio CedeñoKarina Mariela Figueroa Mora

Morelia Mich.Agosto de 1997

Page 3: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

CONTENIDO

55 3.3. La instrucción MIENTRAS-HAZ..............................................

54 3.2. La instrucción SI-ENTONCES-SINO........................................

51 3.1. La instrucción SI-ENTONCES..................................................

51 3. USANDO LOS SENSORES DE KAREL.................................

44 2.12. Ejercicios................................................................................

43 2.11. Resumen.................................................................................

35 2.10. El editor visual de Karel..........................................................

34 2.9. Sugerencias para escribir programas..........................................

31 2.8. Programación por refinación paso por paso................................

30 2.7. La instrucción REPITE-VECES................................................

28 2.6. Definiendo nuevas instrucciones................................................

27 2.5. Tipos de errores........................................................................

25 2.4. Karel ordenando un cuarto.......................................................

25 2.3. Ejecución de instrucciones........................................................

23 2.2. Instrucciones primitivas para Karel............................................

21 2.1. Instrucciones para crear el ambiente...........................................

21 2. PROGRAMAS SENCILLOS....................................................

19 1.9. Ejercicios...................................................................................

18 1.8. Resumen....................................................................................

13 1.7. Programas, tareas y situaciones.................................................

12 1.6. Ejecución de un programa con el simulador...............................

8 1.5. La ventana del editor de Karel....................................................

7 1.4. Los programas para Karel..........................................................

7 1.3. La ventana de visualización del mundo de Karel.......................

5 1.2. Las habilidades de Karel............................................................

1 1.1 El ambiente de Karel...................................................................

1 1. CONOCIENDO EL ROBOT KAREL Y SU

AMBIENTE.........

v PRÓLOGO ...........................................................

iii

Page 4: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

127 ÍNDICE........................................................................................

125 APENDICE B. INSTALACIÓN DEL SOFTWARE.......................

121 APENDICE A. RESUMEN DEL LENGUAJE...............................

119 6.5. Resumen..................................................................................

116 6.4. El lenguaje de programación C..................................................

115 6.3. El concepto de función.............................................................

114 6.2. El concepto de variable y asignación.........................................

113 6.1. El lenguaje de programación de Karel.......................................

113 6. KAREL Y SU RELACIÓN CON OTROS LENGUAJES...........

111 5.7. Ejercicios..................................................................................

111 5.6. Resumen...................................................................................

99 5.5. Karel resolviendo el problema de las torres de Hanoi.................

96 5.4. Karel dibujando una espiral.......................................................

94 5.3. Karel buscando una moneda......................................................

88 5.2. Karel calculando el factorial de un número................................

85 5.1. Karel multiplicando dos números...............................................

85 5. TAREAS DESAFIANTES PARA KAREL................................

82 4.7. Ejercicios...................................................................................

82 4.6. Resumen....................................................................................

78 4.5. Karel buscando un tesoro...........................................................

73 4.4. Karel sumando números............................................................

73 4.3. Algoritmos recursivos...............................................................

72 4.2. Llamadas recursivas e instancias de instrucciones......................

69 4.1. Ejemplos de instrucciones recursivas..........................................

69 4. INSTRUCCIONES QUE SE LLAMAN A SI MISMAS...............

62 3.8. Ejercicios..................................................................................

61 3.7. Resumen....................................................................................

60 3.6. Propiedades de la instrucción MIENTRAS-HAZ.......................

60 3.5. El dilema con la parte SINO ambigua........................................

58 3.4. Instrucciones equivalentes..........................................................

iv

Page 5: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

PRÓLOGO

El lenguaje de programación del robot Karel tiene por objeto enseñar rápidamentelos conceptos fundamentales de la programación: algoritmos y diseño deprogramas, instrucciones primiti vas, instrucciones compuestas, secuencia deinstrucciones, instrucciones de decisión y de repetición, recursión y tipos deerrores. Este lenguaje fue propuesto originalmente por Richard E. Pattis1 y ha sidoutili zado con éxito en algunas universidades de Estados Unidos y de nuestro país.En particular, ha sido usado en cursos introductorios a la programación en laUniversidad Nacional Autónoma de México y en otras. En la Facultad deIngeniería Eléctrica de la Universidad Michoacana de San Nicolás de Hidalgo, yen el Colegio Nacional de Educación Técnica, Plantel Morelia II , se han reali zadocon éxito cursos introductorios a la programación usando el lenguaje del robotKarel y el software desarrollado por los autores.

La combinación de la simplicidad del lenguaje junto con el simuladorincluido en el disquete, permiten que este libro pueda ser útil para estudiantes decualquier nivel: secundaria, preparatoria o superior. El único prerequisito es tenerun conocimiento elemental del ambiente Microsoft Windows sobre computadoraspersonales, compatible con IBM PC.

Empezar con el robot Karel para aprender a programar, antes de iniciar elestudio de otro lenguaje imperativo de programación de propósito general como C,Pascal, Fortran, o cualquier otro, ofrece ventajas porque también es imperativo ytiene un reducido conjunto de instrucciones; no hay variables ni estructuras dedatos (con la excepción de la estructura del mundo de Karel), reduciendo así lacomplejidad de los programas; al presentar el mundo de Karel en forma gráfica, laejecución de los programas es fácil de entender; al usar un mundo que sea másintuitivo y entendible que el mundo de las computadoras, se pretende minimizar eltemor a la computación.

Niklaus Wirth presentó una ecuación ya famosa: "Programas = algoritmos+ estructuras de datos". Pattis, en la formulación del lenguaje del robot Karel,logró quitar la parte de las estructuras de datos. Después de familiarizarse con ellenguaje de programación del robot Karel, resultará más fácil aprender cualquierotro lenguaje.

Acompañando a este libro se presenta un simulador del robot Karel, queincluye un editor visual para la creación y modificación de los programas. Con eleditor visual, no es necesario recordar las instrucciones del lenguaje ni su sintaxisexacta; el editor guía la creación de programas bien escritos y entendibles para elrobot. Con ésto, los autores amplían la idea original de Pattis, logrando ocultar los

v

1 Richard E. Pattis, "KAREL THE ROBOT A Gentle Introduction to the Art ofProgramming", Ed. John Wiley & Sons, Inc. 1981

Page 6: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

detalles gramaticales del lenguaje, para concentrarse en el significado de losprogramas; es decir, en los algoritmos.

Los capítulos del libro se desarrollan en base a ejemplos, todos ellosapoyados en el simulador, pretendiendo así que se vayan descubriendo losconceptos importantes. El último capítulo presenta la relación de Karel con otroslenguajes de programación, particularmente con el C. Al final de cada capítulo seencuentran ejercicios con nivel de dificultad creciente. El Apéndice A es unresumen del lenguaje, mientras que el Apéndice B es un manual de instalación delsoftware contenido en el disquete.

El disquete incluido contiene el simulador de Karel para computadorasIBM PC compatibles bajo el sistema operativo Microsoft-Windows 3.1, 3.11 o 95,los archivos de los programas utilizados como ejemplos y los archivos de lasejercicios propuestos. Ejecutando los programas de ejemplo, se aprenderárápidamente el lenguaje del robot Karel, sin perder tiempo en construirlos,contribuyendo con ello a mantener un alto grado de motivación. Dentro de lasección de ejercicios propuestos, los que tienen un archivo en el disquete, estánmarcados con el icono:

El software incluido se hace de dominio público, por lo que se permite su copia ydistribución gratuita. A través de Internet, vía el servicio WWW, se pueden obtenerversiones actuali zadas, accesando la dirección del servidor de la Sección deComputación de la Facultad de Ingeniería Eléctrica de la Universidad Michoacanade San Nicolás de Hidalgo (UMSNH):

http://scfie.eie.umich.mx

Agradecemos a la Cordinación de la Investigación Científica de la UniversidadMichoacana de San Nicolás de Hidalgo, el financiamiento para la adquisición delequipo de cómputo y del software de desarrollo, utili zados para construir losprogramas incluidos en el disquete.

Morelia Mich., agosto de 1997

Leonardo Romero MuñozLuis Rubén Rusiles Zamora

Miguel Angel Bucio CedeñoFederico Cizniega Rojas Karina Mariela FigueroaMora

vi

Page 7: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

Escuela de Ingeniería Civil, UMSNH Facultad de Ingeniería Eléctrica,UMSNHemail: [email protected] email: [email protected],

[email protected]

vii

Page 8: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

CONOCIENDO EL

ROBOT KAREL Y

SU AMBIENTE

����� �� �� ��� �� � �� ��� ���� ��� ���� ������ � ��� ��������� � ��������� ���������� ��������� �� �������� �� �������� ��� ��� ��� ���� ������������� �������� �� ��� �� �� �������� �������� ��� �������� ���������� ���� �� ������ �� ��� ������ �� �������� �� ��� ������ �������� ��� ����� �� ���� ��� ����� �� ��� ��� ����� �� � ��� �� ���������� ��������� � �� �� ��������� �� ����� ��� ����� ���������� �� ��������� ������� ���� �� ��� ��������� �������� ! ��� �� ������ ��������$"#%����&� '�(� '�(( � )*� +�� ����� ����� ���� �� ������ ��� �� �� �������� �� ,����� � -�./. 01 23456786 96 :2;61<=>= ?@A?B=>C D=E= @?FG> HI? ?F?JIK=> ID A>GL>=@= A=>= ?M >GNGK O=>?MP <=>= ?MMGCQ? E?N? RDQK=M=> A>R@?>G ?M QGSKT=>? E?M >GNGKC QRLIR?DEG M=Q RDQK>IJJRGD?Q E?MUAVDERJ? WC ?F?JIK=DEG E?QAIVQ ?M QR@IM=EG> E? O=>?MP X= A=DK=MM= E?N?>Y=A=>?J?> JG@G ?D M= SRLI>= Z[ZP \DQ?LIRE= Q? =N>? ?M =>J]R^G _POU`CQ?M?JJRGD=DEG M=Q GAJRGD?Q abcdefg h E?QAIVQ aibebP \M QR@IM=EG> E?N? =A=>?J?>JG@G Q? @I?QK>= ?D M= SRLI>= Z[jP \DQ?LIRE= Q? E?N? A>?A=>=> M= ?F?JIJRkD E?MA>GL>=@=C Q?M?JJRGD=DEG M= GAJRkD lmncopqC Q?LIRE= E? rgsteuqP U]G>= M= A=DK=MM=E?N?>Y =A=>?J?> RLI=M = M= SRLI>= Z[vP wkMG S=MK= ?F?JIK=> ?M A>GL>=@=CQ?M?JJRGD=DEG M=Q GAJRGD?Q lmncopqx ynugcezqz ? {|ecequP }GD ?MMG Q? ^RQI=MRB=>Y M=?F?JIJRkD E?M A>GL>=@= ]=QK= ?M SRD=MP \QKG ?QC Q? ?F?JIK=>YD KGE=Q M=Q RDQK>IJJRGD?QJGDK?DRE=Q ?D ?M A>GL>=@=C h Q? ^RQI=MRB=>YD QIQ ?S?JKGQ QGN>? ?M =@NR?DK? E?O=>?MP X= QRKI=JRkDC JI=DEG K?>@RD= ?M A>GL>=@=C Q? @I?QK>= ?D M= SRLI>= Z[~P }GD

}=A�KIMG ZP }GDGJR?DEG ?M >GNGK O=>?M h QI =@NR?DK? Z

1

Page 9: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�� ���� �� ������������ �� ����� �������� ��� �� ����� ��� �������� ��� ������ ������� ���� �� ������

������ ���� �� ��������� �� �����

� �������� �� ���������� �� �� �� ����� ¡ �� �� �����

Page 10: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

¢£¤¥¦§ ¨©ª« ¬­ ®¦¯¤¦§°§ ±«²³´

¢£¤¥¦§ ¨©µ« ¬­ ®¦¯¤¦§°§ ±«²³´ ¶¯°®£­§·¯

¢£¤¥¦§ ¨©¸« ¹£º¥§¶£»¼ ½£¼§­ ·¾­ ®¦¯¤¦§°§ ±«²³´

¿§®Àº¥­¯ ¨« ¿¯¼¯¶£¾¼·¯ ¾­ ¦¯Á¯º ²§¦¾­  å §°Á£¾¼º¾ µ

Page 11: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÄÅ ÆÇÈÉÊËÌÊ ÍÎ ÏÐÑÎÅ ÎÒ ÓÔÐ ÕÎÖÓÎ×Ð ØÙÓÍÐÍ ÖÓÎ ÚÙÎÔÎ ØÐÅÅÎÒ Û ÐÜÎÔÙÍÐÒ ÕÝÑ ÅÐÒÖÓÎ ÒÎ ÍÎÒÕÅÐÞÐß ØÝàÝ ÒÎ àÓÎÒÚÑÐ ÎÔ ÎÅ ÕÅÐÔÝ ÍÎ ÅÐ áÙâÓÑÐ ãäåÐæ

ç Ðè ÜÙÒÚÐ ÑÎÐÅ éè ÜÙÒÚÐ ÒÙàÕÅÎêÙâÓÑÐ ãäåæ ÄÅ àÓÔÍÝ ÍÎÅ ÑÝéÝÚ ÏÐÑÎÅë ÅÝ ÅÐÑâÝ Û Ð ÅÝ ÐÔØìÝ ÍÎÅ ÐàéÙÎÔÚÎ ÍÎ ÏÐÑÎÅ ÒÎ ÎÔØÓÎÔÚÑÐÔ íÆîîÊï ìÝÑÙÞÝÔÚÐÅÎÒÖÓÎ ØÝÑÑÎÔ ÍÎ ÎÒÚÎ Ð ÝÎÒÚÎß Û ÆðÊËÉñÆï ÜÎÑÚÙØÐÅÎÒ ÖÓÎ ØÝÑÑÎÔ ÍÎ ÔÝÑÚÎ Ð ÒÓÑæ ÏÐÑÎÅ ÒÎÕÓÎÍÎ ØÝÅÝØÐÑ ÎÔ ØÓÐÅÖÓÙÎÑ ÊïòóÉËÆô ÎÒ ÍÎØÙÑß ÎÔ ÎÅ ØÑÓØÎ ÍÎ ÓÔÐ ØÐÅÅÎ Û ÓÔÐÐÜÎÔÙÍÐ Û ÜÝÅÚÎÐÑ ìÐØÙÐ ØÓÐÅÖÓÙÎÑÐ ÍÎ ÅÝÒ ÕÓÔÚÝÒ ØÐÑÍÙÔÐÅÎÒæ õÐÔÚÝ ÅÐÒ ØÐÅÅÎÒ ØÝàÝÅÐÒ ÐÜÎÔÙÍÐÒ ÎÒÚöÔ ÔÓàÎÑÐÍÐÒô ØÝÔÒÎØÓÎÔÚÎàÎÔÚÎß ØÐÍÐ ÎÒÖÓÙÔÐ ÎÒÚö ÙÍÎÔÚÙáÙØÐÍÐ ÎÔáÝÑàÐ ÷ÔÙØÐ ÕÝÑ ÅÝÒ Ô÷àÎÑÝÒ ÍÎ ØÐÅÅÎ Û ÐÜÎÔÙÍÐ ØÝÑÑÎÒÕÝÔÍÙÎÔÚÎÒæ ÄÔ ÅÐ áÙâÓÑÐãäåÐß ÎÅ ÑÝéÝÚß ÑÎÕÑÎÒÎÔÚÐÍÝ ÕÝÑ ÓÔ ØøÑØÓÅÝ Û ÓÔÐ ÅøÔÎÐ ÙÔÚÎÑÙÝÑ ÜÎÑÚÙØÐÅß ÒÎ ÓéÙØÐ ÎÔÅÐ ÎÒÖÓÙÔÐ ÍÎ ÅÐ ØÐÅÅÎ ÓÔÝ Û ÅÐ ÐÜÎÔÙÍÐ ÓÔÝß ÎÅ ùúÉûÊËß ÜÙÎÔÍÝ ÐÅ ÔÝÑÚÎæ üÚÑÝ àÝÍÝÍÎ ÜÎÑ ÎÅ ÐàéÙÎÔÚÎ ÍÎ ÏÐÑÎÅ ÎÒ ØÝàÝ ÒÎ àÓÎÒÚÑÐ ÎÔ ÅÐ áÙâÓÑÐ ãäåéß ÎÔ áÝÑàÐ ÍÎÑÎÚøØÓÅÐæ ÄÔ ÎÅ ÐàéÙÎÔÚÎ ÍÎ ÏÐÑÎÅ ÎýÙÒÚÎÔ ÝÚÑÝÒ ÍÝÒ ÝéþÎÚÝÒ ÖÓÎ ÔÝ ÒÎ ìÐÔàÎÔØÙÝÔÐÍÝÿ �ÆúÊñÊï ÖÓÎ éÅÝÖÓÎÐÔ ÒÓ ÕÐÒÝ Û ÇùËÊñÆïæ ÄÅ àÓÔÍÝ ÎÒÚö ÅÙàÙÚÐÍÝ ÎÔÒÓ ÅÐÍÝ ÝÎÒÚÎ ÕÝÑ ÓÔÐ ÕÐÑÎÍ ÜÎÑÚÙØÐÅ ÖÓÎ ÒÎ ÎýÚÙÎÔÍÎ ìÐØÙÐ ÎÅ ÔÝÑÚÎô ÎÔ ÎÅ ÒÓÑ ÕÝÑÓÔÐ ÕÐÑÎÍ ìÝÑÙÞÝÔÚÐÅ ÖÓÎ ÒÎ ÎýÚÙÎÔÍÎ ìÐØÙÐ ÎÅ ÎÒÚÎæ ëÍÎàöÒ ÍÎ ÎÒÚÐÒ ÕÐÑÎÍÎÒ áÙþÐÒßÒÎ ÕÓÎÍÎÔ ØÝÅÝØÐÑ ÕÐÑÎÍÎÒ ìÝÑÙÞÝÔÚÐÅÎÒ Ý ÜÎÑÚÙØÐÅÎÒ ÍÎ ØÓÐÅÖÓÙÎÑ ÅÝÔâÙÚÓÍæ ÄÒÚÐÒ

� -ÐÕøÚÓÅÝ ãæ -ÝÔÝØÙÎÔÍÝ ÎÅ ÑÝéÝÚ ÏÐÑÎÅ Û ÒÓ ÐàéÙÎÔÚÎ

Page 12: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������� ����� ����� ����� �� ����� �� ����� �������� ���������� �� ������� ��� � ������ ��� ������� �� ������ �������� ���� ����������� ��������� ��������������� ����� ������� ��������� � ��� ������� �� ����� ���� ��������� �� ������ �� � � �!��� ������� �� �������� �� �������" ��� #�������� $���� ���� % �� �� ������� & � �� ������� ' ��� �������� $��� � �� ������� �� ����1 � �� (� ��� ������ ����� �� ��� �� ����� � ������ ��� ����������� ������������� ����� �� ������ )������ �� ��� ������ �� ����� ������� �������� ��������� ������� #�#�� � ���� �� ������ � ������ �*����� ������� ����������� ����� ������� �� �� ������ �� � �� �� ��� !��� ���� ������������� ��� ������ �� �� �� ���� �� �� ���� 1 � ������� ��+,., /02 30456570782 78 90:86)#�� �� �������� �� �����;� ��� ���� �� ����� � �� �������� �� ���������� ����� �� �� ��� �� ����� ������� #��� �� ��������� �� ����� �� �������;� #��� �� ��� ���� ������� � ����� ����� �� �� ������ <����=� ������������ �� ����� �� � ���� �� �� ���� ������������ ������� �� �� ������ �������;� � �� ���' ����� ���� ��������� ��� ����� �� ��� ���� >?@ABAC DE FGDEH� ��� �� ���� � ������ ��� ����� �� ����� ����������� #��� ��������� #����� ����#�� #��� �� �� ������� ��� ���� ������ ����� ������� ���� ������� �������� �������� �I�������� � ����� ����� �� ������ J��� ����� �� ���� ��������� ��� �� #�� ������ �� �� �� ���� �� �� �� ���� ������ )� ������� ��KBLMNOA �������� ����� ����� ���������� �� �����;� #��� �� �� ���� �������P���������� ����� ���� � ����� � �� KBAQH @E>?RG>H � �� ��� ������������� � ��$�� ��� ����� � �� ���� S��� ���������� ����� ������� ����������� ��� ���� ���� ������� ���� ���� �� ������ ����� �����=� ���������� �� ���� ����������� ������ ����� �� �� ����� ������ � �� ������� ������ ��T� � ��T� ��������� � �� ����� ������;�" ��� �� �������� ���� � �� ��� �������� � �� ����;� �� ������ U;���� �� GRDG>ADHB DEDGBE>>GVR #��� �� ����� �� ����� �� �� ��� ������� �� ���� �� �� ����������� ���� �� ����' ��� ���� ������ �� ���� �� ������� ��������� �� �� ��������T�� �� ���� ����� �� ��� ������� �� ����� � ����� ������ W�� �� ����� ���� ����� ��� ���X �� ������ ��T ������� �� ������;� ���� �� ��� �����; ����>NADBAC � �� ���; �� �� �� ���� ���� ���� �� �����' �;���� �� �� !������ ���� �� �� ����� �����=��� ��� ��� ������� �� �� ���� � ������������ �� �� ��� �� ���� #�� �� ���� ��� ������ �� �� ������ ��T� ���������� �� ��� �����=� �� #���� ����� �� ����� �� �� �� ���� � ����� ���� ���� ���� �������

Y��!��� �� Y����� �� ��� ����� � �� ��������

Page 13: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

Z[ \[

][ ^[_`abcZ def gh ci\ij kZclh lm Z]]`nmZ[ kZclh lm lh ic`almo p`qjZ clZh\[ kZclh lm lh ic`almo p`qjZ ^lh ci\ij][ kZclh ^lqrbsq ^l ZpZmtZc jclq ]bZ^cZq^[ kZclh ^lqrbsq ^l cl]ialc hZ uiml^Z ^l hZ lqvb`mZ

w xZryjbhi dz ximi]`lm^i lh ci\ij kZclh { qb Zu\`lmjl

Page 14: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

|}~��} �������}~���� �} ���}�} �� �} ����} �������� } ���� } ������ ������~ �������} �} ����} ����� �� ������ ��~� �� �} �����}��������� ����� �}��� �������} �} ����} ��}� ��� ~���� ��� ������ ��~��� �} �����} ����|�~� ��} ����}� �������} �} ����} ��~��� ��� ~���� ��� ��������~� �� �} �����} ���}|�~� �� ��}������� ���}��� ����� ¡¢£¤¥��� ¦¥��� 

§}��} �¨�¨ ©}� �������� �� �} ����}�} �� ����}��ª}��«� ��� ��~��}��� �� �}���¬­®­ ¯° ±²³´°³° µ² ±¶·¸°¹¶º°»¶¼³ µ²¹ ½¸³µ¾ µ² ¿°À²¹Á� ��~��}��� �� �}��� �������� �� ��} ÂàÄÅ Å Æà ÃÆ����  ��}~}�} ÃÆ�Ä¤Ç �� �}���È ��~���}�} �� �} �����«� �¨É� È ��} ÂàÄÅ Å Æà Â�Ê¢ÅË�ÌÅ���  ��� ~���� ���}���� ��}~}�} Í¢ Æ¤ �� �}���¨ Î� ����� ���������}� ��}�Ï���� ���� �� ����} ���~���� �� �}��� ~���}��� �}� ����«� ¤¥��¤ ÃÊ ��� ~��Ð� �� �} �}��� �������� �� �}���¨ ��ɨ Ñ��� Ï�� ������ �}~��Ò� �} ����«� Ó¤¤Í� Ï�� ���~��� �������}� �� ��}���� ��� ��~� �� �} �����} ��Ô}� }��~Õ� �� ����� ��~� �� �} �����} ���} È �������} ~Õ� ��}���¨ ��� �}� ��~��}������ ��� ��~��}���� �� ~���� �� �}��� �� ����������«�� } �}� ���~��}� �� �}���� È �� }�����}�¨ Ö ~}���} �� ����~�� È �}�}�}~���}��ª}��� ��� �� ��~��}��� �� �}���� �� �} �}��} ��� �� ~�����} �� ������ �� �}��������� ��� ~��Ð ���}����}�}� ��� �� ~���� �� �}���¨¬­×­ ¯¾· ØÀ¾ÙÀ°½°· Ø°À° ¿°À²¹�}�} ��������� �� �����~��}�� }~������ �}�} �}���� �� ����� ��~������}�������������� ���}��}�}� }����} �� �} ��Ï���} �� �} Ï�� �����}�~���� ���Õ �}���� ���}� �}����� È �� �}� ~����}� Ï�� �������¨ Ú�} ��ª ���������� �� }~������� �� ������}� } �}��� �}� ������������� } �Û����}� �}�} ������}� �����~��}�} �}��}¨ �}�������� �������� ~�~���ª}� È ������ ���� ���Û���� �� �������������� }� ��}� ������~��} ¥Ç¤ÜÇÅÍŨ ÝÞ�Ò ËàܢÅßà �� ���� �~���}� �}�} ¥Ç¤ÜÇÅÍÅÇ� }Ï�à ��������} �����}~}� ��~� �������� �������������� } �}���á Á� ���}� �� �����}~}� }�}��� �� ���}â��� ����Ò�� � ���� ����~} �}���}�� �� �~���} �� �����}Û� �������}~}��«� ������}�� �� ��}� ã} ���� ����â}�� �}�} }È��}� } �������� �����}~}�

|}�à���� �¨ |��������� �� ����� �}��� È �� }~������ ä

Page 15: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

åæçæ èé çêëêìí îé ïðñòóôõð öð ÷øùòøôúôûüýñ þèé çêëêì ÿæçèé ì�è�è �� �ùûô�óïôøüù���ú�ùïù� öð ÷óñ�óôûüýñ � øðòïô� òøôúô�üûôïð�í èçê è�ìè éè��æ�è� æ þ��èçè� �æ þèéê� þè��� üöüùúô�� è� éê ���� �è�ìè�è�ìè �è� �ééê åæçæ ��è ÿæçèé éê å�èþæ ê�åçè�þèç� æé ����ê ì�è�åê è� �� éè��æ�è åêþèçê�ê � ê� ��ê ��è åèç��ìèè� ç�ë�ç åçêçæ�æ� ëçè�è� � ��� ôú�üò�ðöôö� è� þè �ç� ê� �� �êéê ������ æþêí��ìè� þè �èç è� þèìæééè éæ� ���ìç� �ê�è� ìæ�ìê åæçæ ê��ìç��ç èé æ�ë�è�ìè ê�ê åæçæ þæçéè æ ÿæçèé �çþè�è�� �è þè� ç�ëè éæ �è�ìæ�æ þèé èþ�ìêç þèé ����éæþêç þèÿæçèé � ��ê �è å�èþè ��æç åæçæ è�è �ìæç åçêçæ�æ� è� ç�ìê� åæçæ èé çêëêìí���� �� ��� ��� !�" �!# $% !� &�%�"îé ����éæþêç þè ÿæçèé �è�ìæ ê� �� èþ�ìêç ��è åèç��ìè çèæç� �êþ��� æç� �æçþæç�æëç�ç � è�è �ìæç éê� åçêçæ�æ� åæçæ èé çêëêìí '�å��æ�è ��è �è þè�èæ ê��ìç��ç èéæ�ë�è�ìè þè éæ ���çæ ()*æ � ��è èé çêëêì çèæé� è éæ ìæçèæ þè æ�æ�+æç ìçè� �è è��çè êèç ��æ �ê�èþæ � æåææç�èí î� éæ ���çæ (), �è ��è�ìçæ éæ �è�ìæ�æ þèé èþ�ìêçþèé ����éæþêç þè ÿæçèé ê� èé åçêçæ�æ ��è çèæé�+æ è�ìæ ìæçèæ� � ��è ééè�æ èé�ê�ëçè (íÿ�-í îé åçêçæ�æ ê�ì�è�è éæ� þê� åæçìè� �æ �è� �ê�æþæ� æ�ìè�. éæåç��èçæ þèþ� æþæ æ ê��ìç��ç èé æ�ë�è�ìè� éæ �è��þæ þèþ� æþæ æ éæ� ���ìç� �ê�è���è �æ æ è�è �ìæç ÿæçèéí /æ åç��èçæ åæçìè ê �è ��� �è ééæ�æ ôú�üðñ�ð � éæ �è��þæ÷øùòøôúôíîé æ�ë�è�ìè è�ì� é���ìæþê åêç éæ åæéæëçæ� 0102034564789061:6 �;014564789061:6í /æ åç��èçæ ���ìç� ��� þè�ìçê þèé æ�ë�è�ìè åê�� �ê�æ æÿæçèé è� �� ���þê� éæ� ����è�ìè� þê� åê�è� åæçèþè�� éæ åç��èçæ <êç�+ê�ìæé � éæ�è��þæ �èçì� æé� ���æé�è�ìè� �è è� �è�ìçæ éæ ���ìç� ��� ��è êéê æ ��æ �ê�èþæè� ��æ è�����æí =ë�>ç�è�è ��è éæ� ���ìç� �ê�è� è�ì�� �èåæçæþæ� åêç èé �?�ëêéê @�@íAè �êç�æ ����éæç� èé åçêçæ�æ è�ìæ é���ìæþê åêç éæ åæéæëçæ�0102034564BC3DC787 � ;014564BC3DC787í Aè�ìçê þèé åçêçæ�æ� éæ����ìç� �ê�è� ��è èé çêëêì þèëè êëèþè èç è�ì�� é���ìæþæ� åêç éæ� åæéæëçæ�01020345646E62F2031 � ;0145646E62F2031í Gê�ê �è þè�èæëæ� éæ�åç��èçæ� ìçè� ���ìç� �ê�è� �ê� HIHJKH� �è��þæ þè LMNOPM4QOJMRH � HSHPHTM U���æ è�ìêV ��ê� çè��éìæþê� �êëçè èé çêëêì �ê� è��þè�ìè�í'è å�èþè ��æç è�ìè ê �� èþ�ìêç þè ìèWìê �æé���èçæ åçè�èç�þê åæçæ çèæç éê�åçêçæ�æ�� ìè��è�þê ��þæþê þè ��æç �ê�ëçè� þè ôøûXü�ù� ê� ðY�ðñ�üýñ íÿ�-åæçæ ��þ� æç ��è �ê� åçêçæ�æ� åæçæ ÿæçèéí î� èé ����éæþêç� èé �ê�ëçè þèéåçêçæ�æ è� èé �ê�ëçè þèé æç <��ê ê þê ��è�ìê ê� ��è �è �æçþè è� èé þ�� ê þèéæ ê�å�ìæþêçæ� ��þ� æþê åêç èé è� æëè+æþê þè éæ �è�ìæ�æ þè éæ ���çæ (),í î�ìæ���çæ �è éêç� æé êéê æç èé çæì�� èW� ìæ�è�ìè è� éæ é?�èæ ��è þ���þè éæ� þê��è�ìæ�æ� þè éæ ���çæ ()(� êåç���ç èé ëêì�� �+���èçþê þèé çæì��� � ��� �êéìæçéê�

Z [\]^_`ab cd [bebfgheib ha jbkb_ l\jha m n` \okghe_h

Page 16: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

pqrst uvwxy z{|sy yz s}~tspq ustswxq us zy �y|~yzzy� �s s�~y �qtpy� �s ��susy�v�|yt sz s��ywvq ��s �s us�s� y wyuy rs|~y|y usz �vp�zyuqt�

�v��ty ���� �z suv~qt usz �vp�zyuqt us �ytsz wq| sz �tq�typy ������z �vp�zyuqt us �ytsz �s ��sus ��yt t��vuyps|~s �~vzv�y|uq zy �ytty usxsttypvs|~y� usz �vp�zyuqt� �y �ytty us xsttypvs|~y� s� �|y �qtpy ��vz us s�wq�stq�wvq|s� usz ps|� us q�wvq|s� us zy rs|~y|y usz suv~qt� �| zy �v��ty ��� �sp�s�~ty uvwxy �ytty us xsttypvs|~y���v��ty ���� �y �ytty us xsttypvs|~y� usz �vp�zyuqt us �ytsz�z �szswwvq|yt wyuy �q~�|� wq| �| wzvw usz �q~�| v���vstuq usz ty~�|� �s q�~vs|s szs�sw~q s��vryzs|~s y xy�st �szswwvq|yuq q�wvq|s� usz ps|�� �v �s us�sy �s ��susq��stryt �| ps|�y�s us y��uy us zy ��|wv�| us wyuy �q~�| us zy �v��vs|~s �qtpy� �sy��|~y wq| sz ty~�| yz {wq|q us�syuq� �s q�tvps � |q �s ��sz~y sz �q~�| v���vstuqusz ty~�|� �|�s��vuy us�st� y�ytswst sz ps|�y�s us y��uy s| zy �yt~s v|�stvqt usz

�y�{~�zq �� �q|qwvs|uq sz tq�q~ �ytsz � �� yp�vs|~s �

Page 17: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�� ¡¢£¤¥¦§ ¨�©ª  ª«�£¬ª £­£¦ª®ª  �ª«©¦£� ª¢ ¯¥©°« �±²¡�ª¦¤¥ ¤ª¢ ¦£©°« ��³£¥­¦� �¤¥§ ´� «¥ �ª ¤ª�ª£ ¦ª£¢�±£¦ ¢£ ¥­®�°«µ ¯£�©£ £­¡«©£¦ ®¥« ª¢ ¦£©°« ¶¡ª¦£ ¤ª¢·®¥«¥ ¸ �°¢¥ ¹£�©£ ª«©¥«®ª� �¥¢©£¦ ª¢ ¯¥©°« �±²¡�ª¦¤¥ ¤ª¢ ¦£©°«§¨¢ ­¦� ª¦ ³¦¡­¥ ¤ª ¯¥©¥«ª� ¤ª ¢£ ¯£¦¦£ ¤ª ¹ª¦¦£ �ª«©£� ®¥¦¦ª�­¥«¤ª £ ¢£��¡¯¥­®�¥«ª� ¤ª ¢£ ¥­®�°« º»¼½¾¿ÀÁ ®¦ª£¦ ¡« ­¦¥³¦£ £ ÂÃÄ¿Àµ ºÅ»¾» ¡« ­¦¥³¦£ £²¡ª �ª ª«®¡ª«©¦£ ª« ¤��®¥ ¸ ÆÃÇ»ÈÇ» ¡« ­¦¥³¦£ £ ª« ª¢ ¤��®¥§¨¢ ��³¡�ª«©ª ³¦¡­¥ ®¥¦¦ª�­¥«¤ª £ ¢£ ¥­®�°« ¤ª ÉÊËÌËÍÎÏ ²¡ª £ �¡ Ъ±®¥«©�ª«ª ¢£� �¡¯¥­®�¥«ª� ÑÒÓÔÕÓÖ ÑÒ×ËÕÓ ¸ ØÙÚÕÓ§ ÑÒÓÔÕÓ ®¥¦©£ ª¢ ©ªÛ©¥�ª¢ª®®�¥«£¤¥ ¸ ¢¥ ®¥¢¥®£ ª« ª¢ ­¥¦©£­£­ª¢ª�µ ÜÀݾǻ ®¥­�£ ª¢ ©ªÛ©¥ �ª¢ª®®�¥«£¤¥ £¢­¥¦©£­£­ª¢ª�µ ¸ ¶�«£¢ ª«©ªµ ÞÄßÇ» ­ª³£ ª¢ ®¥«©ª«�¤¥ ¤ª¢ ­¥¦©£­£­ª¢ª� ª« ª¢ ¢¡³£¦¤¥«¤ª �ª ¡¯�®£ ª¢ ®¡¦�¥¦§ ࣦ£ �ª¢ª®®�¥«£¦ ¡«£ ­£¦©ª ¤ª ©ªÛ©¥ ª« á´âã�«¤¥ä�µ¯£�©£ ®¥¢¥®£¦�ª ®¥« ª¢ ¦£©°« £¢ �«�®�¥ ¤ª ¢¥ ²¡ª �ª ²¡�ª¦ª ®¥­�£¦µ ¥­¦� �¦ ª¢ ¯¥©°«�±²¡�ª¦¤¥ ¤ª¢ ¦£©°« ¸ ��« �¥¢©£¦¢¥µ ¤ª�­¢£±£¦ ª¢ ¦£©°« ¹£�©£ ¢£ ­¥��®�°« ¶�«£¢ ¤ª¢©ªÛ©¥§ ¨¢ ©ª¦®ª¦ ³¦¡­¥ ®¥¦¦ª�­¥«¤ª £ ¢£� ¥­®�¥«ª� ¤ª Ð��¡£¢�±£®�°« ¤ª¢  ¡«¤¥ ¤ªå£¦ª¢Á ÑÒæÒ çÎ ×èÕÎÒµ ÑÒæÒ çÎÕ ÌËçÊÕÊÖ ÊÙéÊÙ êÕÓÙè ë ìÒÒæí¨¢ ®¡£¦©¥ ³¦¡­¥ ®¥¦¦ª�­¥«¤ª £ ¢£ ¥­®�°« ÑÒæ×ËèÕî ÑÒæ×ËèÕ ¥ ­¦ª­£¦£ ª¢­¦¥³¦£ £ ­£¦£ �«�®�£¦ �¡ ª¬ª®¡®�°«ï ÑÒæ×ËèÕ ð æÕÓÚËÎÕÏ ²¡ª £¤ª ñ� ¤ª ®¥ ­�¢£¦ª�©£¯¢ª®ª £¡©¥ ñ©�®£ ª«©ª ¢¥�  ñ¦³ª«ª� ¤ª ®£¤£ ¢·«ª£ ¤ª¢ ­¦¥³¦£ £ï¨¢ ²¡�«©¥ ³¦¡­¥ ®¥¦¦ª�­¥«¤ª £ ¢£ ¥­®�°« ÉòÙÌçÔÕî óËÚçËÙÎÔÙ ôÎéÔÓçÌÌËÍÎÊÙÎÔÓÒµ ª¬ª®¡©£ ¢£ ��³¡�ª«©ª �«�©¦¡®®�°« ¤ª¢ ­¦¥³¦£ £ï óËÚçËÙÎÔÙ ËÎéÔÓçÌÌËÍÎÖª¬ª®¡©£ ¢£ ��³¡�ª«©ª �«�©¦¡®®�°« ��« ª«©¦£¦ ª« ª¢¢£µ ª« ª¢ ®£�¥ ¤ª ²¡ª �ª ©¦£©ª ¤ª ¡«£«¡ªÐ£ �«�©¦¡®®�°« ¤ª¶�«�¤£ ­¥¦ ª« ª¢ ­¦¥³¦£ £ï õÕéÔÕ öËÎ ÊÙ ËÎéÔÓçÌÌËÍÎÖ ª¬ª®¡©£©¥¤£� ¢£� �«�©¦¡®®�¥«ª� ¦ª�©£«©ª� ¤ª ¢£ �«�©¦¡®®�°« ®¥ ­¡ª�©£ï ÉòÙÌçÔÕ ÷ÕéÔÕ ÊÒÎÊÙÙéÔø Ùè ÌçÓéÒÓµ ª¬ª®¡©£ ª¢ ­¦¥³¦£ £ ¹£�©£ ²¡ª �ª £¢®£«±£ ¢£ ¢·«ª£ ª« ¢£ ²¡ª ª�©ñ®¥¢¥®£¤¥ ª¢ ®¡¦�¥¦ï ÉòÙÌçÔÕ ÕçÔÒæøÔËÌÕµ ª¬ª®¡©£ �«�©¦¡®®�¥«ª� £¡©¥ ñ©�®£ ª«©ª £¡«£ Ъ¢¥®�¤£¤ ¤ª ¡«£ �«�©¦¡®®�°« ­¥¦ �ª³¡«¤¥ï ºÃùÄúûÇ üÄýÀ¼¾ÈÇȵ �«®¦ª ª«©£¢£ Ъ¢¥®�¤£¤ ¤ª ª¬ª®¡®�°« £¡©¥ ñ©�®£ï þ¾ÿù¾úÃëÄ üÄýÀ¼¾ÈÇȵ ¤�� �«¡¸ª ¢£Ðª¢¥®�¤£¤ ¤ª ª¬ª®¡®�°« £¡©¥ ñ©�®£ï ØÕÓÕ� ¤ª©�ª«ª ¢£ ª¬ª®¡®�°« £¡©¥ ñ©�®£ ¤ª�«�©¦¡®®�¥«ª�ï ¸ ¶�«£¢ ª«©ªµ õÕéÔÕ Ùè öËÎÕèµ ª¬ª®¡©£ ª¢ ­¦¥³¦£ £ ¹£�©£ ²¡ª ©ª¦ �«ªµ£  ñÛ� £ Ъ¢¥®�¤£¤§ �£ ©£¯¢£ �â� ²¡ª �ª  ¡ª�©¦£ ª«�ª³¡�¤£ ®¥«©�ª«ª ¢£�¤ª�®¦�­®�¥«ª� ®¥ ­¢ª©£� ¤ª ¢£� £®®�¥«ª� £�¥®�£¤£� £¢  ª«� ¤ª¢ �� ¡¢£¤¥¦ ¤ª 壦ª¢§������ ���� ��� ������ ��� ���� �� ��������� �� � ������ ���� ��� ������������� ��� �� ���� ��� ����������� ��� �� ���� ���� �������������� ������� !"#����� !"#����$#����

%& '()*+,-. /0 '.1.23415. 4- 6.7.+ 8(64- 9 :, (;7341+4

Page 18: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

<=>?@A@=BC DC E@DF>GHCH H@ @I@>J>GK=LMN ?MOGHF PI@>JBC G=NB?J>>GF=@N C ?CQK= H@ J=C OF? N@RJ=HFS=C G=NB?J>T>GK= OF?N@RJ=HFPI@>J>GK=CJBFAMBG>C PI@>JBC BFHCN DCN G=NB?J>>GF=@N UJ@ ?@NB@= H@ DC G=NB?J>T>GK= >FAOJ@NBC UJ@ N@ @NBV @I@>JBC=HFWCNBC XG= H@G=NB?J>>GK= PI@>JBC @D O?FR?CAC YCNBC UJ@ N@ CD>C=QC DC DZ=@C HF=H@N@ J[G>C @D >J?NF? @= @D @HGBF?WCNBC HF=H@ @NBC@D >J?NF? PI@>JBC DC NGRJG@=B@ G=NB?J>>GK= H@D O?FR?CAC\GRJG@=B@G=NB?J>>GK= PI@>JBC DC NGRJG@=B@ G=NB?J>>GK= H@D O?FR?CAC] G=R?@TNC=HF @= DCN G=NB?J>>GF=@N H@ J=C G=NB?J>>GK= =J@EC\GRJG@=B@ G=NB?J>T>GK= H@=B?FPI@>JBC ^FAOGDC @D O?FR?CAC @ G=N@?BC AC?R@=@NCH@>JCHCA@=B@^FAOGDC _LC?RG=C `?@OC?C F >FAOGDC @D O?FR?CAC _ DF H@IC DGNBF OC?CG=G>GC? NJ @I@>J>GK=^FAOGDC^FAOGDC PNBC FO>GK= N@ H@N>?G[@ @= DC BC[CD aTabcFFA PNBC FO>GF=@N N@ H@N>?G[@= @= DC BC[DC aTabPD AJ=HF H@dC?@D WC[GDGBC UJ@ N@ O?F=J=>G@= >FA@=BC?GFN YC[DCHFN C>@?>CH@D O?FR?CACb efghifjf kljmfkl nf opqinp iqoklrlnlstuviwq fq nfoljjprrps^FA@=BC?GFNYC[DCHFN WC[GDGBC NF=GHFN CNF>GCHFN C DFN AFEGAG@=BFN H@ dC?@Dbefghifjf kljmfkl nf opqinp iqoklrlnls\F=GHF ^CA[GC @D BCACxF H@ DC D@B?Cy@B?C R?C=H@ ^CA[GC DFN >FDF?@N BC=BF H@D @HGBF? >FAF H@D AJ=HF H@dC?@D] OC?C CHCOBC?N@ C AF=GBF?@N H@ >FDF? F [DC=>F _=@R?FLF=GBF? H@ >FDF? LJ@NB?C J F>JDBC DC [C??C H@ @NBCHF zPN DC [C??C G=X@?GF?H@ DC E@=BC=C UJ@ AJ@NB?C A@=NCI@N H@ C_JHC >JC=HF N@N@D@>>GF=C CDRJ=C FO>GK= H@D A@={|}C??C H@ @NBCHF LJ@NB?C J F>JDBC DC [C??C H@ Y@??CAG@=BCN}C??C H@Y@??CAG@=BCN~O>GF=@N <=N@?BC @D >F=B@=GHF H@D OF?BCOCO@D@N @= DC OFNG>GK= H@D>J?NF?`@RC? ^FOGC @D B@�BF N@D@>>GF=CHF CD OF?BCOCO@D@N^FOGC ^F?BC @D B@�BF N@D@>>GF=CHF _ DF OF=@ @= @D OF?BCOCO@D@N^F?BC? �@NYC>@ DC {DBGAC C>>GK= @X@>BJCHC�@NYC>@?PHG>GK= �@?AG=C? @D NGAJDCHF?\CDG? �������� �� ���������� �� ����� ����� � �� �������� ��

Page 19: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�������� �� �������  �¡ ¡��¢��£�  �¡ �¤¥¤� ¦���¡§������  �¡¡��¢��£� ¨��©¡ª�¢� ª�«¤���¬ª­�  �¡ ©�¤¢����® ¯���ª­� °±¤©°�ª¢²�³¬��¬�  �¡�ª��¡� ¤�³°� � ���� ¡� �£�¬�¬ª­� ���¤�´�ª¬�  �¡ ©�¤¢�������� µ£�¬��� �¡ ©�¤¢���� ²���� �¡ «ª��¡¶���� �¡ «ª��¡ ¨ª��ª��°� ¡� ¯�¡¤¬ª �   � �£�¬�¬ª­�·��¤� �´©ª ¤¸¹º»¹ ¼½¾¿ À¹Á ÂÃÄÅÂÆÇÁ ÈÇ »¹ ÉÇÆʹƹ ÈÇ» ÇÈÅÊÂË ÈÇ» ÁÅÌÍ»¹ÈÂË ÈÇ Î¹ËÇ»ÏÐÑÐ ÒÓÔÕÖÕ×ØÙ ÚÔ ÖÙ ÛÜÝÞÜßàß ÕÝÙ Ôá â×àÖáßÚÝÜãÆÁÇäÍÅȹ ÁÇ È¹Æ »ÂÁ ùÁÂÁ ÆÇÄÇÁ¹ËÅÂÁ ù˹ ÔÓÔÕÖåßÜ Ç» ÃËÂä˹̹ ¼¿Îæç ÇÆ Ç»ÁÅÌÍ»¹ÈÂËèÏÐ éêÜ×Ü Ôá ßÜÕë×ìÝ ÚÔá ÛÜÝÞÜßàßæºËÅË Ç» ¹ËÄíÅÉ ÈÇ» ÃËÂä˹̹ ÌÇÈŹÆÊÇ »¹Á ÁÇ»ÇÄÄÅÂÆÇÁ æËÄíÅÉ î æºËÅË ÈÇ» ÌÇÆïÈÇ» ÇÈÅÊÂË î ÁÇ»ÇÄÄÅÂƹÆÈ ǻ ¹ËÄíÅÉ ¼¿Îæç¿ ãÆ ðÂË̹ ÌñÁ ËñÃÅȹ ÁÇ ÃÍÇÈǹÃÍÆÊ¹Ë ¹» ºÂÊòÆ ÈÇ» »ÅºË ¹ºÅÇËÊ ÈÇ »¹ º¹Ë˹ ÈÇ íÇË˹ÌÅÇÆʹÁ î ÂÃËÅÌÅË Ç» ºÂÊòÆÅóôÍÅÇËÈ ÈÇ» ˹ÊòÆ Ã¹Ë¹ ÄÂÆÁÇäÍÅË Ç» ÌÅÁÌ ÇðÇÄÊ¿õÐ öÝàÛ×áßÜ Ôá ÛÜÝÞÜßàß÷Ç»ÇÄÄÅÂÆ¹Ë »¹ ÂÃÄÅòÆ øÂÌÃÅ»¹ù ÇÆ »¹ ÌÂȹ»ÅÈ¹È ÈÇÁǹȹ ú ǻ ºÂÊòÆ ¹ÁÂÄŹÈ ÈÇ »¹º¹Ë˹ ÈÇ íÇË˹ÌÅÇÆʹÁû¿ ÷Å »¹ ÄÂÌÃÅ»¹ÄÅòÆ ÊÍÉ üýÅÊÂù ÁÇ ÃÍÇÈÇ ÅË ¹» ùÁ þÿ ÁÅ íͺÂÇËËÂËÇÁ ÇÆ »¹ ÄÂÌÃÅ»¹ÄÅòÆ ÁÇ ÃËÇÁÇÆʹ ÍÆ ÌÇÆÁ¹�Ç ÅÆÈÅĹÆÈ ǻ ÊÅàÈÇ ÇËËÂËÈÇÊÇÄʹÈÂù ÇÁ ÆÇÄÇÁ¹ËÅ ÄÂËËÇäÅË Ç» ÇËËÂË î É»ÉÇË ¹ ËÇÃÇÊÅË ÇÁÊÇ Ã¹Á¿�Ð ÒÓÔÕÖÕ×ØÙ àßÙÖßá ÚÔá ÛÜÝÞÜßàßø¹È¹ ÉÇó ôÍÇ ÁÇ ÁÇ»ÇÄÄÅÂÆÇ »¹ ÂÃÄÅòÆ ã�ÇÄÍʹ î »ÍÇä ÁÅäÍÅÇÆÊÇ ÅÆÁÊËÍÄÄÅòÆ ÈÇÆÊË ÂÁÇ ÂÃËÅÌÇ Ç» ºÂÊòÆ ¹ÁÂÄŹÈ ÇÆ »¹ º¹Ë˹ ÈÇ íÇË˹ÌÅÇÆʹÁù Ç» ÁÅÌÍ»¹ÈÂË Ç�ÇÄÍʹ »¹ÃËÅÌÇ˹ ÅÆÁÊËÍÄÄÅòÆ ÈÇ» ¹ÌºÅÇÆÊÇ¿ ãÆ Ç» ÇÈÅÊÂË ÁÇ ËÇÁ¹»Ê¹ ÇÆ ÉÅÈÇ ÅÆÉÇËÁ »¹ »�ÆǹÈÇ» ÊÇýÊ ôÍÇ ÄÂËËÇÁÃÂÆÈÇ ¹ »¹ ÅÆÁÊËÍÄÄÅòÆ ¹ ÁÇË Ç�ÇÄÍʹȹ î ÇÆ »¹ ÉÇÆʹƹ ÈÇ»ÌÍÆÈ ÈÇ Î¹ËÇ» ÁÇ ÂºÁÇËɹ Ç» ÇðÇÄÊ ÈÇ »¹ ÅÆÁÊËÍÄÄÅòÆ ¹ÆÊÇËÅÂË Ç�ÇÄÍʹȹ¿ �¹Ë¹Ç�ÇÄÍÊ¹Ë »¹ ÁÅäÍÅÇÆÊÇ ÅÆÁÊËÍÄÄÅòÆ ÁÇ ËÇÃÅÊÇ ÇÁÊÇ Ã¹Á í¹Áʹ ¹»Ä¹Æó¹Ë Ç» ðÅÆ ÈÇ»ÃËÂä˹̹¿ �¹Ë¹ ËÇÅÆÅÄÅ¹Ë »¹ Ç�ÇÄÍÄÅòÆ ÈÇ» ÃËÂä˹̹ ÈÇÁÈÇ Ç» ÃËÅÆÄÅÃÅÂù ÉÍǻɹ ¹»Ã¹Á ¾ î ËÇÃÅʹ ÇÁÊÇ Ã¹Á¿

�� ø¹Ã�Êͻ ¼¿ øÂÆÂÄÅÇÆÈ ǻ ˺ÂÊ Î¹ËÇ» î ÁÍ ¹ÌºÅÇÆÊÇ

Page 20: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�� ������ �� �� ��� � ���� �� �� � ��������� �� � ��������� ����� ����)��������� �!�� �" �!�� ���� ��#$���" %� ����� ����� �� ��& ���" � '��� ��'���� �������������� �� � '�� �� (���#�����* + �� �!�� ��$��,�#�#���� � ����� ����� �� ��& ��� (�� ���-� �� .�� ��� ��&�#� / � �� ��� �� �� � �����0 1 2������� �� �!�� ���� ��� #������ ����#�� ���� ����-��� �� ������� � ��� '������ ���������������" ��� ��&��� ��343 + 3530 6'2�#����" � 2������� #$,�# ����$ �����#��� �� � ������ ��� ��# ����0 1 �!�� ���� ��#$��� �� ��� �� #������ �� '���� / ������ � #�� �,������" ��� 7� �� ���$ ������ � ���� #� �#���� ��#� ��#$���#���� � 2��2�� ��#���" �� 8" � ������ � �!�� ���� ����� ���������09� ����#���� ��& �� �� �!�#�� �������� � ���� ��2� ��'� �����'����0 :� 7'���� �� ��.������� �������" ���� ��� ������ ��#� ��� # ��� ��;���< �� �'�� =5= + =58 ���� ��� ������ � .#�����-��� ��� ����# ����0 >� �!�� �� �� ��&�#" �� ��'� ������� � ��� ���� �� 2����� ���� .�& �� =5? =5=@0ABCB DEFGEHIHJK LHEMHJ N JOLPHQOFRMJ%� ��S�� �� ��#��#���� �&� / � �� ���� / � (& ;���0 1�� ��& ������ ����!�#��� �� ����< �� � ��/ �� �� � ���� � ��� + � 2���� ��" �#������ � ����� �� �'��$� ��� ���� �����" ���� �� � � ��� ������ �� �� / �(+ � ���" �������� � #���� + �������� �� �� ���&�� + ���� �� ��'������0%� T�������� �� � ���������� �,�� ��� # ��� �� ;���0 �� �����" �������� �� � �� ;���" � ����������" �� �U#��� �� #����� �� � '���" + � '������ �� ���� �� ����� + #�����0 9� �� ������� ���� ���U#��� �� #����� / � ;��� ����� �� � '��� ��#� � ������ �� #����� / �(+ �� �� ��/ ���" �������� �� # ��� # ��� � .�& � =5=8 �����.���$��#���#���� � ��� ����0 1 T�������� V���W �� � ��� ���� �� � � � ���$;��� � #�#���� �� &���0 > #���� / � �� ����/ � �� ��������" �� ���� ���� / � ;��� ����� ���� � � ���� ��� � '��� � #����� 2�X + / � ��X�� �� ��&�� �� � ��/ �� ��� # ��� �� ;��� �� ��'� / � ���#���� (+ �#���� �� ���( ��/ ��0 Y����� / � ��� 7� �� �!�� �� � ����� �����" ���� ���� �#'�0 Z� ��� #���" � �!�� ���� �� � ��&�# �� ��� ������'����#� � ��� ���� �� ��� ������ (�� ���&� � ��� ���� .���0 �� �& ��� ������ ���2������� �����.��� � ��� �� ;��� ��#� � ��� ���� .��� � / � ������ ���&�" �� � ��� ���� ������ ��� 7� �� ���#��� �� ������ �� �� #'�����0

[X� �� =0 [��������� �� ��'�� ;��� + � #'����� =\

Page 21: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

]^ _`a bcdef`a ghi ` ghgj ak lfkak^m`^ _` aknek^nc` ok acme`ncp^ka qek akdk^kf` `_ krknem`f k_ lfpdf`s` gtuvwt xymkak qek _`a lfcskf`a z c^amfenncp^ka ap^ok_ `s{ck^mk| } _`a c^amfenncp^ka lfplc`sk^mk l`f` u`fk_ c^cnc`^ np^ _` c^amfenncy^~�~��~| ne}p kbknmp ak sekamf` k^ _` bcdt ghg�t

�cd ghit ]_ acse_`opf okale�a ok �`{kf krknem`op _` lfcskf` c^amfenncy^ ok`s{ck^mk

�� �`l�me_p gt �p^pnck^op k_ fp{pm u`fk_ } ae `s{ck^mk

Page 22: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

���� ����� �� ��������� ������� �� ����� ��� �¡����� ����¢�� �¢�¡��  �£¢ �� �����¢¡�

���� ����� �� ��������� ������� �� ����� ��� �¡����� ¡�� ��� �¢�¡��  �£¢ �� �����¢¡�

¤��¥¡��� �� ¤�¢� ��¢�� �� ����¡ ¦���� § �� �����¢¡� �¨

Page 23: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

©ª«¬ ­®­¯¬ °± ²ª³´±µ¶·¸ ¶¹²º´»² ¶¹ ¼µ½¹¸ ¹¾¹¿´Àµ¶·±µ ¿´µ¸Àµ ªÁ²À¸´¿¿ªÂÁ ¶¹ µ³½ª¹ÁÀ¹

©ª«¬ ­®­Ã¬ °± ²ª³´±µ¶·¸ ¶¹²º´»² ¶¹ ¼µ½¹¸ ¹¾¹¿´Àµ¶·±µ º¸ª³¹¸µ ªÁ²À¸´¿¿ªÂÁ ¶¹± º¸·«¸µ³µ

ÄŠƵºÇÀ´±· ­¬ Æ·Á·¿ª¹Á¶· ¹± ¸·½·À ȵ¸¹± É ²´ µ³½ª¹ÁÀ¹

Page 24: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÊËÌÍ ÎÏÎÐÍ ÑÒ ÓËÔÕÒÖ×ØÙ ×ÚÓÛÕÜÓ ×Ú ÝÖÞÚÙ ÚßÚàÕáÖ×ØÒÖ ÓÚÌÕâ×Ö ËâÓáÙÕààËãâ ×ÚÒ ÛÙØÌÙÖÔÖ

ÊËÌÍ ÎÏÎäÍ ÑÒ ÓËÔÕÒÖ×ØÙ ×ÚÓÛÕÜÓ ×Ú ÝÖÞÚÙ ÚßÚàÕáÖ×Ø

åÖÛæáÕÒØ ÎÍ åØâØàËÚâ×Ø ÚÒ ÙØÞØá çÖÙÚÒ è ÓÕ ÖÔÞËÚâáÚ Îé

Page 25: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

êë ìíîïíîë ðñòìîóïïðôñ õíê öî÷øîëùë

úðøû üýüþû ÿê òðùóêëõ÷î õíòöó�ò õí �ë�íî í�íïóìëõ÷êë ïóëîìë ðñòìîóïïðôñ õíê öî÷øîëùë

úðøû üýü�û ÿê òðùóêëõ÷î õíòöó�ò õí �ë�íî í�íïóìëõ÷

�� �ëö�ìóê÷ üû �÷ñ÷ïðíñõ÷ íê î÷�÷ì �ëîíê � òó ëù�ðíñìí

Page 26: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

� �� ��� ����� ��� ���������� �� !"�#$� ��%� &��� �� �� ��%� '� ��� (�� �� ���)� �� �� ��(��*� ����� �� +, ������� +, )�����- ���� �� � ��� . � ��� � ��� ������ (�� �� ��%� �� ����� �)���/ 0� ��� ���� �%��� �� �� &���- �� ������ �������� �� ������ ���� ������ ����� �� . ������ �� ��� � ��(���� �� �� �����/ &��� ���� �������� �� �%�� 1� ����� �� 2 ����� ��- �� %��� �� ������ �� ��%�3 . �� %�3� (�� �� ����� � � � ������ ��� ���� ������/ &��� �����)�� �� ������ (�� �� �%�� ���� ���- �%�� �� 1. ������ �� � ��(�����%�� � (�� �� 2 ���� . �� � � �� 1. ������ �� �� %���/ 0�� ����� �� �������� �� ������ �������� ��� ������� �� ��� �� �� ������� �%��� ��� &���- ������� �� �� ��� ������� (�� ��%��2 �%����� &��� �� ����3��� �� ������ ��/$� �������� �� &��� �� �� ������ �� ���- ����'��- �����-%��� . �4�� � ������� �� &���- �%���)��� �� ����� �� &��� ����� (���� �4�� � ��� �����/ 5 �4����� ����� ��� ���� � � ��2 � �� ��)������ 4�� %��/��6� 78�9:;:;< =/ > ���3��� �� �������� �� &���- �4�� � ������ �� ��� ������� �� �������� �� ���� ���� ����� �� 2 �� ��������? �� ���� �'��2� ��� � �@ ������ /&AB /C%���)� �� �'� � �� �� ������� �� ��� ���D��- � � �� � )�� � ��� ������ �� ��� ��� ��������/ 0�� �4�����- � ������%��� . ������ �� �1�)� ,/&AB�4�� ��� � ��2 ���� ����� �� �� �� 2 �4�� ���- ���%�EF �%�� � �4����� �� �� �� ���� ���� . � ��2 ��F ���� �- ��������� . ��� � )������ �� �4������ ��2 � F �%�� �� ��� �� ���� ��F �%�� �� ��� �� )�� �� � )�� � ��� ����� �� &���F �%�� � ��� ��� ����� �� &����%���)� �� ������� �� .��/

G�H ��� =/ G�������� �� ��%� &��� . �� �%��� � =I

Page 27: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

JK LMNOPQRS SN TUQQN NV SMWXVRYUQ YN ZRQNV[ RTPM\RQ UPQUS ]QU^QRWRS TUWU VRTRVTXVRYUQR[ YNOPQU YNV ^QX]U YN RTTNSUQMUS YN L_`aMOYUbSK LMOMWMcRQ PUYRS VRS\NOPRORS YN L_`aMOYUbS d RTPM\RQ VR PRQNR YNV SMWXVRYUQ[ U]QMWMNOYU VR PNTVRefVPg SN^XMYR YN VR PNTVR ehRigK jkNTXPRQ NV ]QU^QRWR YN ZRQNV lKZfm d WMNOPQRSNSPn TUQQMNOYU[ XSRQ VR TRVTXVRYUQR ]RQR oRTNQ RV^XORS U]NQRTMUONS RQMPWpPMTRSKhNQWMORQ VR TRVTXVRYUQR d UiSNQ\RQ VUS ]QU^QRWRS RTPM\US WNYMROPN efVPg ehRigKhNQWMORQ NV SMWXVRYUQ XSROYU VR U]TMqO rSRVMQrK sUPN tXN RoUQR VR TUWiMORTMqOefVPg ehRig OU ]QNSNOPR PRQNRS RTPM\RSK jSPN NkNQTMTMU QNSRVPR VR TR]RTMYRY YNL_`aMOYUbS YN ]UYNQ TUQQNQ \RQMUS ]QU^QRWRS RV WMSWU PMNW]UK

uv wR]xPXVU yK wUOUTMNOYU NV QUiUP ZRQNV d SX RWiMNOPN

Page 28: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

PROGRAMAS

SENCILLOS

�� �������� � ��� �� ����� � ������� �� ����� � �� ����������� ������������� � ������ �� ��������� � �� ����� ����������� � � �������� � ������������ �� ����������� � ���� ��������� �� ����������� ��� ������� �������� � ����������� ��� ������ �� ���� �� ����������� ��� ����� � ���� ������� �� �� !"#$$�%�& '"�(�!�)* � +, �$* � �� !"#$$�%�& $%('#& !* - .�� � ��������� � ����� � �� ����������� ���������/010 234567889:3;4 <=6= 86;=6 ;> =?@9;35;ABCDEF GCHIJ KLKMNOP BDC QDRSHBTTQUDV RQWDQXQTC YBI JJIZC C TC[F JC CTTQUDCRFTQCEC TFD \RSC] ^C ID IJ TC_`SBJF CDSIHQFH RI _HIRIDSU BD _HFWHCaC YBI TFDSQIDIJFR TBCSHF SQ_FR EI QDRSHBTTQFDIR YBI _BIEID QDTJBQHRI ID JC RITTQUD _CHC TFDRSHBQHIJ Ca[QIDSIV YBI RI HI_HFEBTI C TFDSQDBCTQUDbcdcAcefghfijkchdlhGimhnfholifhdfAinnh p iqhdcgi p qchdgefin demlh Aed rjedhgiofhdfosfkenoituimhgfvsdlefifAinnh w ghfiqhdcgi x i ytuimhgfvsdlefifiqhdcgi y ghfAinnh z i {t|i^ p jedhgiofhdfAinnh z iqhdcgi pt}cdfghfijkchdlh

AC_`SBJF x] uHFWHCaCR RIDTQJJFR p

2

Page 29: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

~� ������� ����������� �� �� ��������������� �� ������ �� ������� �������� ��� ���� ������� ������� ���� ����� � ¡������� ��������¡������� � �������� �� ���� ������� ������� �� ��� ��¢����£ ¤��¥�¦� �� �� ���§������������ �� �¥���¡���� ��� �������� ��������� � ���� ��� �� �����£ ¨����¥���� ���¡���� �������� ��� �������� ��������� � ��� ������������� ����������� �������£ ~� ������� ����������� ������ ��� ����� ���� ����� �� ������� ©£ª� �� ����� ����� �� ����� © � «� ¢�� ¡� ����� �� �¡����� ¬£ª ����� ���¡����� ª£ª £ ­� ®���� �������� �� ������� ����������� ������ ��� �����¡������� �� �� �¡����� ª£ª ����� �� ����� ©£ª ����� �� ����� ¯£ª£°�������� �� ��������� ��� ��±��� ±����������� ���� �����¥�� ��� �����²��� ��³�����´µ�±�� ¶· ~� ������� ������ ��� �� ����¥�� ¸¹¸º¸»¼½¾¼¿ÀÁ¸¾¹Â¾ �������� ��� �� ����¥�� ø¹¼½¾¼¿ÀÁ¸¾¹Â¾£ °���� ��� ����¥��� ��������Ä����� ���Å�� ���� ������������� �� �� ������� � �� ��¥�� �����¥�� �������´ �� ���Å������ � ������ �� �§�¥��� ÆÇÆ ���� ®����� ��� ����¥����������£µ�±�� È· É�� ����¥�� �� ������ �� ���� ������ ��� � ¡����� �����������¥�������� � ���¥��� �� �§���£ °� ����� �� ������� �� �� ���� �� ����� ���§��� ������� �� �������� ���� ������� ��� ����¥���¸¹¸º¸»¼½¾¼¿ÀÁ¸¾¹Â¾ � ʿ˾̼¾Í¿¼¾¹¼º¿Ì̾ ���� �� ���Î����� ��������� � ¢�� �� �� ���� �� ���� �������£ ­� ���� ������ �������� ����� �� ��� ��������� ��¥�������� � ���¥��� �� �§��� ���� ����� �Ï�����¥��� � �������¥��� ��� ���������£µ�±�� з Ñ��� ����������� ��¥� ��� ��������� ��� �� �§�¥��� ����� � ����´ÆÒÆ£µ�±�� Ó· ~� ������� ����������� ��³� ��� �� �� ��������������� ��� ��¥������� �� �� �Î����� ����������� ®������ ��� ÔÕ ����¥���´Ö×ØÙÚÛÙÜÝ×ÛÙÞÛß×ÚÚÙ à ×áÙÞâã× à áâÙÞãäÛ×Ú ÞäØÝÙ ßäÞ åæäÞÙã×ÜÛÙÞÛÜçÛèäÚÜ×~�� �Å����� ������ ���¥����� � ¡������� �� ����� ¢�� �� ��� ������������������� ��§ ���� �� ����������� ��� ÍéË� ¾Í¾ � »¾Í¾£ ¨�

ê ëìíîïðñò óô õöò÷öìøìù ùúûüýññòù

Page 30: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

þÿ���� ÿ��� ��þ����� ��ÿ������� � �� ���� �� ����� þ��� ��þ���� ��� þ������� �����ÿ���� � �� ����� �������� �� ���þÿ�� �� �� ����ÿ����� �� þ�������� ���� �� þÿ���� �������� �� ! !"#$ ����ÿ������� þ��� ������� þ������ � ������� %ÿ�&ÿ� þÿ���� �� �'�������� (� ����� �������� þ�� ��� ��� ����ÿ������� �� þ������ ) ���þÿ�� ��� �� �������% ����� �� �*������� ��+����� �� þ����� � ��,%� þ�������� �� �� -��ÿ�� �./�0����1�� �� � �� ���ÿ�� ��� ������ ������� ) �� �-��� �� �� ÿ��� �� ,�����

2��ÿ�� �./� 3� þ����� � ��,%�4545 6789:;<<=>7?8 @:=A=9=BC8 @C:C DC:?EF�� ����� ����ÿ������� þ�� ��1�� &ÿ� ������� ,���� ��� GHGIJGKLMGNGNOGNLJPQLRMSG MRTUKRNVUIRSG TUOUTGNVUIRSG ) GWGKGXR ���� �������YZ$[ \��]^Z GHGIJG,���� ������� �� ����ÿ����� GHGIJG �� � �1��'�� �� �� ��������� �� &ÿ� ��(�������� �_��� ��� ÿ�� �ÿ���� � �� ���ÿ���� ��&ÿ���` �_��þ� �� �����

a�þ�ÿ�� �� b����� �� ��������� c

Page 31: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

defghe ij jklmni oi pf lfqor r defghe fqh sheio ftmdhoh h liomh dfhoeh oiompnhqdmhu vq ipni wjnmlr dhprx pmlsjiliqni yheij pi hshzh { iq ijpmlfjhore pi seipiqnh fq liqph|i mqomdhqor ij ieere rdfeemoru } ipnr pi jidrqrdi drlr ~��� ~�� �����u����������� �������������������}j i|idfnhe jh mqpnefddm�q �������������������x yheij �hdi fq zmer h jhmg�fmieoh oi qr�iqnh zehorpu vpnh mqpnefddm�q qfqdh serofdi fq sher sreieereu����������� �������������yheij i|idfnh jh mqpnefddm�q ������������� pm ipn� shehor iq fqh ip�fmqhorqoi �h{ sre jr liqrp fqh lrqioh� iq dhpr drqnehemr pi serofdi fq shersre ieereu  h lrqioh eidrzmoh jh drjrdh iq pf trjph sheh lrqiohpu����������� �������������yheij nhltm¡q i|idfnh jh mqpnefddm�q ������������� pm nmiqi sre jr liqrpfqh lrqioh iq pf trjph� iq dhpr drqnehemrx qfi�hliqni pi serofdi fq shersre ieereu����������� �¢���£� h mqpnefddm�q wjnmlh { qidiphemh iq dfhj�fmie serzehlh oij ertrn ip�¢���£� ¤pmq hdiqnr¥x df{r i¦idnr ip hshzhe hj ertrnu §i ziqieh fq sher sreieere pm nielmqh ij serzehlh pmq iqdrqnehe ipnh mqpnefddm�qu hp eizjhp zehlhnmdhjip ¨ { © oi jh piddm�q oi hltmiqni nhltm¡q pi hsjmdhqh�fkx hoil�p oi jhp pmzfmiqnipª«�¬­� ®¯  h ������� °� ~��¬��±� ipn� oijmlmnhoh sre jhp shjhteh²³²´²µ�¶·�¸¹µº¹»¼» { ½²³�¶·�¸¹µº¹»¼» { oiti hsheidieoipsf¡p oi jh piddm�q oi hltmiqniu«�¬­� ¾¯  hp mqpnefddmrqip sheh yheij ipn�q oijmlmnhohp sre jhp shjhtehpeipie�hohp ²³²´²µ�¶·�·¿·´À´²µ³ { ½²³�¶·�·¿·´À´²µ³u vpnh

Á Âhsknfjr ¨u Ãerzehlhp piqdmjjrp

Page 32: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÄÅÆÆÇÈÉÊ ËËÌÍÌÎÌ ÏÐÑÑÒÓÔ ÕÐ ÐÖÐÑ×ÑÒÓÔØ ÅÄÙÚ ÎÅÉÙÛÜ ÎÅ ËÌ ÄÅÆÆÇÈÉ ÎÅ ÝÛÜÞÛÌÍÌßàÐáâã äå æÅÉÙÛÜ ÎÅ ËÌ ÄÅÆÆÇÈÉ ÎÅ ÅçÅÆèÆÇÈÉ ÄÅ ÅÄÆÛÇéÅÉ èÉÌ Ü ÍÚÄ ÇÉÄÙÛèÆÆÇÜÉÅÄÊÆÌÎÌ èÉÌ ÙÅÛÍÇÉÌÎÌ ÆÜÉ êëêß ìÄÙÌÄ ÎÅéÅÉ ÅÄÆÛÇéÇÛÄÅ ÙÌË ÆÜÍÜ ÄÅ ÝÛÅÄÅÉÙÌÛÜÉí ÆÜÉÍÇÉîÄÆèËÌÄ ï èÄÌÉÎÜ êðêßñòóò ôõö÷ø÷ùúû üö ùûýþÿø÷÷ù�ûöý-ÌÄ ÇÉÄÙÛèÆÆÇÜÉÅÄ ÎÅ ËÌ ÄÅÆÆÇÈÉ ÎÅ ÅçÅÆèÆÇÈÉ ï ÎÅ ÌÍéÇÅÉÙÅ ÄÅ ÅçÅÆèÙÌÉ ÅÉÏÐÑ×ÐÔÑÒãØ èÉÌ ÎÅÄÝèÄ ÎÅ ÜÙÛÌÊ ÎÅ Ç��èÇÅÛÎÌ Ì ÎÅÛÅÆ�Ì ï ÎÅ ÌÛÛÇéÌ Ì ÌéÌçÜß ìÄÙÜÛÅÄèËÙÌ ÆËÌÛÜ ÌË ÆÜÉÄÇÎÅÛÌÛ ÅË ÄÇÞèÇÅÉÙÅ ÛÌÞÍÅÉÙÜ ÎÅ ÝÛÜÞÛÌÍÌ ÅÄÆÛÇÙÜ ÎÅ ÎÜÄÍÌÉÅÛÌÄ ÎÇ ÅÛÅÉÙÅÄÊ ÌÝÛÜ�ÅÆ�ÌÉÎÜ ËÌ ËÅ�ÇéÇËÇÎÌÎ ÎÅ ËÌ ÛÅÞËÌ � ÎÅ ËÌ ÄÅÆÆÇÈÉ ÎÅÌÍéÇÅÉÙÅí8�8�8�ðæìðìì���8�� 8�8�8�ðæìðìì���8��Ì�ÌÉ�Ìë Ì�ÌÉ�Ì ëÞÇÛÌðÌðËÌðÇ��èÇÅÛÎÌ ëÞÇÛÌðÌðËÌðÇ��èÇÅÛÎÌë ÆÜËÜÆÌðÍÜÉÅÎÌ ëÆÜËÜÆÌðÍÜÉÅÎÌë ÛÅÆÜÞÅðÍÜÉÅÎÌë+8�ðæìðìì���8��ÛÅÆÜÞÅðÍÜÉÅÎÌë+8�ðæìðìì���8���èÉ�èÅ ÝÌÛÌ ËÌÄ ÛÅÞËÌÄ ÎÅË ËÅÉÞèÌçÅÊ ÌÍéÜÄ ÆÈÎÇÞÜÄ ÄÜÉ ÆÜÛÛÅÆÙÜÄÊ ÄÅ ÝÛÅ ÇÅÛÅ ÅË ÎÅËÌ ÝÌÛÙÅ Ç��èÇÅÛÎÌÊ ÝÜÛ ÄÅÛ ÍÚÄ ÚÆÇË ÎÅ ËÅÅÛ ï ÅÉÙÅÉÎÅÛß �ÈÙÅÄÅ �èÅ ËÌÄ ÇÉÄÙÛèÆÆÇÜÉÅÄÄÅ ÅÄÆÛÇéÅÉ ÎÅçÌÉÎÜ ÙÛÅÄ ÅÄÝÌÆÇÜÄ ÆÜÉ ÛÅ ÅÛÅÉÆÇÌ Ì ËÌ ÝÌËÌéÛÌ������������������� ÎÅ ËÌ Ë�ÉÅÌ ÄèÝÅÛÇÜÛß ìÄÙÌ ÅÄ èÉÌ ÝÛÚÆÙÇÆÌ Íèï ÆÜÍîÉÅÉ ËÌ ÝÛÜÞÛÌÍÌÆÇÈÉÊ ÆÜÉÜÆÇÎÌ ÆÜÍÜ �ã�áÐÔ Ü ÏãÔá�ãÕ�Ê �èÅ ÌïèÎÌ Ì ÌÝÛÅÆÇÌÛ ÍÚÄ ÚÆÇËÍÅÉÙÅ ÆèÌË ÅÄ ËÌ ÄÅÆèÅÉÆÇÌ ÎÅ ÇÉÄÙÛèÆÆÇÜÉÅÄ ÝÌÛÌ ÅË ÛÜéÜÙß ìË ÅÎÇÙÜÛ ÎÅ %ÌÛÅËÙÇÅÉÅ ËÌ ÜÝÆÇÈÉ ����� ! " #!$&�'!Ê ÎÅÉÙÛÜ ÎÅ ËÌ ÜÝÆÇÈÉ �()*,.!Ê ÝÌÛÌ ÇçÌÛÌèÙÜÍÚÙÇÆÌÍÅÉÙÅ ËÜÄ ÍÌÛÞÅÉÅÄ ÌÎÅÆèÌÎÜÄ Ì ÆÌÎÌ Ë�ÉÅÌ ÎÅË ÆÈÎÇÞÜß �ÙÛÌ éèÅÉÌÝÛÚÆÙÇÆÌ ÎÅ ÝÛÜÞÛÌÍÌÆÇÈÉ ÆÜÉÄÇÄÙÅ ÅÉ ÅÄÆÛÇéÇÛ ÄÈËÜ èÉÌ ÇÉÄÙÛèÆÆÇÈÉ ÝÜÛ Ë�ÉÅÌßñò/ò 01ÿö2 �ÿüöû1ûü� øû ÷ø1ÿþ�4Å ÅÄÆÛÇéÅ Ì�ÜÛÌ ÅË ÝÛÜÞÛÌÍÌ 3ß%�5 Ì ÝÌÛÙÇÛ ÎÅ Äè ÆÜÍÝÜÛÙÌÍÇÅÉÙÜ Å�ÝÛÅÄÌÎÜ ÅÉËÌ ÇÞèÛÌ �6�ß �ÜÉ èÉ ÝÜÆÜ ÎÅ ÇÍÌÞÇÉÌÆÇÈÉ ÄÅ ÝèÅÎÅ ÝÅÉÄÌÛ �èÅ %ÌÛÅË ÅÄÙÚ ÅÉ èÉÆèÌÛÙÜ ï �èÅ �Ìï ÍÜÉÅÎÌÄ ÙÇÛÌÎÌÄ ÅÉ ÅË ÝÇÄÜß -Ì ÙÌÛÅÌ ÎÅ %ÌÛÅË ÆÜÉÄÇÄÙÅ ÅÉ ÛÅÆÜÞÅÛ

�ÌÝ�ÙèËÜ �ß 7ÛÜÞÛÌÍÌÄ ÄÅÉÆÇËËÜÄ <

Page 33: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

9:; =>?@A:;B C>9>C:D9:; A@?ED> A@9 C@;E> A@ 9: F:DE@ A@D@CG: A@9 CH:DE> IBJK?:9=@?E@B ;:9KD;@ A@9 C@;E>LMKNHK@?A> 9:; D@N9:; A:A:; :?E@DK>D=@?E@B @9 ;KNHK@?E@ FD>ND:=:C>?;EDHI@ @9 :=OK@?E@ I G:C@ PH@ Q:D@9 D@:9KC@ 9: E:D@: K?AKC:A:RSTSUSVWXYWZ[\SYT]YQZ^Y_WYM]ZWYTWUZ__Y ` ZaYTSXZ b aSYTXVWZ_ YM]Y UVTc [VTYXZMWYTWMdW\V_MZ efZ^YXWgdT]VWZWUZ__Y b XYWZaYTSXZ b Z hefZ^YXWgdT]VWZWUZ__Y h XYWZaYTSXZ b Z hefZ^YXWgdT]VWZWZaYTSXZ i XYWUZ__Y ` Z hefZ^YXWgdT]VWZWZaYTSXZ h XYWUZ__Y ` Z hefZ^YXWgdT]VWZWZaYTSXZ j XYWUZ__Y ` Z `ekZl i [VTYXZMWYTWUZ__Y ` ZaYTSXZ `ekZl i [VTYXZMWYTWUZ__Y ` ZaYTSXZ menSTWXYWZ[\SYT]Y

:o MKEH:CKp? K?KCK:9 Oo MKEH:CKp? JK?:9nKNHD: bqbL Y9 C>=F>DE:=K@?E> A@9 FD>ND:=: `LQZ^STSUSVWXYWf^Vr^Z[ZSTSUSVWXYWYgYUdUSVT:s:?t:eD@C>N@W=>?@A:e:s:?t:e

u U:FvEH9> bL fD>ND:=:; ;@?CK99>;

Page 34: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

wxyz{x|}z~x������~���{�w�|�|��|�����xw������~���{�w�|�|��|�����xw���{�w�|�|��|�����xw���{�w�|�|��|�����xw������~���{�w�|�|��|�����xw���{�w�|�|��|�����xw���{�w�|�|��|�����xw������~���yz�zy�|}z~x���yz�zy�|}z~x���{�w�|�|��|�����xw���{�w�|�|��|�����xw������~������{��x����|��|������������|��|���������~ x��x �wz{w�}� ��wz�xy��}z� x� �xy�z �x ��x �wx� {�wz� � �� �����xw�� x������x� �~ {�wz � �� �xwxy��� �x �{��� }�~xw�� �z� {�wz� � �� �����xw�� x������x~ ��~�xw��w �� ��wxyy��~ �x� wz�z���� � ¡¢£¤¥ ¦§ §¨¨¤¨§¥©z� xwwzwx� ��x �x ��x�x~ �wx�x~��w �� x�yw���w �wz{w�}�� �x ��x�x~ y����ª�y�w x~«�¬­�yz�� ��~�®y��yz�� �x x¯xy�y��~ ° �x �~�x~�z�©z� ±²²³²±´ µ¶·¸¹³´ zy�wwx~ �� �x ������� ��{�~� �����w� ��x ~z x��® x~ x��zy�����w�z� �zw x¯x}��z x~ º»º¼º½¾¿ÀÁ¾ÂýÄÃÅÆÅ �z�w� �� Ç©Ç �x���¬� �x¿À� �~ xwwzw �¬­�yz �����~�x ªwxy�x~�x x� ���w Ç«Ç È�z� ��~�z�É x~ ��{�w �x� Ç�Ç�zw��x x� ��ªÊy�� �����~{��w�z�� z�w�� yz~ª���z~x� yz}�~x� �z~ x~�wx �~� �x�w� z}�°Ë�y��� Ç�Ç ° x� ~Ë}xwz yxwz ÇÌÇ� ��Ê yz}z x~�wx x� �Ê}�z�z }x~z� ÇÍÇ ° x��Ê}�z�z �x ���w�°��z Ç|Ç� �~ Ë���}z xwwzw }�° ªwxy�x~�x� x� ~z �x{��w ��� wx{����x x�yw���w� �x ��� �����w�� yz~ }�°Ë�y���� z }�~Ë�y����� ÎϬ~{��x y�����zÐ Ñ�~x}��w{z� ~z x��® ���z� x� ��}����zw �~��y�w® �� x­���x~y�� �x x��x ���z �x xwwzwx� ��yz}����w x� �wz{w�}��

���Ê���z Ò� �wz{w�}�� �x~y���z� Ó

Page 35: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÔÕÖ ×ØØÙØ×Ú ÚÛÜÝÞßÝÛßÙÚ Õàáââãä àáåäæÕ äÕ Öã Öçèáãä éåÖ âãèéåÖèâåêåëçàåéãÖì íÕâ ãîãêíéÕ àáåäæÕ Öã ãÖàâçïãä æÕÖ çäÖëâáààçÕäãÖ Öçä ðñð ãäëâããééåÖò óé ÖçêáéåæÕâ ëåêïçôä åõáæåâö àÕä ãÖëã ëçíÕ æã ãââÕâãÖ æãÖæã éåàÕêíçéåàç÷ä æãé íâÕèâåêåòÔÕÖ ×ØØÙØ×Ú ø× ×ù×ßúßÛûÜ Õàáââãä àáåäæÕ üåâãé äÕ íáãæã ãýãàëáåâåéèáäå çäÖëâáààç÷ä õ Öã èãäãâå áä íåâÕ íÕâ ãââÕâñ íÕâ ãîãêíéÕ àáåäæÕ Öããîãàáëå éå çäÖëâáààç÷ä þÿþ��þ õ ýâãäëã åé âÕïÕë åõ áäå íåâãæò óÖëã ëçíÕ æããââÕâãÖ ëåêïçôä ãÖ æãëãàëåæÕ íÕâ ãé ÖçêáéåæÕâ åé ãÖëåâ ãîãàáëåäæÕ ãéíâÕèâåêå õ àáåäæÕ Õàáââãäì Öã èãäãâåä êãäÖåîãÖ æã ãââÕâ åíâÕíçåæÕÖòÔÕÖ ×ØØÙØ×Ú ø× ÛÜÝ×ÜÝÙ ÖÕä éÕÖ êöÖ íãéçèâÕÖÕÖ íÕâ�áã ÖÕä àáåäæÕãé íâÕèâåêå äÕ ëçãäã ãââÕâãÖ éô�çàÕÖì ÖçäëöàëçàÕÖ Õ æã ãîãàáàç÷äñ ÖçäãêïåâèÕì üåâãé äÕ åàã éå ëåâãå �áã Öã íâãëãäæ�å åàãâò �åõ �áã âãàÕâæåâ�áã ãé âÕïÕë äÕ ãäëçãäæã éå ëåâãå �áã ãÖëö åàçãäæÕì ÖÕéåêãäëã ãîãàáëåçäÖëâáààçÕäãÖò Ôå íãâÖÕäå ãÖ éå �áã àÕäÕàã éå ëåâãå õ Öåïã àÕêÕ åàãâéåòÔÕÖ ãââÕâãÖ ÖÕä æçý�àçéãÖ æã ãäàÕäëâåâì õ åáä�áã Öã éÕàåéçàãä åéèáäÕÖì äÕ Öãíáãæã åÖãèáâåâ �áã äÕ åõå êöÖò �×�úØ�ßÛûÜ ãÖ ãé äÕêïâã �áã éÕÖíâÕèâåêåæÕâãÖ æåä å éå åàëç�çæåæ æã ãéçêçäåâ ãââÕâãÖ æã áä íâÕèâåêåò�� � ���� ��� �� ��� ����������� �4ã åïâö äÕëåæÕ �áã äÕ ã�çÖëã áäå çäÖëâáààç÷ä ���þ�þ� þ�!"�"#$þì íáãÖ Öçéå áïçãâåì ãé íâÕèâåêå 0òü%& íÕæâ�å Öãâ êöÖ íã�áã'Õò 4çä ãêïåâèÕì ãééãäèáåîã íãâêçëã æãýçäçâ çäÖëâáààçÕäãÖ äáã�åÖòóé íâÕàãæçêçãäëÕ íåâå æãýçäçâ çäÖëâáààçÕäãÖ äáã�åÖ àÕäÖçÖëã ãäáëçéç(åâ çäÖëâáààçÕäãÖ �áã üåâãé õå ãäëçãäæãò )åâå ãééÕ Öã áëçéç(åä éåÖíåéåïâåÖ âãÖãâ�åæåÖ *+,-.+�./+12�-.356/77-8. õ 7898ÖçèáçãäæÕ éå Öçäëå�çÖ:;ó<=>ó?>@óA%?=>4B&@CC=D> EFGHIJ KLMLNEOPIQRRNSETUVWXY EFGHIJ YZ Y[ WV\]^Y XY [_ W`Ya_ bWZc^`ddbeW f XY]Y cYWY^ _[ \YWVZ`W_ [Yc^_ \bWgZd`[_h ZYi`bXV XY [Yc^_Z \bWgZd`[_Zh XjibcVZ V Y[ Zj\]V[V XYZ`]^_f_XV klkh m_^_ nV^\_^ WV\]^YZ dVW a_^b_Z m_[_]^_Zo p[ WV\]^Y WV XY]YZY^ Y[ XY _[i`W_ Vc^_ bWZc^`ddbeW V m_[_]^_ ^YZY^a_X_o NEOPIQRRNSE YZ `W_bWZc^`ddbeW q`Y dVWVdY r_^Y[s `W_ bWZc^`ddbeW m^b\bcba_h `W_ bWZc^`ddbeW

t K_mjc`[V uo v^Vi^_\_Z ZYWdb[[VZ

Page 36: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

wxyz{|}~� x |� �xy��| �| {�� ��}~�{ww��� �{|�� �|������ z�|���y|�~|� �x�|�|yz�x� z��� �|����� {�� ��}~�{ww��� ���y��� ��������������������� �{| }|�|�{����|�~| � �������������������� }| |}w���|����� �¡ ¢�£¤¡� ¥¦§¢¨¨�©  �{|�~�¡�¡��¡�ª�{�|��� ¨©«©¬���¡�¡��¡�ª�{�|���­�}~x �x }|�®� �| y{w¯� �°{�� � y|�x} �{| }| ��w�{°� {�� ��}~�{ww��� �{|��wxyz{|}~�� {� ±²³´µ¶ ·¶ ¸¹º»¼µ½½¸³¹¶º� ¢� ��x�{| �| ��}~�{ww�x�|} |} {��}|w{|�w�� �| ��}~�{ww�x�|} �|��y�~���} zx� ��} z������} �|}|�����} ¾¿¾À¾Á ° ¾¿�¤� wx�}��|��� �{| Ã��|� ��~|�z�|~� {� ��x�{| �| ��}~�{ww�x�|} wxyx {�� }�����}~�{ww���� }| z{|�| �|����� �� ��}~�{ww��� ��������������ÄÅ� wxyx����� �¡ ¢�£¤¡� ¥¦§¢¨¨�©  ¬���¡�¡��¡�|�|w¯� ¨©«©� �¨�©¬���¡�¡��¡�ª�{�|���­¬���¡�¡��¡�ª�{�|���­¬���¡�¡��¡�ª�{�|���­�� �| �x�y� }�y����� }| z{|�| w�|�� {�� �{|�� ��}~�{ww��� �Æ�����������ÄÄ�ÇÆ wxyx����� �¡ ¢�£¤¡� ¥¦§¢¨¨�©  ����|�~|¡���|ww�x� ¨©«©� �¨�©¬���¡�¡��¡�ª�{�|���­¬���¡�¡��¡�ª�{�|���­�� ¤� �|����� ° |}w����� {�� ��}~�{ww��� �{|��� }| �|�| ~|�|� w{����x �| �{| ¯�¬� �x�{| }{ �xy��| ����w�� �� x~��} z������}� |� �xy��| �|�|�®� �|z�|}|�~�� |�z�xz�}�~x �| �� ��}~�{ww����¢� |��x� wxyÈ� |� �� �|����w��� �| ��}~�{ww�x�|} |} xy�~�� ��} z������}¾¿¾À¾Á ° ¾¿� |}w����|��x ��¬x wxyx����� �¡ ¢�£¤¡� ¥¦§¢¨¨�©  ����|�~|¡���|ww�x� ¨©«©¬���¡�¡��¡�ª�{�|���­¬���¡�¡��¡�ª�{�|���­�}~x |} }��~Éw~�w�y|�~| ��wx��|w~x� z{|} �� �|����w��� �| {�� ��}~�{ww��� �{|��¯�w| �|�|�|�w�� � µ¹Ê º³²Ê ¸¹º»¼µ½½¸Ë¹� §||}w����|��x |� w���¬x� wx� {� y��¬|���|w{��x� |� |��x� �|}{�~� |���|�~|�

¨�z®~{�x Ì� ��x¬��y�} }|�w���x} Í

Page 37: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÎÏÐÑÒÏÓÒÔÏÕÖÓÑÒ×ØÙÔÚÚÑÛÒ ÜÝÞÜßàáßÓâÜàßããÜäÝ ÚÛåÛæÜàçÓçÓèçÓÜéêëÜßàâçìæÜàçÓçÓèçÓÜéêëÜßàâçìÖíäàç îß ïëßîáàç ßè ðàäæàçïç ñòóÖÙ îÜÝ èç îßããÜôÝ âß çïõÜßÝáßö ßè ãëçèíçãß èä ïÜîïä êëß ßè ðàäæàçïç ÷òóÖÙ ðßàä çðàäÞßãíç èç ãçðçãÜâçâ ðçàçâßøÜÝÜà ÜÝîáàëããÜäÝßî ÝëßÞçîò ÛõîùàÞßîß âäÝâß îß ãäèäãçÝ èçî âßøÜÝÜãÜäÝßî âßèçî ÝëßÞçî ÜÝîáàëããÜäÝßî ú ãäïä îß ëáÜèÜéçÝûÑÒÑÚÑÛÓÎÏÓüÙÛýÙÖåÖÎÏÐÑÒÏÓÒÔÏÕÖÓÑÒ×ØÙÔÚÚÑÛÒ æÜàçÓçÓèçÓâßàßãíç ÚÛåÛÑÒÑÚÑÛæÜàçÓçÓèçÓÜéêëÜßàâçìæÜàçÓçÓèçÓÜéêëÜßàâçìæÜàçÓçÓèçÓÜéêëÜßàâçìÐÑÒÎÏÐÑÒÏÓÒÔÏÕÖÓÑÒ×ØÙÔÚÚÑÛÒ ÜÝÞÜßàáßÓâÜàßããÜäÝ ÚÛåÛÑÒÑÚÑÛæÜàçÓçÓèçÓÜéêëÜßàâçìæÜàçÓçÓèçÓÜéêëÜßàâçìÐÑÒÑÒÑÚÑÛÓÎÏÓÏþÏÚÔÚÑÛÒçÞçÝéçìàßãäæßÓïäÝßâçìçÞçÝéçìàßãäæßÓïäÝßâçìçÞçÝéçìæÜàçÓçÓèçÓÜéêëÜßàâçìçÞçÝéçìæÜàçÓçÓèçÓâßàßãíçìçÞçÝéçìæÜàçÓçÓèçÓâßàßãíçìçÞçÝéçìãäèäãçÓïäÝßâçìãäèäãçÓïäÝßâçìÜÝÞÜßàáßÓâÜàßããÜäÝìçÞçÝéçì

ÿ� Úçð�áëèä �ò üàäæàçïçî îßÝãÜèèäî

Page 38: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

��������(���� ������(��������������� �� ���� !""�#� $%&')%*+%,%-��.� �/0.121. �.3�.�4�/ 45/ 03.�3/ �6 �2.�71�. 89� /�08�901� :� 19/�.800139�/ ;8�/� .��1��< �6 6�9�8�=� :� >�.�6 19068?� 6� 19/�.8001@9 ABCDEBFGBHBIJABCDEBFGBHBI ��.41�� �K�.�/�. ;8� /� :�/�� .����1. 89� 19/�.8001@9 89:���.419�:3 9L4�.3 :� 7�0�/J �3. �=�4�63< 6� 19/�.8001@9 �1.��6�:�.�0M� /��8�:� :�N191. 0343 /1�8�O��(����P��QR������ �1.��6�:�.�0M� ��������R� S P���Q�1.��6�1T;81�.:��U� 19/�.8001@9 ABCDEBFGBHBI �/ VWX 19/�.8001@9< �3. 63 ;8� 6� :�N19101@9�9��.13. N890139� ��.3�1�:�4�9��J ��.� :�N19101@9 �6��.9��17� �;817�6�9�� �/O��(����P��QR������ �1.��6�:�.�0M� �������������R� S P���Q�1.��6�1T;81�.:��(��9 .�/84�9< 6� 19/�.8001@9 ABCDEBFGBHBI /1�8� 6� /19��K1/O����R� YZ[\]^ _`a`bcYde]fggchYijklk mnopnqrqstuv won nxytvqstuv wqzo won wqzo{| }~���|���� �|�� ��} �|�� ~� ��| ������| �|}| �}��}|�|} ��~ �������~ ~� ~��}���}��}��~}� ~� �}��}|�| ������|��� ��� ����}~� �~ �|� ����}������~� �~�~|�|� � ��~���~ ~��}��~� �|� �~��������~� �~ ~��|� ����}������~�� `� �~��}� �}��~}� �~ ~��}��~ �|�~��~���| �~ ����}������~� ~� �| �~����� �~ ~�~������ � ��~�� �|� �~��������~� �~ �����~�|� ����}������~� ~��}~ �|� �|�|�}|� ��������������� ¡  ~

a|�¢���� £� ¤}��}|�|� �~������� ¥¥

Page 39: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

¦§¦¨¦©ª«¬ª¬­¬¨®¨¦©§¯ °±² ³´³µ¶·±¸ ¹³ ¶º³»³ ³¹¼²½¾½² º¿ ¶²±À²ÁµÁ¶Á²Á ²³Á·½ÂÁ² ·Á ÃÁ²³Á »³ ·Á ĽÀº²Á ÅÆÅ ³¹¼²½¾½³¿»± ·Á ¹³¼¼½Ç¿ »³ ³´³¼º¼½Ç¿ÈÉÊÉËÉÌÍÎÏÍÏÐÏËÑËÉÌʲ³¼±·³¼ÃÁ͵±¿³»Á¹Ò»³¶±¹½ÃÁ͵±¿³»Á¹Í³¿Í¼³¹Ã±Ò¹Á·Í»³·Í¼³¹Ã±ÒÁ¶ÁÀÁóÒÓÉÊÍÎÏÍÏÐÏËÑËÉÌÊÔÕ±²Á ¹³ »³Ä½¿³ ·Á ½¿¹Ã²º¼¼½Ç¿ Ö×ØÙÚ×ØÛܪÝÙÞ×ßÜà ¼±µ± ·Á ½¿¹Ã²º¼¼½Ç¿ ẳ²³¼±·³¼ÃÁ ·Á¹ µ±¿³»Á¹ â ẳ ¹³ »³´Á Á ãÁ²³· ´º¿Ã± Á· ¼³¹Ã±ÈÎÏÓÉÊÏÍÊÑÏäÔÍÉÊåæçÑËËÉÌÊ ²³¼±·³¼ÃÁ͵±¿³»Á¹ ËÌèÌÉÊÉËÉÌÁéÁ¿ÂÁÒ²³¼±À³Íµ±¿³»ÁÒÁéÁ¿ÂÁÒ²³¼±À³Íµ±¿³»ÁÒÁéÁ¿ÂÁÒÓÉÊγ¹¶ºê¹ ·Á ½¿¹Ã²º¼¼½Ç¿ ß×ëÙàìÛܪÝÙÞ×ßÜàª×ÞªØ×àÛÙ ¼±µ± ·Á ½¿¹Ã²º¼¼½Ç¿áº³ ··³éÁ Á· ²±¾±Ã »³¿Ã²± »³· ¼³¹Ã± â »³¶±¹½ÃÁ ·Á¹ µ±¿³»Á¹ÈÎÏÓÉÊÏÍÊÑÏäÔÍÉÊåæçÑËËÉÌÊ »³¶±¹½ÃÁ͵±¿³»Á¹Í³¿Í¼³¹Ã± ËÌèÌÉÊÉËÉÌÀ½²ÁÍÁÍ·ÁͽÂẽ³²»ÁÒÁéÁ¿ÂÁÒÀ½²ÁÍÁÍ·ÁÍ»³²³¼ÕÁÒÁéÁ¿ÂÁÒÀ½²ÁÍÁÍ·ÁÍ»³²³¼ÕÁÒÁéÁ¿ÂÁÒ¼±·±¼Á͵±¿³»ÁÒ¼±·±¼Á͵±¿³»ÁÒÓÉÊ

íî ËÁ¶ïú·± ů °²±À²ÁµÁ¹ ¹³¿¼½··±¹

Page 40: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ðñ òóôñõö÷ øùñ ôñ öòúöûü ÷ ÷ýúûþ÷õ ñú ýõòþñÿû�ûñ��ò ÿñ õñ�û�÷þûü� ý÷ôò ÷ ý÷ôò ÷úùô÷õ ú÷ û�ô�õùþþûü� ������������� �� ��òõ÷ úñ �òþ÷ ñú �ùõ�ò ÷ ú÷ û�ô�õùþþûü�����������&+��������������ð�������� ô÷ú�ÿñú�þñô�ò ����������û�öûñõ�ñ ÷ö÷�!÷ ����÷ú�÷õ/÷ ÿñ�û�ûõ ôòú÷�ñ��ñ ú÷ô û�ô�õùþþûò�ñô ������������� � ñ�"#������������$" %÷ þò�òþûÿ÷ô��ú ýõò'õ÷�÷ þò�ýúñ�ò( úú÷�÷ÿò 6�)��( ñô ñú ôû'ùûñ��ñ&�������+��*��,����+��������������ð�������� 'ûõ÷�÷�ú÷�ÿñõñþ�÷ ������*��� - ����ð'ûõ÷�÷�ú÷�û!øùûñõÿ÷ +��������������ð�������� û�öûñõ�ñ�ÿûõñþþûò� ������*��� . ����ð'ûõ÷�÷�ú÷�û!øùûñõÿ÷ +��������������ð�������� õñþòúñþ�÷��ò�ñÿ÷ô ����������÷ö÷�!÷ õñþò'ñ��ò�ñÿ÷ ÷ö÷�!÷ õñþò'ñ��ò�ñÿ÷ ÷ö÷�!÷ ���+��������������ð�������� ÿñýòôû�÷��ò�ñÿ÷ô�ñ��þñô�ò ����������'ûõ÷�÷�ú÷�û!øùûñõÿ÷ ÷ö÷�!÷ 'ûõ÷�÷�ú÷�ÿñõñþ�÷ ÷ö÷�!÷ 'ûõ÷�÷�ú÷�ÿñõñþ�÷ ÷ö÷�!÷ þòúòþ÷��ò�ñÿ÷ þòúòþ÷��ò�ñÿ÷

�÷ý/�ùúò .� *õò'õ÷�÷ô ôñ�þûúúòô 0-

Page 41: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

12345123573859:723;<=8>>2?3 @AB7CDB7ED@FG >?H?232>2?IJKIDLFD7CILDEEIGJMAKAJNAM123232>2?74575O5>8>2?3LDEGBDEFA7PGJDCA@MCDQG@IFA7PGJDCA@7DJ7ED@FGM@AB7CDB7ED@FGMAQARAFDM12374575O5>8>2?31237457S=?T=:H:UG@ JGPVLD@ CD BA@ JWDKA@ IJ@FLWEEIGJD@ XAEDJ YWD BG@ QLGRLAPA@ @DAJPZ@ [ZEIBD@ CD DJFDJCDLM FAPVI\J A]WCAJ A EGPWJIEAL A BA@ QDL@GJA@ BAIJFDJEI^J CD WJ QLGRLAPA_ SGL @WQWD@FG` FGCAKaA CDVD @IPWBAL@D BA DbDEWEI^JCD D@FD QLGRLAPA QALA KDLI[IEAL YWD @DA EGLLDEFG_ 8JA AEFIFWC D@E\QFIEALD@QDEFG AB RLACG CD EGLLDEEI^J CD BG@ QLGRLAPA@ D@ LDEGPDJCAVBD QALAFLAFAL CD KDLI[IEALBG@ @IDPQLD_ UG@ QLGRLAPA@ @GJ IJDcAEFG@ XA@FA YWD @DCDPWD@FLD YWD @GJ EGLLDEFG@_defe ghijkjlmnop qoko jpmknrnk qksikotop5@ELIVIL uvwxvyzy{ |wzuv}~{���}{ D@ FAJ IPQGLFAJFD G PZ@ EGPGD@ELIVILBG@ EGLLDEFAPDJFD_ UA QLDPI@A D@ YWD BA PA]GLaA CD BG@ QLGRLAPA@FIDJDJ WJA QDYWD�A EAJFICAC CD DLLGLD@ IJIEIABD@ ] BG@ QLGRLAPA@EGPQLDJ@IVBD@ @GJ PZ@ [ZEIBD@ CD CDQWLAL_ UG@ QLGRLAPA@ CDVDJ DJFDJCDL@DLZQICAPDJFD_ ��W\ D@ BG YWD XAED YWD WJ QLGRLAPA @DA [ZEIB CD DJFDJCDL�;D QLD@DJFAJ CG@ ELIFDLIG@��_ 8J VWDJ QLGRLAPA D@ @IPQBDPDJFD BA EGPQG@IEI^J CD QALFD@ [ZEIBPDJFDEGPQLDJ@IVBD@_�_ 5B CIKICIL WJ QLGRLAPA G BA@ CD[IJIEIGJD@ CD IJ@FLWEEIGJD@ DcFDJ@A@ DJQALFD@ CD PDJGL FAPA�G ] [ZEIBD@ CD DJFDJCDL` JG D@ @W[IEIDJFD_ �A] YWDA@DRWLAL@D CD D@EGRDL ACDEWACAPDJFD BG@ JGPVLD@ CD BA@ IJ@FLWEEIGJD@JWDKA@_

�� >AQaFWBG �_ SLGRLAPA@ @DJEIBBG@

Page 42: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������� ����� ��� ����� ��������� � ������� �� ��������  �� �����¡� ������������������� � �� ��������  �� ����� ��������� ������������� ���������� � ����������¢£�� ��� ���������� ������ ���¡�� ���� ���������¤¥¢ ¦��� ����� ���������§� �� ��¨� ���¨�� ��������������© ����� ����������  ���������� ¨���¢ ª� ������ �� ������ �� ���¨��  �� �����«� ��  �� ���� �����������§�© �� ������ �������������� �� ���� ���������� �������� ���� �� ����¢¬¢ £�� ������������� ��������� ������� ��� ���������� �� �� ��������©  �� ��¨������­���� ���� �¡���� � ������­�� ��� �������¢ ®� ������� �� ��������© ������� ����¨� ��������� ���� �� ��� ������������� ��������� �� �������� �� ����� ��������¢¯����°� �� ����� ���������� �� �� ��������§� �� ����� ���������§�© ��������� �������� ������ ��� ��������  �� ��� ������������ �������� ��� ����� ���������¢®�±© �� ����� �¨������  �� �²���� �� ����������� ���§���� ������§���� ����������� �� ��������� �� ��������§� �� ������������� �� ³����¢ ¯���  �� �� ����¨�������� �§�� ����� ������������ �� ��� �������� �������� �� ���������§� �� ��������� ����© �� ��������� ���� ������� �������� ������������ �� �� ���� ��²������� �� ��������� ¡ ��������§� �� ���������¢ ´��� �¡���� �  �� ��� ������������ ��������������� ������ ���� ���������¨���© ���¨�°� �� ��¨� �������� �� �������������� �� �±����� ��­���¨���¢ µ�� ¨���� ����� ������� ��  �� ��� ������������ �§���� ����� ��������� ��¨���� �²����� �� ����� � ���­ �������������¢ ¶��� �±���� ������������ ������� ���� �����¨�� ��� ���������§� ��� ������� ¡ �� ����� ������������  �� �� �������� ���������� �������� �� ��� ���� ��������§�¢ ª� �� ����·��� ��� ���������§� � �� �� �����§� �� �«�����§� �²���� ���� �±����© �� ������������������� �� ������ ������������� ������¢ ¶� ��«�� �����¨�� �� ��¡�� �¸���� ��������������� �� ��·��©  �� ����� �� �¸���� �������� �� ������������� �²������¢¹���������© �� �� ����� ���¨��� ����������� �� ����� �� ³����© ��� �«����� ����������� ���� ������© �� ���¨�� �� ����� �����­�� �����������© ������  �� ���������� � ��� ���������§� ����� ��������¢ ¶���� ��­���� ��� ����� �� �� �¨����������������� � ����� ��  �� �� ��«�� �������� ���� ��� ����� �� � ���  �� ������� �������� �� ��������¢º»¼½» ¾¿ ÀÁÂÃÄÅ ÆÂÇÈÉ¿ ÁÀ ÊÉÅÀ¿µ�� ��­ ������ ��� ������ ���� �� ����������§� �� ���������© �� ���������� ��ËÌÍÎÏÐ ÑÍÒÓÔÕ �� ³����  �� ������� �� ������§� ������ �� ���������© ��� ����������� �������� ����� ��� �������� �� ��� ������ ������������Ö �� ���© �� ������ ������

¦��±���� ¬¢ ´�������� ��������� ¥×

Page 43: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ØÙÚÛ ÜÝÞßàáÝ ÝØâÞàãàÞ ÜÞÛäÞåßåØ ÚæçàâåßÝèáÝ é ØàèáêâáàâåßÝèáÝ âÛÞÞÝâáÛØë ìÚÝíàáÛÞ îàØïåÚ íÝ ðåÞÝÚñ åÚ àäïåÚ òïÝ ÝÚ ØàßïÚåíÛÞ íÝ ðåÞÝÚñ âÛÞÞÝ Ýè ïèåâÛßÜïáåíÛÞå ÜÝÞØÛèåÚ óô ãåõÛ ÝÚ ØàØáÝßå ÛÜÝÞåáàîÛ ö÷øùàèíÛúØ ûëüñ ûëüüÙ ýþ é ÝØáê âÛèáÝèàíÛ Ýè ÝÚ íàØòïÝáÝ àèâÚïàíÛÿ ÚåØ àèØáÞïââàÛèÝØ ÜåÞå ØïàèØáåÚåâàÙè ØÝ ÝèâïÝèáÞåè Ýè ÝÚ �ÜæèíàâÝ �ëóåÞå ßÛØáÞåÞ Øï ïáàÚàíåíñ ØÝ ØÝäïàÞê ÝÚ âåßàèÛ ÜåÞå Úå âÞÝåâàÙè íÝÚÜÞÛäÞåßå "ëð�� ïØåèíÛ ÝÚ ÝíàáÛÞ îàØïåÚë �Ú ÝõÝâïáåÞ ÝÚ ÝíàáÛÞ ØÝ ÜÞÝØÝèáåïèå îÝèáåèå ÚÚåßåíå ó�#ð��ì�ë �Ú ØÝÚÝââàÛèåÞ Úå ÛÜâàÙè ������ éíÝØÜïæØ � �� ØÝ âÞÝå åïáÛßêáàâåßÝèáÝ ÝÚ ÝØòïÝÚÝáÛ íÝ áÛíÛ ÜÞÛäÞåßåÜåÞå ðåÞÝÚ âÛßÛ ØÝ ßïÝØáÞå Ýè Úå �àäïÞå "øûë �ÙáÝØÝ òïÝ ÝçàØáÝè áÞÝØ Ú�èÝåØâÛè áÞÝØ ÜïèáÛØ ØÝäïàíÛØ �ë ë ë�� ïèå Ýè Úå ØÝââàÙè íÝ åßãàÝèáÝñ ÛáÞå Ýè ÚåÜÛØàâàÙè ÜåÞå ÝØâÞàãàÞ èïÝîåØ àèØáÞïââàÛèÝØ é Úå �Úáàßå Ýè Úå ØÝââàÙè íÝÝõÝâïâàÙèë ìØáÛØ ÜïèáÛØ ØÛè Úå ÝèáÞåíå ÜåÞå ÝØâÞàãàÞ àèØáÞïââàÛèÝØ Ýè íàâ�åØØÝââàÛèÝØë ìèØÝäïàíå ØÝ ÝØâÞàãàÞê Úå ÜÞàßÝÞå àèØáÞïââàÙè íÝ ÜÛØàâàÛèåßàÝèáÛíÝ ðåÞÝÚ íÝèáÞÛ íÝ Úå ØÝââàÙè íÝ åßãàÝèáÝë óåÞå ÝÚÚÛñ åÜ�èáÝØÝ âÛè ÝÚ ÞåáÙè åÚå ØÝâïÝèâàå íÝ áÞÝØ ÜïèáÛØ íÝ Úå ØÝââàÙè íÝ åßãàÝèáÝ é ÛÜÞ�ßåØÝ ÝÚ ãÛáÙèà�òïàÝÞíÛë ìÚ Ý�ÝâáÛ ÝØ ØÝÚÝââàÛèåÞ Û ÞÝØåÚáåÞ âÛè ïè âïåíÞåíÛ Úå ØÝâïÝèâàåíÝ áÞÝØ ÜïèáÛØñ áåÚ âÛßÛ ØÝ ßïÝØáÞå �àäïÞå "ø�ë

/àäïÞå "øûë ìÚ ÝíàáÛÞ îàØïåÚ íÝ ðåÞÝÚ

�� ôåÜ�áïÚÛ "ë óÞÛäÞåßåØ ØÝèâàÚÚÛØ

Page 44: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������ !$% &'()� *) +�(,-. .)0)11�-(�*�2( ).,) 3-3)(,-4 .) 5�6�0�,�( .70- 0�. .�6-+1�-(). *) 0� -+1�7(89:;<=><4 +�).,- ?�) @(�1�3)(,) ).,A +)�3�,�*- �(.)�,�� �(.,��11�-(). *)0�36�)(,)% &�. -,��. -+1�-().4 B=C>D EF<GHC4 B=C>D IJ9KF<C>HC4 B=C>D LMC;NHC OPQF<:HCR ,)(*�A( .�. .�6-+1�-(). *).5�6�0�,�*�. O .) 3-.,���A( )( 1-0-� ���.% &�.1��,�- .�6-+1�-(). *) 89:;<=>< .) 3�).,��( )( 0� S����� !T� O 0�. -+1�-().*).5�6�0�,�*�. *) B=C>D LMC;NHC )( 0� S����� !T6% 2( -,��. +�0�6��.4 )0 )*�,-� (-+)�3�,) ).1��6�� �(.,��11�-(). S�)�� *) .� 0����%

U�+',�0- % V�-���3�. .)(1�00-. WX

Page 45: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

YZ [\]^_`a^bcd ec fghijklj ]Z [\]^_`a^bcd ec mknlopqnirsn tau\vY wxyz [\]^_`a^bcd {Y]a|a}YeYd ~ ecd{Y]a|a}YeYd�| dc|c``a^bYv |Y d\]^_`a�b �f�������f���� dc ab}v^e\`cY\}^��}a`Y�cb}c |Y abd}v\``a�b ec _^da`a^bY�acb}^ ec �Yvc| `^b �Y|^vcd_^v ^�ada�b� `^�^ dc �\cd}vY cb |Y �au\vY wx�z

tau\vY wx�z �bd}v\``a�b ec _^da`a^bY�acb}^ ec �Yvc|�YvY `Y�]aYv |^d �Y|^vcd ec |Y abd}v\``a�b� dc ec]c _va�cv^ dc|c``a^bYv |Yabd}v\``a�b ec |Y �ad�Y �^v�Y �\c dc {a�^ `^b |Y dc`\cb`aY ec |^d }vcd_\b}^d� Y_\b}Ybe^ `^b c| vY}�b cb `\Y|�\acv _Yv}c ec |Y |�bcY ~ ^_va�acbe^c| ]^}�b a��\acve^ ec| vY}�bz �| {Y`cv|^� dc vcdY|}Y |Y |�bcY� `^�^ dc �\cd}vYcb |Y �au\vY wx�z

tau\vY wx�z �bd}v\``a�b dc|c``a^bYeY

�� �Y_�}\|^ wz �v^uvY�Yd dcb`a||^d

Page 46: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

���� ���� �� ¡¢£ ¤�¡¢�¥£¦ ��£§� ¨�� ¨¢�¡¥ �¡ � �¢© ¥¡ �¢§ª©  «¬­ ¥�¨¢ ¨¥¡ ��§ª© ¥© ¥¡�¥�§®©¯­¡¢ �¥£�¡§�¨¢° ±¥ ²�¥£¥©§��® ­©� ¤¥©§�©� ¨¥ ¨ ®¡¢¯¢ �¢�¢ ¥© ¡� ³ ¯­�� ´µ¶�¦¨¢©¨¥ £¥ ²¢¨�®© ���� �� ¡¢£ ¤�¡¢�¥£° ·©�¡­£ ¤¥¦ ²��� ���� �� ¡� ¢� ¥©§�� ª©¦ £ª¡¢£¥ £¥¡¥�� ¢©� ¥¡ ²­©§¢ ���¨ ©�¡ ¨¥£¥�¨¢ �¢�¢ ¡¢  ©¨ �� ¡� ³ ¯­�� ´µ¶�° ����³ ©�¡ «�� ¡¢£ ���� ¢£¦ £¥ ¨¥�¥ ¢²� � � ¥¡ �¢§ª© ¸¹¦ �¢�¢ ¥£ ©�§­��¡ ¥© §¢¨�£ ¡�£�²¡ ��� ¢©¥£ ¨¥ º±µ» ©¨¢¼£°

�½ ¾ ®¡¢¯¢ ²��� ���� �� ¤�¡¢�¥£ �½ ¿À¥�²¡¢ ¨¥ ���� ¢ ¨¥ ¢� ¥©§�� ª©Á ¯­�� ´µ¶° Â¥©§�©� ¨¥ ¨ ®¡¢¯¢ ²��� �¢¨ ³ ��� ¤�¡¢�¥£���� £¥¯­ � ¥£�� � ¥©¨¢  ©£§�­�� ¢©¥£ ¥© ¥¡ ��� ¥©§¥¦ £¥ ¨¥�¥ �¥²¥§ � ¥¡ ²�¢�¥£¢Ã£¥¡¥�� ¢©�� ¡� £¥�­¥©� � ¨¥ §�¥£ ²­©§¢£¦ £¥¡¥�� ¢©�� ¡�  ©£§�­�� ª© ¨¥£¥�¨� ¨¥©§�¢¨¥ ¡� ¢²� ª© ÄÅÆÇÈÉÊȦ Ë ¨¥£²­Ì£ ���� �� ¡¢£ ¤�¡¢�¥£ ¨¥ ¡�£  ©£§�­�� ¢©¥£ £  ¥£©¥�¥£�� ¢° Ͳ¡ ��©¨¢ ¥£§¥ ²�¢�¥¨ � ¥©§¢ �¥²¥§ ¨��¥©§¥¦ £¥ ¡¢¯�� �¢�²¡¥§�� ¡�£¥�� ª© ¨¥ ��� ¥©§¥ ¨¥£¥�¨� ¨¥ ¡� ³ ¯­�� ´µÎ°

Á ¯­�� ´µÎ° Ï� £¥�� ª© ¨¥ ��� ¥©§¥ �¢�²¡¥§�

Ð�²Ñ§­¡¢ ´° ��¢¯����£ £¥©� ¡¡¢£ ÒÎ

Page 47: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÓÔ ÕÖ×Ø×ÙÚ ÖÕ ×ÚÛÜÝÞØØ×ßÚÕÛ àÔ áâãäåæÔâ áâ âáçãåèèÔé êÔäÔ ëìääÔä íçÔåçâæäíããåîç âá âáèáããåìçÔ èÔ åçâæäíããåîç ïáâáÔïÔ à âá ìðäåñá èÔ æáãèÔòóÞôÝ×õ×Ýöé êÔäÔ åçâáäæÔä íçÔ çíá÷Ô åçâæäíããåîç ïìçïá çì øÔà èùçáÔ ïá æäáâðíçæìâú âá ïáëá åçâáäæÔä ðäåñáäì íçÔ èùçáÔ ïá æäáâ ðíçæìâ Ôçæáâ ïá ÔèûíçÔìæäÔ åçâæäíããåîçé üÔâæÔ âáèáããåìçÔä èÔ åçâæäíããåîç ïáâáÔïÔ à ìðäåñåä èÔ æáãèÔòýÚÛÕÝÜþÝöé ÓÔ èùçáÔ ïá èìâ æäáâ ðíçæìâ ÔðÔäáãáäÿ �íâæì ÔääåëÔ ïá èÔåçâæäíããåîç âáèáããåìçÔïÔé ÓÔ �åûíäÔ ���� ñíáâæäÔ íç ãÔâì ïá íçÔ åçâáäãåîç�íâæì ÔääåëÔ ïá èÔ ðäåñáäÔ åçâæäíããåîç ðÔäÔ ïåâðìçáä ðÔäáïáâé �îæáâá �íáÔøìäÔ á�åâæáç ïìâ ðíçæìâ ïá áçæäÔïÔú ì èùçáÔâ ïá æäáâ ðíçæìâú áç èÔ âáããåîç ïáÔñëåáçæáé

/åûíäÔ ����é �çâáäãåîç ïá íç ðíçæì ïá áçæäÔïÔêÔäÔ ãìñðèáæÔä áè ðäìûäÔñÔ �é"��ú øÔëäÿ �íá ÔðèåãÔä áè ñåâñìðäìãáïåñåáçæì àÔ ÷åâæì ðÔäÔ åçæäìïíãåä åçâæäíããåìçáâ áç èÔ âáããåîç ïáá�áãíãåîçé �è âáèáããåìçÔä áè ðíçæì ïá áçæäÔïÔ ïá èÔ âáããåîç ïá á�áãíãåîçú èÔâìðãåìçáâ ïá �õ×ÕÚÜÕ áâæÔäÿç ïáâøÔëåèåæÔïÔâ à âá øÔëåèåæÔäÿç èÔâ ìðãåìçáâýÚÛÜ� ÞÕ�þÛ Lâîèì èÔ âíëìðãåîç � þõþÖþHú ýÚÛÜ� �ßõôÞÕÛÜþÛ á ýÚÛÜ���Û×ØþÛé êÔäÔ åçæäìïíãåä èÔ åçâæäíããåîç ������� âá ïáëáäÿ âáèáããåìçÔä ýÚÛÜ���Û×ØþÛ à ïáâðí�â þôþ�þÜÕé �è äáâíèæÔïì �åçÔè âá ñíáâæäÔ áç èÔ �åûíäÔ ����é�è ðäìûäÔñÔ ãäáÔïì âá ðíáïá ûíÔäïÔä ãìç èÔâ ìðãåìçáâ ãìçìãåïÔâ ïá�ÝØ�×�ß à ÞþÝÖþÝ �ßõß�

�! #Ôðùæíèì �é êäìûäÔñÔâ âáçãåèèìâ

Page 48: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

$%&'() *+,,- .0 1(2&()3) 423105627)() 5854'6)( 50 1(2&()3) 4(5)92 (:1%9)35;65< =5 1'595 =50544%2;)( 0) 214%>;?@ABCDE- F2; 5002 =5 5854'6)(: )'623:6%4)35;65 50 =%3'0)92( 95 G)(50< =% ;2 5=6)I)J) 42((%5;92< J =5 4)(&) 50 )(4K%M2 95 1(2&()3) (54%N; 4(5)92-.0 1(2459%3%5;62 1)() 5=4(%I%( %;=6('44%2;5= 4231'5=6)= 5= =%3%0)( )0 95%;=6('44%2;5= I:=%4)=< =>02 O'5 95I5 '=)(=5 0) 214%>; PQRDS TUVWCARDER 5; 0'&)( 95PQRDS XYRZBER- 7)() 95[%;%( ;'5M)= %;=6('44%2;5= =5 95I5 =50544%2;)( 50 1';62 955;6()9) );65= 95 \]\^\_`ab`bcb^d^\_] J =50544%2;)( 0)= 214%2;5= PQRDSeCAfER J gAhZQZBZiQ- .0 59%62( 1(5=5;6)(: ';) M5;6);) 1)() 159%( 50 ;23I(5 95 0);'5M) %;=6('44%>;< 12( 5853102 jklm`m`nm`oplpqrms J 0) ;'5M) %;=6('44%>; 623)(:0) [2(3)tu.$vw.xwy.z{xvw|}~yFFv�w &%()x)x0)x95(54K) F����%;=6('44%>;�- - -7)() 4231056)( 0) 95[%;%4%>; =5 95I5 =50544%2;)( �k���l�qqk��� J 5;62;45= =5K)I%0%6)(:; 0)= 214%2;5= 950 35;� M:0%9)= 1)() %;=6('44%2;5=- 72( 5853102< =5 129(:=50544%2;)( PQRDS TUVWCARDER J �?�P�?��?T?�- .0 4>9%&2 (5='06);65 =5(:t

F)1�6'02 *- 7(2&()3)= =5;4%002= *,

Page 49: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������������������������  ¡¢£�£�¤£�¥¦¢¦§¨£ ��©���ª��� « �����¬¡­®¯¢°§§¡±­²³ ³ ³�¦ ´°¦¥¦ ¯¦¢µ¡­£¢ ¤£ ­°¦¶£ ¡­®¯¢°§§¡±­ £¤ ®¦¤¦§§¡·­£¢ ¸¹º»¼½¾¿¿¹ÀºÁ Â¥¦®´°Ã® ¤£® ·´§¡·­¦® ÄÅÆÇÈ ÉÊÆËÌÍÆ Â ÎËÏÍÐÍÐÑÍÐËÒÓÔËÕÏÖͳ �¡­£¤µ¦­¯¦×®¦¤¦§§¡·­£­¥· ØÙÚÛÜÙ Â ¥£­¥· ¥·Ý¤¦ §¤¡§× ®¦ ¥¦®´¤¦ £¢Þ ¤£ ¶¦­¯£­£ ¥¦¥¡Þ¤· · ß°¦ ´¦¢µ¡¯¦ §£µÝ¡£¢ ¦¤ ­àµ¦¢· ¥¦ ¢¦´¦¯¡§¡·­¦® ¥¦ ¤£ ¡­®¯¢°§§¡±­áª£¢£ ¡­®¦¢¯£¢ °­£ ¤¤£µ£¥£ £ â¹½ãäãäåãäæç½ç¿èã ¥¦­¯¢· ¥¦ ¤£ ®¦§§¡±­ ¥¦¦é¦§°§¡±­ · §·µ· ´£¢¯¦ ¥¦ °­£ ­°¦¶£ ¡­®¯¢°§§¡±­× ®¦ ¥¦Ý¦ ®¦¤¦§§¡·­£¢ ÄÅÆÇÈêÔÕëÍÆ Â ìÑÍíÍÖͳ �¦ ´¢¦®¦­¯£¢Þ °­£ ¶¦­¯£­£ §·­ ¯·¥£® ¤£® ­°¦¶£®¡­®¯¢°§§¡·­¦® ´¢¦¶¡£µ¦­¯¦ ¥¦î¡­¡¥£®³ �¦ £¨ï ®¦ ´·¥¢Þ ®¦¤¦§§¡·­£¢â¹½ãäãäåãäæç½ç¿èã³ � µ£­¦¢£ ¥¦ ¢¦®°µ¦­× £ î¡­ ¥¦ ¡¤¡£¢¡ð£¢®¦ §·­ ¦¤¦¥¡¯·¢ ¥¦ ñ£¢¦¤× ¦­ ¤£ ¯£Ý¤£ òó« ®¦ µ°¦®¯¢£ ¦¤ ¦î¦§¯· ¥¦ ¤£® ·´§¡·­¦® ¥¦¤µ¦­à ¥¦ ¤£ ¶¦­¯£­£ ¥¦¤ µ°­¥· ¥¦ ñ£¢¦¤³ �¡­ ¦µÝ£¢ ·× £¤ °­£® ¥¦ ¤£®¡­®¯¢°§§¡·­¦® §·µ´°¦®¯£®  ¤£® ´¢°¦Ý£® £®·§¡£¥£® ®·­ ·Ý馯· ¥¦¤ �£´ï¯°¤· ô³

�®§¢¡Ý¦ °­£ ¡­®¯¢°§§¡±­ ¥¦ §·¤·§£§¡±­¥¦ µ·­¦¥£®©������������õõ� �®§¢¡Ý¦ °­£ ¡­®¯¢°§§¡±­ ¥¦ ´£¢¦¥ é°­¯· £§£¤¤¦ª�����ö���������õõ� �®§¢¡Ý¦ °­£ ¡­®¯¢°§§¡±­ ¥¦ ´£¢¦¥ é°­¯· ££¶¦­¡¥£ª�����ö�������������� �®§¢¡Ý¦ °­£ ¡­®¯¢°§§¡±­ ¥¦ ´·®¡§¡·­£óµ¡¦­¯· ¥¦ ñ£¢¦¤ñ���õ���������µÝ¡¦­¯¦ �¦¢µ¡­£¢ ¦¤ ¦¥¡¯·¢�£¤¡¢ ÷°£¢¥£ ¦¤ ¥·§°µ¦­¯· £§¯¡¶· §·­ ·¯¢·­·µÝ¢¦÷°£¢¥£¢ §·µ· ÷°£¢¥£ ¦¤ ¥·§°µ¦­¯· £§¯¡¶·÷°£¢¥£¢ �Ý¢¦ °­ ¥·§°µ¦­¯· ¦ø¡®¯¦­¯¦�Ý¢¡¢ �¢¦£ °­ ­°¦¶· ¥·§°µ¦­¯·�°¦¶·�¢§¨¡¶· ùÌÌËúÅûÔüýþÌËúÅÿþÌËúÅ

�� �������� ��� ����� ���������

Page 50: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

��������� ����� �!�"� #�� ������ �$%����"� & '��&���()*!��!� #���� +��#��*&+#� ,+��)�� + �!+�)� �� -���� #� ��)�#�.���� #� ��)�#� ,+��)�� + �!+�)� �� -���� #� (���� ���/)��.���� #�0���� ���)��1�� 23�!+)� �� �� +��#�� #� 4���� & !���� ����!(�%� !���#�23�!+)� 5%�� �� *�6�#�!� *75%�� �� *�6�#�!�*78�+�-�� 2�!��-� +�� ���)�+!!�"� �����)������)� 2�!��-� +�� ���)�+!!�"� ��!���9 ���#���!���9 ���#� 2�!��-� +�� ���)�+!!�"� !���!�9 ���#�!���!�9 ���#� 2�!��-� +�� ���)�+!!�"�����9�9��9�:;+���#�����9�9��9�:;+���#� 2�!��-� +�� ���)�+!!�"� �%��:��%��:�<��)=.>��!�� 2�!��-� +�� ���)�+!!�"�?</2@AB@'2?/?<@B?</2@AB@'2?/?<@B 2�!��-� +�� ���)�+!!�"� ?</2@AB@'2??</2@AB@'2? 2�!��-� +�� ���)�+!!�"�C28<A2/,<2@AC*?C28<A2/,<2@AC*? 2�!��-� +�� ���)�+!!�"�,<2@AC*?/0*D,<2@AC*?/0*D 2�!��-� +�� ���)�+!!�"� -��;+�.��;+�<��)='� �+��)��2�!��-� �� �� -�� #� +�� �+�%����)�+!!���E�� �#� ������ +�� �+�%� ���)�+!!�"�������!�"�<��)=@+�%��

A�-�� F/G= E�� ��!����� #�� �#�)�� %��+�� #� 4����

'��H)+�� F= 8����� �� ���!����� FI

Page 51: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

JKL MLNLMOPNQROSML LTSMSUKLV TPV PTSOUN PR RW MLXLMSTLT XLNL YURONLN PVMZTS[U MUK TS\PNPKOPR KS]PVPR TP ^_`ab^ccdefg hUN PiPYXVUj RS PKTPOPNYSKLTU YUYPKOU KU SKOPNPRL VL RPMMSZK TP LYkSPKOPj RP XUTNQL NPTWMSNL WKL VQKPL lLMSPKTU TUkVP MVSM MUK PV kUOZK SmnWSPNTU TPV NLOZK RUkNP VLXLVLkNL opoqorstusvwxoupyu U zopstusvwxoupyu{ |ROP P\PMOU RPYWPRONL PK VL \S[WNL }~�}{ hLNL NP]PNOSN PV P\PMOUj RP KPMPRSOL ]UV]PN L TLNTUkVP MVSM RUkNP �v��������{ �P S[WLV \UNYLj RP XWPTP NPTWMSN VL RPMMSZK TPPiPMWMSZK U SKMVWRS]P OUTL VL RPMMSZK TP XNU[NLYLj LMOWLKTU RUkNP VLXLVLkNLR nWP TPVSYSOLK TSMlLR RPMMSUKPR{

�S[WNL }~�}{ �L RPMMSZK TP LYkSPKOP NPTWMSTL L WKL VQKPL����� ��������LR SKRONWMMSUKPR WRLTLR XLNL PRMNSkSN VL RPMMSZK TP LYkSPKOP RUK� TPXURSMSUKLYSPKOU TPV NUkUOj TP MUVUMLMSZK TP XLNPTPR � TP MUVUMLMSZK TPYUKPTLR{ �LR SKRONWMMSUKPR XNSYSOS]LR XLNL �LNPV RUK� �����������s�s��s������� �� ��¡¢��s�¢�� �� ¡¢�¢¡�s�¢�� � � �£�����{ ¤TPY¥Rj

¦§ ¨©ª«¬­®¯ °± ²³¯´³©µ©¶ ¶·¸¹º®®¯¶

Page 52: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

»¼ ¼»½¾¿ÀÁ» » ÃÀÄ»¼ ÅÆ»½» ¿½ Ç»ÈÀ½ÆÉÇÊ ËÀÄÀ »ÌƽÆÄ ½¿»ÍÀÉ Æ½ÉÅÄ¿ÈÈÆʽ»ÉÎ ÏÀƽÉÅÄ¿ÈÈÆн ÈÊÇË¿»ÉÅÀ ¼¼ÀÇÀÂÀ ѼÊÒ¿» » ƽÉÅÄ¿ÈÈÆʽ»É Ë»ÄÇÆÅ» ÅÄÀÅÀÄ ¿½Àɻȿ»½ÈÆÀ » ƽÉÅÄ¿ÈÈÆʽ»É ÈÊÇÊ ¿½À ÉʼÀ ƽÉÅÄ¿ÈÈÆнΠÓƽÀ¼Ç»½Å»Ô ¼À ƽÉÅÄ¿ÈÈÆнÈÊÇË¿»ÉÅÀ ÕÖ×ØÙÖÚÛÜÝ Ë»ÄÇÆÅ» Ļ˻ÅÆÄ ¼À »Á»È¿ÈÆн » ¿½À ƽÉÅÄ¿ÈÈÆн ¿½½ÞÇ»ÄÊ Â»Å»ÄÇƽÀÂÊ Â» ͻȻÉÎ ß½ »ÉÅ» ÈÀËàÅ¿¼Ê É» ÇÊÉÅÄÀÄʽ ¼ÀÉ Ä»¾¼ÀɾÄÀÇÀÅÆÈÀ¼»É Ò¿» »ѻ½ É»¾¿ÆÄÉ» ËÀÄÀ ÈÄ»ÀÄ ËÄʾÄÀÇÀÉ ¼áâÆÈÀÇ»½Å» ãÉƽÅäÈÅÆÈÀÇ»½Å» ÈÊÄÄ»ÈÅÊÉÎ ÏÊÉ »ÄÄÊÄ»É É» Ë¿»Â»½ ÅÆËÆÌÆÈÀÄ »½å ¼áâÆÈÊÉÔ ÉƽÅäÈÅÆÈÊÉÔ» »Á»È¿ÈÆн ã » ƽŻ½ÅÊÎ ß¼ ËÄÊÈ»ÂÆÇÆ»½ÅÊ Â» Ä»ÌƽÀÈÆн ËÀÉÊ À ËÀÉÊ »É ¿½ ËÄÊÈ»ÉÊ» ÂÆÉ»æÊ Â» ËÄʾÄÀÇÀÉ Ò¿» ÈʽÉÆÉÅ» »½ ÂÆÍÆÂÆÄ ¼À ÅÀÄ»À ÈÊÇ˼»ÅÀ »½ É¿ÑÅÀÄ»ÀÉ ÇäÉ˻ҿ»æÀÉ Ò¿» É» ÀÉÊÈÆÀ½ À ƽÉÅÄ¿ÈÈÆʽ»É ½¿»ÍÀÉ Ò¿» É» »ÉÈÄÆÑ»½ »ÉË¿áÉÎ ß¼ ËÄÊÈ»ÉÊÉ» Ë¿»Â» Ļ˻ÅÆÄ É¿È»ÉÆÍÀÇ»½Å» ËÀÄÀ ÈÀÂÀ ¿½À » ¼ÀÉ Æ½ÉÅÄ¿ÈÈÆʽ»É ½¿»ÍÀÉÎ ßÉÅ»ËÄÊÈ»ÂÆÇÆ»½ÅÊ Êѻ»Ȼ À¼ ËÄƽÈÆËÆÊ ÇäÉ ¾»½»ÄÀ¼ » ÂÆÍÆ» ã Í»½È»ÄäÉÎ ç» Â»ÉÀÄÄʼ¼Ð¿½ »Á»ÇË¼Ê ËÊÄ Ä»ÌƽÀÈÆн ËÀÉÊ À ËÀÉÊÔ ÂÀ½ÂÊ É¿¾»Ä»½ÈÆÀÉ ËÀÄÀ »ÉÈÄÆÑÆÄ ËÄʾÄÀÇÀÉÈÊÄÄ»ÈÅÊÉ ã »½Å»½ÂÆѼ»ÉÎ ÓƽÀ¼Ç»½Å»Ô É» ËĻɻ½ÅÐ »¼ »ÂÆÅÊÄ ÍÆÉ¿À¼ » ÃÀÄ»¼ ËÀÄÀÌÀÈƼÆÅÀÄ ¼À ÈÄ»ÀÈÆн » ËÄʾÄÀÇÀÉ ¼áâÆÈÀ ã ÉƽÅäÈÅÆÈÀÇ»½Å» ÈÊÄÄ»ÈÅÊÉÎèéêèé ëìíîïðïðñòóÎ ôʼÊÈÀÄ À ÃÀÄ»¼ »½ ¼À ÉÆÅ¿ÀÈÆн ƽÆÈÆÀ¼ Ò¿» É» Ç¿»ÉÅÄÀ »½ ¼À Ìƾ¿ÄÀõöó÷ÀÎ ÏÀ ÅÀÄ»À »É »½ÈʽÅÄÀÄ ¼À Çʽ»ÂÀÔ ¼»ÍÀ½ÅÀļÀ ã ÀËÀ¾ÀÄɻΠÏÀ Ìƾ¿ÄÀ õöó÷ÑÉ¿¾Æ»Ä» ¿½À Ä¿ÅÀ ËÀÄÀ ¼À Éʼ¿ÈÆнΠßÉÅ¿ÂÆÀÄ »¼ ËÄʾÄÀÇÀ Éƾ¿Æ»½Å» ôøùõúóÎÃøûÔÒ¿» ½Ê ÅÆ»½» »ÄÄÊÄ»É ¼áâÆÈÊÉ ½Æ ÉƽÅäÈÅÆÈÊÉ ã »ŻÄÇƽÀÄ Ò¿» »É ¼Ê Ò¿» üÀÈ»Îýþýôýÿú0ßúø��ýßþ�ßÃøûßÏúßç�øúßþúôøÏÏß õ øßþý0ø � ýßþ0ÿúøÏ ÿßç�ß ôÿþ ��ÿþß0øçúßþúç4ú�ÿÏçø �ùøûß0ú�4þ�ÿúøúøßþý0ø � 0ßúôøÏÏß õ ø õ ��ø� ó �ÿþß0øçúßþúôøÏÏß õ øßþý0ø �Óýþú0ßúø��ýßþ�ßýþýôýÿú0ßúùûÿ�ûø�øýþýôýÿú0ßúß�ßô4ôýÿþÀÍÀ½ À �¾ÆÄÀúÀú¼ÀúÆ Ò¿Æ»ÄÂÀ �

ôÀËàÅ¿¼Ê õÎ ùÄʾÄÀÇÀÉ É»½ÈƼ¼ÊÉ õ�

Page 53: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������ �������������������� ������� �������������������� ������� �������������� ������ � �!"#�$%�%&%'('")#!"#�$%�*+),+-.-%/��� �� �� �������� ��1� � ��1� �� �� ����� 2 �� ������� �� 1� ����3� 5������� ������� �� ��6� � 1� 1� �5�� 7� ���7� ���� ��� �����8 ( ������ ��1�������� ���� ������6�� 1�1 ������1����1 2 1� �1 ����1����9 ����5���� ���������� ���� ��� ������� �� ���� ������1 �8

�: 6:!����� ;<=>8 %/������� =;8 %/��� �� �� 1�������� 2 ������ �� �������� '-*;�;8?-+ ���1����@"#"'")�$%�-.A"%#B%?-+%C�%DB-�%#�'-CC% ; -E%#"$- F E"%#$)�-C )%DB%')# ) .)#%$-D�%#�D(�A)CD- �*-+%$�&(#B)�-�-E%#"$- G $%�'-CC% ; - ; �

HI '��J ��� ;8 *�������1 1�������1

Page 54: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

KLM N OPQRSLTURQUVLWWR X LYRQZSL [ \]ZQUSRULO^ZRQ_RZQZVZPUSRU`aPbaLOLZQZVZPUSRURcRVdVZPQefeghe \ijkeULUleUjhmnjokpe\efeghe \ijkeUeUleUpokoqre\efeghe \ijkeUeUleUpokoqre\efeghe sijkeUeUleUjhmnjokpe \efeghe \koqtioUutgope \eveiewo \]ZQUSRURcRVdVZPQ]ZQUSRU`aPbaLOLRxwo vktikeue jgwogwe koxtlfok le ujxue wekoe pol oyokqjqjt Nz vokt ktpoegpt levekop vtk e{eytz og lniek po xelwekle| Zgwogwek poxqn{kjk wtptx ltx okktkox mno wjogo} qtuvkt{ekltx nxegpt ol xjunleptk| P{xokfek ltx uogxeyox po okktk mno xovktpnqog| Vtkkoijk ol vktikeue veke mno reie le wekoe poxoepe|~| �Vn�l ox ol vktikeue u�x vomno�t mno xoe l��jqeuogwo } xjgw�qwjqeuogwoqtkkoqwt� Rxqkj{jklt } vkt{eklt og ol xjunleptk|[| Vepe ue�ege �ekol ox poxvokwept og xn qeue qnegpt xn vokj�pjqtzkovkoxogwept vtk nge utgopez ox ekktyept og le vnokwe po xn qexe| `ktikeuek e�ekol veke mno lt koqtye } koikoxo e xn qeue e looklt| We xjwneqj�g jgjqjel xo pe ogle �jinke X�N[|

Vev�wnlt X| `ktikeuex xogqjlltx X�

Page 55: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������ ����� ��������� ������� ���� �� ��������� �� � ¡�¢ ¢�������¢ £� ����£ �� �� ¤����� ��� � �����¢����� ���¥����¦�� §�����¥�� � ¨���� ���� �¢����� �� ¥����¦� © ������� ��� ª��£����� �� ��¥�« �����¢����£� ��� �� ¥���£�¬ £�¢��­¢« ¨���� £�ª��® £�¢���£����� �� ���� ��£� £� �� ¥����¦�� ������� ¯�� ¨���� ������ �� ����� ��� ��ª��£����¥���£� �� ¢� ª��¢�� ¨���� £�ª��® ¢����� �¢����°�¥���� �� ��������£� �� ¥����¦� �� ¢� �¢���¢� © £�¢���¢� ��¥� ¢� ¥��¢��� �� �� ¤����� ��� ª�

�± ª±������ ��� � ²��������  

³´ µ��¶���� �� §�����¥�¢ ¢�������¢

Page 56: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

·¸ ¹º »º¼»º½¾ ¿ À¿½¿ ÁºÂ ½Ãĺ»Åº»À¿Á¾Æ ¿ Ǿ½¿ Áº Å¿ÈÁ¿Á¾ Áº É¿»ºÂ ½º»¾ÅÄÊË ÁºÌ¿ÈÁ¾ À¿º» ÃȾ½ ÀÿÈ;½ ¿»ÍÎÀþ½ ÅÃÏ À¾½Í¾½¾½¸ н;½ ¿»ÍÎÀþ½ º½ÍÑÈ»ºÄ»º½ºÈÍ¿Á¾½ ľ» žȺÁ¿½¸ Ò¿ ½ÊÍÿÀÊËÈ ÊÈÊÀÊ¿Â ºÈ ¿ Àÿ ɿ»ºÂ Áº½ÀÃÇ»º ¿ »¾Íû¿Áº ¿ Ǿ½¿Æ º½ÍÑ »ºÄ»º½ºÈÍ¿Á¿ ºÈ ¿ Óʼû¿ ÔÕÖ·¸ ×»¾¼»¿Å¿» ¿ É¿»ºÂ Ä¿»¿ ØúºٿÈͺ ¾½ ¿»ÍÎÀþ½ À¿ÎÁ¾½ Ï Áº½ÄÃÚ½ »º¼»º½º ¿ ½Ã ľ½ÊÀÊËÈ ÊÈÊÀʿ¸۸ нÀ»ÊÇÊ» ÁºÓÊÈÊÀʾȺ½ ¿Ä»¾ÄÊ¿Á¿½ Ä¿»¿ ¿½ ½Ê¼ÃʺÈͺ½ Í»º½ Èúٿ½ ÊȽͻÃÀÀʾȺ½Ü Ö¸ÝÞßàáâãäÞÆ Â¿ Àÿ å¿Àº ¼Ê»¿» ¿ É¿»ºÂ Öæç ¼»¿Á¾½è Ô¸ ÞàÞéêÞßáéßëìãíîâäïí ðÃÈñÊÂËźͻ¾ ÍÊºÈºÈ ÃÈ¿ ¾ȼÊÍÃÁ Áº Öç ÀÿÁ»¿½òè ÏÆ ó¸ ïâäïíôâÝâÆ Â¿ Àÿ å¿Àº»ºÍ»¾ÀºÁº» ¿ É¿»ºÂ ÃÈ¿ ÀÿÁ»¿ ĺ»¾ ¾ ÁºÌ¿ Ù¾Âͺ¿Á¾ å¿ÀÊ¿ ¿ Åʽſ ÁÊ»ºÀÀÊËÈ¸æ¸ õ¼ÃÈ¿½ ÙºÀº½ É¿»ºÂ Í»¿Ç¿Ì¿ À¾Å¾ ºٿÈÍ¿ÄÊȾ½ ºÈ ÃÈ Ç¾ÂÊÀ庸 нÀ»ÊÇÊ» ÃÈÄ»¾¼»¿Å¿ Øú ÊȽͻÃÏ¿ ¿ É¿»ºÂ Ä¿»¿ Í»¿È½Ó¾»Å¿» ¿ ½ÊÍÿÀÊËÈ ÊÈÊÀÊ¿Â Áº ¿ Óʼû¿ÔÕÖÛ¿ ºÈ ¿ ½ÊÍÿÀÊËÈ ÓÊÈ¿Â Áº ¿ Óʼû¿ ÔÕÖÛÇ ¸ É¿»ºÂ ÊÈÊÀÊ¿ º½Í¿ Í¿»º¿ À¾È ÁʺöžȺÁ¿½ ºÈ ½Ã Ǿ½¿¸

÷ʼû¿ ÔÕÖ·¸ Ð̺»ÀÊÀʾ ·ø¸ ÐÈ Â¿ Óʼû¿ ÔÕÖæ ½º ÊÂýͻ¿ ÃÈ À¿Åľ Áº žȺÁ¿½ Øú É¿»ºÂ å¿Ä¿ÈÍ¿Á¾ ÃÈ¿ ȾÀåº ºÈ Øú º½Í¿Ç¿ ;ſÁ¾ Áº½ÄÃÚ½ Áº ÃÈ Ìú¼¾ Áº ÇѽñºÍǾ¸нÀ»ÊÇÊ» ÃÈ Ä»¾¼»¿Å¿ Ä¿»¿ »ºÀ¾ÂºÀÍ¿» ;Á¿½ º½Í¿½ žȺÁ¿½¸

ù¿ÄÎÍþ Ô¸ ×»¾¼»¿Å¿½ ½ºÈÀʾ½ Ôø

Page 57: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

úûü ýþÿ�� ���þ ����þÿ �������þ������ þ ��� ��� �þ ��þ���� � �� �����ÿ���þ�� ��� �������þ ��þ��þÿ �� �þ�� � ���þ� ��� �ÿþ����þ �� ���þ�� þþ��ÿ����� ���ÿþ��ÿÿ���ÿ��ü �����þ����� �����þÿ ��þ� �ûû ���þ� �� �þ ���þ � ���þ� � ýþÿ�� � �ÿ��ÿþþÿ�� �þÿþ ��þ��þÿ �� ���þ�� ����þ� ��� �� ����ÿþ �� �þ ����ÿþ ��ú�ü ���þ �� �� �ÿ�þ � �����ÿ �þ�������� �����þ� � ýþÿ��ü �þ��ÿ �� ����� �� �ÿ��ÿþþ � þ��ÿþ ������þ �þ �þÿ�� �� ���þ�� � �!"# þ !"# � #""# ���������üúúü )��ÿ� �ÿ �� �ÿ��ÿþþ �þÿþ ��� ýþÿ�� ���þ ������þÿ �þ ��ÿþ ��þ��þ� ����ÿþ ����þÿ þ� ���ÿ����� úûü )� �ÿ��ÿþþ � �ÿ� ��ÿ���ÿ �þ �þÿ �þ ��ÿþÿ���þ����ü )�����ÿ �� �þþ�� � ��ÿþ � ��� ������ � þ��ÿþ ��� ��þ����� �� �� ���ü $ÿ� þÿ ��� �þ� ���������� ��ÿþ�% û�%úû � ú�%&û ü

þ' '(���ÿþ ��ú*ü )��ÿ����� + (���ÿþ ��ú+ü)��ÿ����� �

,- .þ������ �ü $ÿ��ÿþþ� ���������

Page 58: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

/01234 56789 :0;24<0=> ?0>4@ A434 B@ BCB3<0<0D 7E

F4AG;2@D 59 H3D134I4J JB><0@@DJ K7

Page 59: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

USANDO LOS

SENSORES

DE KAREL

����� ����� �� �� ��� ���� � ��� ����� � �� � ����� ���� ������� ��������� �� ���� ������� �� �������� �� ���� ��� � ���������� ������� ������� �� � ������� ������ ��� ������������ ������ �� ��������� �� ������������ ���� �� ��������� � ��� ������ � ������ �� ���� �� �������� ������ ������ �� �� ��� ���� �� ������ ���� ����� �� ����� ��������� ���� ������ ���� ���������� ���������! "#$�%�&%'�"�"#$�%�&%'�"$"#%& ( )#�%�*+"$�+,�-./. 01 23456788293 :;<=>?@>A=:BC DEFGHIJJDKE LMNOPQRPSOL FDTIU VC WXHYCZ[\ ]^_`ab cdefdgc[hijk^_llhminoCHUV UpUJIGC UFGC DEFGHIJJDKE qU VC FDTIDUEGU YCEUHCZ FD VC ]^_`ab UF JDUHGC FUUpUJIGC hijk^_llhmir FD VC sHIUtC UF WCVFC EX FU UpUJIGC hijk^_llhmiu vCHC FCtUH FDIEC sHIUtC UF JDUHGC X WCVFCw oCHUV xUHDWDJC UV UFGCqX qU FIF FUEFXHUF qU CJIUHqX C VCGCtVC yz{u vXH UpUYsVXw VC DEFGHIJJDKE[\ WHUEGU|tVX}IUCqX cdefdgc[TDHC|C|VC|D~}IDUHqCrGDUEU UV UWUJGX qU �CJUH }IU oCHUV TDHU C VC D~}IDUHqC FD WHUEGU CV HXtXG �C� IECsCHUqr FD EX �C� sCHUqw UEGXEJUF oCHUV EX �CJU ECqCu gXYX UpUHJDJDXw FU UFJHDtU UV

gCs�GIVX yu�FCEqX VXF FUEFXHUF qU oCHUV {

3

Page 60: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�������� ����� ���� ��� ����� ����� ���� �� ���������� �� ������� �� ������������� �������� ��� �������� ��� ���� �� ������� �� �� ������ ���� ����� ��������� �� ������ ��� ������ ������ � � � ����� �������� ��� �������¡ �� ������ �������¢� �� �������� �� ���� �������� ������ �� ������ ����������� �� �����¢� ����������� ���� �� ������� �� ��� ������� ���� £ �����

¤���� ������� �� �����¥� ����� ������� ����������¦�������¦��¦��¦����� ¥� ����� ������� �� �����¤���� ������� �� ��������¦�������¦��¦��¦����� §��� ��������� �� ¨����¥� ���� ��������� ��¨������¦�����¦��¦����� ¥� ���� ��������� �� ¨����§��� ��������� �� ¨���������¦��¦����� §��� ��������� �� §���¥� ���� ��������� �� §�����¦�����¦��¦���� ¥� ���� ��������� �� §���§��� ��������� �� §��������¦��¦���� §��� ��������� �� ©��¥� ���� ��������� �� ©����¦�����¦��¦��� ¥� ���� ��������� �� ©��§��� ��������� �� ©�������¦��¦��� §��� ��������� �� ¥����¥� ���� ��������� ��¥������¦�����¦��¦����� ¥� ���� ��������� �� ¥����§��� ��������� �� ¥���������¦��¦����� ª�£ ������� �� �������¥� ��£ ������� �����������¦«����¦�¦������ ¥� ��£ ������� ���������ª�£ ������� �� �������«����¦�¦������ ¥� ��£ ����� � �� �������ª�£ ����� � �� ��������������¦��������� ª�£ ����� � �� �������¥� ��£ ����� � ����������������¦�����«��� ¥� ��£ ����� � ���¬�������ª�£ ����� � �� �¬��������¬�������¦��������� ª�£ ����� � �� �¬�������¥� ��£ ����� � ���¬��������¬�������¦�����«��� ¥� ��£ ����� ��������ª�£ ����� ��������������¦��������� ª�£ ����� ��������¥� ��£ ����� ��������������¦�����«��� ­®¯°® °±²±³´µ® °±¶´·³¸®¹ º��»���� ��¼����� ��� �������� �� �����

Page 61: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

½¾¿À¾ ÁÂÃÄ Å¾Æ ÇÈÉÊ¿¾Æ ËÊ Ì¾ÈÊÀ

¾Í ¿Í ÎÍÏÐÑÉȾ ÁÂÃÄ Ì¾ÈÊÀ ÎÒÓÒ ÈÊÎÒÀÊÎÔÒÈ ËÊ ÓÒÕÊË¾Æ ÊÕ ÉÕ¾ ÆÉÇÊÈÖÐÎÐʾ × ¿Í ØÐÔɾÎÐÒÕÊÆ ÐÕÐÎоÀÊÆ ÎÍ ØÐÔɾÎÐÙÕ ÖÐÕ¾ÀھȾ ÀÀÊÛ¾È ¾ ξ¿Ò À¾ Ô¾Èʾ ËÊ Ì¾ÈÊÀÜ ÇÒËÊÓÒÆ ÉÆ¾È À¾ ÐÕÆÔÈÉÎÎÐÙÕ ÝÞßàßáàâÞã äÉʾ۾Õå¾Èæ ç ÛÊÎÊÆ ÆÐÕ Î¾Ó¿Ð¾È ËÊ ËÐÈÊÎÎÐÙÕÜ × äÉÊ è¾Èæ äÉÊ ÈÊÎÒÀÊÎÔÊ À¾Æ ÓÒÕÊ˾ÆäÉÊ ÊÕÎÉÊÕÔÈÊ ¾ ÆÉ Ç¾ÆÒÄ éÒÕ ÊÆÔÒ ÊÕ ÓÊÕÔÊÜ À¾ ÆÊÎÎÐÙÕ ËÊ ÊêÊÎÉÎÐÙÕ ËÊÀ ÇÈÒÑȾӾÇÒËÈë¾ ÆÊÈ À¾ ÆÐÑÉÐÊÕÔÊìíîíéíïðñòðòóòéôéíïîõòÚí½ò Á öòéòØíîíéíïÛÊð¾ðǾÈÊË÷ÑÐȾð¾ðÀ¾ðÐåäÉÐÊÈ˾÷¾Û¾Õå¾÷ÑÐȾð¾ðÀ¾ðÐåäÉÐÊÈ˾÷ÛÊð¾ðǾÈÊË÷ÑÐȾð¾ðÀ¾ðËÊÈÊÎè¾÷Øí ÖÈÊÕÔÊðËÊÆÇÊê¾ËÒ òî½ïîéòؾ۾Õå¾÷ÑÐȾð¾ðÀ¾ðËÊÈÊÎè¾÷Ïíî¾Ç¾Ñ¾ÔÊ÷Ïíîðñòðòóòéôéíïî

é¾ÇëÔÉÀÒ ÁÄôƾÕËÒ ÀÒÆ ÆÊÕÆÒÈÊÆ ËÊ Ì¾ÈÊÀ Á

Page 62: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

øù úûüûý þÿ ���ýÿ��û �û���ÿ� �ÿ�ÿ ùÿ ��ú���ÿ ��ü� þÿ �ÿ�ÿ ùÿ ����ú�ÿ ��ü�þÿ �ÿ�ÿ ùÿ ��ú���ÿ ��ü� �ý�3 �ÿù���ý� ������� �� �ÿ��ú ýú�� þÿ��� �� �ÿ �þ��ùýÿ �� ÿ�ÿ�ÿ3 �ü��úþÿú �ù �ùý�û ����������� �� ��ý� �ù úûüûý ��û�ÿú�ÿ3 �ÿ��ýú����� �!"#$#$%#$&'"'()# �ÿ �� ���úü� �� �ù �ÿ��ý�ùû ÿ�ý�úûú � ��ùû *ÿùýÿ ùÿ��ýú����� +'$#$,#"'&57ø -.ø/.0ø12/-.468099-�. þ�/ÿ/�ÿú�� 9�:�-.-9-�8ø;-6ø < 1ø9ø4-.-9-�4- ���ýû/ÿ/�û���ÿ ø.6�.9ø4ú��û��/�û���ÿ ÿþÿ��ÿ -.4- ���ýû/ÿ/�û���ÿ ø.6�.9ø4ú��û��/�û���ÿ -.=>?> @A BCDEFGHHBIC JKLMNOPNQMJLJKNP�ÿ ��ýú����� ���������������� �� �� ùÿ *ûú�ÿ54- RSTUVW ø.6�.9ø4XYZ[ST\\X]Y^_4-.� XYZ[ST\\X]Y` ø� ��ý� �ÿ�û � ùÿ RSTUVW �� ��úýÿ �� �����ýÿ XYZ[ST\\X]Y^ � �� *ÿù�ÿ �� �����ýÿXYZ[ST\\X]Ya3 2�ûúÿ �� �û�*�ÿúb �� �û�û ùÿ ýÿú�ÿ ��ù �úû�úÿ�ÿ c3d28 �ÿúÿ ����þ�úýÿ ùû� eBfghgD i���ýû�j �� ��ÿ ����ú*��3 ø� ùÿ� *��úÿ� kl`ÿ � kl`ü ������ýúÿ� �û� �û�üù�� �ý�ÿ�û��� ��ÿù�� �ÿúÿ ùÿ ýÿú�ÿ �� dÿú�ù5 ùÿ �ú��úÿ�ú����ýÿ �� m ����û ÿ üÿ�� �� �û���ÿ� ���ýúÿ� ��� ùÿ ������ÿ ����ýúÿ �� k3 �ÿýÿú�ÿ �� dÿú�ù �� �ÿ�üÿú ùû� ���ýû� ���úû� �ûú üùÿ��û� � þ��þ�ú�ÿ �û�û ������ýúÿ �� ùÿ� *��úÿ� kl`� � kl`� �� ���ú �û��� ÿ�ý�� �ÿü�ÿ �û���ÿ ÿ�ûúÿ �û�ÿ� � �û��� �û �ÿü�ÿ ÿ�ûúÿ �ÿ�3 øù �*��ýû �� �ù ���û ÿù �� �û��ú �� nBogpBCngFDp �� ù�ýú�úû �� �ù �û�ýûú �� ùÿ �û���ýÿ�ûúÿ3 ;ÿúÿ �úûüÿú ÿ�üû� ÿ�ü��ý���� �ù ���ùÿ�ûú �� �úû�ûú�û�ÿ� �� �ù ���û ùû� �úû�úÿ�ÿ� q23d28 � qr3d283

s tuvwxyz{ |}~�u��{ z{� ����{��� �� �u��z

Page 63: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�� �� �� ������ ���� ����� ���� �� ����� ������� �� ������� � �� ����������� ��������� � � �� �����������  ������¡��� �����¢�� ���� �����£ ������������ �� �������� ¤¥¥ ������� �� �� ����� ����������� �� ����� � �� ���� ��¦ �� ���������¦� §¨©ª©«ª¬¨­£ ���������� �� ���������� ®��¯° ���� ±�� ²��� �� �������¦� �� �������³´µ�¶·µ¸·¹µº¯¸¶·�»°¹¼¼¶½· ��¸�¸����� ¼½¾½¶·¶¼¶½°µ¡¶»µ ¿ ºµ¼µ�¶·¶¼¶½�¶ À����¸�¸������ µ·»½·¼µ�������¸������Á�¶·½������¸������Á����¢�Á�¶·�¶ À����¸�¸������ µ·»½·¼µ�������¸������Á�¶·½������¸������Á�¶·ÂÃÂà ÄÅ ÆÇÈÉÊËÌÌÆÍÇ ÎÏÐÑÒÓÔÕÖ×Ôد²��� �� ����� �� ����� �������� �� �������� �� ������£ ������¢��� �� �� ��±���� ���� ����� ¤ � ������� ¤£ ��������� �� ����£ ��� �������� �� ������¦� � ���������¦�

¼��Ù���� ��¹����� ��� �������� �� ����� Ú

Page 64: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÛÜÛÝÛÞßà áâ ÝãÜäÛåâæÞ çèâ Üã éÞê ëÞæâåâä âÜ äè ìèÜåãà íäîÞ îÞæâÞ äâ ÛßèäîæÞ âÜ ßÞäïÛðèæÞ ñòñÞ ê ñòñóàôãÜ ßÞ ÛÜäîæèÝÝÛõÜ ö÷øùú÷ûü÷ý÷þ äâ ëãåæÿÞ æâäãßâæ âß ëæãóßâìÞ ëÞæÞèÜ ÝÞäã ëÞæîÛÝèßÞæ� ëâæã äÛ �Þæâß ÝÞìóÛÞ åâ ëãäÛÝÛõÜ� âß ëæãðæÞìÞ êÞ Üã éÞæÿÞ ßÞîÞæâÞ åâäâÞåÞà áâ ÜâÝâäÛîÞ ÞßðèÜÞ ïãæìÞ åâ æâëâîÛæ èÜÞ ÛÜäîæèÝÝÛõÜ åâëâÜåÛâÜåã åâßãä äâÜäãæâä åâ �Þæâß� âÜ âäîâ ÝÞäã� âß äâÜäãæ çèâ ßâ åÛÝâ çèâ âß ïæâÜîâ âäî�óßãçèâÞåã ã åâäëâ�Þåãà

�ÛðèæÞ ñàñà �Þæâß Þ Þß ãæÛðâÜÞ� áÛîèÞÝÛõÜ ÛÜÛÝÛÞß ó� áÛîèÞÝÛõÜ ïÛÜÞß�Ü ÞßðãæÛîìã ëÞæÞ æâÞßÛ�Þæ âäîÞ îÞæâÞ âä âß äÛðèÛâÜîâ�!Þäã �à �ãßîâÞæ éÞÝÛÞ âß ãâäîâ!Þäã �à ÞÜ�Þæ éÞäîÞ âÜÝãÜîæÞæ ëÞæâå!Þäã ñà �ÛæÞæ Þ ßÞ Û�çèÛâæåÞ!Þäã à ÞÜ�Þæ éÞäîÞ âÜÝãÜîæÞæ ëÞæâå!Þäã �à �ÛæÞæ Þ ßÞ Û�çèÛâæåÞ!Þäã �à ëÞðÞæäâáÛ ßã îæÞåèÝÛìãä Þ ÛÜäîæèÝÝÛãÜâä åâ �Þæâß� îâÜâìãä âß ëæãðæÞìÞ <à���/�/ô/���í���/í��í��í��íá��í��ô��í � �í�/� � �/í����� ����í ô�� ����í�á�í��á�����á��/���í���/í��í/�/ô/���í�!�����

� ôÞëÿîèßã ñà�äÞÜåã ßãä äâÜäãæâä åâ �Þæâß

Page 65: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

-� "#�$#%�&'$"#()*%++",# .012345$56$.2742 +,8,8"�#)*'( 3.$95:15$26$.2742 ;'=>105$5$65$1?@A120B5C-� "#�$#%�&'$"#()*%++",# 5D53?5$95745$E502B +,8,8"�#)*'( F02342$B27E2G5B. ;'=5D53?5C"#"+",$-�$�H�+%+",#.012345$56$.2742C5D53?5$95745$E502BC>105$5$65$1?@A120B5C5D53?5$95745$E502BC>105$5$65$1?@A120B5C5E5>542C "#$-�$�H�+%+",# "#$-�$I*,J*'8'#K4272 @A2 65 13740A::1K3 LMNOPQRSTURV 71>A2 65 71345W17X8"�#)*'( YZ[\]^ ;'=_`abZ[cc_d`Ce 41232 26 71>A12342 71>31F1:5B. 56 2G2:A45072X 72 D201F1:5 65 YZ[\]^f 71 27 :12045 722G2:A45 65 _`bZ[cc_d` e 72 DA26D2 5 D201F1:50 65 E0A2g5h 71 DA26D2 5 720 :12045 722G2:A45 3A2D5i2342 _`abZ[cc_d` e 72 D201F1:5 65 E0A2g5h 24:jC 27 B2:10h 23 4.B57 657.:571.327 23 @A2 65 E0A2g5 027A642 :12045h 72 2G2:A450k _`abZ[cc_d`l +A53B. 65E0A2g5 027A645 F5675 mEA2B2 720 23 65 E01i205 D2? . B27EAn7oh 65 13740A::1K3LMNOPQRSTURV 420i135j I.0 2G2iE6.X8"�#)*'( 3.$95:15$26$.2742 ;'=>105$5$65$1?@A120B5C95:2 @A2 p5026 >102 5 65 1?@A120B5 95745 @A2 65 E0A2g5 qrstuvwusxysrxz{x 725 F5675j�3 .4057 E565g057h 65 13740A::1K3 LMNOPQRSTURV 420i1350k 95745 @A2 p5026 274n.012345B. 56 .2742j +.3D1232 3.450 65 B1F2023:15 23402 657 13740A::1.327LMNOPQRSTURV e QN|MPNT}N~NSj �5 13740A::1K3 LMNOPQRSTURV 27 A35����������� �� ���������� � �� ����� ������������ 27 B2:10h 02E142 A35 13740A::1K3B2E23B123B. B26 027A645B. B2 A35 :.3B1:1K3h 65 E0A2g5j I.0 .40. 65B.h 6513740A::1K3 QN|MPNT}N~NS 27 A35 ����������� �� ���������� . B2 �����

+5E�4A6. �j%753B. 6.7 7237.027 B2 p5026 �

Page 66: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�������������� �� �����  �� ��¡�¢� £¤¥ �¤�¢�£���¦¤ £¤ ¤§¨��© ¡����¢��¨�¤¥�© ��ª����« ¬©� �£¡£��¢©  �� �� ­£���� ��¡�¢�� ¨®� �� £¤¥ �¤�¢�£���¦¤ �� ¡£��� £¢�¯�°¥� £¤±¯©­£� �� �¤�¢�£���©¤��« ²¤�¯£��ª� ��¢® ¡��¨�¢��© £¢�¯�°¥� �£¥¯­£��� �¤�¢�£���¦¤��¤¢�© �� ©¢�¥ �¤�¢�£���¦¤� ¡©� �³�¨¡¯©  ¯¥ ��´£��¤¢� �¤�¢�£���¦¤ ¥ª¥¤°¥ µ¥�¢¥�¤�©¤¢�¥� £¤¥ ¡¥���  ���©´��¤�© ¯¥� ¨©¤��¥� �� ¯¥� ��­£�¤¥� ¡©� �©¤�� ¡¥�¥¶·²¸¹º»¼½ ¾��¤¢�¿���¡�³¥�© À¼Á²¹²Â²Ã·²¸¹º»¼½ ³£¤¢©¿¥¿¨©¤��¥ À¼Á���©´�¿¨©¤��¥�¥ª¥¤°¥�IJ¹¸¯ ¨¥�´�¤ �� �¨¡©�¢¥¤¢� ¡¥�¥ ¥¡����¥� �£¥¯�� �©¤ ¯¥� �¤�¢�£���©¤�� �� �¥�¥ÅÆÇÈÉÊËÌÍÎËÏ Ð ��¯ ±¯©­£�« ¸¯ ¡��¨�� ÅÆÇÈÉÊËÌÍÎËÏ �©¯© ¢��¤� £¤¥�¤�¢�£���¦¤ ±¯©­£�« Ñ¥ �¤�¢�£���¦¤ ±¯©­£� ¢��¤� �©� �¤�¢�£���©¤��¶ �¯ ��´£¤�©ÅÆÇÈÉÊËÌÍÎËÏ Ð ¥ª¥¤°¥« ¸¯ ��´£¤�© ÅÆÇÈÉÊËÌÍÎËÏ ¢��¤� �©¨© ¡�£�±¥ ¥ÒÓÔÕÖ×Ø×ÙÖÔÚÛØ Ð �©¨© �¤�¢�£���¦¤ ¥ ÜÚÝÖÞÚ×ÙÖÔÚÛØ«ßàáà âãäåæçèèéêãëä ëìçéíîïëãåë䣥¤�© �©� �¤�¢�£���©¤�� µ¥��¤ ­£� ð¥��¯ �³��£¢� �ñ¥�¢¥¨�¤¢� ¯¥� ¨��¨¥�¥���©¤��  �� ¯¯¥¨¥¤ ��òóôõ�����öò ö÷õ�ø��ö�óöò« ¬©� �³�¨¡¯©  ¯¥� ��´£��¤¢���¤�¢�£���©¤�� �©¤ �­£�ª¥¯�¤¢��¶½² ¾��¤¢�¿���¡�³¥�© ¸¹ºÃ¹Â¸½ ½² ¾��¤¢�¿±¯©­£�¥�©¸¹ºÃ¹Â¸½¥ª¥¤°¥� ´��¥¿¥¿¯¥¿�°­£����¥�½²¹Ã ½²¹Ã´��¥¿¥¿¯¥¿�°­£����¥� ¥ª¥¤°¥�¼ ��¢¥ ¢�¥¤�¾©�¨¥��¦¤ �� ¯¥ ¡�£�±¥ �� £¤¥ �¤�¢�£���¦¤ ÌÆÍÇÈÉùÈúÇÌÍÌÆÈù �� ¯�¯¯¥¨¥ ��øöôò�û� �ö üôõöý�þ ÿ� �´£¥¯ ¨¥¤��¥  ¯¥� ��´£��¤¢�� �¤�¢�£���©¤�� �©¤�­£�ª¥¯�¤¢��¶½² ³£¤¢©¿¥¿¨©¤��¥ ¸¹ºÃ¹Â¸½ ½² ³£¤¢©¿¥¿¨©¤��¥¸¹ºÃ¹Â¸½²¹²Â²Ã ���©´�¿¨©¤��¥���©´�¿¨©¤��¥� ½²¹Ã

� �������� ��� �� ��� �� ����� �� �����

Page 67: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�������������������� ������� !" ��������������������#!"$!"!%!$��������������������������� !"& �'(� (���')*�+�,�-�. �*��� ��' ��'(��,,�*��' )�����' ,*+���' � ��' /��(�'01231405 6 5713. '� �',��8�� ��'/�9' �� �� ��'(��,,�-�57:01231405:5713. '� �� ,*�*,� ,*+* ;<=>?@AB<=ACD E<=A< <F<G?H I�;<=>?@AB<=ACD E<=A< <@@AF< �* '��+/�� �' /*'�8��H %*�'��9��'� �� '������(� ,�'*�*��� '� )��,�*��J#! K�,�������*�(� L"M$"%L# �������!"!%!$ #! K�,�������*�(�L"M$"%L#������� ��������������,K����������������,K�� #!"$ !" ��������������������#!"$!"!%!$��������������������������� !"&K*�� '� ,*�'����� �� '������(� ,�'* �*��� �* '��+/�� )��,�*�� �� )�,(*����,�-�K�,�� ����8�J#! N��(*���+*���� L"M$"%L# �������!"!%!$ #! N��(*���+*����L"M$"%L#������� ��,*���+*�������,*���+*����� #!"$ !" ,*�*,��+*�����#!"$!"!%!$�������,*�*,��+*����� !"

%�/O(��* PHQ'���* �*' '��'*��' �� R���� S

Page 68: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

TUVU WXU YZ[WU\Z]X ^_X^` X_ aWX\Z_XUb Y` cW`^` YWc_X`V dW` eUV`f `Y[g `X WXU`YdWZXU YZX h_X`^UY i `X fU YZjWZ`X[` `YdWZXU k`X fU ^ZV`\\Z]X ^` eUV`fl Ym nUih_X`^UYo pf \]^Zj_ ^` fU ZqdWZ`V^U UrUXqUVmU i \_f_\UVmU WXU h_X`^Ub i `f ^` fU^`V`\nU UrUXqUVmU i V`\_j`VmU fU h_X`^Uo T_V f_ [UX[_ X_ Y_X \]^Zj_Y `dWZrUf`X[`Yos_X `Y[UY [VUXYa_VhU\Z_X`Y Y` cW`^`X f_jVUV cV_jVUhUY dW` Y`UX ^` h`X_V[UhUt_b hgY Y`X\Zff_Y i hgY f`jZuf`Yovwxw yz {|z}~� ��� z� ����} ���� �~�|���s_XYZ^�V`Y` `f YZjWZ`X[` cV_jVUhU ffUhU^_ �oe������s����p�����p��pe��p��p����p��s���p � ��p���� � ��p������ ����p s�� ����p����p���������� ¡�¢ � ���p����p��s���p £ ��p���� � ¤����p�����p��p���s����p�T��¥�������s����p�p¦ps�s����� §WX[_�U�h_X`^U p����sp��� nU\ZU�`f�X_V[` p����sp�V`\_j`�h_X`^U ����UrUXqU UcUjU[` ¤����p�p¦ps�s���¤����p�T��¥�����U cUV[` ¨©ª« \_VV`Yc_X^` Uf ¨©¬­ª®«ª¯­¨ hgY \`V\UX_b `X `Y[` \UY_ Uf hgYZX[`VX_o s_X `Y[U V`jfU jVUhU[Z\Uf U^Z\Z_XUfb Y` `fZhZXU fU _[VU c_YZuZfZ^U^� fU ^`c`V[`X`\`V Uf ¨©¬­ª®«ª¯­¨ hgY `°[`VX_��� §WX[_�U�h_X`^U p����sp��� nU\ZU�`f�X_V[` p����sp�V`\_j`�h_X`^U ����UrUXqU 

±² sUcm[Wf_ ³o�YUX^_ f_Y Y`XY_V`Y ^` eUV`f

Page 69: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

´µ¶· ¸¹º»· ¼¹ ·µ½¾¿·¸ »· À·¸¶¹ ÁÂÃÄ ·» ÁÂÅÆÃÇÄÃÈÆÁ Éʵ ¾¹¸¾·Ë½Ì ¹»¿É¿Ë·¾Í·»ÎÍ¿¹¸ ·ÉÏ¿ºÐ¹¼·¼ Ñ ¹» ¾Ò¼¿º½ µ½»·É¹Ë¶¹ ¶¿¹Ë¹ ÍË À½µ¿Ï»¹ µ¿ºË¿Ó¿¾·¼½ÔÕÖ×Ö ØÙÚÛÜÝÞßÞÝà ÞÝ áß ÜâàãÙäååÜæâ çèéêëìíîïðíñò¹ À͹¼¹ ¹µ¶·¸ µ¹ºÍ¸½ Î͹ ¾Í·Ë¼½ µ¹ ó· · ¿Ë¿¾¿·¸ »· ¹ô¹¾Í¾¿ÒË ¼¹ »· ¿Ëµ¶¸Í¾¾¿ÒË ¼¹»õÂÆÃÇö÷ÁÅø÷ùÌ »· À¸Í¹Ï· ¹µ ¾¿¹¸¶·Ô ú¹ ¿ºÍ·» Ó½¸É·Ì ¾Í·Ë¼½ ÍË· ¿Ëµ¶¸Í¾¾¿ÒËõÂÆÃÇö÷ÁÅø÷ù ¶¹¸É¿Ë·Ì ¿Ëɹ¼¿·¶·É¹Ë¶¹ ¼¹µÀÍûµ »· À¸Í¹Ï· ¼¹» ¾¿¾»½ µ¿ºÍ¹µ¿¹Ë¼½ Ó·»µ·Ô üÀ»¿¾·Ë¼½ ¹µ¶·µ À¸½À¿¹¼·¼¹µÌ »½µ ¾Ò¼¿º½µ ¼¹ »· ¿ýÎÍ¿¹¸¼· µ½Ë¹ÎͿ󷻹˶¹µ · »½µ ¼¹ »· ¼¹¸¹¾þ·ÿ6�´���üò Ó¸¹Ë¶¹ ¼¹µÀ¹ô·¼½ ü� 6�´���üò Ó¸¹Ë¶¹ ¼¹µÀ¹ô·¼½ü������� ������ò� Ó¸¹Ë¶¹ ¼¹µÀ¹ô·¼½ ´�����´ò ·ó·Ëý·�·ó·Ëý·� ������6�´���üò Ó¸¹Ë¶¹ ¼¹µÀ¹ô·¼½ ü� 6�´���üò Ó¸¹Ë¶¹ ¼¹µÀ¹ô·¼½ü�·ó·Ëý·� ·ó·Ëý·�ò� Ó¸¹Ë¶¹ ¼¹µÀ¹ô·¼½ ´�����´ò º¿¸· · »· ¿ýÎÍ¿¹¸¼·�·ó·Ëý·�ò���º¿¸· · »· ¿ýÎÍ¿¹¸¼·�´µ ¿Ë¶¹¸¹µ·Ë¶¹ ¶¸·¶·¸ ¼¹ ¿Ë󹵶¿º·¸ Î͹ µÍ¾¹¼¹ µ¿ µ¹ ¹ô¹¾Í¶· »· µ¿ºÍ¿¹Ë¶¹ ¿Ëµ¶¸Í¾¾¿ÒË̹µ¶·Ë¼½ �·¸¹» ¹Ë ÍË· ¹µÎÍ¿Ë· µ¿Ë ɽ˹¼·µÿ6�´���üò ôÍ˶½ · ɽ˹¼· ü�º¿¸· · »· ¿ýÎÍ¿¹¸¼·�´+·¾¶·É¹Ë¶¹ÿ ËÍ˾· ¶¹¸É¿Ë·¸Ê� ´µ¶· ¿Ëµ¶¸Í¾¾¿ÒË õÂÆÃÇö÷ÁÅø÷ù ¹µ ¹Ë ¸¹·»¿¼·¼ÍË � ��� �� � ��Ì À͹µ »· ¿Ëµ¶¸Í¾¾¿ÒË Ë½ ¹Ó¹¾¶$· ˿˺$Ë ¾·ÉÏ¿½ µ½Ï¸¹ »· À¸Í¹Ï·Ô�¹Ë¹¸ ¾Í¿¼·¼½ ¾½Ë ¹»»½µ�ÕÖ�Ö ìÝàä�Ýâ

�·À�¶Í»½ �Ô�µ·Ë¼½ »½µ µ¹Ëµ½¸¹µ ¼¹ �·¸¹» 88

Page 70: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

(�� ������!!�"�#� !"%&�#���� '�# )�!#� ��" *# ,"� �#��"�#� *# -��#,. �# &�#*#�!,���/�!�� #� ������!!�"�#� !"�*�!�"��,#� 0 *# !�!,"� !"�*�!�"��*"�1 2� ,�� &��%#���#��3� 4579:;<:=94 0 4579:;<:=94745:<. '�# &#�%��#� �"%�� *#!���"�#� *#�!�#�*" �, >�,"� *# >#�*�* >#�*�*#�" " /�,�". �#��,��*" *# >#��/�!�� !�#��� &��#?�'�# ��>",�!�� �, �#��"� " �#��"�#� *#�#�*"� *# -��#,1 (� ������!!�@� &��� �#�,�A��!�!,"� !"�*�!�"��*"� #� B59:;CD47EDF. '�# &#�%��# �#&#��� ��� ������!!�@�%�#����� !�#��� &��#?� �#� >#�*�*#��1 (�� ������!!�"�#� " !@*�G"� #'��>�,#��#�#/#!�H�� ,�� %��%�� �!!�"�#�. &"� ," '�# �# &�#*#� ���,�A�� &��� #�!��?�� &�"G��%��%3� �#�!�,,"� 0 !,��"�1IJKJ LMNOPQPQRST1 U#/���� ,� ������!!�@� VWXYZ[\[X\]^_. '�# )�!# '�# -��#, >",�#` )�!�� #, ��� ����%&"���� ,� *��#!!�@� )�!�� ,� '�# #��3 >",�#�*" ���!��,%#��#1 2a&#��%#���� !"�*�������� /"�%�� *# ,�� ������!!�"�#� 4579:;<:=94 0 4579:;<:=94745:<. ������,�A�� ,� ������!!�@� B59:;CD47EDF1 b"��#��"�%#��#. #�!��?�� ,� ������!!�@�VWXYZ[\[X\cW_YZ. ��&"��#�*" '�# ,� ������!!�@� VWXYZ[\[X\]^_ 0� �# )� *#/���*"12��� �#G��*� *#/���!�@� *#?#�3 �#� %�!)" %3� �#�!�,,� 0. *�*" '�# VWXYZ[\[X\]^_#� !"��#!��. *#?#�3 �#��,��� %�!)" %3� /3!�, !"�>#�!#� � !��,'��#� &#��"�� *# '�#VWXYZ[\[X\cW_YZ #� !"��#!��1d1 e�&@�G��# '�# -��#, �# #�!�#���� #� ��� #�'���� '�# !"���#�# ��� " *"�%"�#*��1 2�!��?�� ��� ��#>� ������!!�@� '�# "�*#�# � -��#, '�# >",�#` )�!�� #,�"��# �� ���!�� �� ���#� #� ��� #�'���� !"� ��� %"�#*� 0 '�# >",�#` )�!�� #, ��� �����!�� �� ���#� #� ��� #�'���� !"� *"� %"�#*��1 f*#%3� *# '�#*�� >",�#�*" #� ,�*��#!!�@� �#'�#��*�. *#�&�`� *# '�# -��#, )�0� �#�%���*" ,� #g#!�!�@� *# #���������!!�@� �" *#?#�3 '�#*�� ���G��� %"�#*� #� ,� #�'����1 h"%?�# #���������!!�@� !"%" Zci^ZcY_[ \]jk^jZcYZ\lj_ZiijWc1m1 2�!��?�� "��� >#���@� *# Zci^ZcY_[\]jk^jZcYZ\lj_ZiijWc n>#� #, &�"?,#%����#��"�o1 2� #��� >#���@�. -��#, /���,%#��# *#?#�3 >",�#�� #� �%?�� *��#!!�"�#�.&#�" ��%?�`� *#?#�3 *#g�� #, %��%" �H%#�" *# %"�#*�� '�# )�?p� #� ,� #�'����#� '�# �# #�!"����?� ���!��,%#��#1q1 2�!��?�� ��� ������!!�@� '�# �&�G�# � -��#, �� �# #�!�#���� !"%&,#��%#��#�"*#�*" *# &��#*#� 0 ,# #� �%&"��?,# %">#��# #� !��,'��#� *��#!!�@�1 e� �". -��#,*#?#�3 #g#!���� #��� ������!!�@� &#�%��#!�#�*" #�!#�*�*" 0 '�#*3�*"�# #� ,�%��%� #�'����. >",�#�*" #� ,� *��#!!�@� "��G���, #� ,� !��, ���!�@ �� ���#�1 h"%?�#

rs t�&p��," m1u���*" ,"� �#��"�#� *# -��#,

Page 71: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

vwxy z{wx|}~~z�{ ������������������������� ������ �y|y vw~|z�z| vwxy z{wx|}~~z�{v{ ��|�y ~�||v~xy� �v�v|� z{~�}z|wv v{ v��y }{y z{wx|}~~z�{ �������� �wxy~���z{y~z�{ vw �v|�v~xy�v{xv ~�||v~xy� �v|� vw �y �|z�v|y �~ywz�{ v{ �}v wv}xz�z�y|� }{y z{wx|}~~z�{ ������� �}v|y �v �y wv~~z�{ �v v�v~}~z�{���  |�¡|y�y| y ¢y|v� �y|y �}v ~�||y }{y ~y||v|y �v � ��wx�~}��w� �{vwxv �|���v�y �yw £y��yw w�{ �v x|vw ~}y�|yw �v y�x�� �{ �y �z¡}|y ¤¥¦y wv z�}wx|y }{ywzx}y~z�{ z{z~zy�� �y wzx}y~z�{ �z{y� § �y x|y§v~x�|zy �v ¢y|v� wv z{�z~y{ v{ �y �z¡}|y¤¥¦�� �� |���x wv �v�v y�y¡y| �vw�}¨w �v ©y�v| wy�xy�� v� �}z{x� ��wx�~}���ª�  |�¡|y�y| y ¢y|v� �y|y �}v ~�||y }{y ~y||v|y ~�{ � ��wx�~}��w� �{vwxv �|���v�y �yw £y��yw �}v�v{ wv| �v }{y� ��w � x|vw ~}y�|yw �v y�x�� �{ �y �z¡}|y¤¥�y wv z�}wx|y }{y wzx}y~z�{ z{z~zy�� �y wzx}y~z�{ �z{y� § �y x|y§v~x�|zy �v ¢y|v� wvz{�z~y{ v{ �y �z¡}|y ¤¥��� �� |���x wv �v�v y�y¡y| �vw�}¨w �v ©y�v| wy�xy�� v��}z{x� ��wx�~}���

y« �« y« �«¬z¡}|y ¤¥¦� ��v|~z~z� � ¬z¡}|y ¤¥�� ��v|~z~z� ªy« ­zx}y~z�{ z{z~zy� y« ­zx}y~z�{ z{z~zy��« x|y§v~x�|zy y wv¡}z| �« x|y§v~x�|zy y wv¡}z|®�¥ �w~|z�z| }{y z{wx|}~~z�{ ��y�y�y ���¯������������°±� w}��{zv{�� �}v wzv��|v�}v ¢y|v� v�v~}xy vwxy z{wx|}~~z�{ ©y§ }{y �y|v� �z|v~xy�v{xv y w} �v|v~©y� ²yw�z¡}|yw ¤¥ªy y ¤¥ª� �}vwx|y{ ��w ~}yx|� �zwxz{x�w ~y��z�w �v ��wz~z�{ �}v ¢y|v�

³y�´x}�� ¤�µwy{�� ��w wv{w�|vw �v ¢y|v� ¶¤

Page 72: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

·¸¹¸ º¸» ¼½¾½¿ ·¸ ¸À¸¼Á½»Ã ÄŠƽº ÇȺǽº ÀÈÉ»½º º¸ ǸºÁ»½Å Á½ÅÁÊ Æ½ ºÈÁ½¼ÈËÅÈÅÈ¼È½Æ Ì ÀÈÅ½Æ ¼ÊÇÊ Æʺ »¸º¾¸¼ÁÈÍʺ ÇÊÍÈÇȸÅÁʺà ĺÁ½ ÈźÁ»Â¼¼ÈËÅ ¸º ƽ ¾È¸·»½½ÅÉÂƽ» ¾½»½ ¸Æ ¾»ÊÉ»½Ç½ θ ·È»Èɸ ½ Ͻ»¸Æ ¾½»½ º½ÆÈ» ·¸ Šƽ¹¸»ÈÅÁÊÃ

ÐÈÉ»½ ÑÒÓà Խº ¼Â½Á»Ê ¾ÊºÈ¹Æ¸º ºÈÁ½¼ÈÊŸº ·¸Æ ¸Õ¸»¼È¼ÈÊ Ö×à ĺ¼»È¹È» ÂŽ Ÿͽ ÈźÁ»Â¼¼ÈËÅ ¾½»½ Ͻ»¸Æ Æƽǽ·½ ØÙÚÛÙÜÝÞßàÙÜáâÜãÞäâáÙàÃ帺¾Âæº ·¸ θ Ͻ»¸Æ Á¸»ÇÈŸ ·¸ ¸Õ¸¼ÂÁ½» ¸ºÁ½ ÈźÁ»Â¼¼ÈËÅç ºÂ ¹Êƺ½ ¾½»½ ÇÊŸ·½º·¸¹¸»è θ·½» ͽ¼é½Ãêà ĺ¼»È¹È» ÂŽ ÈźÁ»Â¼¼ÈËŠθ ë½É½ ½ Ͻ»¸Æ ÍÊÆÁ¸½» 뽼Ƚ ¸Æ ¸ºÁ¸ ºÈ º¸ ¸Å¼Â¸ÅÁ»½¸Å ÂŽ ¸ºÎÂÈŽ ¸Å ·ÊÅ·¸ ë½Ì ÂÅ ÅìǸ»Ê ¾½» ·¸ ÇÊŸ·½º Ì ë½¼È½ ¸Æ ʸºÁ¸ ºÈ ¸ÆÅìǸ»Ê ·¸ ÇÊŸ·½º ¸º ÈǾ½» í¸Æ ¼¸»Ê º¸ ¼Êźȷ¸»½ ¼ÊÇÊ ÅìǸ»Ê ¾½» ¸Å ¸ºÁ½ Á½»¸½îÃϽ»¸Æ ¾Â¸·¸ ÆÈǾȽ» ƽ ¸ºÎÂÈŽ ·¸ ÇÊŸ·½º ÇȸÅÁ»½º ·¸Á¸»ÇÈŽ ƽ ·È»¸¼¼ÈËŠ뽼Ƚƽ θ ·¸¹¸ ÍÊÆÁ¸½»Ãïðà ñ»ÊÉ»½Ç½» ½ Ͻ»¸Æ ¾½»½ θ ¸º¼½¾¸ ·¸ ÂŽ ë½¹ÈÁ½¼ÈËÅ »¸¼Á½ÅÉÂƽ»¸Å ¼½ºÊ ·¸ θ ¾Â¸·½ ¸Å¼ÊÅÁ»½» ÂŽ ¾Â¸»Á½ ·¸Æ Á½Ç½òÊ ·¸ ÂŽ ¼Â½·»½Ã óÈ ÅÊ ¸ôȺÁ¸ÂŽ ¾Â¸»Á½ç ·¸¹¸»è ½¾½É½»º¸Ã óÈ Æ½ ë½¹ÈÁ½¼ÈËÅ ÅÊ ÁȸŸ ¾Â¸»Á½º ¾Â¸·¸ ¾»ÊÍʼ½» θ

õö ÷½¾éÁÂÆÊ ÑÃøº½Å·Ê Æʺ º¸ÅºÊ»¸º ·¸ Ͻ»¸Æ

Page 73: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ùúûüý þÿûûú úýûüüÿû ü ýú �úû�ü ���üû�ú ü ýú �ú���úþ��� �úûú ��ü��ûü �ü ��üüü�þû���û üý �ûÿ�ûú�ú �ÿ��ü�ÿ ��ú �ÿ�üú ü� ýú �ÿý�ú ýú þ�úý ��üü ���ý��úû þÿ�ÿþýú"ü �úûú ü�üû���úû �� �ú �ú ûüþÿûû�ÿ �ÿú ýú �ú���úþ��� ���ü �ûÿ�ûú�ú ��üüûü��üû�û ��ú ����û�þþ��� ������� ú��ýúú �úûú ýú ����úþ��� ü� ��ü ýú �ú���úþ��� ü���þÿ��ýü�ú�ü��ü þüûûúú úü��� ü ��ú ����û�þþ��� ������� �úûú ýú ����úþ��� ü� ýú��ü �ú� ��ú ��üû�ú �� ýú� þ�ú�ûÿ ����úþ�ÿ�ü� �ûü�ü��úú� ü� ýú ����ûú ��� ùúûüýü�üû� ûüúý��úû ýú �úûüú �ûÿ��ü��ú

����ûú ��� ��ú�ûÿ ����úþ�ÿ�ü� ���þ�úýü� �úûú üý ü üûþ�þ�ÿ !#

�ú�$��ýÿ �%�ú�ÿ ýÿ� �ü��ÿûü� ü ùúûüý !8

Page 74: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

&&' ()*+),-,) , .,)/0 1,), 23/ 4*)), 35, 631/)4,))/), 7/ *96:;430*6<,)=,90/6' >5 /6:, 4,))/),? 0,6 <,00,6 :=/5/ 35, ,0:3), ,)9=:),)=, @ 0, 1=6:, 5* 43/5:,4*5 35, /623=5, A=5,0 A=B,' C, -/:, 7/ 4,7, 1=6:, /6:; -,)4,7, 1*) 35, -*5/7, 23/.,)/0 7/9/ )/4*+/) ,5:/6 7/ ,1,+,)6/' >5 0, A=+3), DEF 6/ =036:), 35, 7/ 0,6 1*6=90/61=6:,6 7/ 4,))/),6' G:),6 1=6:,6 13/7/5 6/) -;6 0,)+,6 @ :/5/) <,00,6 -;6 ,0:,6'&H' ()*+),-,) , .,)/0 1,), 23/ 4*)), 35, 631/)4,))/), 7/ *96:;430*6<,)=,90/6' >5 /6:, 4,))/), 0,6 <,00,6 :=/5/5 35, ,0:3), @ 35 ,54I* ,)9=:),)=,-/5://6:,90/4=7*6' >5 4,7, 35, 7/ /6:,6 1=6:,6 0, -/:, /6:; -,)4,7, 1*) 35, -*5/7,? 0,43,0 .,)/0 7/9/ )/4*+/) ,5:/6 7/ ,1,+,)6/' >5 0, A=+3), DEJ 6/ =036:), 35, 7/ 0,61*6=90/6 1=6:,6'

K=+3), DEF' L=:3,4=M5 =5=4=,0 /B/)4=4=* && K=+3), DEJ' L=:3,4=M5 =5=4=,0 /B/)4=4=*&H&D' >64)=9=) 35, =56:)344=M5 23/ )/4*0/4:/ 35 4,-1* )/4:,5+30,) 7/ -*5/7,6 7/43,023=/) :,-,N*' L/ +,),5:=O, 23/ /0 4,-1* /6:; )*7/,7* 1*) /623=5,6 /5 0,6 23/5* I,@ -*5/7,6' P7/-;6? 6/ 7/9/ 631*5/) 23/ 4,7, /623=5, 7/5:)* 7/ 4,-1* :=/5/35, -*5/7, @ 23/ .,)/0 =5=4=, 0, :,)/, <*0:/,57* I,4=, /0 /6:/ /5 0, /623=5,=5A/)=*) =O23=/)7, 7/0 4,-1*'&Q' P .,)/0 0/ +36:, 1,6/,) 1*) /0 9*623/ @ ,3523/ 43/5:, 4*5 35,9)RB30,? 6/ 13/7/ 1/)7/)' (,), ,@37,)6/ /5 /6:/ 1)*90/-,? ,5:/6 7/ 6,0=)? .,)/0

ST U,1V:30* D'W6,57* 0*6 6/56*)/6 7/ .,)/0

Page 75: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

XXYZ[ \] ^_X\[ `Y a_ZY`[\ b `Y\c]d\ `Ye[ ]Z[ Y\fYX[ `Y a_ZY`[\ fg[\ `Y \hijg_kg[a[g [ l[gYX c[g[ m]Y \nk[ Y\f[ cn\f[ `Y gYkgY\_i j]Y`YZ \]gkng a]op[\cgYk]Zf[\i qkZrgY\Y X[ c_\n^nXn`[` `Y m]Y p[b[ c[gY`Y\ m]Y nZfYgsnYg[Z o_Z l[gYX b\]crZk[\Y m]Y YX snZ[X `Y \] fg[bYof_gn[ Y\ft a[go[`_ c_g `_\ a_ZY`[\ YZ X[ an\a[Y\m]nZ[i u[`[ a_ZY`[ \Y c_`gt [Xo[Zv[g `Y\`Y X[ Y\m]nZ[ [ZfYgn_g aY`n[ZfY X[YeYo]onrZ `Y ]Z[ nZ\fg]oonrZ wxwyzw YZ [Xk]Z[ `ngYoonrZ{ \rX_ c_`gt [Xo[Zv[g\Y]Z[ a_ZY`[ c_g aY`n_ `Y ]Z wxwyzwi |[ac_o_ X[ fg[bYof_gn[ [fg[}Y\[gt c_gYZona[ `Y \h an\a[i ~d[\Y X[ snk]g[ ���� c[g[ ]Z[ c_\n^XY fg[bYof_gn[i ������l[gYX `Y^Y cg_^[g o[`[ Y\m]nZ[ [`b[oYZfY c_\n^XY YZ \] fg[bYof_gn[� YZo_Zfg[Z`_snZ[XaYZfY X[ o_ggYof[i j]Y`Y \Yg �fnX m]Y l[gYX }[b[ XY}[Zf[Z`_ X[\ a_ZY`[\o_Zs_gaY \nk]Y X[ fg[bYof_gn[{ `Y X_ o_Zfg[gn_� c]Y`Y m]Y`[g [fg[c[`_ YZ ]Z onoX_nZsnZnf_ [}[Zv[Z`_ p[on[ [fgt\ b p[on[ [`YX[ZfYi ��]d f[Z `nshonX gY\]Xf[gtcg_kg[a[g [ l[gYX c[g[ m]Y \nk[ X[ an\a[ fg[bYof_gn[ \n \Y cYganfY m]Y s[XfY ]Z[a_ZY`[ `Y }Yv YZ o][Z`_���i �]crZk[\Y m]Y l[gYX \Y YZo]YZfg[ `YZfg_ `Y ]Z[ p[^nf[onrZ gYof[Zk]X[goYgg[`[ m]Y o_ZfnYZY ]Z[ a_ZY`[ YZ ]Z[ Y\m]nZ[i jg_kg[a[gX_ c[g[ m]Y X[YZo]YZfgY� X[ gYo_k[ b \Y [c[k]Yi��i jg_kg[a[g [ l[gYX c[g[ m]Y Y\o[cY `Y ]Z X[^YgnZf_ m]Y Z_ o_ZfnYZYn\X[\i �[ \[Xn`[ Y\ft a[go[`[ c_g ]Z[ a_ZY`[ o_X_o[`[ YZ X[ cgnaYg[ Y\m]nZ[ `YXX[^YgnZf_ e]Zf_ [ X[ c[gY` `YgYop[ Y�fYgn_g� o_a_ \Y nZ`no[ YZ X[ snk]g[ ����i �\f[f[gY[ c]Y`Y XXY}[g\Y [ o[^_ _g`YZtZ`_XY [ l[gYX m]Y \Y `Y\cX[oY c_g YX X[^YgnZf_o_Z X[ nZ}[gn[ZfY `Y m]Y [ \] X[`_ `YgYop_ \nYacgY p[b[ ]Z[ c[gY`i ������cg_kg[a[g [ l[gYX c[g[ m]Y YsYof�Y YX aYZ_g cg_kgY\_ c_\n^XY p[on[ YX X_kg_ `Y \]_^eYfn}_ YZ o[`[ Y\m]nZ[ `YX X[^YgnZf_i

�nk]g[ ����i �nf][onrZ nZnon[X Yei �� �nk]g[ ����i �nf][onrZ nZnon[X Yei ��

u[chf]X_ �i�\[Z`_ X_\ \YZ\_gY\ `Y l[gYX ��

Page 76: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

��� ������ �� � ¡��¢£ ¤��� ¥¦§¨�� ©¢§���§� ª£ ©¢§��� ¢§©«  ��¨�¬� ¤��¦­� ¢§®¦¯­� ®¦¢ ¨�­©¯¢­¢ °  �­¢¬�§� ±©��§ ¢§®¦¯­�§² ¯­¨£¦³¢­¬� £� ¢§®¦¯­� ¢­ ®¦¢¡��¢£ ¯­¯¨¯� §¦ ©��¢�² ¨�­©¯¢­¢­ ¨£�´¢§ ¯­¬¯¨�­¬� ¨�¬� ¨£�´¢ £� ¬¯�¢¨¨¯µ­ ¢­ ®¦¢¡��¢£ ¬¢¥¢ §¢�¦¯�� ¶�§ ¨£�´¢§ §�­ £�§ §¯�¦¯¢­©¢§· �  �­¢¬� §¯�­¯¸¯¨� ®¦¢ ¡��¢£ ¬¢¥¢¯� ¹�¨¯� ¢£ ­��©¢² º ¹�¨¯� ¢£ �¢§©¢² » ¹�¨¯� ¢£ §¦� ³ ¼ ¹�¨¯� ¢£ ¢§©¢� ¡��¢£ ¬¢¥¢ §¢�¦¯�£�§ ¨£�´¢§ ¹�§©� ®¦¢ ££¢�¦¢ � £� ¢§®¦¯­� ¬¢£ ©¢§���² ¢­ ¬�­¬¢ ¬¢¥¢ �¤����§¢� ª­ £�¸¯�¦�� »½�º §¢  ¦¢§©�� ¦­� ¤�§¯¥£¢ ¥¾§®¦¢¬� ¬¢£ ©¢§���² £�§ ­¾ ¢��§ ¨¢�¨� ¬¢ £�§ �­¢¬�§ ¯­¬¯¨�­ ¢£ ­¾ ¢�� ¬¢  �­¢¬�§ ¢­ ¢§�§ ¢§®¦¯­�§�

¿¯�¦�� »½�º� À¯©¦�¨¯µ­ ¯­¯¨¯�£ ³ ©��³¢¨©��¯� � §¢�¦¯� ¬¢£ ¢Á¢�¨¯¨¯� ���Â� ������ �� � ¡��¢£ ¤��� ®¦¢ �¨� �¬¢ ¤¯£�§ ´¢�©¯¨�£¢§ ¬¢  �­¢¬�§¢­ ��¬¢­ �§¨¢­¬¢­©¢� Ã�¬� �´¢­¯¬�² ¨� ¢­Ä�­¬� ¢­ ¢£ ��¯�¢­² ¨�­©¢­¬�« ¦­� ¤¯£�´¢�©¯¨�£ ¬¢ ¦­� �  «§  �­¢¬�§� ¶� ¤�¯ ¢�� �´¢­¯¬� ´�¨Å�  ��¨��« ¢£ ¸¯­�£ ¬¢ £�§¤¯£�§ ®¦¢ §¢ ¬¢¥¢­ �¨� �¬��� ª­ £� ¸¯�¦�� »½�º� §¢  ¦¢§©�� ¦­� ¤�§¯¥£¢ §¯©¦�¨¯µ­¯­¯¨¯�£ ³ ¢­ £� ¸¯�¦�� »½�º¥ £� §¯©¦�¨¯µ­ ¸¯­�£�

ÆÇ Ã�¤Å©¦£� »�ȧ�­¬� £�§ §¢­§��¢§ ¬¢ ¡��¢£

Page 77: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÉÊ ËÊÌÍÎÏÐÉ ÑÒÓÔÕ Ö×ØÐÙÍÙÍÚ ÓÛ

ÜÉÝÞßÏàÚ ÑÕáâÉãäÚ àÚâ âØãâÚÐØâ äØ åÉÐØà Óæ

Page 78: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

INSTRUCCIONESQUE SE LLAMAN A SÍ MISMAS

������ �� �� ��� ������� � ��� ��� �������� ��� ��� �������� �� �������� �� ����� ����� � ����� �� �������� �� ������ �������� ������ �� ������ � �� ������� �� ����� ����� �� ��� ������ �� ��������� �� �������������� �� ���� ��� ������� � �� ������ ����� �� ��� ��� ��������������� �� �������� �� ������� � �� ���� ����� �� ������� �� ��� ������� !"#$ "%&#!'((")% !*('!&"+�� �� �������� ������ ����� �� ������� ��� �,� �,�������� �������� ��� ��� � ������ �� ��� �� ������� ��������� ��� ��������� ��� ����� �� ��� ��� ������� ��� ������� ���� ����� �� ��-./0/ 12345678 93 :;8<=>??:7;38 =3?>=8:@A8BCDEFGHIJ DE KELHME NJ HOLNEOECMJPHQC HMEKJMHRJ IE NJ HCDMKGPPHQCSTSUVSWXSYZSW[S\]^ LKEDECMJIJ EC EN LK_FKJOJ `abcd IEN PJLeMGN_ fghBijkBlkmBncljkopdmqqjrk JRJCsJltJDMJlLJKEI qrurujBkpdco vKECMElIEDLEwJI_ xcyJRJCsJzmCJ HOLNEOECMJPHQC KEPGKDHRJ IE NJ OHDOJ HCDMKGPPHQC ED NJ DHFGHECMEghBijkBlkmBncljkopdmqqjrk JRJCsJltJDMJlLJKEI qruroj vKECMElIEDLEwJI_ BkprkqBojkjqjr

qJLeMGN_ {a jCDMKGPPH_CED |GE DE NNJOJC J DH OHDOJD }

4

Page 79: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

~�~��~�~�~��~��~��~��~��������� ���~� ����~� �~ ����������� ������� �¡ ��¢�� ����� �������£���� �� ����~��������~ ����¤�¥���¥��¦¥§¨���©ª«¦¬¬�­� ������~�~������� ¬­®­®�¥�ª«¨© ����~��~��������� ¯¨°���~�~��~���±�����~��¥���¥��¦¥§¨���©ª«¦¬¬�­� ������~�~������� ¬­®­©� ����~��~��������� ¯¨°���¬�­���~�~��~���±�����~�������~�~�����������¥² �����~�~ ³´µ¶¨« �� �~ ������� ��������~ ��� �����~�~ ·µ¶¨«µ ¦�����~��� �������~��� �� ¶~���� �� ����¸ �£����~� �� �¹�������µ ¥� ����� �~��� �� �£����~ ±������~��� ������������� ��������~� �� �������º� �~ ����������� »¼½¾¿ÀÁÂ� ~��±�����~�Ã~ �� �� ��� ��~�~� �~� �����������~� �� ��~��~�µ¨���~ �� ��������~ �~ ��������� �~��~¤ ¶~��� ���¸ �� �� ������ ������ ~����� º �� �����~ ��~ �����~ �� ~����~ ��±���~ �� �~ �~��� ³µ ¶~��� ��£� �������~��~ �����~� ���~��~��~ º ~�~��~� ~� ����� �� ��£�� �� ��~��~� �� �~� ±�� �������� ~�����µ ¥� ������ �� ������� Ä ��~��~� ~� ���� ~���� �� �������~� �~ �����~� ��£� ��£��Å ��~��~�� ���� �� ������~ �� �~ �����~ Ædzµ¬����������� �� ��������� ~�������� ���������¤ �� ¶~��� ~�~��~ ��~��~��~ ~� ���� ~���� �� �������~� �~ �����~� ��£��¸ ~�~��~� ��� ��~��~� �����È��� �~£�� �������~�� �~ �����~µ ©� �� ������ ±�� �~ ����������� ��ÉÊ����� ����~ ~�~£� ���~ �~��~� ������� ������ �� ��������� ~�������� �~�~ ���������~� �~ ����~�����������¤Ë~�� ³µ ©� �~º �����~ �� �~ ��±���~� �������� ���~����� �����~� ~� �����µË~�� ̵ ©� �� �~º �����~ �� �~ ��±���~� ~�~��~� ��~ ��~��~� ��~�~� ~ ��ÉÊ����� º���~������ ~�~��~� ��� ��~��~�µ¬��� �� �£����~� �� �� �� ������ ���¸ �~ �����~� ���� �� �������~�¸ �� �~�� ³ º ���~£�¸ ��~�~�~ ��������~µ ©� �~ �����~ �� ���¸ �� �� ������� ~� �¹����~� �� �~�� Ì �����£���~ �� ������ ~ ��� �¸� ��±��Í�¤ ��� ����� ¶~��� �� ~����� ��~ ��~��~ ~ �~

Î ¬~�Ã���� Ƶ ������������� ±�� �� ��~�~� ~ �� ����~�

Page 80: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÏÐÑÒÓÔÕ ÖÒ Ô×Ø ÙÔ ÑÒÚÒÛÜÓÔÓ ÓÒ ÙÔ ÙÙÔÏÔÓÔ ÝÒÚÞÝÛÜßÔ ÒÑ ÒÙ àÔÛÐ áÕ âÙ àÝÐãÝÔÏÔääÕåæç èÞÒ ÛÒ ÙÜÛéÔ Ô ÚÐÑéÜÑÞÔÚÜêÑ ÜÏàÙÒÏÒÑéÔ ÒÛéÔÛ ÜÓÒÔÛë

Ôì íìîÜãÕ ïðäÕ ñÑÔ éÔÝÒÔ àÔÝÔ ÞÑ àÝÐãÝÔÏÔ ÝÒÚÞÝÛÜßÐÔì òÜéÞÔÚÜêÑ ÜÑÜÚÜÔÙ íì òÜéÞÔÚÜêÑ óÜÑÔÙôõôöô÷øÖâøæùúôâõûâåæçâüøâòûæøâõøöæüüâ ä æýâõôÖæ ä ýôâõÖ÷øæü âòûâ ö÷õ þù÷õâÖæòøâõøòñøú÷üòæÿ�æ� ä ù÷õâÖæòøâõøöæüüâ ä æýâõôÖæ ïÿîôõøÖâøæùúôâõûâôõôöô÷øÖâø�ç÷�çæùæÖâîôõâøõñâýæøôõòûçñööô÷õ ÒÑÚÞÒÑéÝÔ ö÷ù÷òô ÑÐø�ÞÑéÐøÔøÏÐÑÒÓÔ âõû÷õöâòôõôöô÷ÔßÔÑ�ÔÿÒÑÚÞÒÑéÝÔÿÔßÔÑ�ÔÿÔßÔÑ�Ôÿîôõòôõ÷ãÜÝÔøÔøÙÔøÜ�èÞÜÒÝÓÔÿôõôöô÷øÖâøâ�âöñöô÷õÒÑÚÞÒÑéÝÔÿÔàÔãÔéÒÿîôõøÖâøâ�âöñöô÷õ

öÔàØéÞÙÐ ïÕ ôÑÛéÝÞÚÚÜÐÑÒÛ èÞÒ ÛÒ ÙÙÔÏÔÑ Ô ÛÜ ÏÜÛÏÔÛ 6

Page 81: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������� ������" �������� ���� �������� �� �" � ��"�!�� !� 0���"# �� �$���%� ���� "�� ""���!�������� %�� &���� '�� �� � � � ���� %�( "� ������� )�* �!��+�# �" � ��"�!��������!� ��+" �� "� � �� ���� ������� )� � ����������# ����!� "� ""���!� ������ %����� ��* " �,���� , ��" �� �� ! ,������ �" '�� ����!� �" ""���� � ���"'� �� ������� )�*-./. 12343537 89:;87<=37 9 <>7?3>:<37 59 <>7?8;::<@>97�&��� �� ���� !��� "� '�� ����!� ����!� "� ����!� ���+ � ��� ���!�� !�" ��$��*0���" �%��(� ��� ���!�� A ""��� � BCDEBCFGH* ��� ������� �� ���!� ��������"��������# �� '�����!� � "� �� ���� ""���!� � BCDEBCFGH ���� "� �� ����IJKLMJNIM OP QM IJKLRSNNITJ BCDEBCFGH A � "� �����!� ""���!� ���� "� �����!� ������ � !� "� ������� )� BCDEBCFGH ���� � ,����� ������� ���� ! ,�������* U������!� ������ � !� BCDEBCFGH �$� ��� '�� "� ����$� CVWXECFVWHWYVCBZH ��,�"�� A ��� "� ����� ������� [\GHWHW]HW\^_E\BGZH* ��� � ���� )� �� ������� �� "��� �� ����� �)! ���# !��!� �� ����"�� "� ������� )� '�� ���+ ��������!� ��!� ������ �`aRIbPRM IJKLMJNIM KPcSJOM IJKLMJNIM�����de����fg�dhh� � �����de����fg�dhh� ���������� h � ��������� h � f� ���������������!� �g �hf f� ���������������!� �g �hf���h� ���h� �%��(�i �%��(�iPJNSPJLRMi ���������i�%��(�i �%��(�i�%��(�i �%��(�i��� ���f�� f�� � �����"�� ('� ��!�i cIRMjMjQMjIklSIPROMi����� !� ���� �� "� �����!� ������ � A ��� m��� "� ""���!� � BCDEBCFGH !� "��� ���� ������ �* ����m�# "� ������ )� ���� �n� ��� "�� ������� ���� ��������� !�

o pqrstuvw xy z{|t}u~~�w{�| �u� |� vvq�q{ q |� ��|�q|

Page 82: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�� ������� ���������� �� ����� ������ �� ��� ����������� �� ����� �������������� ������� ����� � ���������� �� �� ����������������  ¡¢£¤¥¦§£¨ ¤©ª«¤¨¥¬£¨­� ������� ��������� ������ ®�� �� ����� ����� ���������� �����¯���� �� ������������������ ����������� ���� �� �� ���� ��������� �����°� �� �������� �������� ������� ����� ��� ���� �� ������������� �� ������ ����� ������ � ����� �� ������� ������� ����������� ­��� �������������� �� ���������� ��� �� ���� �±���� �� ��������� ®�� ���� ®�� ��� ���������� ���������� ���� ����������� �� �� �������� ������������²�� ���������� ���������� ������ �� ���±� ������� ��������³´� ­µ���� �� ������ �� ����¶� �� �� �������� ­µ���� �� ����¶� �·���� �� �� ����� ������ �� ��¸ ������� ���������� ¹ ������������� �� �� ������ ���� º»¼½ ¾»¼¿À�� Á� �� ����¶� �� �� �� �·����� �� ������ �� �������� �� ������ ������ � ���������� �� ����� ����¶� ¸ �� ���� �� ������� ��������� ���� ����������� ¹ ������������� �� �������� º»¼½ ÂÃÄźÆÂǽ ½ È¿ºÅȼÂǽ�É����� �� ����� �� ������ �������� ���� ��¯ ®�� �� ������ �� ���� ��������� �� ������� ���� ��� ¸ ��� ��®��¶�� ����� ®�� �� �����¯� �� ���� ����� ­� ������������������� �� ���������� ����������� ��� �� ������� �� �����¯�� ���������������� ÊËÌÍÎÏÐÎÑÍÊ � ÊËÌÍÎÏÐÎÑÍÊÌÊËÎÐ ���� �� �������������� ������� ���� ¸ ��� ���� �������������� ÒÓ¤©¡ ¨«§ÓÔÕ£ ÔÖ§©¤£¨¹���� ������� ���� ×���� ����� ����� ��� �±������ ­� ������ �������� ������������� ��� �±������ Á� ����� ������ ����� ���� ÃØٿȽ¼ Ä¿ ¾»¼¿ Ú � ¾»¼¿ Û�Ü����� �� ���� ´� �� �±���� � �� ���������� ���� ´´´� �� �±���� Ý ���� ´´´´´ ¸��· �������������� Þ�� ������������ �� ��� � �����¯�� ��� �±����� �� ���� ´�

É��·���� ß� à������������ ®�� �� ������ � �� ������ á

Page 83: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

âãäåæâç å èçé ãäãêëìëìçé ãè íéç âã èå îåéã ïð ñéòó éíôåê õ ö ÷ øíãâã êãøêãéãæùåêéãëçôç ãæ èå úìûíêå ÷üïåð ýè êãéíèùåâç éã ôíãéùêå ãæ èå úìûíêå ÷üïîðýè øêçûêåôå þïñðÿñ�ó èìéùåâç å ëçæùìæíåëì�æó ìôøèãôãæùå ãè åèûçêìùôç âãêãëçûãê èåé ôçæãâåé âã èå ëåèèã ï ö ëçèçëåêèåé åè úìæåè âãè æ�ôãêç �íã ãéù�êãøêãéãæùåâç ãæ èå ëåèèã þð

å� î�'ìûíêå ÷üïð ýè øêçûêåôå þïñðÿñ� �íã éíôå æ�ôãêçéå� �ìùíåëì�æ ìæìëìåè î� �ìùíåëì�æ úìæåè)�)�)��ý�ñ�)ý� ýÿñ�ý �ý� ñ�ý���ñ ý ï ñ�ý�)ñ þ �)ý���ñ ý� ý ��� ���ýñ��ý���/��� �ñ ��ñ� þ ��ýñ��ý���ñ ý þ ñ�ý�)ñ þ��ñ� þ ��ýñ��ý���ñ ý þ ñ�ý�)ñ ï��ñ� þ ��ýñ��ý���ñ ý þ ñ�ý�)ñ õ��ñ� þ ��ýñ��ý���ñ ý þ ñ�ý�)ñ ÷��ñ� þ ��ýñ��ý���ñ ý ï ñ�ý�)ñ þ��ñ� þ ��ýñ��ý���ñ ý ï ñ�ý�)ñ ï��ñ� þ ��ýñ��ý���ñ ý ï ñ�ý�)ñ õ�')��ý�ñ�)ý� ý)�)�)��ý������ññý')�ý��/ý�ñ�)�� �/��)�� ûìêå�å�èå�âãêãë�å ���)�)�)�ûìêå�å�èå�ì��íìãêâå�ûìêå�å�èå�ì��íìãêâå�ûìêå�å�èå�ì��íìãêâå�

� �åøòùíèç ÷ð )æéùêíëëìçæãé �íã éã èèåôåæ å éì ôìéôåé

Page 84: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

���.����������!���"#$�%%�&� (*+(,-0,�1(-,22(3* %&4&���%�&5(-6�6�76�(89:(,-16;5(-6�6�76�(89:(,-16;���.����������!���"#$�%%�&� 6+6*86�<6=06�>6-,1 %&4&4���#$!" ?-,*0,�1,=>,@613 A!B6+6*86;.����������!���"#$�%%�&� 6+6*86�<6=06�:70(C6�C3*,16 %&4&4���#$!" @:*03�6�C3*,16 A!B6+6*86;.����������!���"#$�%%�&� +,�6�(*(2(3�2677,�6--(D6 %&4&���%�&(*+(,-0,�1(-,22(3*;6+6*86�<6=06�>6-,1;5(-6�6�76�1,-,2<6;6+6*86;5(-6�6�76�1,-,2<6;���.����������!���"#$�%%�&� +,�6�(*(2(3�2677,�6D6@3 %&4&���%�&(*+(,-0,�1(-,22(3*;6+6*86�<6=06�>6-,1;5(-6�6�76�(89:(,-16;6+6*86;5(-6�6�76�(89:(,-16;���.����������!���"#$�%%�&� -,235,�C3*,16= %&4&���%�&4���#$!" @:*03�6�C3*,16 A!B���%�&-,235,�C3*,16;6+6*86;������

%6>E0:73 FG �*=0-:22(3*,= 9:, =, 776C6* 6 =( C(=C6= H

Page 85: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

IJKLMJNMOJPQNLMRSTOUULVM WXYXWZN[X\]^Z_NZYN`a\ZY UVbVLMLULVZcZ\dZNeZ_fZNgYfa[ZN[X\]^ZhbLJMSTQR WX\N[X\]^Z_N]\N_gNiXY_Z jQkLMLULVWXYXWZN[X\]^ZhZcZ\dZhKLMKLMIJKLMJNMOJPQNLMRSTOUULVM _g[Z UVbVLMLULVl]WXm]N[X\]^Z_hc]NZNa\aWaXNWZYY]NZiZnXhWXYXWZN[X\]^Z_NZYN`a\ZYhc]NZNa\aWaXNWZYY]NZllaiZhKLMLMLULVNIJNJoJUOULVM_g[ZhZpZmZf]hKLMNIJNJoJUOULVMKLMNIJNqTVrTQbQUX\_a^sl]_] ZeXlZ YZ _g[Z ^] ^X_ \t[]lX_ p]lX _a\ ^]_flgal ]Y pla[]l \t[]lXu ]Y^] YZ WZYY] vu WX[X YX [g]_flZ YZ `amglZ wxyz

{ UZp|fgYX wz L\_flgWWaX\]_ }g] _] YYZ[Z\ Z _a [a_[Z_

Page 86: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

~� �������~ ���� �� �����~�~ ������� ��� ���~ �������~� ����~���� �����~� �� ����~���� ���~��� �����~�~ ������� ��� ������ ���������~ ��~ �������� ��������~ ~� �������~ � �~ ���~  �  �� �¡����� �~� ���� ��  ���~¢£¤£¥£¦§¨�§�©�£�¤ª�����«§��ª�§�¤§¥�««� � �¬�¤£¨� � ¬£�¤¨¦§�« ��ª� ¥¦¤ �­­©¦¤�¨��§�¤§�®§�¦«�� ¯°�± � ©¦¤�¨��§�¤§¥�««� � �¬�¤£¨� �¯°�± � ©¦¤�¨��§�¤§¥�««� � �¬�¤£¨� �¯°�± � ©¦¤�¨��§�¤§¥�««� � �¬�¤£¨� �¯°�± � ©¦¤�¨��§�¤§¥�««� � �¬�¤£¨� �¯°�± � ©¦¤�¨��§�¤§¥�««� � �¬�¤£¨� �¯°�± � ©¦¤�¨��§�¤§¥�««� � �¬�¤£¨� �¯°�± � ©¦¤�¨��§�¤§¥�««� � �¬�¤£¨� �¯�£¤§¨�§�©�£�¤ª�£¤£¥£¦§¨�§²�¦³��©�¨��£¤�§¤®�¬�§£¤�ª�®¥¥£¦¤ ���~§~§�~§ ����´~ ¥¦©¦£¤£¥£¦���~§~§�~§�µ����� ~¯���~§~§�~§�µ����� ~¯���~§~§�~§�µ����� ~¯�£¤¨��£¤�§¤®�¬�§£¤�ª�®¥¥£¦¤ ��������§ �������� ¥¦©¦£¤£¥£¦���~§~§�~§�µ����� ~¯���~§~§�~§�µ����� ~¯�£¤¨��£¤�§¤®�¬�§£¤�ª�®¥¥£¦¤ ~�~�µ~§´~��~§�~��  ¥¦©¦©£�¤ª��� ������§ ����¶~ � °�·~�~�µ~¯¨��£¤�§¤®�¬�§£¤�ª�®¥¥£¦¤ ~�~�µ~§´~��~§�����~§���� ~ ¥¦©¦©£�¤ª��� ¶����§~§���� ~ °�·~�~�µ~¯

¥~�¸���� �� £������������ ��� �� ��~�~� ~ �� ����~� ¹

Page 87: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

º»¼½¾»¿¾À»Á¿½¾ÃÄÅÀÆƽǾ ÈÉ¿Ê¿ËÌËÍËοÍÊÏÏÉ¿ÊÐÐËÑÊ ÆÇÒǽ¾½Æ½ÇËÌÈËÉÐÓÉ¿ÔËÐÉÍÍËÎÌÕÊÈÊÌÖÊ¿×ÊØÓÊ¿ÙÊÐÉÔÕÚËÐÊ¿Ê¿ÏÊ¿ÔÉÐÉÍ×ÊÕÊÈÊÌÖÊÕÚËÐÊ¿Ê¿ÏÊ¿ÔÉÐÉÍ×ÊÕ¼½¾º»¼½¾»¿¾À»Á¿½¾ÃÄÅÀÆƽǾ ÈÉ¿Ê¿ËÌËÍËοÍÊÏÏÉ¿ÊÑÊÛÎ ÆÇÒǽ¾½Æ½ÇËÌÈËÉÐÓÉ¿ÔËÐÉÍÍËÎÌÕÊÈÊÌÖÊ¿×ÊØÓÊ¿ÙÊÐÉÔÕÚËÐÊ¿Ê¿ÏÊ¿ËÖÜÝËÉÐÔÊÕÊÈÊÌÖÊÕÚËÐÊ¿Ê¿ÏÊ¿ËÖÜÝËÉÐÔÊÕ¼½¾º»¼½¾»¿¾À»Á¿½¾ÃÄÅÀÆƽǾ ÐÉÊÏËÖÊ¿ØÝÞÊ ÆÇÒǽ¾½Æ½Çý ÛÝÌÓοʿÞÎÌÉÔÊ »¾ÄǾƻý¾½Æ½ÇÊÈÊÌÖÊÕÐÉÊÏËÖÊ¿ØÝÞÊÕÍÎÏÎÍÊ¿ÞÎÌÉÔÊÕÊÈÊÌÖÊÕ¼½¾Ã½¾Ç½¾½Æ½ÇÈÉ¿Ê¿ËÌËÍËοÍÊÏÏÉ¿ÊÑÊÛÎÕÊÈÊÌÖÊ¿×ÊØÓÊ¿ÝÏÓËÞÊ¿ÞÎÌÉÔÊÕ¼½¾¼½¾º»¼½¾»¿¾À»Á¿½¾ÃÄÅÀÆƽǾ ØÝÞÊ ÆÇÒǽ¾½Æ½ÇÐÉÊÏËÖÊ¿ØÝÞÊÕÈÉ¿Ê¿ËÌËÍËοÍÊÏÏÉ¿ÊÐÐËÑÊÕ¼½¾½¾½Æ½Ç¿º»¿»ß»ÆÀƽǾØÝÞÊÕ

àá ÆÊÙâÓÝÏÎ ãä ½ÌØÓÐÝÍÍËÎÌÉØ ÜÝÉ ØÉ ÏÏÊÞÊÌ Ê ØË ÞËØÞÊØ

Page 88: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

åæåçåèéêëìíîïðîðñðòóòìôíëìíîïðîõöô÷öøùøúé ûéüé éýèþûÿå( �þÿûåû�ýå�é�èé �å ÿ�ýè(þ��ÿ�� (é�þ(ýÿ�å ����� ��������� ����� ������� �� !�� � úé �å å éý�(ÿüÿ( þ� æ(�ç(å�å æå(å þ�å èå(éå ûéýå"ÿå�èé æå(å #å(é�$ é����è(å( þ�èéý�(� é� þ� �åüé(ÿ�è�� ð� �å "ÿçþ(å %�% ýé �þéýè(å é� �åüé(ÿ�è� & é� èéý�(�D(éæ(éýé�èåû� æ�( û�ý ���éûåý é� þ�å éý'þÿ�å)� *å�è� #å(é� ���� é� èéý�(� ýéæþéûé� þüÿ�å( é� �þå�'þÿé( éý'þÿ�å ûé�è(� ûé� �åüé(ÿ�è�� +å èå(éå ûé #å(é� éýé����è(å( é� èéý�(� & åæåçå(ýé�

ëÿçþ(å %,%� #å(é� üþý�å�û� þ� èéý�(�#å(é� æþéûé �����å( þ�å ���éûå é� �åûå éý'þÿ�å æ�( û��ûé æåýé- æå(å �� ����é( åÿ�èé�èå( ûÿ�.åý éý'þÿ�åý� úÿ �å ÿ�ýè(þ��ÿ�� /��0� 1��2�2 �å å ��é�å( å #å(é� .åýèå é�èéý�(�- é� ýÿçþÿé�èé å�ç�(ÿè�� (é�þ(ýÿ�� .å�é �å èå(éå$ å�å�3å( þ�å �þåû(å å� æ(ÿ�é(æþ�è� �å(ûÿ�å� ýÿ �� .å& æå(éûê ýÿ .å& þ�å ���éûå- (éç(éýå( å û��ûé éýèåüåê ýÿ .å&û�ý ���éûåý -åæåçå(ýé- èé(�ÿ�å�û� åý4 é� æ(�ç(å�åê ýÿ �� .å& ���éûå- ýé �����åþ�å é� �å éý'þÿ�å & ýé ��å�å (é�þ(ýÿ�å�é�èé å /��0� 1��2�2� úÿ é� æ(ÿ�é( ÿ�èé�è�"å��å- ýé (éæÿèé é� æ(��éý� ��� ��ý ýÿçþÿé�èéý è(éý æþ�è�ý �å(ûÿ�å�éý (éýèå�èéý� úÿ é�èéý�(� é5ÿýèé- éýèé å�ç�(ÿè�� �é�éýå(ÿå�é�èé �� é��þé�è(å� ø ���èÿ�þå�ÿ�� ýé�þéýè(å é� æ(�ç(å�å 67�#øö 'þé ÿ�æ�é�é�èå éýèé å�ç�(ÿè��$898:8;<=><?@A8>9B>

òåæ4èþ�� %� ì�ýè(þ��ÿ��éý 'þé ýé ��å�å� å ýÿ �ÿý�åý CC

Page 89: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

EFGHIJHKLFJHMJNFIIH O FPHMQRF S PQHMRTJFI HKLH NTM UVVWTMHRFKJHMJKXJYTIKF Z[FGHRJ\XMLTJFJNFIIH U RHJFPHMQRF S F ]Z[FGHRJ\XMLTJFJNFIIH ] RHJFPHMQRF S F ]Z[FGHRJ\XMLTJFJFPHMQRF U RHJNFIIH S F ]Z[FGHRJ\XMLTJFJFPHMQRF ] RHJNFIIH S F ]Z[FGHRJ\XMLTJFJNFIIH ^ RHJFPHMQRF S F _Z[FGHRJ\XMLTJFJNFIIH O RHJFPHMQRF S F OZ[FGHRJ\XMLTJFJNFIIH O RHJFPHMQRF ] F ]Z[FGHRJ\XMLTJFJNFIIH ` RHJFPHMQRF O F ^Z[FGHRJ\XMLTJFJNFIIH _ RHJFPHMQRF O F ^Z[FGHRJ\XMLTJFJNFIIH ` RHJFPHMQRF ` F `Z[FGHRJ\XMLTJFJFPHMQRF ^ RHJNFIIH ` F `Z[FGHRJ\XMLTJFJFPHMQRF _ RHJNFIIH O F `Z[FGHRJ\XMLTJFJFPHMQRF _ RHJNFIIH O F ^ZaFb S WTMHRFKJHMJNFIIH ` FPHMQRF ^ZcQMJRHJFWYQHMLHQMQNQTJRHJ[GTdGFWFRHcQMHJMXHPFJQMKLGXNNQTM efgehijhJkeihllemf NTWTQMQNQTneioJoJpoJeqrsehikoZneioJoJpoJeqrsehikoZcQMRHcQMHJMXHPFJQMKLGXNNQTM tishuoJhvrsefo NTWTQMQNQTKQ wihfjhJkhvthxokm HMLTMNHKQMQNQTogofqoZKQ fmJxsfjmJoJymfhko HMLTMNHKQMQNQTlmpmloJymfhkoZusvloJjhvmimZefgehijhJkeihllemfZogofqoZefgehijhJkeihllemfZcQMKQMTQMQNQTihlmnhJymfhkoZKQ xsfjmJoJymfhko HMLTMNHKotonojhZ

z{ |}~����� �� ������������� ��� �� ��}�}� } �� ����}�

Page 90: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

����������������������������� ¡���� �����������¢������� ¡���� �������£��£��£��£��¤¥£��¥��¦¥§¨����©ª¦����� «¬­���¡�­� � ��®�������̄ ¬�«���­°¬����±� ��������¢°¬�� ���¯ ¬�«���­°¬����±� ��������¢°¬�� ���¯ ¬�«���­°¬����±� ��������¢°¬�� ���¯ ¬�«���­°¬����±� ��������¢°¬�� ���£���������¤¥�¥²¥�¦����«¬­���¡�­� ���¯�±�¡��£���¤¥�¥²¥�¦����£���¤¥�³ª�´ª¨®¨µ¶·¸¹¸ º»¸ ¼½ ¾¿¹·À»ÁÁ¾¶¿ ÂÃÄÅÆÇÈÅÉÊÄËÌÇ ¸¹ ¼½ º»¸ À¸½¼¾Í½ ¼½ ¼¼½Î½Ï½ À¸Á»À¹¾Ð½ ½ÅÌÑÄÅÌÒÃÇÈÒÅÉÓÃÓÔ Õ¿ ¸¹·¸ Á½¹Ö× ¹¸ ·À½·½ ϸ »¿½ ØÙÚÛØÜÝÞß ÝßàÝØÙÚáâãÅÌÑÄÅÌÒÃÇÈÒÅÉÓÃÓ ¼¼½Î½ ½ ÂÃÄÅÆÇÈÅÉÊÄËÌÇ ä å¹·½ ¼¼½Î½ ½ ÅÌÑÄÅÌÒÃÇÈÒÅÉÓÃÓÔ Õ¿ ¼Ö¹Á½¹Ö¹ ½¿·¸À¾ÖÀ¸¹× ¹¸ ·À½·½æ½ ϸ »¿½ ØÙÚÛØÜÝÞß àÝØÙÚáâç ¸¹ ϸÁ¾À× ¼½¹ ¾¿¹·À»ÁÁ¾Ö¿¸¹ ¹¸¼¼½Î½æ½¿ ½ ¹è ξ¹Î½¹ ϸ¿·ÀÖ Ï¸ ¹» ξ¹Î½ ϸ龿¾Á¾¶¿Ôê¼ ÁÖÀÀ¸À ¸¼ ëÀÖìÀ½Î½ ÁÖ¿ ¼½ ¹¾·»½Á¾¶¿ ¾¿¾Á¾½¼ ϸ ¼½ é¾ì»À½ íîí× ¹¸ Öæ·¾¸¿¸¼½ ¹¾·»½Á¾¶¿ ÎÖ¹·À½Ï½ ¸¿ ¼½ é¾ì»À½ íîï½Ô Õ¹ ¾¿·¸À¸¹½¿·¸ ¿Ö·½À º»¸ ¹»Á¸Ï¸ ¹¾ ¿Ö ¸ð¾¹·¸¸¼ ·¸¹ÖÀÖã ñ½À¸¼ ϸëÖ¹¾·½ »¿½ ÎÖ¿¸Ï½ ¸¿ ·ÖϽ¹ ¼½¹ ¸¹º»¾¿½¹ º»¸ ¸¹·ò¿ ÁÖ¿·¸¿¾Ï½¹ ¸¿¸¼ À¸Á¾¿·Ö Á¸ÀÀ½ÏÖ ä À¸ìÀ¸¹½ ½ ¼½ ëÖ¹¾Á¾¶¿ ¾¿¾Á¾½¼× ÁÖÎÖ ¹¸ λ¸¹·À½ ¸¿ ¼½ é¾ì»À½ íîïæÔÕ¹·½ 󼷾ν ëÖ¹¾æ¾¼¾Ï½Ï ëÖÏÀè½ ô½æ¸À ¹¾ÏÖ ¼½ ·½À¸½ ¾¿¾Á¾½¼× ¸¹ ϸÁ¾À º»¸ ñ½À¸¼Ï¸ëÖ¹¾·¸ »¿½ ÎÖ¿¸Ï½ ¸¿ ·ÖϽ¹ ¼½¹ ¸¹º»¾¿½¹ º»¸ ë»Ï¾¸À½ ½ÁÁ¸Ï¸À ¹¾¿ Öξ·¾À ¿¾¿ì»¿½Ô

õ½ëè·»¼Ö íÔ ö¿¹·À»ÁÁ¾Ö¿¸¹ º»¸ ¹¸ ¼¼½Î½¿ ½ ¹¾ ξ¹Î½¹ ÷ø

Page 91: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ùú ûúüýþÿ�ù ���� �ý�ÿù�ý� ýù� � � ���þ�ù�ù ������ùú �ý�ÿù�ý� ýù� �ý �ý�� � ���� ûú �ý�ÿù�ý� ýù� �ý � �ý�� � �������� ������ !ù ý���ÿ��ý� � � �ÿ��ý"ù �ý � ��ù�ù ù �ý �ý��ù# $ù � ù �ý� ��ù� � ���� �ÿ �ý��ù � ýý�ý� � ý�ý� ��ù� � ù ��ù"%� � ���ù� ý���ÿ��ý� �� &ÿù�� ÿù�ù� ù � �ÿ � � ���" � � �ýù� ÿ ù�þ��ý��� � �ÿ��ý"�# ù � ÿ�� � ���þ�ù�ù� �ÿ��ý"� 'ÿ � �û�ý � �ÿ��ù � � �(� � �ý��� $ ��ù�� 'ÿ � ���þ�ù�ù ý� �ù�ý"� 'ÿý"ù� � � )�� � ÿ * �*� þ �ù� 'ÿ � ù��ý�ù ù ÿù þ�ù "ù�ý �ù� � �ù� ù� $��� �� �ù�� � �'ÿ � �ÿ��ý"� � ý�����ù� �ù ���ÿ�ý� � ���û� �ù�� +ù � �ýù � ��� ù�þ��ý���� � �ÿ��ý"�� �ù�ý�ù ����ù� ù�þÿù ���ù � � �ÿ�ý�ÿù �ù� ù � � � ��ýù�� �ù�ù,� ù ÿù � �ù�ù,� ÿ ���� �(� � 'ÿ ,�# � ���ù�ù� 'ÿ � ù��ù� ù� ýù� ÿ �ù�ù,� �-ý�� ��� � ���.�ù ÿù ���ÿ�ý� �� �ÿ��ý"ù���/� 01�234345��� 6ù� � ÿ ���þ�ù�ù 'ÿ � ù�ý� �ù �ÿ�ù � ��� 7� ��� � �� ÿ�ù�� �ù ûù� 8�) ûù� 8# � 7� �� � � � �� � �ù ���� ��# $ù 'ÿ � 9 : ; 8< = : > ?@A �7� �� � � � �� � �ù ���� �B�# �ÿ ��� 'ÿ � 9 : ; 8C = D ; 8< = : > ?@A $ �7� �� �� ���� �B��# �ÿ � �� 9 : ; 8E = D ; 8C = : ; 8< = : > ?@F

GH &ù�-�ÿ�� �� I���ÿ��ý� � 'ÿ � ��ù�ù ù �ý �ý��ù�

Page 92: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

JK LMNOPQRSTOT UVT WXSTY ZVTQT [MYM[XSOT PNP[PXY\TN]T TN [VXYUVPTSZMOP[P^N OM_ST VNX ZXSTQ `MSPaMN]XY QT ]X\XbM cXSPX_YTd [M\M OT PYVO]SX TN YXePfVSX ghiXj kO[SP_PS VN ZSMfSX\X UVT [MYMUVT X WXSTY X YX \P]XQ QT YX ZXSTQ`MSPaMN]XY [M\M TN YX ePfVSX ghi_j lmnopq PS XY Tr]ST\M QTST[`M QT YX ZXSTQ sQTOZVRO ZMS [XQX QMO cT[TO UVT XcXN[T X YX PaUVPTSQXd `XO]X XN]TO QT ]TS\PNXSOT YXZXSTQd QT_TSt XcXNaXS VNX OMYX cTa `X[PX YX QTST[`Xjuj vXQX VNX YwNTX `MSPaMN]XY QT \MNTQXOd ZSMfSX\XS X WXSTY ZXSX UVTeMS\T VN [VXQSXQM [MN \MNTQXO ]TNPTNQM [M\M _XOT YX YwNTX MSPfPNXY QT \MNTQXOjxMS TyT\ZYMd YX OP]VX[P^N PNP[PXY ZVTQT OTS YX \MO]SXQX TN YX ePfVSX ghzX s YX ePNXYTN YX ghz_j

X{ _{|PfVSX ghzj kyTS[P[PM }

LXZw]VYM gj ~NO]SV[[PMNTO UVT OT YYX\XN X OP \PO\XO �i

Page 93: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�� �������� ���� ��������� ��� ��������� � ����� ���� ��� ������ �� ���� ��� �������� �� ������ ��� ���������� �������� ��� ������ ������� �� ������� ��� ����� ����� �� �� �������� ��� ����� ��� ¡�¢ ��� ������ �� �� ������� �� �� ����� £ ¢ �� �¤����� ¥���������� � ����� ���� ��� �������� �� ������ �� �� �¤�����¦ ������ ��¤�� �������� � �� ������� �� §���� £ ¢ �� ¥¤����� ¨¥� ��� �������© ��� �������������� �� �� ����� £ ¢ �� �¤����� � ������ ��� ������������ � �� ����� £ ¢ �¤�����£��ª� ��� ����� ��� ����� ������ �� ����� ��� �� ������ ��¢ ������ �� ������� ���� ������ «����¬� ��� ����� ��� ¡�¢ ��� ������ �� �� ������� �� �� ����� £ ¢ ���¤����� ­� ��������� � ����� ���� ��� ���� ­ ������� �� �� �������

®¯ §��°���� �� ±������������ ��� �� ������ � �� ������

Page 94: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

TAREAS

DESAFIANTES

PARA KAREL

�� ���� ������ �� ��������� ������� ������ �� ���������� ������� ���� ������ ����� � ������� ������ �� ������ �� �� � ������� �� ���� ����� � ������������� ����������� �� ������ ������ ��� � ���������� ���� �� ��� � �� � ��������� �� � ������ � �� ������ �� �������� ��� ������ ����� �� ������� ���������� ���� ���������� ����� �� � ����� � � ������ ��� ������ ������ ��� �� ���������� � � �� �������� � �� ����������� � � ��� ��� � ���� �� �� �� ����� ���� ������� ���� ������ �������������� � �� ��������� �������� ���!"#" $%&'( )*(+,-(,.%/01 012 /3)'&1245 6789:;8:<5<:=> ?@ ?AB >C6@DAB B@ ;7@?@ E5<@D 6@?:5>9@ B765B D@;@9:?5BF GAD@H@6;8AI J K L M L N L N LF OA> @B9@ 58PAD:96AI Q5D@8 ;7@?@ D@58:R5D 85 95D@5 ?@6789:;8:<5D ?AB >C6@DAB @S;D@B5?AB @> T5B@ UI @B<D:9AB @> 85B <588@B J V WF X> 85Y:P7D5 Z[U5 B@ 67@B9D5 85 B:975<:=> :>:<:58 ;5D5 J ;AD L V @> 85 Y:P7D5 Z[UT @8D@B7895?A @> 85 <588@ UFX> @8 <5;\978A 5>9@D:ADI B@ ;D@B@>9= @8 ;DAPD565 UW]FQ^_ ;5D5 E5<@D 85B765 ?@ ?AB >C6@DAB` @8 ;DAPD565 ULFQ^_ B:P7:@>9@ 79:8:R5 85 :>B9D7<<:=> B765?@8 ;DAPD565 UW]FQ^_ @ :6;8@6@>95 85 :>B9D7<<:=> abcdefcegh ?@ YAD65D@<7DB:i5F j@ i5 5 5;DAi@<E5D 85 <5D5<9@D\B9:<5 ?@ 85 :>B9D7<<:=> kbah ?@ B765D 8AB>C6@DAB ?@ 85 <588@ W V UI V <A8A<5D @8 D@B7895?A @> 85 <588@ U` @B ?@<:DI @8 >C6@DA?@ 85 <588@ U Y7><:A>5Dl <A6A 7> mnopoqmrstu

O5;\978A ZF v5D@5B ?@B5Y:5>9@B ;5D5 Q5D@8 U

5

Page 95: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

wx yxz{|}~w ���� �w~�� �}��{��{�w��� ��� ����~��wx �{�}w�{�� {�{�{w� yx �{�}w�{�� �{�w��� ���w ��~�w� ��~ �w�w �����w ��� ����~� �� �w �w��� �� ��y�~� �}�w~ �� ����~��� �w �w��� � ��� �� ����~� �� �w �w��� � �}� ��~� w� {�{�{�x� �w~w �� ������� �� �w�{|}~w ���� �w �w��� � ����~� w� {�{�{� �� ����~� �� ����}�� �� �w �~{��~w �}�w����~� }� �� �� �w ��|}��w �}�w ����~� }� � � �{�w������ �� �w ��~��~w �}�w����~� }� ���� �¡�¢£�¤£¥¦§�¤ ¨¤�¥©¤ª£¤�¨¥£¤ £¡¥ªª¤ � ¥«¤ ��¥ � «�¤ �¢£¥ª ¤�¨¤ ¡¢  ���¦¢ ¤�¥�£¤ £�¬£§¢ª�¥ ­®¥¯ � ¦¢ ¤�¥�£¤ £¡¥ªª¤ � ¥«¤ ��¥ �­®¥¯ � ¦¢ ¤�¥�£¤ £¡¥ªª¤ � ¥«¤ ��¥ �­®¥¯ � ¦¢ ¤�¥�£¤ £¡¥ªª¤ � ¥«¤ ��¥ �­®¥¯ � ¦¢ ¤�¥�£¤ £¡¥ªª¤ � ¥«¤ ��¥ �­®¥¯ � ¦¢ ¤�¥�£¤ £¡¥ªª¤ � ¥«¤ ��¥ �­®¥¯ � ¦¢ ¤�¥�£¤ £¡¥ªª¤ � ¥«¤ ��¥ �­®¥¯ � ¦¢ ¤�¥�£¤ £¡¥ªª¤ � ¥«¤ ��¥ �­z� £�¤£¥¦§�¤ ¨¤� �¡�¢£�¤£�©¢°©¥¦¥�¤z� ¤£ ¬¤«¥£� �¨©¬¡¡�¢  |{~w£w£�w£��~��±w ¡¢¦¢©¤��¨¤ � «¤¡¤�|{~w£w£�w£{²³}{�~�w­�¤z� ¤£ ¬¤«¥£� �¨©¬¡¡�¢  {�´{�~��£�{~���{�� ¡¢¦¢©¤��¨¤ � «¤¡¤�

µ ¡w�¶�}�� �� ¨w~�w� ���w�{w���� �w~w �w~��

Page 96: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

·¸¹º»º»¼º»¸½¾¿¸À¹ÁºÂÃÄÅÆÇÄ»ÇÈÄÉÊ»ÆÇËÌÍÈÎÎÆÏÇ ºÐºÑ½º»ÒºÓÔº»Õº¹ÀÁ ÎÏÖÏÖÆÄÇÌÍÊË ×¹ÀÑÔÀ»ÁÀÓÕÀغÁÙ ÚÊۺкѽºÂÃÄÅÆÇÄ»ÇÈÄÉÊ»ÆÇËÌÍÈÎÎÆÏÇ ºÐºÑ½º»ÒºÓÔº»¿¼Ô¸Üº»ÜÙÑÀÁº ÎÏÖÏÖÆÄÇÌÍÊË Ø¿ÑÔÙ»º»ÜÙÑÀÁº ÚÊۺкѽºÂÃÄÅÆÇÄ»ÇÈÄÉÊ»ÆÇËÌÍÈÎÎÆÏÇ ÐÀ»º»¸Ñ¸Ý¸Ù»Ýº¼¼À»º¹¹¸Þº ÎÏÖÏÆÇÆÎÆϸÑиÀ¹ÔÀ»Á¸¹ÀÝݸÙѺкѽº»ÒºÓÔº»Õº¹ÀÁ·¸¹º»º»¼º»ÁÀ¹ÀÝҺºкѽºÂ·¸¹º»º»¼º»ÁÀ¹ÀÝÒºÂÅÆÇÃÄÅÆÇÄ»ÇÈÄÉÊ»ÆÇËÌÍÈÎÎÆÏÇ ÐÀ»º»¸Ñ¸Ý¸Ù»Ýº¼¼À»ºÞºØÙ ÎÏÖÏÆÇÆÎÆϸÑиÀ¹ÔÀ»Á¸¹ÀÝݸÙѺкѽº»ÒºÓÔº»Õº¹ÀÁ·¸¹º»º»¼º»¸½¾¿¸À¹ÁºÂºÐºÑ½ºÂ·¸¹º»º»¼º»¸½¾¿¸À¹ÁºÂÅÆÇÃÄÅÆÇÄ»ÇÈÄÉÊ»ÆÇËÌÍÈÎÎÆÏÇ Ó¿Üº ÎÏÖÏÆÇÆÎÆÏËÆ Ø¿ÑÔÙ»º»ÜÙÑÀÁº ÄÇÌÏÇÎÄËÆÇÆÎÆϺкѽºÂӿܺÂÝÙ¼Ùݺ»ÜÙÑÀÁºÂºÐºÑ½ºÂÅÆÇËÆÇÏÆÇÆÎÆÏÐÀ»º»¸Ñ¸Ý¸Ù»Ýº¼¼À»ºÞºØÙºкѽº»ÒºÓÔº»¿¼Ô¸Üº»ÜÙÑÀÁºÂ

κÕßÔ¿¼Ù àá ̺¹ÀºÓ ÁÀӺ׸ºÑÔÀÓ Õº¹º ⺹À¼ ã

Page 97: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

äåæäåæçèäåæèéæêèëìéåæíîïêððåñæ òóôõö÷ôéøùõúöûõöüôüöýþ ðñÿñåæåðåñíå $ùþúýéôéøýþó�ô èæîñæðèíåæåðåñô�ôþ÷ô�òóôõö÷ôéøùõúöûõöüôüöýþ��ùøô��óéôéöþöüöýéüôõõóéôòòö?ô�äåæíåæñ�óéôéöþöüöýéüôõõóéô?ô$ý�äåæçèäåæèéæêèëìéåæíîïêððåñæ øùõúöûõöüô ðñÿñåæåðåñòóôõö÷ôéøùõúöûõöüôüöýþ��óéôéöþöüöýéüôõõóéôòòö?ô�äåæåæåðåñéçèéè*èðêðåñæøùõúöûõöüô�ôûô�ôúó�äåæéçèéè*èðêðåñæäåæéçèé�ïñ�ïìÿì��� �� � ���������� � ��������� � �� ��� ��èõ �������� �ó ùþ þ!øóòý �ó �ó"öþó üýøý óõ ûòý�ùüúý �ó úý�ý� õý� þ!øóòý� #ùó õóûòóüó�óþ% öþüõù&óþ�ý ôõ þ!øóòý' �ýò ó$óøûõý% óõ "ôüúýòöôõ �ó ( ó� )+ ), - ( . / .0� óõ "ôüúýòöôõ �ó 1 ó� 0/+ 0/, - 1 . ( . / . 0'�ôòô óõ "ôüúýòöôõ �ó ùþ þ!øóòý üùôõ#ùöóòô% �ó �ô ô üýõýüôò ó�úó þ!øóòý óþ õô üôõõó( & ô ý?úóþóò óõ òó�ùõúô�ý óþ õô üôõõó 0' èþ õô "ö�ùòô 23/ �ó ûòó�óþúô õô �öúùôüö4þöþöüöôõ & "öþôõ �óõ "ôüúýòöôõ �ó ('èõ �ö�ùöóþúó ûòý�òôøô öøûõóøóþúô óõ "ôüúýòöôõ �ó "ýòøô òóüùò�ö�ô%ôûý&5þ�ý�ó óþ õô öþ�úòùüüö4þ 6789:;8:<= �ó�ôòòýõõô�ô óþ óõ ûòý�òôøô 01'>ìï' ìõöþöüöý% óõ þ!øóòý �ó õô üôõõó ( �ó üýûöô ô õô üôõõó 0' çó�ûù@� òóûöúó óõ �ö�ùöóþúóûòýüó�öøöóþúý Aô�úô #ùó óõ þ!øóòý �ó õô üôõõó ( ó� ùþ 0 Bùþô øýþó�ôC+ �ö�øöþù&ó

D EFGHIJKL MN OFPQFR SQRFTUFVIQR GFPF WFPQK

Page 98: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

XY Z X[ Y\]X^_ `X [a ba[[X cd ]eXfX X[ Y\]X^_ `X [a ba[[X Z a [a ba[[X g h ]e[ijk[jba[_l Y\]X^_l `X [al ba[[Xl g h c elaY`_ [a jYli^ebbjmY nopqrsprtuv w[ xjYa[d XY [aba[[X Z lX XYbeXYi^a X[ ^Xle[ia`_v yY [a xjze^a {|ca h {|c} lX k^XlXYia X[ ]eY`_ `X~a^X[ k^Xfj_ a [a k^j]X^a h lXzeY`a [[a]a`a a [a jYli^ebbjmY nopqrsprtu^XlkXbijfa]XYiXv

a� }��jze^a {|gv ~a^X[ ba[be[aY`_ X[ xabi_^ja[

�jze^a {|cv �jieabj_YXl a[ [[a]a^ a [a jYli^ebbjmY �]e[ijk[jba�a� �a k^j]X^a fX� }� �a lXzeY`a fX�y[ k^_z^a]a Z{v~w� ljzejXYiXd j]k[X]XYia X[ xabi_^ja[ `X x_^]a ^Xbe^ljfadelaY`_ [a j`Xa k^XbX`XYiXv��������y�w���y��y

�ak�ie[_ {v �a^Xal `XlaxjaYiXl ka^a ~a^X[ {

Page 99: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������������������� � ������� � ��������� ���� ��� �  ¡�����������¢�£���� ¤¥�¦ � ¡��������������� � ������� �¤¥�¦ � ¡��������������� � ������� §¤¥�¦ � ¡��������������� � ������� �¤¨�������¡£���������������©��ª��¡���¨�����¢���������¢����� «¬­®�®�¯®�°±­±²³® ��¡���©��� � �����«¬­®�®�¯®�¬´µ¶¬±­°®¤��¨�����¢���������¢����� ¬·¸¬±­¹±�°¬­±²²¬º· ��¡���©��� § �����«¬­®�®�¯®�¬´µ¶¬±­°®¤��¨�����¢���������¢����� ®¸®·´®�³®»¹®�¼®­±° ��¡�¡������� ½­±·¹±�°±»¼±¾®°º ¥�¿®¸®·´®¤��¨�����¢���������¢����� ®¸®·´®�³®»¹®�¶¯¹¬À®�Àº·±°® ��¡�¡������� ¾¶·¹º�®�Àº·±°® ¥�¿®¸®·´®¤��¨�����¢���������¢����� ¸±�®�¬·¬²¬º�²®¯¯±�®­­¬Á® ��¡�������¬·¸¬±­¹±�°¬­±²²¬º·¤®¸®·´®�³®»¹®�¼®­±°¤«¬­®�®�¯®�°±­±²³®¤®¸®·´®¤«¬­®�®�¯®�°±­±²³®¤¨����¨�����¢���������¢����� ¸±�®�¬·¬²¬º�²®¯¯±�®Á®¾º ��¡�������¬·¸¬±­¹±�°¬­±²²¬º·¤®¸®·´®�³®»¹®�¼®­±°¤«¬­®�®�¯®�¬´µ¶¬±­°®¤®¸®·´®¤

 �®¼Ã¹¶¯º ÄÅ �®­±®» °±»®½¬®·¹±» ¼®­® �®­±¯

Page 100: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÆÇÈÉÊÉÊËÉÊÇÌÍÎÇÏÈÐÉÑÒÓÔÕÖÒÓÔÖÊÔ×ÖØÙÊÓÔÚÛÜ×ÝÝÓÞÔ ßÎàÉ ÝÞáÞÓÔÓÝÓÞÚÓ âÎãäåÊÉÊàåãÏÐÉ ÖÔÛÞÔÝÖÚÓÔÓÝÓÞÉæÉãÌÉÑßÎàÉÑçåËåçÉÊàåãÏÐÉÑÉæÉãÌÉÑÒÓÔÚÓÔÞÓÔÓÝÓÞæÏÊÉÊÇãÇçÇåÊçÉËËÏÊÉèÉâåÑÉæÉãÌÉÊéÉßäÉÊÎËäÇàÉÊàåãÏÐÉÑÒÓÔÒÓÔÕÖÒÓÔÖÊÔ×ÖØÙÊÓÔÚÛÜ×ÝÝÓÞÔ ÈÏÉËÇÌÉÊàÎËäÇêËÇçÉçÇåã ÝÞáÞÓÔÓÝÓÞÚÓ âÎãäåÊÉÊàåãÏÐÉ ÖÔÛÞÔÝÖÚÓÔÓÝÓÞÉæÉãÌÉÑÈÏÉËÇÌÉÊàÎËäÇêËÇçÉçÇåãÑßÎàÉÑæÏÊÉÊÇãÇçÇåÊçÉËËÏÊÉÈÈÇèÉÑÒÓÔÚÓÔÞæÏÊÉÊÇãÇçÇåÊçÉËËÏÊÉèÉâåÑÒÓÔÕÖÒÓÔÖÊÔ×ÖØÙÊÓÔÚÛÜ×ÝÝÓÞÔ àÎËäÇêËÇçÉ ÝÞáÞÓÔÓÝÓÞÈÏÉËÇÌÉÊàÎËäÇêËÇçÉçÇåãÑæÏÊÉÊÇãÇçÇåÊçÉËËÏÊÉÈÈÇèÉÑÒÓÔÕÖÒÓÔÖÊÔ×ÖØÙÊÓÔÚÛÜ×ÝÝÓÞÔ åÈÇÏãäÉÊÉËÊÏßäÏ ÝÞáÞáÓÖÔÛÜÙÚ ãåÊéÉçÇÉÊÏËÊåÏßäÏ ëÙìÆÇÈÉÊÉÊËÉÊÇÌÍÎÇÏÈÐÉÑ

ÝÉêíäÎËå îï ÛÉÈÏÉß ÐÏßÉðÇÉãäÏß êÉÈÉ ñÉÈÏË ò

Page 101: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

óôõö÷ôø÷ùôúûøö÷üýþùÿÿö/÷ ��ø�ø������ø����� ÿ//ö÷öÿö/�������ø��ø����������ø ���ø��������������ø����������õö÷óôõö÷ôø÷ùôúûøö÷üýþùÿÿö/÷ �����ø������ø�ø�ø�����ø����� ÿ//ö÷öÿö/üö �����ø�ø������ ô÷ý/÷ÿôüö÷öÿö/������������ø������ø�ø�ø�����ø������������ø��������������õö÷üö÷/ö÷öÿö/��ø�ø������ø�����ø��������ø�ø������ø�����ø������õö÷õö÷óôõö÷ôø÷ùôúûøö÷üýþùÿÿö/÷ �����ø������ø�ø�������� ÿ//ö÷öÿö/�����ø������ø�ø�ø�����ø��������ø�ø������ø�����ø���������ø�ø������ø�����ø�������õö÷óôõö÷ôø÷ùôúûøö÷üýþùÿÿö/÷ ����ø���ø������ ÿ//ö÷öÿö/������ø ���ø������ø���������������ø�����������������������ø���������ø�ø������ø������õö÷óôõö÷ôø÷ùôúûøö÷üýþùÿÿö/÷ �����ø������ø������ ÿ//

� ÿ������� �� ý���� ��������� ���� �����

Page 102: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

����� !� <"#$%&'&(%#)*' +�, ��+!����� -).%0)&(%#)*'1'2'#3'1(")2)&#"()-%&'--45'1!� #%&<"#$%&'&(%#)*' +�, ��+!.%6%.'&(%#)*'1'2'#3'17��!�� 2)&'&4#4.4%&.'66)&'--45'17��8+7��+&�9+:;&��!,=9��� � (")2)&-)>"6$'*%&'&'--45' � ? ����� (")2)&#"()-%&'--45'12)&'&4#4.4%&.'66)17��8+7��+&�9+:;&��!,=9��� � @'.$%-4'6 � ? ����� .%A4'&#"()-%&'&-)>"6$'*%1?�+�,=;! <"#$%&'&(%#)*' B;C����� -)>$'&"#'&"#4*'*1!� <"#$%&'&(%#)*' +�, ��+!����� 2)&'&4#4.4%&.'66)&'5'<%12)&'&4#4.4%&.'66)&'5'<%1(")2)&-)>"6$'*%&'&'--45'12)&'&4#4.4%&.'66)&'--45'1("6$4A64.'17��7��7������� &8+&+D+�9�� �@'.$%-4'61'A'0'$)17��&8+&+D+�9�� �

�'AE$"6% FG ,'-)'> *)>'@4'#$)> A'-' H'-)6 I

Page 103: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

JKLMNOMPQRSQTUTVWXW YZ[\] ^_`aZbcd _bZ edb\cZTfghi jk lhilihm ni lihki ok kpqgplhih rpi sgpkoi kp kn srpog ok tihknu vkjrwgpk xrk tihkn jk kpqrkplhi ypyqyinskplk kp kn ghyzkp {ykpog in gkjlku |piwgjy}nk jgnrqy~p i kjli lihki kj }rjqih kp nij oyizgpinkj� lin qgsg jk ynrjlhi kp ni

�yzrhi ���uJyzrhi ���u tihkn }rjqipog rpi sgpkoiOn whgzhisi ��utTQ jyzrykplk yswnkskpli kjli }�jxrkoi kp oyizgpinu �ripog knhg}gl kjlm ghykpliog in gkjlk� {i ok jr}yoi� qripog kjlm ghykpliog in jrh� {i ok}i�ioiu �i qni{k wihi kn whgzhisi jk kpqrkplhi kp nij ypjlhrqqygpkj����������������������� � ��������������������u �i whyskhi whkjrwgpk xrktihkn kjlm ghykpliog in gkjlk � lykpk kn k�kqlg ok jr}yh i ni qinnk jyzrykplk kpoyizgpin� ni ypjlhrqqy~p �������������������� whkjrwgpk xrk tihkn kjlm {ykpog injrh � fiqk }i�ih i tihkn rpi qriohi kp oyizgpinuKLK�KRMNOMTU�KOL�OtTQO�MOv�TMOLM�T��O � T�OLKNT � �KOLNRMT� ROv�O �RL �URLONTvMOLMv|M�R�vT� T¡ � URLONTvMOLM�T��O ¢ T�OLKNT ¢�

£¤ �iw¥lrng �u �ihkij okji�yiplkj wihi tihkn

Page 104: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

¦§¨©ª«©¬­®§«¨¯«§¨§°§±©ª«©²³±´³¬­¬ª«¦§¨«©¨µ«¶¬©§¨·¯³µ°°§±¨ ¸¹º¸»¼½»©¾¸¼»¿¿¸À¹ °±­±³«²§¯« Á ¶«°«·Â¸¼Ã©Ã©Äé¸ÅÆǸ»¼¾Ã Ȫ«¦§¨«©¨µ«¶¬©§¨·¯³µ°°§±¨ ¸¼Ã©Ã©Äé¾»¼»¿Éà °±­±³«²§¯« Ê ¶«°«·Â¸¼Ã©Ã©Äé¸ÅÆǸ»¼¾Ã Ȫ«¦§¨«©¨µ«¶¬©§¨·¯³µ°°§±¨ úùÅé¸ÅÆǸ»¼¾Ã©Ã¼¼¸Ëà °±­±§¨§°§±ÃºÃ¹ÅÃȸ¼Ã©Ã©Äé¾»¼»¿ÉÃÈúùÅÃȸ¼Ã©Ã©Äé¸ÅÆǸ»¼¾ÃȦ§¨ª«¦§¨«©¨µ«¶¬©§¨·¯³µ°°§±¨ úùÅéÃËÃÌÀ©¾»¼»¿Éà °±­±§¨§°§±ÃºÃ¹ÅÃȸ¼Ã©Ã©Äé¸ÅÆǸ»¼¾ÃÈúùÅÃȸ¼Ã©Ã©Äé¾»¼»¿ÉÃȦ§¨ª«¦§¨«©¨µ«¶¬©§¨·¯³µ°°§±¨ úùÅéé͸ÂǸ»¹½»©¾¸ÃÂÀ¹ÃÄ °±­±§¨§°§±·§ Éÿ¸Ã©»Ä©À»Í½» «¨¯±¨°«·Â¸¼Ã©Ã©Äé¾»¼»¿ÉÃÈ·§¨±Â¸¼Ã©Ã©Äé¸ÅÆǸ»¼¾ÃÈúùÅÃȸ¹º¸»¼½»©¾¸¼»¿¿¸À¹È¦§¨ª«¦§¨«©¨µ«¶¬©§¨·¯³µ°°§±¨ úùÅ龸ÃÂÀ¹Ãĩü¼¸Ëà °±­±·§ μ»¹½»©¾»ÍÏ»ÌþÀ «¨¯±¨°«·ÃºÃ¹Åé¸ÅÆǸ»¼¾Ã©Ã¼¼¸ËÃÈ

°ÃÏнÇÄÀ ÑÒ ¯Ã¼»ÃÍ ¾»ÍÃθù½»Í Ïüà Óü»Ä ÔÔ

Page 105: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÕÖ×ØÙÚÙÛÜÙÝÙÝÞßàáßâÛãâÝäßÙàåÛÙæçèéêÖ×éÝ×ëéìíÝÖ×ÕîïëððÖØ× ÙÚÙÛÜÙÝäßÙàåÛÙæÝÙñÙòå ðØóØÕÖ ôõâÛãâÝäâÞöâòÙäå é×îØ×ðéÕÙÚÙÛÜÙÝÙñÙòåÝäâõâ÷øÙçÕÖ×ØÙÚÙÛÜÙÝÙÝÞßàáßâÛãâÝäßÙàåÛÙæçèéêÖ×éÝ×ëéìíÝÖ×ÕîïëððÖØ× âÛ÷áâÛãõÙÝùåÛâäÙ ðØóØóÖé×îïíÕ ÛåÝòáÛãåÝÙÝùåÛâäÙ úíûÕÖ øÙ÷ßÙÝâæÝåâÞãâ é×îØ×ðéÕÙÚÙÛÜÙÝäßÙàåÛÙæÝÙõõßñÙçÕÖ×ØÙÚÙÛÜÙÝäßÙàåÛÙæÝÙñÙòåçÖ×ÖðÖØÝèéÝéüéðëðÖØ×âÛ÷áâÛãõÙÝùåÛâäÙçÙöÙàÙãâçêÖ×ÝèéÝéüéðëðÖØ×êÖ×ÝèéÝýïØþïíóíÿ��� ����� ������ �� �������íøåõÙ �Ùõâæ Þâõ� öõåàõÙùÙäå öÙõÙ �áâ äßñáòâ áÛÙ ������� áÞÙÛäå ùåÛâäÙÞ� �ÙõâæßÛß÷ßÙ ÷åÛ áÛ ÷ßâõãå Û�ùâõå äâ ùåÛâäÙÞ âÛ Þá ñåæÞÙ � äâñâõ� âùöâÜÙõ Ù äßñáòÙõ÷åÛ ùåÛâäÙÞ Ù öÙõãßõ äâæ ÷âÛãõå äâ æÙ âÞößõÙæ øÙ÷ßÙ ÙôáâõÙ� øÙÞãÙ �áâ Þâ æâ Ù÷ÙñâÛæÙÞ ùåÛâäÙÞ äâ Þá ñåæÞÙ� Õáö�ÛàÙÞâ �áâ �Ùõâæ âÞã� ÷åæå÷Ùäå âÛ áÛÙ öåÞß÷ß�Û ãÙæ�áâ Ûå ÚÙ ÷øå÷Ùõ ÷åÛ öÙõâäâÞ� éÛ æÙ ôßàáõÙ ;�� Þâ ùáâÞãõÙ æÙ ÞßãáÙ÷ß�Û ôßÛÙæ äâ�Ùõâæ� ÷áÙÛäå ßÛß÷ß� ÷åÛ �� ùåÛâäÙÞ âÛ Þá ñåæÞÙ�íæ åñÞâõÚÙõ æÙ ôßàáõÙ ;��� Þâ öáâäâ ÛåãÙõ �áâ æÙ âÞößõÙæ Þâ ôåõùÙ ÷åÛæ�ÛâÙÞ� �Ù öõßùâõÙ æ�ÛâÙ âÞ øÙ÷ßÙ âæ Ûåõãâ ÷åÛ áÛÙ æåÛàßãáä äâ � ÷áÙäõÙÞ �åùåÛâäÙÞ ç âÛÞâàáßäÙ øÙ� áÛ àßõå Ù æÙ ßÜ�áßâõäÙç æÙ ÞâàáÛäÙ æ�ÛâÙ� øÙ÷ßÙ âæ åâÞãâ�ãßâÛâ ! ùåÛâäÙÞç æÙ ãâõ÷âõÙ æ�ÛâÙ âÞ øÙ÷ßÙ âæ Þáõ ÷åÛ áÛÙ æåÛàßãáä äâ � ùåÛâäÙÞç �ÙÞ� Þá÷âÞßÚÙùâÛãâ øÙÞãÙ �áâ Þâ Ù÷ÙñÙÛ æÙÞ ùåÛâäÙÞ�éÞãå Þáàßâõâ âæ ÞßàáßâÛãâ Ùæàåõßãùå"#� ÖÛß÷ßÙõ ÷åÛ áÛÙ æ�ÛâÙ äâ # ùåÛâäÙ

$% ðÙö�ãáæå ;� îÙõâÙÞ äâÞÙôßÙÛãâÞ öÙõÙ �Ùõâæ

Page 106: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

&' ()*+, -. /0,1 ) 2) 034-0+,5)6' 7180), 2) 29.+) ).:+,01, ) 2) .-+<) 1,0+.:)*0=.C' >/,+/), -.) ?1.+5) ?@A ) 2) 29.+) .-+<)B' D+8+:0, 21A 8)A1A &E 6 F C G)A:) 4-+ A+ )*)H+. 2)A ?1.+5)A

I0/-,) BJC' K),+2 50H-L).51 -.) +A80,)2MA:+ )2/1,0:?1 +A:@ 0?82+?+.:)51 +. +2 8,1/,)?) NO'K>D A0/-0+.:+PQRQ7QSTUMT>VWQMRXMK>DMYTMZX>TMRT7>YYM O >[MRQU> O [QMRUST>Y RSDXM 7SR O\VSRMU>ZTMRTZ]TWSYZ>^IQRTUMT>VWQMRXMQRQ7QSTUMT_DS`D>V>UMIQRMTR]M[>TQRZXD]77QSR 0.<0+,:+T50,+**01. 7SVSDM_QXM & [M7MZ/0,)T)T2)T034-0+,5)^

7)89:-21 B' X),+)A 5+A)a0).:+A 8),) K),+2 N6

Page 107: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

bcdefcgfhcijgefklmhnneof pqprspgtpuvpgwxvyzpgz{r|}p no~o~ecflmjk �wrv{gpgz{r|}p �j�pqprsp�bcdefcgfhcijgefklmhnneof xyr|p no~oefeneopqprsp�ke �wrv{gpgz{r|}p cflofnckefeneoxyr|p�ke �{rgz{r|}pug|rguwg�{xup cflofnck�{x{�pgz{r|}p�kefop�p�pv|�pqprsp�defkefoefeneoyrqy|�v|g}y�|��y{r�pqprsp�pqprspgtpuvpgwxvyzpgz{r|}p��y�pgpgxpgys�wy|�}p�defdefbcdefcgfhcijgefklmhnneof |u�y�px no~oefeneoyrqy|�v|g}y�|��y{r�xyr|p�ke �{rgz{r|}pug|rguwg�{xup cflofnck�{x{�pgz{r|}p�kefop�p�pv|�pqprsp�|u�y�px�defefeneogbcgc�cnhneof�{x{�pgz{r|}p�

�� np��vwx{ �� lp�|pu }|up�yprv|u �p�p �p�|x

Page 108: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������������������������� ¡¢£¡£¤£¥¦¥�§ �� ¡¢£¡¨©§ª©«¬«­®­® ¯°±²³ ±²´µ³¶·²¸¹µ ²³ º±µ»³²¼° ¹² ³°´ ½µ±±²´ ¹² ¾°¸µ·£� ��¿À��Á� Â� ��� �¿���� Â� ÃÄÅÆÇ È¿������ �� ������¿���� É�� ���� Â� Â��È¿� Â���¿��� Ê �� �¿��� Ë �ÉÌ���Í�¿�� Â�� �¿��� ÎÏ È¿� ��� ������ÈÈ�¿��� Â� Á¿��� É� Â��È¿� �� ��� Â� É� �¿��� � ¿��¿ Ð �¿ È¿�¿È�� É� Â��È¿ Â� Á�п� Â�ÍÁ���¿ �¿À�� ¿��¿ Â�Á��¿� Â�ÍÁ���¿Ñ £� �� Ò��É�� ÓÔÓ �� ��É���� �� ��¿À��Á� Â� ��� �¿���� Â� Õ��¿� ����Ö Â��È¿�Ñ × Ø Ù���É�� ÓÔÓÑ £� ��¿À��Á� Â� ��� �¿���� Â� Õ��¿�¦� ���¿���Á¿ ���� ���¿���� ���� ��¿À��Á�Ï È¿������ �� ���������¿ ��ÈÉ�����Á��������¿ ��Ï ���� Á¿��� � Â��È¿� Â� Ê � ËÚÊÑ ¬¿��� ���Á��¿ �¿� Û� Ô ÊÜ Â��È¿� ÁÍ� �����¿� Â�� �¿��� Ê �� Î ÛÒ��É�� ÓÔÝÜÎÑ ¬¿��� �� Â��È¿ � Â�� �¿��� Ê �� �¿��� Ë ÛÒ��É�� ÓÔÞÜËÑ ¬¿��� �¿� Û� Ô ÊÜ Â��È¿� Â�� �¿��� Î �� �¿��� Ë ÛÒ��É�� ÓÔßÜ

¥��à�É�¿ ÓÑ á����� Â���Ò������ ���� â���� ÊÓ

Page 109: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ã ä å

æçèéêë ìíîï ðêçñòê óëôõ öò ÷ë ôõ÷éøçùú öò ÷ëô ûõêêòô öò üëúõçæçèéêë ìíýï þòèéúöõ óëôõ öò ÷ë ôõ÷éøçùú öò ÷ëô ûõêêòô öò üëúõçæçèéêë ìíÿï %òêøòê óëôõ öò ÷ë ôõ÷éøçùú öò ÷ëô ûõêêòô öò üëúõç,õûëê �éò øëöë ÷÷ëñëöë êòøéêôç ë øõúûçòúò éú úñòêõ ñòúõê öò öçôøõô �éò ò÷úñòêõ õêçèçúë÷ � �éò ÷ë ôõ÷éøçùú úõ êòøéêôç ë øõúôçôûò öò ñõ òê ôõ÷ëñòúûò éúöçôøõ� òú øé�õ øëôõ ôò ò�òøûë ôù÷õ ò÷ óëôõ �ï ðëêë ò÷ øëôõ öò � öçôøõô� ò÷ óêõ�÷òñëöò ñõ òê ÷õô � öçôøõô ë÷ óõôûò � ôò êòöéøò ë ñõ òê ÷õô � öçôøõô ôéóòêçõêòô óêçñòêõë÷ óõôûò �ï �ôûò úéò õ óêõ�÷òñë ôò êòöéøò ë ñõ òê ÷õô � öçôøõ ôéóòêçõêòô ë÷ óõôûò �ï� ôé ò�� �ôûò ôò êòöéøò ë ñõ òê ò÷ öçôøõ ôéóòêçõê ë÷ óõôûò � � òôûõ ôë�òñõô øõñõ:ëøòê÷õ óõê ò÷ óëôõ � öò÷ ë÷èõêçûñõï

� �ëó�ûé÷õ ìï %ëêòëô öòôë�çëúûòô óëêë �ëêò÷ã ä å

ã ä å

Page 110: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�� �� ����� �� ������ �� �� �����!��"� ��� �#�$�� �� ���#� �� �&����'��#(��!���� �� ������� �� �#)����!� ���*#!��� $��� �� ����!�� �� �� )#*��� +-./0�!�� 1�� ����� ��!" $���$��� �� �� ��#*�� 2#���� �� ���!� 3 1�� !���� ��� �#�$����!"� 4��!� � �� ���� #(1�#����� 1�� �� ��!� $��� �� �� ��!� 5/ ����� ��6� ��2��!���� ��� �#�$�� 1�� ��!7� ���#6� �� 7� �� ��!� 8� $��� �� ����!�� �� )#*��� +-.6/9� ������" � �� #��!��$$#;� 1�� ����#(� �� !��6�4� �� !�������� �� !���� ���#�$�� � ��!#� �� ����� ��!7 ����� '�$#� ���#6�� ��� ��!� 5 �� 8� $��� <=>?@ABAC/��!� #��!��$$#;� ��$����#����!� 2� � ������ � �� #��!��$$#;� <=>?@ABAD� �6#$���� ��2#����!� � ����� ��� $����� ���#6� ��� �� ��2�� �� �#�$� #�)��#��� ��� ��2���� ���!� �� ��� �#�$�� ��� ��!� 5 �� EF ���2� �� �#�$� #�)��#�� ��� ��!� 5 �� 8������ �� #��!��$$#;� GHIJIABACF ��� �7� 2� � ������ � <=>?@ADAC ��� ��2�� ���#��� $��!#��� �� �#�$�� 1�� ��2#; �� ������� ��2#� <=>?@ABADK ��� ��!� E �����!#�� )#���� �� ��!� 8/L�& �#���� <=>?@ABAD ��6��" ������ � <=>?@ABAC $�� �� �#�$� ������ �GHIJIABAD 3 )#������!� � <=>?@ADAC/ 9#*�#���� ��!� $��#��� �� ���� � ��$#��1�� �� ��$��#!�� !���� ��� $��6#��$#���� �� ��!� �� #�#$#� 3 ��!� )#���/ ��!� ���� !�!�� �� 5E #��!��$$#����M <=>?@ABADK <=>?@ABACK <=>?@ADABK <=>?@ADACK<=>?@ACABK <=>?@ACADK GHIJIABADK GHIJIABACK GHIJIADABK GHIJIADACKGHIJIACAB 3 GHIJIACAD/�� ��*��#!�� ���$�#!� ��!" #� �����!��� �� �� ��*���� 5N/�LO 1�� ���#�!� � $��!#���$#;�MP0PQPRST�SLUVP�0W��LO�XS�9WLS�0SQLXX� 5 LY�0PTL 5 YP�0TRSLX 0ROW� QR0 ZUR0�TL9S�0S9[SVRX9L F\LO�TS][0WRSLSLY�0PTL + T�SQLXX� 5 L ^F\LO�TS][0WRSLSLY�0PTL 5Z T�SQLXX� 5 L ^F_L` 5 UR0�TL9S�0SQLXX� 5 LY�0PTL 5F_L` 5 UR0�TL9S�0SQLXX� 5 LY�0PTL EF_L` 5 UR0�TL9S�0SQLXX� 5 LY�0PTL 8F_L` 5 UR0�TL9S�0SQLXX� 5 LY�0PTL ^F_L` 5 UR0�TL9S�0SQLXX� E LY�0PTL 5F_L` 5 UR0�TL9S�0SQLXX� E LY�0PTL EF_L` 5 UR0�TL9S�0SQLXX� E LY�0PTL 8F_L` 5 UR0�TL9S�0SQLXX� 8 LY�0PTL 5F_L` 5 UR0�TL9S�0SQLXX� 8 LY�0PTL EF_L` 5 UR0�TL9S�0SQLXX� ^ LY�0PTL 5F

Q� &!��� +/ W����� ����)#��!�� ��� ����� 5a

Page 111: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

bcdefgehijcgdkgcdclcmefgenompohihfgbcdgedqgrhecdskoqllcmd tuvtwxyweztxw{{t|u lmimcdclcm}tx~e~e�~et���twxz~ �}tx~e~e�~et���twxz~ �bcdfgbcdgedqgrhecdskoqllcmd }tx~e~e�~ezwxw{�~ lmimognckg � rglgs}tx~e~e�~et���twxz~ �

~�

��bt}�x~ ���� g� �x|��w�~ zw �~� y|xxw� zw �~u|t wu w� ��uz| zw �~xw�~� sty�~{t�u tut{t~� �� sty�~{t�u �tu~�

�� l~��y��| �� k~xw~� zw�~�t~uyw� �~x~ �~xw�

Page 112: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

���������������� ¡�¢¢�£� ¤¥¤¦§¤�¨¤©ª¤�«¬ª­®¤�®¯¦°±¤ ¢£²£²��� ¡�� ³«¦ª¯�¤�®¯¦°±¤ ´�µ¤¥¤¦§¤ ¶���������������� ¡�¢¢�£� ·°ª·¯¸°±° ¢£²£���¢�£­¦¥­°·ª°�±­·°¸¸­¯¦¶¤¥¤¦§¤¶­¦¥­°·ª°�±­·°¸¸­¯¦¶������������������� ¡�¢¢�£� ¬°¥¤¦ª¤�±­©¸¯ ¢£²£���¢�£¹­·¤�¤�¬¤�±°·°¸¨¤¶²��� ¡�� ³«¦ª¯�¤�®¯¦°±¤ ´�µ���¢�£·°¸¯¹°�®¯¦°±¤¶¤¥¤¦§¤¶����� ³«¦ª¯�¤�®¯¦°±¤ �� £�¢��·°¸¯¹°�®¯¦°±¤¶¹­·¤�¤�¬¤�­§º«­°·±¤¶������������������� ¡�¢¢�£� ¸¯¬¯¸¤�±­©¸¯ ¢£²£���¢�£�� ³«¦ª¯�¤�®¯¦°±¤ �� £�¢��¤¥¤¦§¤¶¹­·¤�¤�¬¤�±°·°¸¨¤¶²��� ¡�� ¸¯¦�®¯¦°±¤©�°¦�©«�»¯¬©¤ ´�µ���¢�£¸¯¬¯¸¤�®¯¦°±¤¶�� ¼·°¦ª°�±°©½°³¤±¯ �� £�¢��¤¥¤¦§¤¶���¹­·¤�¤�¬¤�­§º«­°·±¤¶������������������� ¡�¢¢�£� ¤¥¤¦§¤�¾ ¢£²£¡�¿� � ¾ ��¢��

¢¤½Àª«¬¯ ¾Á  ¤·°¤© ±°©¤¼­¤¦ª°© ½¤·¤ ¤·°¬ ÃÄ

Page 113: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÅÆÅÇÈÅÉÊËÌÍÎËÏÎÐËÑÒÏÍÎÓÔÕÐÖÖÍ×Î ÅÆÅÇÈÅÏØÙ Ö×Ú×ÕËÛÍÔË ØÙ ÑËÖËÓÅÆÅÇÈÅÉÊËÌÍÎËÏÎÐËÑÒÏÍÎÓÔÕÐÖÖÍ×Î ÅÆÅÇÈÅÏÜÅÝÞÅÏßÅàáâ Ö×Ú×ÚÍËÎÔÕÒÓ ãàáÇÞáÏâáÝßáäÅâå æÒçÅÆÅÇÈÅÉÊËÌÍÎËÏÎÐËÑÒÏÍÎÓÔÕÐÖÖÍ×Î áÇèéáÇÞàÅÏèêëÅ Ö×Ú×ÓÍ ãàáÇÞáÏâáÝßáäÅâå ËÎÔ×ÎÖËÓÓÍ ÇåÏäéÇÞåÏÅÏëåÇáâÅ ËÎÔ×ÎÖËÓÍÎÍÖÍ×ÅÆÅÇÈÅÉáÇèéáÇÞàÅÏèêëÅÉÌÍÎÊËÌÍÎËÏÎÐËÑÒÏÍÎÓÔÕÐÖÖÍ×Î ÆáÏÅìÏÞåßá Ö×Ú×ÍÎÍÖÍ×áÇèéáÇÞàÅÏèêëÅÉêÇÆêáàÞáÏâêàáèèêåÇÉÌÍÎÊËÌÍÎËÏÎÐËÑÒÏÍÎÓÔÕÐÖÖÍ×Î ÆáÏÅÏßÅàáâÏàáãáàáÇèêÅ Ö×Ú×ÍÎÍÖÍ×ÅÆÅÇÈÅÏíÉîêàÅÏÅÏìÅÏêÈïéêáàâÅÉÅÆÅÇÈÅÏÜÅÝÞÅÏßÅàáâÉêÇÆêáàÞáÏâêàáèèêåÇÉÌÍÎÊËÌÍÎËÏÎÐËÑÒÏÍÎÓÔÕÐÖÖÍ×Î ÆáÏÅÏßåÝÞáÏð Ö×Ú×ÍÎÍÖÍ×ÆáÏÅÏßÅàáâÏàáãáàáÇèêÅÉÅÆÅÇÈÅÏØÙÉîêàÅÏÅÏìÅÏâáàáèÜÅÉÆáÏÅìÏÞåßáÉÌÍÎÊËÌÍÎËÏÎÐËÑÒÏÍÎÓÔÕÐÖÖÍ×Î ÆáÏÅÏßåÝÞáÏñ Ö×Ú×ÍÎÍÖÍ×ÆáÏÅÏßÅàáâÏàáãáàáÇèêÅÉÅÆÅÇÈÅÏíÉîêàÅÏÅÏìÅÏâáàáèÜÅÉÆáÏÅìÏÞåßáÉÌÍÎÊËÌÍÎËÏÎÐËÑÒÏÍÎÓÔÕÐÖÖÍ×Î ÆáÏÅÏßåÝÞáÏØ Ö×Ú×

òó ÖÅßôÞéìå íõ ÔÅàáÅÝ âáÝÅãêÅÇÞáÝ ßÅàÅ öÅàáì

Page 114: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

÷ø÷ù÷úûüýþýÿþ�ü�ý�ü�ü�ü���þ����þýþý�þý�ü�ü��þ�ûüýþ�ý�ÿü�÷ø2�÷ø�ýø�� �ý÷ø����ùù÷úø ��üûüý�ý� ùú�ú÷ø÷ù÷úûüýþýÿ��üý���üûþ��þý�����ûüýþýÿ��üý�����þý�����÷ø2�÷ø�ýø�� �ý÷ø����ùù÷úø ��üûüý�ý� ùú�ú÷ø÷ù÷úûüýþýÿ��üý���üûþ��þý�����ûüýþýÿ��üý�����þý�����÷ø2�÷ø�ýø�� �ý÷ø����ùù÷úø ��üûüý�ý� ùú�ú÷ø÷ù÷úûüýþýÿ��üý���üûþ��þý�����ûüýþýÿ��üý�����þý�����÷ø2�÷ø�ýø�� �ý÷ø����ùù÷úø ��üûüý�ý� ùú�ú÷ø÷ù÷úûüýþýÿ��üý���üûþ��þý�����ûüýþýÿ��üý�����þý�����÷ø2�÷ø�ýø�� �ý÷ø����ùù÷úø ��üûüý�ý� ùú�ú÷ø÷ù÷úûüýþýÿ��üý���üûþ��þý�����ûüýþýÿ��üý��

ùþÿ/��� �� �þ�üþ� �ü�þ��þ��ü� ÿþ�þ �þ�ü� ��

Page 115: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

�� ��!"#$%��&'()*+'()+"),+-."()013,44(5) 67898":"; 45<5()(4(598"!"=�%>8":& 89!?>!"#$%��&98"!"=�%>8";&�� ��!"#$%��&'()*+'()+"),+-."()013,44(5) !9!?@!"!A!B�"#8C8�D! 45<5()(4(5!9!?@!&E$C!"!" !"$@F7$8C#!&!9!?@!&E$C!"!" !"#8C8�D!&'()*+'()+"),+-."()013,44(5) ��?9$8C>8"! >�"#$!E�?! 45<50( B7?>�"!"6�?8#! +)15)4+0()(4(5!9!?@!&��?9$8C>8"! >�"#$!E�?! &!9!?@!"!A!B�"#8C8�D!&'()0()5()(4(5$?9$8C>8"#$C8��$�?&!9!?@!&'()*+'()+"),+-."()013,44(5) ��?9$8C>8"! >7C!"!?�D� 45<5()(4(5!9!?@!&��?9$8C>8"! >�"#$!E�?! &E$C!"!" !"#8C8�D!&'()*+'()+"),+-."()013,44(5) D!?�$"G":"!7H 45<50( IC8?>8"#8%=8B!#� +)15)4+0()(4(5!9!?@!&D!?�$"G":"!7H&C8>C��8#8&

JJ 4!=K>7 � LM 1!C8!% #8%!I$!?>8% =!C! N!C8

Page 116: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

OPQRPQSPQPTPSUVWXYXYZXY[\W\]^X_^X`aVYbYc_de\f\YbYg_f\YXYhaij\Yc_OPQklOPQlYQmlnoYPQRpqmTTPSQ ^X`aVYbYg TSrSPQPTPSXfX`sX_RP te`jaYXYda`\[X lQpSQTlRPQPTPS]a`fV\Wj\YXZjeWXYX`]^a_^X`aVYbYgYXeu_^X`aVYcYg_OPQRPQSPQPTPSW\jWa]\[\_de\f\YbYg_OPQOPQklOPQlYQmlnoYPQRpqmTTPSQ ^X`aVYbYcYXeu TSrSRP vW\`j\Y[\ih\tX[a lQpSQTlRPQPTPSXfX`sX_^X`aVYbYcYXeu_W\jWa]\[\_OPQRPQSPQPTPSUVWXYXYZXY[\W\]^X_^X`aVYbYg_de\f\YbYc_f\YXYhaij\Yg_OPQklOPQlYQmlnoYPQRpqmTTPSQ ^X`aVYbYc TSrSPQPTPSXfX`sX_RP te`jaYXYda`\[X lQpSQTlR

TXhwjeZa xy pXW\Xi [\iXvVX`j\i hXWX zXW\Z cg

Page 117: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

{|{}{~������������������������������������������������{|�{|~{|{}{~���������������������{|�{|���{|��|�����{|����}}{~| ������������� }~�~�{ ������������ ��� �|�~|}��{|{}{~����¡���������������������������{|�{|~{|{}{~¢���������������������������������������������������{|���{|��|�����{|����}}{~| ��������� }~�~{|{}{~����¡���{  ������������� �|�~|}��{|{}{~������������������������������������������������{|�{|~{|{}{~���������������������{|�{|���{|��|�����{|����}}{~| ������������� }~�~

£¤ }��¥���� ¦§ ������ ����������� ���� ¨����

Page 118: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

©ª «¬­®¯­°±­²³­´µ±¶ ·¸¹º¸»·©ª¸ª»ªºµ¼µ®½µ¾¿µ®¶À°Á°Â°µÃľ¬­¯¬¶Å­±­¾Æª¸©ª¸ºª¸ª»ªºÇÀ¬µ°µ°Èµ°±­¬­Å¿µ¾¿µ®¶À°Á°É¾Êí¼­°Á°Â¾¼­°µ°³¶²¯­°É¾Æª¸Ë·Æª¸·°¸Ì·Íΰª¸©¹ÏÌ»»ªº¸ ¿µ®¶À°Á°Â »ºÐºª¸ª»ªºµ¼µ®½µ¾©ª ´Ã®¯¶°µ°Ê¶®­±µ ·¸¹º¸»·©ª¸ª»ªºÅ¶®¼À­¬¯­°µÈ¯Ã¬µ°µ®Å¿¶¾¿µ®¶À°Á°Â°µÃľ¿µ®¶À°É°Â¾Æª¸©ª¸ºª¸ª»ªº¬­¯¬¶Å­±­¾Êí¼­°Á°Â¾Æª¸Æª¸Ë·Æª¸·°¸Ì·Íΰª¸©¹ÏÌ»»ªº¸ ¿µ®¶À°Â°É°µÃÄ »ºÐº©ª «¬­®¯­°±­²³­´µ±¶ ·¸¹º¸»·©ª¸ª»ªºµ¼µ®½µ¾¿µ®¶À°Â°É°µÃľ¬­¯¬¶Å­±­¾Æª¸©ª¸ºª¸ª»ªºÇÀ¬µ°µ°Èµ°±­¬­Å¿µ¾¿µ®¶À°Â°Á¾Êí¼­°Â°É¾

»µ³Ñ¯Ãȶ ÒÓ ¹µ¬­µ² ±­²µ«Àµ®¯­² ³µ¬µ Ôµ¬­È ÁÒ

Page 119: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÕÖ×Ø×ÙÚÛÜÖ×ÝÞßàáâãßàáã×áäãåæ×àáçèéäêêàëá ìØíÚî×ï×ð êëñëàáàêàëØÕØíòØÞçà óôíÜÚ×Ø×õÚíÖöØ ãáèëáêãçàáàêàë÷ÚíÕîÖøÜÖ×ØùÜôøØ×Øí÷ìÚÞìØíÚî×ï×ð×ØôúÞìØíÚî×Ý×ðÞßàáçàáëàáàêàëøÖÜøÚ÷ÖöÖÞõôÖÕÖ×ï×ðÞßàáßàáâãßàáã×áäãåæ×àáçèéäêêàëá ìØíÚî×ï×Ý×Øôú êëñëçà ûøÖíÜÖ×öÖÛÙÖóØöÚ ãáèëáêãçàáàêàëØÕØíòØÞìØíÚî×ï×Ý×ØôúÞøÖÜøÚ÷ÖöÖÞßàáçàáëàáàêàëüîøØ×Ø×ùØ×öÖøÖ÷ìØÞìØíÚî×ï×ðÞõôÖÕÖ×ï×ÝÞÕÖ×Ø×ÙÚÛÜÖ×ðÞßàáâãßàáã×áäãåæ×àáçèéäêêàëá ìØíÚî×ï×Ý êëñëàáàêàëØÕØíòØÞçà óôíÜÚ×Ø×õÚíÖöØ ãáèëáêãçàáàêàë÷ÚíÕîÖøÜÖ×ØùÜôøØ×Øí÷ìÚÞìØíÚî×ï×Ý×ØôúÞìØíÚî×ð×ÝÞßàá

ýþ êØÙÿÜôùÚ /� èØøÖØÛ öÖÛØûîØíÜÖÛ ÙØøØ ØøÖù

Page 120: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

������������������ ��������� �������������.������������������� ������� ����.���������������.��@�� �!"!#$%$ &'()*'+�� ��� ���,����� �-���0, �� �������, ���0�-, 1�� ����� �, ����,��������, ���� ���������, �� �����,���,2 3, �-���0, ���,�����, ������ �����,���� 0� ���� �����-� �� 456784 �0����, ��,��������, �������������,���00���,2 .� ����9 0� ��,������:� ��0 ,;�<��� ,���� �,�� ���09 ,=�� ������� 0, �������, ,� ���0��� ������, � ����������� �>, �� ������,�� �� ,� ��,������:�2#$?$ AB'CDEDEF(�2 ���0������� 0� ��0���0�����:� �� �, �G���, �� =�,� �2 �� ����� ,����� �0�0����� �� ,���, ��������,9 =��� �0 �0����� �,�� �� 0� ��0���0�����:� ���G���, ����� ,� ���� �� 0>��H I ����02�2 J���� �� ������� 1�� ��0��0� �0 ;������0 �� �G���, �� =�,� �2 ���0�H�� 0���,������:� ���� ��0���0���� ��,���00��� �� �0 �-������ �2�2 ������ 1�� ��I ��� ����� �� 0� �,1���� �� 0� ��00� � I 0� ������� �2@������� � K���0 ���� 1�� 0� ��������� I ��,��L, 0� ����,���� � 0� �,1���� �� 0���00� � I ������� �2

���M��0 N2 O����, ��,�;�����, ���� K���0 �P

Page 121: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

QR STUVWXY ZTX [\] TW\ ^VWX_\ XW `\ XaZTbW\ _X `\ c\``X S ] `\ \dXWb_\ e ] ZTXf\YX` gbXWX _Va ^VWX_\a XW aT hV`a\R iYVjY\^\Y \ f\YX` U\Y\ ZTX cV`VZTX `\a^VWX_\a _X aT hV`a\ XW `\ c\``X k ] \dXWb_\ e ] XW `\ c\``X S ] \dXWb_\ kR l\^VWX_\ VYbjbW\` _XhX UXY^\WXcXY XW `\ XaZTbW\ bWbcb\`RmR STUVWXY ZTX [\] TW\ ^VWX_\ XW `\ XaZTbW\ _X `\ c\``X S ] `\ \dXWb_\ k ] TW\^VWX_\ XW `\ XaZTbW\ _X `\ c\``X k ] \dXWb_\ eR iYVjY\^\Y \ f\YX` U\Y\ ZTXcV`VZTX TW\ _X Xag\a ^VWX_\a XW `\ c\``X S ] \dXWb_\ eR f\YX` _XhX cV`Vc\Y `\ VgY\^VWX_\ XW aT hV`a\R nopqrs t\] ^Tc[\a uVY^\a _X U`\WgX\Y Xag\ g\YX\R tX \ZTv_VaR kR ^VdXY TW\ ^VWX_\ [\cb\ X` aTY ^bXWgY\a ^TXdX `\ VgY\ ^VWX_\ [\cb\ X`WVYgXw xR cVWgbWT\Y ^VdbXW_V TW\ ^VWX_\ [\ag\ ZTX Xagy _bYXcg\^XWgX aVhYX V \ `\_XYXc[\ _X `\ ^VWX_\ Xag\cbVW\Yb\RzR STUVWXY ZTX f\YX` gbXWX TW\ ^VWX_\ XW aT hV`a\ ] ZTX [\] VgY\ ^VWX_\ XW `\XaZTbW\ _X `\ c\``X k ] `\ \dXWb_\ eR iYVjY\^\Y \ f\YX` U\Y\ ZTX cV`VZTX TW\ _X`\a ^VWX_\a XW `\ c\``X k ] \dXWb_\ x{R |ag\ X}UYXab~W Xa x X`Xd\_V \ `\ UVgXWcb\ eRiVY X�X^U`V� cT\W_V e Xa m� x{ Xa �xR f\YX` UTX_X X^U`X\Y `\ aXjTW_\ ^VWX_\U\Y\ cVWg\Y X` W�^XYV _X dXcXa ZTX _XhX _TU`bc\Y X` W�^XYV xR�R �XUXgbY X` UYVh`X^\ z� UXYV XW Xag\ Vc\ab~W `\ XaZTbW\ _X YXaUTXag\ Xa `\ c\``X k ]\dXWb_\ �{R �Y\g\Y _X dV`dXY \ Tgb`b�\Y g\WgV cV^V aX\ UVabh`X X` UYVjY\^\\WgXYbVYR�R STUVWXY ZTX f\YX` gbXWX _Va ^VWX_\a ] ZTX [\] VgY\ ^VWX_\ XW `\ c\``X S ]\dXWb_\ eR iYVjY\^\Y \ f\YX` U\Y\ ZTX cV`VZTX TW\ _X Xag\a ^VWX_\a XW `\XaZTbW\ _X `\ c\``X k ] `\ \dXWb_\ SeR |ag\ X}UYXab~W Xa S ^T`gbU`bc\_\ UVY eR�R STUVWXY ZTX f\YX` gbXWX gYXa ^VWX_\a ] ZTX [\] VgY\ ^VWX_\ XW `\ c\``X S ]\dXWb_\ eR iYVjY\^\Y \ f\YX` U\Y\ ZTX _XUVabgX TW\ ^VWX_\ XW `\ XaZTbW\ _X `\c\``X k ] `\ edXWb_\ S{R |ag\ X}UYXab~W Xa S X`Xd\_\ \ `\ UVgXWcb\ eRk�R STU~Wj\aX ZTX f\YX` gbXWX ^VWX_\a XW aT hV`a\ ] ZTX [\] VgY\ ^VWX_\ XW `\c\``X S ] \dXWb_\ eR iYVjY\^\Y \ f\YX` U\Y\ ZTX cV`VZTX TW\ ^VWX_\ XW `\XaZTbW\ _X `\ c\``X k ] \dXWb_\ ����S�e�R |` ��� _X _Va W�^XYVa Xa X` ��}b^V�V^�W �bdbaVY _X \^hVaR iVY X�X^U`V� X` ��� _X z ] km Xa �R nopqrs Tgb`b�\Y X`\`jVYbg^V _X |Tc`b_XaR |` ����^�W� Xa W ab ^~_T`V�^�W� � �� XW VgYV c\aV� XabjT\` \` ����W� ^~_T`V�^�W��R |` ^~_T`V�^�W� Xa X` YXagV _X `\ _bdbab~W XWgXY\ _X^ XWgYX WR

�� �\UvgT`V mR �\YX\a _Xa\ub\WgXa U\Y\ f\YX`

Page 122: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

��� ��������� ��� �� �¡ ¢£��� ¤ ¥¦��§�� �� �� ¨¦¡�� �� � ¥¦��§��� © ¦� �¥� ¡¦�� � ��� ª¦¡¦��� ¥¦��§�� �� ¡� ª�¡¡� � « �� ¢¦§�� ¡�� �¬��£§�� ���  �� ����¢���­¥� ¦� � £¥¦� ��¢ � ¡� �¬��£§� ��¦ « ¡� �¬��£§� ¤�®��¯¢�¡¦ °� ±� ��� §���²£��¢�� �� � �� �¡ ³´

Page 123: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

KAREL

Y SU RELACIÓN CON

OTROS

LENGUAJES

�� ���� ������ �� �������� � ��� �� �� �� ��������������� ��������� �� ������ ������� ��� ����� ������� �� ������ ������ �� ��������� �� �� � �� ����������� � �� ������� �� ������ ����� � ��������� ���������� � ��������� � �� � ���� �� ������ ������ �� �� !"#$� %� &'(!'#)#*+, %� -#'��./ /0123450 60 789284:4;<=1 60/ 89>9? @480/ A0 73060 6<B<6<8 01 ?80A 748?0ACDE FGHIJKL 0A 60;<8L /4A 74/4>84A M30 N98:41 0/ /0123450OPE QIRSTJSIJK 9 /4A 802/4A 284:4?<;4/0A M30 60>01 A023<8A0 7484 N98:48 789284:4AOUVE QWXTRSIJK 9 /9A A<21<N<;469A 4A9;<469A 4 /4A ;91A?83;;<910A 60/ /0123450EY/ <234/ M30 0/ /0123450 60 @480/L ?969A /9A /0123450A 60 789284:4;<=1 60;9:73?46984A ?<0101 0A?4A ?80A 748?0AE Y/29 ;9:Z1 01 0//9A 0A /4 19;<=1 60<1A?83;;<=1 9 31<646 60 050;3;<=1E [484 0/ ;4A9 60 @480/L /4A <1A?83;;<910A M30;9:79101 A3 /0123450 60 789284:4;<=1 A0 730601 ;/4A<N<;48 ;9:9 A0 :30A?84 01 /4N<2384 \]DE ^4A <1A?83;;<910A >_A<;4A 9 78<:<?<B4A A91 /4A M30 19 A0 73060160A;9:79108 01 9?84A :_A A01;<//4AE ^4A <1A?83;;<910A ;9:730A?4A A0 ;91A?83U0101 >4A0 4 /4A <1A?83;;<910A 78<:<?<B4AE .A?4 ;/4A<N<;4;<=1 A0 01;301?84 ?4:><`1 01/9A 60:_A /0123450A 60 789284:4;<=1L 798 /9 M30 A0 3?</<a48_ 7484 :9A?848 A30M3<B4/01;<4 ;91 9?89AE

b47c?3/9 \E @480/ U A3 80/4;<=1 ;91 9?89A /0123450A D

6

Page 124: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

defghijfkjl mjnompgm qrj jh ostjkeuo pj rf hjfvrgtj pj wmovmgignexf jymjwmjyjfkgm hoy ghvomekioy qrj mjyrjhujf hg kgmjg pjyjgpg pj rfg zomig nhgmg wgmghg noiwrkgpomg{ |y}l rf wmovmgig pj noiwrkgpomg fo jy gisevro~ jy pjneml yxhokejfj rf woyeshj yevfezengpo{������������������

������������������������������������������������������������ ������ ��¡� ¢£�¤���� ������ �¥¡�� ¦� ���¥¡

§¡ �¡¦� ��¡�£¨©ª«¬­¬©ª®¯���� ��¡ �££���°£�  ����� ¦�±�¡� �¥¡¦� ¡�����¡����  �¥¡

§¡����  �¥¡ ²³²´²µ¶·²³¸¹º»¼¹½¾¹¿¹ÀÁ»¹Â¼¸ÃÀ½ÄÃÅÀ»½¹Â¼Æ¿¹À»ÂÀ¼¸Ç¿¿»ÆÂÈÉÊËÌÍÎÌÏËÈÊÈÉÌÎÐËÑÉÌËÒÌÓËÔÕ

Ö×ØÙÚÛ ÜÝÞß àáâ ã×äáâ åæ ×çâãÚÙèè×áçæâ åæé éæçØÙÛêæ ëÛÚæéìíîí ïð ñòóñôõöò ÷ô øùúûùüðô ý ùþûÿóùñû�ó�� �������� ������ �� ��� ���� ��� �� ��������� �� �� �� ��������� ����������� �� � ��� ���� �� � � � ���� !"#$%& ���� � ���'� �� () ����������� �������� *� ��� ����� � ���� �� � ������ � � �����+����� � � �� ����� �� � �� ���� ,� �� ������ �� � � � �� �-�������� ��.� �� /� �� ����. ���� � � � ���� $"0#1234#35&3!&55#36 �����+����� � �-���� ����������� ��� ������ �� � ���� 7� ��� � � ����� 8���

9 :�.� �� ;� 8��� < � ������ ��� ����� ���� ���

Page 125: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

=> ?>@>ABC DCAECFGH? H= H?BH ?H=BEI>J KLM IE?HNCI> O>P> L= GH=QLCRH @CAC C@AH=IHAG> SL=ICPH=BCG IH GC @A>QACPCOET= U CG HVOGLEA GC? DCAECFGH? AH?LGBC PW? ?H=OEGG> HE=BLEBED>JX= O>=OH@B> C?>OECI> CG IH DCAECFGH H? HG YZ[\ ]^ _`aZ`bc^J d>A HRHP@G>eL=C DCAECFGH @LHIH QLCAICA L= =fPHA> H=BHA>e BE@> ghi H= je > L= =fPHA> AHCGeBE@> klmni H= je > L= OCACOBHAe HBOJ d>A ?EP@GEOEICIe H= CIHGC=BH ?H ?L@>=IAW oLHB>IC? GC? DCAECFGH? ?>= IH BE@> H=BHA>e ghiJd>A PHIE> IH L=C ZpqYarssZtp ]^ `qZup`sZtp ?H @LHIH IH@>?EBCA L= DCG>A C L=CDCAECFGHJ v= j GC C?EQ=COET= ?EQLH GC ?E=BCVE?wxyz{y|}~ � xy}�z �d>A HRHP@G>e GC? ?EQLEH=BH? ?>= C?EQ=COE>=H? DWGEIC?wOLH=BC � �� �V � U � � �OLH=BC � OLH=BC � � �v= GC @AEPHAC C?EQ=COET= HG =fPHA> �� ?H IH@>?EBC H= GC DCAECFGH ���hinJ �C?HQL=IC PLGBE@GEOC HG DCG>A IH GC DCAECFGH � @>A HG DCG>A IH GC DCAECFGH � U HGAH?LGBCI> G> C?EQ=C C GC DCAECFGH �J dCAC L?CA HG DCG>A IH L=C DCAECFGH H= HG GCI>IHAHO�> IH L=C C?EQ=COET=e ?TG> FC?BC H?OAEFEA ?L =>PFAHJ �FDECPH=BHe =E HG DCG>AIH GC DCAECFGH � =E HG IH GC DCAECFGH � ?H P>IESEOC=J v= GC BHAOHAC C?EQ=COET=e ?HHSHOBfC L=C AH?BC H=BAH HG DCG>A IH GC DCAECFGH ���hin U HG =fPHA> � U HG AH?LGBCI> ?HIH@>?EBC H= GC DCAECFGH ���hinJ vG AH?LGBCI> SE=CG H? AH?BCA L=C L=EICI CG DCG>A IH GCDCAECFGH ���hinJ �QLCG oLH @CAC �CAHGe ?H LBEGE�C HG ��� O>P> SE= IH E=?BALOOET=Jv? PLU fBEG AH?CGBCA oLH L=C C?EQ=COET= => H? G> PE?P> oLH L=C Zur`c]`]�`Y^��YZs`� X=C EQLCGICI PCBHPWBEOC G> oLH AH@AH?H=BC H? oLH HG =fPHA>C?>OECI> C GC HV@AH?ET= IHG GCI> E�oLEHAI> IH GC EQLCGICIe IHG ?EQ=> ���e H? HGPE?P> oLH HG =fPHA> C?>OECI> C GC HV@AH?ET= IHG GCI> IHAHO�> IH GC EQLCGICIJ �?�eHG BHAOHA HRHP@G> IH C?EQ=COET= @AH?H=BCI> AH?CGBC oLH L=C C?EQ=COET= => H? L=CEQLCGICIJ���� �� � ¡�¢£¤  ¥¢ ¦§¡�¨©¡ª«¬ ­®¯°±²¯³ ¬ ´µ¶·¸·«¹µ¬ ´· º¬» µ«»¼¸½¹¹µ¾«·» ´· ¿¬¸·ºÀ Á½·´· ¸·¹µÂµ¸ 캾¸·» ¹¾Ä¾¬¸Å½Ä·«¼¾» Æ ¸·Å¸·»¬ ½« ¸·»½º¼¬´¾Ç Ⱦ¸ ·É·ÄÁº¾À ·« º¬ »µÅ½µ·«¼· ¬»µÅ«¬¹µÊ« »·ºº¬Ä¬ ¬ º¬ ¶½«¹µÊ« ËÌÍÎÏÐÑÌÒ ¹¾« ½« ¬¸Å½Ä·«¼¾ ´· ÓÔ

Õ¬ÁÖ¼½º¾ ×Ç ¿¬¸·º Æ »½ ¸·º¬¹µÊ« ¹¾« ¾¼¸¾» º·«Å½¬É·» Ø

Page 126: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÙÚÛÜÝÞßàá â ãßäÞáÙåßÝ æçè éêÝ ÚëÚäÜÞßÙÛÚ ÚÛÞß åìÛÞÙÜääåíìî äáïá ÛÚ ÛßðÚî Ûå Ýß ãÜìäåíì ñòóôõö÷òø ÚÛ äáÙÙÚäÞßî ÝßùßÙåßðÝÚ öúûüøôòýõ àÚðÚÙþ ÞÚìÚÙ ÚÝ ùßÝáÙ àÚ ÿ�� �Ý ì�ïÚÙá àÚ ßÙ�ÜïÚìÞáÛ àÚ ÜìßãÜìäåíì �ÜÚàÚ åìäÝÜåÙ ïþÛ àÚ Üìß ùßÙåßðÝÚî �áÙ ÚëÚï�Ýáî Ýß ãÜìäåíì ò�÷ õ �áàÙ�ßÙÚäåðåÙ ÞÙÚÛ ÚìÞÚÙáÛ ÙÚ�ÙÚÛßÙ ÚÝ ì�ïÚÙá ïþ�åïá ÙÚäåðåàá� ß Ûå�ÜåÚìÞÚ åìÛÞÙÜääåíìÚÛ ÛåìÞþäÞåäßïÚìÞÚ äáÙÙÚäÞß�ïß� â ïß�åïáæ�î çî ÿèé�ì ÚÛÞÚ äßÛáî Ýß ãÜìäåíì ïþ�åïá ÙÚ�ÙÚÛßÙ�ß ÚÝ ì�ïÚÙá ç ÚÝ äÜßÝ ÛÚÙþ ßÛå�ìßàá ß ÝßùßÙåßðÝÚ ò������ �� �������� �� ������������ �Ý ÝÚì�ÜßëÚ *î ßÝ å�ÜßÝ !ÜÚ "ßÙÚÝî ÚÛ ÛÚìÛåðÝÚ ß ïåì�ÛäÜÝßÛ ïß�ÛäÜÝßÛé ÜÞåÝå#ß0é0 äáïá ÛÚ�ßÙßàáÙ ÚìÞÙÚ åìÛÞÙÜääåáìÚÛé ÛÚ �ÜÚàÚì ÜÞåÝå#ßÙ äáì ÝåðÚÙÞßà ÝáÛ ÚÛ�ßäåáÛîÞßðÜÝßàáÙÚÛ á äßïðåáÛ àÚ Ý�ìÚßé ÚÝ áÙàÚì àÚ Ýß ÚÛäÙåÞÜÙß ÚÛ àÚ å#!ÜåÚÙàß ß àÚÙÚä$ß àÚ ßÙÙåðß ß ßðßëá� �Ý ÝÚì�ÜßëÚ ÞåÚìÚ %&'()+',- ./)1)2)34- %&'()+',- '&,34-àÚãåìåàßÛ �áÙ ÚÝ ÜÛÜßÙåá� êÝ�ÜìáÛ ÚëÚï�ÝáÛ àÚ ãÜìäåáìÚÛ �ÙåïåÞåùßÛ Ûáì ÝßÛá�ÚÙßäåáìÚÛ ßÙåÞï5ÞåäßÛ àÚ ÛÜïßî ÙÚÛÞßî ïÜÝÞå�Ýåäßäåíìî àåùåÛåíìî ïíàÜÝáî ÚÞä� !ÜÚìáÙïßÝïÚìÞÚ ÛÚ ÚÛäÙåðÚì ßÝ ÚÛÞåÝá ÜÛßàá Úì ÝßÛ ïßÞÚïþÞåäßÛé ÚÛ àÚäåÙî äáì ÚÝá�ÚÙßàáÙ !ÜÚ àÚìáÞß Ýß ãÜìäåíì ÚìÞÙÚ ÝáÛ ì�ïÚÙáÛ� 6áÙ ÚëÚï�Ýá�å â ÿ7 8 9 éÚÛ Ú!ÜåùßÝÚìÞÚ ß Ýß åìÛÞÙÜääåíìå â ïÜÝÞå�Ýåäßæÿ7î 9è éàáìàÚ üøô÷:ø÷óò ÚÛ ÚÝ ìáïðÙÚ àÚ Ýß ãÜìäåíì !ÜÚ $ßÙ�ß Ýß ïÜÝÞå�Ýåäßäåíì��ìÛÚ�Üåàß ÛÚ �ÙÚÛÚìÞß Ýß ãÜìäåíì !ÜÚ åï�ÝÚïÚìÞß ÚÝ ãßäÞáÙåßÝî àáìàÚ ÝáÛ ì�ïÚÙáÛàÚ Ýß �ßÙÞÚ àÚÙÚä$ß Ûáì ÝáÛ ì�ïÚÙáÛ àÚ Ý�ìÚß �ßÙß ÙÚãÚÙÚìäåß àÜÙßìÞÚ ÚÝ ßìþÝåÛåÛ àÚÝ�Ùá�Ùßïß�åìÞ ãßäÞáÙåßÝ æåìÞ ìè æÿè; æ�èåìÞ ÙÚÛÜÝÞßàáî äáìÞßàáÙé æ<è

= >?@ABCDE FG H?IJD K LC IJD?MNOP MEP EBIEL DJPQC?RJL

Page 127: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ST UV WX YZ U[Z\]^_`abcd X e f UgZ]`^] UhZi UjZ\]^_`abcd X e f UkZldVabcd\ X ef UmZnoS`] U ldVabcd\ WX VZ UeYZi UeeZ\]^_`abcd X \]^_`abcd p ldVabcd\ fUeqZ ldVabcd\ X ldVabcd\ r ef UesZt Ue[Zt UegZ\]a_\V \]^_`abcd f UehZt UejZu] bVb`Svb\w lbcb `xV]b c] `b T_VlSyVz oblS]Vcd \]T]\]VlSb b` ]^{_]|b c]SV^a\_llSdV]^ c] `b TS}_\b h~e� �b �\S|]\b `xV]b ������ �� ������� ����� ldV ]`Vd|�\] ��������� {_] \]}\]^b _V V�|]\d ]Va]\d SVcSlbcd �d\ `b �b`b�\b l`b�] ��� b`SVSlSdz � \]lS�] _V V�|]\d {_] ^] b^S}Vb b `b �b\Sb�`] ]Va]\b c] Vd|�\] �� �V}]V]\b`z �b\b ������� _Vb �b\Sb�`]z ^] �dV] ^_ aS�d � c]^�_�^ ^_ Vd|�\]� �V `b^`xV]b^ q � ejz b` S}_b` {_] `b^ `xV]b^ j � eg � `xV]b^ ee � e[z `d^ ^x|�d`d^ �i� � �t�c]TSV]V �`d{_]^ c] SV^a\_llSdV]^f ^dV `d^ ]{_S�b`]Va]^ b `b^ �b`b�\b^ ��� �¡ �¢�� c] £b\]`� �b `xV]b s c]TSV] cd^ �b\Sb�`]^ ]Va]\b^ ``b|bcb^ �¤¥¦���§� ������§����b `xV]b [ ]^ _Vb SV^a\_llSyV ldVcSlSdVb` ]{_S�b`]Va] b`¨�©ª�«¡� ª¨©¨��¡ c] £b\]` l_�b �\_]�b ]^ ¬� ­ ® ¯°z `d l_b` ^S}VSTSlb {_] ^S ]`�b`d\ c] `b �b\Sb�`] � ]^ |]Vd\ d S}_b` {_] l]\dz `b �\_]�b ]^ lS]\abf ]V l_b`{_S]\da\d lb^d ]^ Tb`^b� �V `b `xV]b hz ]` ¤�¥¤ ]^ `b �b\a] ]{_S�b`]Va] b` ¨��¡ c] £b\]`��b `xV]b gz kz mz eq � es ^dV SV^a\_llSdV]^ c] b^S}VblSyV� �b SV^a\_llSyV±²��¤ c] `b `xV]b m ]^ _Vb SV^a\_llSyV c] \]�]aSlSyV ldVcSlSdVb`z ^S|S`b\ b`³�ª�«´µ¨©¶µ· c] £b\]`� �V ]^a] lb^d ^] \]�Sa] `b SV^a\_llSyV c] �`d{_]^S}_S]Va] l_bVcd `b �\_]�b ¬�����§�� ­® �° ^]b lS]\ab��b SV^a\_llSyV �¤�¦�� c] `b `xV]b eh ^] _aS`Svb �b\b \]}\]^b\ ]` �b`d\ c] `b�b\Sb�`] �¤¥¦���§� ld|d \]^_`abcd c] `b ``b|bcb b `b T_VlSyV�¸od\b ^] bVb`Svb ]` b`}d\Sa|d ]|�`]bcd �d\ `b T_VlSyV ��������� �b\b lb`l_`b\ ]`Tblad\Sb`� uS ]` �b`d\ {_] \]lS�] ]^ |]Vd\ d S}_b` b l]\dz �b b \]}\]^b\ _V l]\df ^S\]lS�] _V V�|]\d ]Va]\d Vd V]}baS�dz lb`l_`b ]` Tblad\Sb` c] � c] `b ^S}_S]Va]|bV]\b¹

ºb�xa_`d h� £b\]` � ^_ \]`blSyV ldV da\d^ `]V}_b»]^ g

Page 128: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

¼½ ¾¿ÀÁÀÂÃÀÄ ÃÂÅ ÆÂÇÀÂÈÃÉÅ ÊËÌÍÎÏÐÑÒ Ó ÔÒÕÏÐÑÒÊ Â ¼ ÖÃ׿ÉÂÅ Ø Ó ÙÚÛ½ ÜÀÉ¿ÝÇÂÅ Éà ÁÞ¿ÝÂßÞÇ ÅÉ àÉ¿ÞÇ áâÉ Õ ÖÃ׿ÉÂÅ ¼ã  ¼äÚÊËÌÍÎÏÐÑÒ ÅÉ ÂÁÝâÂÃÀÄ åÞÇ ÊËÌÍÎÏÐÑÒ àâÃÝÀåÃÀÁÂßÞ åÞÇ ÔÒÕÏÐÑÒÊ ÓÔÒÕÏÐÑÒÊ ÅÉ À¿ÁÇÉàÉ¿Ý ɿ â¿Â â¿ÀßÂßæ½ çà ÆÂÃÞÇ ßÉà èÂÁÝÞÇÀÂà ÅÉ É¿ÁâÉ¿ÝÇ ɿ ÊËÌÍÎÏÐÑÒ ÖÃ׿É ¼éÚêÞÇ ÉëÉàåÃÞì åÂÇ Éà èÂÁÝÞÇÀÂà ßÉ ä àÆÂÇÀÂÈÃÉ ÊËÌÍÎÏÐÑÒ ÝÞà ÅâÁÉÅÀÆÂàÉ¿ÝÉ ÃÞÅÆÂÃÞÇÉÅíîÂÃÞÇ ßÉ ÊËÌÍÎÏÐÑÒ ïÈÝÉ¿ÀßÞ åÞÇ Ã ÞåÉÇÂÁÀð¿ ñÉ Ã Ã׿ÉÂÊËÌÍÎÏÐÑÒ ò ¼ ßÉ ÂÅÀó¿ÂÁÀð¿ ÖØÚÊËÌÍÎÏÐÑÒ ò ¼ ¼ ô ¼ Ö¼Ûì åÇÀàÉÇ ÆÉÄÚÊËÌÍÎÏÐÑÒ ò Û ¼ ô Û Ö¼Ûì ÅÉóâ¿ß ÆÉÄÚÊËÌÍÎÏÐÑÒ ò é Û ô æ Ö¼Ûì ÝÉÇÁÉÇ ÆÉÄÚÊËÌÍÎÏÐÑÒ ò Ûä é ô ä Ö¼Ûì ÁâÂÇÝ ÆÉÄÚÓ Éà ÇÉÅâÃÝÂßÞ áâÉ ÇÉóÇÉŠàèâ¿ÁÀð¿ ÉÅ Ûä½çà ÃÉ¿óâÂëÉ õ ÝÂàÈÀö¿ åÉÇàÀÝÉ ÉÅÁÇÀÈÀÇ èâ¿ÁÀÞ¿ÉÅ ÇÉÁâÇÅÀÆÂÅ÷ åÞÇ ÉëÉàåÃÞì ÃÂèâ¿ÁÀð¿ èÂÁÝÞÇÀÂà ÇÉÁâÇÅÀÆ åâÉßÉ ÀàåÃÉàÉ¿ÝÂÇÅÉ ÁÞàÞ ÅÀóâÉíÀ¿Ý èÂÁÝÞÇÀÂà ÖÀ¿Ý ¿Ú Ö¼Úø ÖÛÚÀè Ö¿ ù ò ãÚ ÖæÚÇÉÝâÇ¿ ¼÷ ÖäÚÉÃÅÉ ÖúÚÇÉÝâÇ¿ ¿ ô èÂÁÝÞÇÀÂà ֿ û¼Ú÷ ÖéÚü ÖýÚþÞÝÂÇ Ã ÃÃÂàÂß ÇÉÁâÇÅÀÆ ɿ àÃ׿É ý½ çà ÆÂÃÞÇ áâÉ ÅÉ åÂÅ  Ã èâ¿ÁÀð¿ èÂÁÝÞÇÀÂÃÉ¿ àÃ׿É ý ÉÅ Éà ÇÉÅâÃÝÂßÞ ßÉ ÿÂÈÉÇ ÉèÉÁÝâÂßÞ â¿Â ÇÉÅÝ ɿÝÇÉ Éà ÆÂÃÞÇ ßÉ Õ Ó Éÿ�àÉÇÞ ¼½ çà ÆÂÃÞÇ ßÉ Ã ÆÂÇÀÂÈÃÉ Õ ¿Þ ÁÂàÈÀ½ êÞÇ ÁÂß ÃÃÂàÂß ÇÉÁâÇÅÀÆ áâÉ ÅÉÿÂó ÅÉ ÁÇÉ â¿Â ¿âÉÆ ÆÂÇÀÂÈÃÉ Õ �����  Ã èâ¿ÁÀ𿽠çÅ ßÉÁÀÇì àÀ¿ÅÝÇâÁÁÀÞ¿ÉÅ ßÉàåÇÀàÉÇ À¿ÅÝ¿ÁÀ ßÉ Ã èâ¿ÁÀð¿ ÅðÃÞ åâÉßÉ¿ ÂÁÁÉÅÂÇ Â ÃÂÅ ÆÂÇÀÂÈÃÉÅ ßÉ Ã åÇÀàÉÇÂÀ¿ÅÝ¿ÁÀÂ÷ ßÉ¿ÝÇÞ ßÉ Ã ÅÉóâ¿ß À¿ÅÝ¿ÁÀ ßÉ Ã èâ¿ÁÀð¿ ÅðÃÞ ÅÉ åâÉßÉ ÂÁÁÉÅÂÇ Â ÃÂÅÆÂÇÀÂÈÃÉÅ ßÉ Ã ÅÉóâ¿ß À¿ÅÝ¿ÁÀ½êÞÇ ÉëÉàåÃÞì åÂÇ Éà èÂÁÝÞÇÀÂà ßÉ ä ÅÉ óÉ¿ÉÇÂÇ׿ ú À¿ÅÝ¿ÁÀÂÅ ßÉ ÃÂèâ¿ÁÀð¿ èÂÁÝÞÇÀÂà ÀÃâÅÝÇÂßÂÅ Â ÁÞ¿ÝÀ¿âÂÁÀð¿í��������� � ��������� � ��������� ��������� � ��������� �

õÂå×ÝâÃÞ é½ ÂÇÉÃ Ó Åâ ÇÉÃÂÁÀð¿ ÁÞ¿ ÞÝÇÞÅ ÃÉ¿óâÂëÉÅ

Page 129: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

��������� ���� � � ��������� ���� � � ������������� � � ���������� �� � ��������� �!�� � � � � � � � � �� � � "� ��8# $%&'#()*+ ,'% $%-$%&)$.) #) /'01230 %& 45679:9 ;<=>?<@A% B) C$%&%0()*+ #) $%#)1230 *% D)$%# 1+0 +($+& #%0-')E%&F %0 C)$(21'#)$ 1+0 %##%0-')E% G6 H# 2-')# ,'% D)$%#F G (2%0% %0(2*)*%& %,'2I)#%0(%& *% #)& 20&($'112+0%&C$2J2(2I)&F C%$J2(% *%/202$ 20&($'112+0%&F (2%0% 20&($'112+0%& *% K#+,'%F1+0*212+0)#%&F *% $%C%(21230 L *% *%12&2306 A% C$%&%0()$+0 #+& 1+01%C(+& *%I)$2)K#%F )&2-0)1230 L /'01230 1+J'0%& ) (+*+& #+& #%0-')E%& *% C$+-$)J)12302JC%$)(2I+& 1+J+ GF M)&1)#F N+$($)0F %(16 O+& 1+01%C(+& )&2J2#)*+& )# C$+-$)J)$ )D)$%# (2%0%0 $%#)1230 *2$%1() 1+0 #) C$+-$)J)1230 %0 %&(+& #%0-')E%&F C+$ #+ ,'% &')C$%0*2P)E% %& &%012##+ L $QC2*+6

G)C.('#+ R6 D)$%# L &' $%#)1230 1+0 +($+& #%0-')E%& S

Page 130: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

T UVWXYZ[\ ]^ _V`a[ b cZ `a[Vdefg d\g \Y`\c [aghZViac

Page 131: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

RESUMENDEL

LENGUAJE

Instrucción de posicionamiento de Karel

1.KAREL_ESTA_EN_CALLE" <natural> AVENIDA <natural> VIENDO_AL <orientación> CON <entero> MONEDAS_EN_SU_BOLSA ;

Instrucciones de creación del ambiente

2. PARED_JUNTO_A_AVENIDA <natural> DE_CALLE <natural> A <entero>;

3. PARED_JUNTO_A_CALLE <natural> DE_AVENIDA <natural> A <entero>;

A manera de ejemplo, considere la siguiente sección de pared:

PARED_JUNTO_A_AVENIDA 2 DE_CALLE 3 A 10 ;

Esta instrucción define la sección de pared vertical junto a la avenida 2; exactamente entre la avenida 2 y la 3, es decir en la 2.5. La pared inicia en la calle 2.5 y termina en lacalle 10.5. De igual manera:

PARED_JUNTO_A_CALLE 10 DE_AVENIDA 2 A 12 ;

Apéndice A. Resumen del lenguaje 1

A

Page 132: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

Define la sección de pared horizontal junto a la calle 10.5. La pared inicia en la calle 1.5 y termina en la calle 12.5.4. HAY <natural> MONEDAS_EN_CALLE <natural> AVENIDA <natural> ;

Instrucciones primitivas

5. avanza ; Karel avanza hacia adelante a la siguiente esquina6. gira_a_la_izquierda ; Karel gira 90 grados a la izquierda7. recoge_moneda ; Karel recoge una moneda de la esquina y la pone en su

bolsa8. coloca_moneda ; Karel toma una moneda de su bolsa y la coloca en la

esquina9. apagate ; Karel se apaga a sí mismo

Instrucción de bloque

10. INICIO <instrucción>

. . .<instrucción>

FIN

Instrucciones condicionales

11. SI <prueba> ENTONCES<instrucción>

12. SI <prueba> ENTONCES<instrucción>

SINO<instrucción>

Instrucciones de repetición

13. REPITE <natural> VECES<instrucción>

14. MIENTRAS <prueba> HAZ<instrucción>

2 Apéndice A. Resumen del lenguaje

Page 133: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

Instrucción para definir nuevas instrucciones

15. DEFINE_NUEVA_INSTRUCCION <nombre_de_nueva_instrucción> COMO<instrucción>

Especificación de un programa completo

INICIO_DE_AMBIENTE <instrucción de posicionamiento de Karel > <instrucción de creación de ambiente > 0 o más veces . . . <instrucción de creación de ambiente >FIN_DE_AMBIENTE

INICIO_DE_PROGRAMA <instrucción para definir nuevas instrucciones > 0 o más veces

. . . <instrucción para definir nuevas instrucciones > INICIO_DE_EJECUCION <instrucción> 1 o más veces . . . <instrucción> FIN_DE_EJECUCIONFIN_DE_PROGRAMA

Palabras entre corchetes

<natural> Un número entero mayor o igual a 1<entero> Un número entero mayor o igual a 0<orientación> Cualquiera de: NORTE, SUR, ESTE

u OESTE<nombre_de_nueva_instrucción> El nombre debe iniciar con una letra

minúscula, seguido de letrasminúsculas, dígitos o el "_".

<instrucción de posicionamiento de Karel >La instrucción 1

Apéndice A. Resumen del lenguaje 3

Page 134: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

<instrucción de creación de ambiente > Cualquiera de las instrucciones 2 a 4<instrucción> Cualquiera de las instrucciones 5 a 14

incluyendo las nuevas instrucciones definidas

<prueba> Cualquiera de las siguientes:frente_despejado, frente_bloqueado,

izquierda_despejada,izquierda_bloqueada,derecha_despejada,derecha_bloqueada,junto_a_moneda, no_junto_a_moneda,hacia_el_norte, no_hacia_el_nortehacia_el_sur, no_hacia_el_sur,hacia_el_este, no_hacia_el_este,hacia_el_oeste, no_hacia_el_oeste,con_monedas_en_su_bolsa,sin_monedas_en_su_bolsa

Nota 1: El simulador solo permite números <entero> entre 0 y 1000, y <natural>entre 1 y 25.Nota 2: Se permite insertar espacios, tabuladores, y saltos de línea entre palabrasdel programa. Se considera una palabra como una secuencia de letras o númerosunidas por "_".

4 Apéndice A. Resumen del lenguaje

Page 135: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

INSTALACIÓNDEL

SOFTWARE

Requisitos del sistema

1. PC IBM Compatible 386, 486 o superior

2. Sistema operativo Microsoft Windows versión 3.1, 3.11, 95 o NT.

3. Espacio disponible en disco duro de 1 Megabyte

Instalación del software

1. Desde Windows ejecutar el programa de instalación instalar.exe del disquete.

2. Ingresar el nombre del directorio donde se va a instalar el simulador de Karel.Se sugiere utilizar el directorio c:\karel.

3. El programa de instalación creará un grupo llamado KAREL, con doselementos: el Simulador de Karel y el Editor visual de Karel. Para correrlos,simplemente haga doble clic sobre el que deseé.

Vea el archivo LEEME.TXT del directorio donde haya instalado el simulador. Estearchivo contiene información importante relacionada con la versión del simuladorde Karel que instaló.

Apéndice B. Instalación del software 1

B

Page 136: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

Contenido del disquete

Archivos de programas ejecutables y de ayuda

KAREL.EXE KAREL.HLP INSTALAR.EXEVISUAL.EXE CARGA.EXE SANGRA.EXELEEME.TXT

Archivos de sonido

APAGATE.WAV CHOQUE.WAV GIRA.WAVAVANZA.WAV COLOCA.WAV RECOGE.WAV

Archivos de programas para Karel utilizados en los capítulos 1 a 5

0.KAR 5.KAR 9.KAR 13.KAR1.KAR 6.KAR 10.KAR 14.KAR2.KAR 7A.KAR 11.KAR 15.KAR3.KAR 7B.KAR 12A.KAR 16.KAR4.KAR 8.KAR 2B.KAR 17.KAR

18.KAR

Archivos de los ejercicios propuestos por capítulo

CAP2_1.KAR CAP3_5.KAR CAP4_2.KARCAP2_2.KAR CAP3_6.KAR CAP4_3.KARCAP2_4.KAR CAP3_10B.KARCAP2_5.KAR CAP3_10C.KARCAP2_6.KAR CAP3_10D.KARCAP2_8.KAR CAP3_10A.KARCAP2_9.KAR CAP3_11.KAR CAP3_12.KAR CAP3_14.KAR CAP3_16.KAR CAP3_17.KAR CAP3_18.KAR

2 Apéndice B. Instalación del software

Page 137: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

ÍNDICEAAbrir, 10Abstracción, 43Acumulador, 85Algoritmo iterativo, 69Algoritmo recursivo, 69Algoritmos, 51Ambiente, 8Ambigüedad, 8Apágate, 8Archivo, 10Archivos, 8Aumenta velocidad, 10Avanza, 8Avenidas, 4BBloque de instrucciones, 28Brazo mecánico, 5Brújula, 5CCalles, 4Cámaras de video, 5Caso base, 73Caso inductivo, 73Caso recursivo, 73Ciclo condicional, 57Ciclo incondicionalCiclo infinito, 61Compila, 10Compila y Margina, 25Copiar, 10Cortar, 10Cuadras, 5

DDepuración, 28Disminuye Velocidad, 10EEdición, 10Editor, 7Editor visual, 35Ejecución automática, 12Ejecución manual, 12Ejecuta, 10Ejecuta 1 Ins. por segundo, 10Ejecuta hasta el cursor, 10Ejecuta hasta el final, 10Ejecuta hasta fin de instrucción,10Ejecuta instrucción, 10Ejecuta Instrucción dentro, 10Ejecutar, 12Errores de ejecución, 27Errores de intento, 28Errores léxicos, 27Errores sintácticos, 27Espiral, 96Esquina, 4Extensión, 8FFactorial, 88, 118Factorización hacia abajo, 59Factorización hacia arriba, 59Función, 115Funciones nuevas, 116Funciones primitivas, 116GGuardar, 10

Índice 1

Page 138: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

HHanoi, 99IIdiomas, 8Igualdad, 115Indicador de dirección, 5Instancia, 72Instrucción apagate, 23Instrucción avanza, 23Instrucción coloca_moneda, 23Instrucción de asignación, 115Instrucción de repetición, 57Instrucción gira_a_la_izquierda,23Instrucción MIENTRAS-HAZInstrucción recoge_moneda, 23Instrucción recursiva, 69Instrucción REPITE-VECES, 30instrucción REPITE-VECESinstrucción SI-ENTONCES, 51Instrucción SI-ENTONCES-SI-NO, 54Instrucciones básicas, 21Instrucciones compuestas, 21Instrucciones equivalentesInstrucciones nuevas, 28Instrucciones primitivas, 21Inversión de prueba, 58LLegibilidad, 22Lenguaje, 7Lenguaje de programación, 7Léxico, 113M

Margen, 25Margina, 10Máximo Común Divisor, 112Monedas, 4Multiplica, 85Mundo, 7NNuevo, 10Números de base 1, 73OOrigen, 4PPara, 10Paredes, 4Paro por error, 23Pegar, 10pixeles, 54Programa, 7Programar, 7Programas comprensibles, 34Prueba, 51RRecoge_moneda, 8Recursión directa, 81Recursión indirecta, 81Refinación paso por paso, 31Reglas gramaticales, 8, 22Reusar, 111SSangrado, 25Sección de ambiente, 22Sección de ejecución, 24Sección de programa, 24Secuencia, 25

2 Índice

Page 139: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

Semántica, 113Símbolos de puntuación, 8Sintaxis, 113Situación, 13Situación final, 13Suma, 73TTarea, 13Tipo, 115VValor, 114Variable, 114Variable local, 118Ventana de edición, 7Ventana de visualización, 7Video inverso, 54Vista, 7Vocabulario, 7ZZoom, 7

Índice 3

Page 140: LA ESENCIA DE LA PROGRAMACIÓN - …dep.fie.umich.mx/~lromero/books/karel/libro_karel_lromero.pdf · El lenguaje de programación C ... particularmente con el C. Al final de cada

4 Índice