Algoritmos y Programaci¶on en Pascal Crist¶obal Pareja Flores Manuel Ojeda Aciego A¶ngel Andeyro Quesada Carlos Rossi Jim¶enez Algoritmos y Programaci¶on en Pascal A nuestros compan~eros y alumnos ¶ Indice Presentaci¶on xix Tema I Algoritmos e introducci¶on a Pascal 1 Cap¶‡tulo1 Problemas, algoritmos y programas 3 1.1 Soluci¶on de problemas mediante programas : : : : : : : : : : : : 3 1.2 Concepto de algoritmo : : : : : : : : : : : : : : : : : : : : : : : : 5 1.2.1 Una deflnici¶on de algoritmo : : : : : : : : : : : : : : : : : 6 1.2.2 Una deflnici¶on formal de algoritmo : : : : : : : : : : : : : 8 1.3 Aspectos de inter¶es sobre los algoritmos : : : : : : : : : : : : : : 11 1.3.1 Computabilidad : : : : : : : : : : : : : : : : : : : : : : : 11 1.3.2 Correcci¶on de algoritmos : : : : : : : : : : : : : : : : : : 14 1.3.3 Complejidad de algoritmos : : : : : : : : : : : : : : : : : 15 1.4 Lenguajes algor¶‡tmicos y de programaci¶on : : : : : : : : : : : : : 16 1.5 Desarrollo sistem¶atico de programas : : : : : : : : : : : : : : : : 18 1.6 Conclusi¶on : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 20 1.7 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 20 1.8 Referencias bibliogr¶aflcas : : : : : : : : : : : : : : : : : : : : : : 21 Cap¶‡tulo2 El lenguaje de programaci¶on Pascal 23 2.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 23 2.2 Otros detalles de inter¶es : : : : : : : : : : : : : : : : : : : : : : : 24 2.3 Origen y evoluci¶on del lenguaje Pascal : : : : : : : : : : : : : : : 24 2.4 Pascal y Turbo Pascal : : : : : : : : : : : : : : : : : : : : : : : : 25 Cap¶‡tulo3 Tipos de datos b¶asicos 27 3.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 28 viii ¶Indice 3.2 El tipo integer : : : : : : : : : : : : : : : : : : : : : : : : : : : : 28 3.3 El tipo real : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 32 3.4 El tipo char : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 35 3.5 El tipo boolean : : : : : : : : : : : : : : : : : : : : : : : : : : : : 36 3.6 Observaciones : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 39 3.7 El tipo de una expresi¶on : : : : : : : : : : : : : : : : : : : : : : : 43 3.8 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 43 Cap¶‡tulo4 Elementos b¶asicos del lenguaje 47 4.1 Un ejemplo introductorio : : : : : : : : : : : : : : : : : : : : : : 47 4.2 Vocabulario b¶asico : : : : : : : : : : : : : : : : : : : : : : : : : : 48 4.2.1 Constantes y variables : : : : : : : : : : : : : : : : : : : : 52 4.3 Instrucciones b¶asicas : : : : : : : : : : : : : : : : : : : : : : : : : 52 4.3.1 Asignaci¶on : : : : : : : : : : : : : : : : : : : : : : : : : : 52 4.3.2 Instrucciones de escritura : : : : : : : : : : : : : : : : : : 54 4.3.3 Instrucciones de lectura : : : : : : : : : : : : : : : : : : : 57 4.4 Partes de un programa : : : : : : : : : : : : : : : : : : : : : : : : 59 4.4.1 Encabezamiento : : : : : : : : : : : : : : : : : : : : : : : 59 4.4.2 Declaraciones y deflniciones : : : : : : : : : : : : : : : : : 60 4.4.3 Cuerpo del programa: : : : : : : : : : : : : : : : : : : : : 62 4.4.4 Conclusi¶on: estructura general de un programa : : : : : : 63 4.5 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 63 Cap¶‡tulo5 Primeros programas completos 67 5.1 Algunos programas sencillos : : : : : : : : : : : : : : : : : : : : : 68 5.1.1 Dibujo de la letra ‘‘C’’ : : : : : : : : : : : : : : : : : : : : 68 5.1.2 Suma de dos nu¶meros : : : : : : : : : : : : : : : : : : : : 69 5.2 Programas claros programas de calidad : : : : : : : : : : : : : 69 ) 5.3 Desarrollo descendente de programas : : : : : : : : : : : : : : : : 71 5.4 Desarrollo de programas correctos : : : : : : : : : : : : : : : : : 73 5.4.1 Estado de los c¶omputos : : : : : : : : : : : : : : : : : : : 73 5.4.2 Desarrollo descendente con especiflcaciones : : : : : : : : 78 5.5 Observaciones flnales : : : : : : : : : : : : : : : : : : : : : : : : : 79 5.6 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 81 ¶Indice ix Tema II Programaci¶on estructurada 83 Cap¶‡tulo6 Instrucciones estructuradas 85 6.1 Composici¶on de instrucciones : : : : : : : : : : : : : : : : : : : : 86 6.2 Instrucciones de selecci¶on : : : : : : : : : : : : : : : : : : : : : : 88 6.2.1 La instrucci¶on if-then-else : : : : : : : : : : : : : : : : : 88 6.2.2 La instrucci¶on case : : : : : : : : : : : : : : : : : : : : : 92 6.3 Instrucciones de iteraci¶on : : : : : : : : : : : : : : : : : : : : : : 94 6.3.1 La instrucci¶on while : : : : : : : : : : : : : : : : : : : : : 94 6.3.2 La instrucci¶on repeat : : : : : : : : : : : : : : : : : : : : 98 6.3.3 La instrucci¶on for : : : : : : : : : : : : : : : : : : : : : : 100 6.4 Disen~o y desarrollo de bucles : : : : : : : : : : : : : : : : : : : : 103 6.4.1 Elecci¶on de instrucciones iterativas : : : : : : : : : : : : : 103 6.4.2 Terminaci¶on de un bucle : : : : : : : : : : : : : : : : : : : 105 6.4.3 Uso correcto de instrucciones estructuradas : : : : : : : : 106 6.5 Dos m¶etodos num¶ericos iterativos : : : : : : : : : : : : : : : : : : 113 6.5.1 M¶etodo de bipartici¶on : : : : : : : : : : : : : : : : : : : : 113 6.5.2 M¶etodo de Newton-Raphson : : : : : : : : : : : : : : : : 115 6.5.3 Inversi¶on de funciones : : : : : : : : : : : : : : : : : : : : 117 6.6 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 117 Cap¶‡tulo7 Programaci¶on estructurada 123 7.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 123 7.2 Aspectos te¶oricos : : : : : : : : : : : : : : : : : : : : : : : : : : : 125 7.2.1 Programas y diagramas de (cid:176)ujo : : : : : : : : : : : : : : : 125 7.2.2 Diagramas y diagramas propios : : : : : : : : : : : : : : : 126 7.2.3 Diagramas BJ (de B˜ohm y Jacopini) : : : : : : : : : : : : 130 7.2.4 Equivalencia de diagramas : : : : : : : : : : : : : : : : : : 135 7.2.5 Teoremas de la programaci¶on estructurada : : : : : : : : 137 7.2.6 Recapitulaci¶on : : : : : : : : : : : : : : : : : : : : : : : : 138 7.3 Aspectos metodol¶ogicos : : : : : : : : : : : : : : : : : : : : : : : 139 7.3.1 Seudoc¶odigo : : : : : : : : : : : : : : : : : : : : : : : : : : 139 7.3.2 Disen~o descendente : : : : : : : : : : : : : : : : : : : : : : 141 7.4 Reflnamiento correcto de programas con instrucciones estructuradas : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 146 x ¶Indice 7.4.1 Un ejemplo detallado : : : : : : : : : : : : : : : : : : : : 147 7.4.2 Recapitulaci¶on : : : : : : : : : : : : : : : : : : : : : : : : 150 7.5 Conclusi¶on : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 151 7.6 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 151 7.7 Referencias bibliogr¶aflcas : : : : : : : : : : : : : : : : : : : : : : 153 Tema III Subprogramas 155 Cap¶‡tulo8 Procedimientos y funciones 157 8.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 158 8.2 Subprogramas con par¶ametros: : : : : : : : : : : : : : : : : : : : 162 8.2.1 Descripci¶on de un subprograma con par¶ametros : : : : : : 162 8.2.2 Par¶ametros formales y reales : : : : : : : : : : : : : : : : 165 8.2.3 Mecanismos de paso de par¶ametros : : : : : : : : : : : : : 165 8.2.4 Consistencia entre deflnici¶on y llamada : : : : : : : : : : 168 8.3 Estructura sint¶actica de un subprograma: : : : : : : : : : : : : : 169 8.4 Funcionamiento de una llamada : : : : : : : : : : : : : : : : : : : 170 8.5 A¶mbito y visibilidad de los identiflcadores : : : : : : : : : : : : : 174 8.5.1 Tipos de identiflcadores segu¶n su ¶ambito : : : : : : : : : : 174 8.5.2 Estructura de bloques : : : : : : : : : : : : : : : : : : : : 175 8.5.3 Criterios de localidad : : : : : : : : : : : : : : : : : : : : 181 8.5.4 Efectos laterales : : : : : : : : : : : : : : : : : : : : : : : 181 8.6 Otras recomendaciones sobre el uso de par¶ametros : : : : : : : : 183 8.6.1 Par¶ametros por valor y por referencia : : : : : : : : : : : 183 8.6.2 Par¶ametros por referencia y funciones : : : : : : : : : : : 183 8.6.3 Funciones con resultados mu¶ltiples : : : : : : : : : : : : : 184 8.7 Desarrollo correcto de subprogramas : : : : : : : : : : : : : : : : 184 8.8 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 186 Cap¶‡tulo9 Aspectos metodol¶ogicos de la programaci¶on con subprogramas 189 9.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 189 9.2 Un ejemplo de referencia : : : : : : : : : : : : : : : : : : : : : : : 190 9.3 Metodolog¶‡a de la programaci¶on con subprogramas : : : : : : : : 192 9.3.1 Disen~o descendente con subprogramas : : : : : : : : : : : 193 ¶Indice xi 9.3.2 Programa principal y subprogramas : : : : : : : : : : : : 194 9.3.3 Documentaci¶on de los subprogramas : : : : : : : : : : : : 195 9.3.4 Taman~o de los subprogramas : : : : : : : : : : : : : : : : 196 9.3.5 Reflnamiento con subprogramas y con instrucciones estructuradas : : : : : : : : : : : : : : : : : : : : : : : : : 197 9.4 Estructura jer¶arquica de los subprogramas : : : : : : : : : : : : : 199 9.5 Ventajas de la programaci¶on con subprogramas : : : : : : : : : : 201 9.6 Un ejemplo detallado: representaci¶on de funciones : : : : : : : : 203 9.7 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 207 Cap¶‡tulo10 Introducci¶on a la recursi¶on 211 10.1 Un ejemplo de referencia : : : : : : : : : : : : : : : : : : : : : : : 212 10.2 Conceptos b¶asicos : : : : : : : : : : : : : : : : : : : : : : : : : : 213 10.3 Otros ejemplos recursivos : : : : : : : : : : : : : : : : : : : : : : 216 10.3.1 La sucesi¶on de Fibonacci : : : : : : : : : : : : : : : : : : 216 10.3.2 Torres de Hanoi : : : : : : : : : : : : : : : : : : : : : : : 216 10.3.3 Funci¶on de Ackermann : : : : : : : : : : : : : : : : : : : : 219 10.4 Correcci¶on de subprogramas recursivos : : : : : : : : : : : : : : : 219 10.4.1 Principios de inducci¶on : : : : : : : : : : : : : : : : : : : 220 10.5 Recursi¶on mutua : : : : : : : : : : : : : : : : : : : : : : : : : : : 222 10.6 Recursi¶on e iteraci¶on : : : : : : : : : : : : : : : : : : : : : : : : : 226 10.7 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 227 10.8 Referencias bibliogr¶aflcas : : : : : : : : : : : : : : : : : : : : : : 228 Tema IV Tipos de datos deflnidos por el programador 231 Cap¶‡tulo11 Tipos de datos simples y compuestos 233 11.1 Tipos ordinales deflnidos por el programador : : : : : : : : : : : 234 11.1.1 Tipos enumerados : : : : : : : : : : : : : : : : : : : : : : 235 11.1.2 Tipo subrango : : : : : : : : : : : : : : : : : : : : : : : : 238 11.2 Deflnici¶on de tipos : : : : : : : : : : : : : : : : : : : : : : : : : : 240 11.2.1 Observaciones sobre la deflnici¶on de tipos : : : : : : : : : 242 11.3 Conjuntos : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 244 11.3.1 Operaciones sobre el tipo conjunto : : : : : : : : : : : : : 245 11.3.2 Observaciones sobre el tipo conjunto : : : : : : : : : : : : 247
Description: