Aprenda a programar como si estuviera en primero

ESCUELA SUPERIOR DE INGENIEROS DE SAN SEBAST ÁN TECNIJN APRE-NDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO IKER AGUINAGA GONZALO MARTÍNEZ JAVIER DÍAZ Esta publicación tiene la única finalidad de facilitar el estudio y trabajo de los alumnos de la asignatura. Ni los autores ni la Universidad de Navarra perciben cantidad alguna por su edición o reproducción. ÍNDICE Capítulo 1 Los progra PACE 1 un to View nut*ge programa? 1 1. 2 ¿Qué es un len programación? 1 1. 3 Las cuatro patas de la programación 1 1. 4 Lenguajes de programación…….. 2 1. 4. Lenguajes de alto y bajo nivel . 2 1. 4. Lenguajes imperativos y funcionales 3 1. 4. 3 Lenguajes interpretados y compilados . 4 1. 4. 4 Lenguajes que soportan la programación estructurada……… . 4 1. 4. 5 Lenguajes fuertemente y débilmente «tipados».. 5 1. 4. 6 Lenguajes que soportan la programación orientada a objetos……. 5 1. 5 Errores „ 1. 5. 1 Errores de sintaxis 6 1. 5. 2 Errores lógicos…… . 6 1. 5. 3 Debugger 6 Capítulo 2 Estructuras fundamentales de los datos 9 2. 1 Introducción…………. 9 2. 2 Las variables y las constantes……… 2. 3 Tipos de datos….. ,… 10 2. 3. 1 variables 10 2. 32 Números enteros . 1 2. 3. 3 Números de coma 12 2. 34 flotante…. Caracteres 12 2,4 Datos estructurados . 13 2. 4. 1 Vectores y cadenas …. „…… 13 2. 4. 2 de caracteres…….. Matrices 13 2. 4. 2 caracteres… Matrices . 14 2. 4. 3 Estructuras . 14 Capitulo 3 El flujo de un 15 programa 3. 1 „ 15 3. 2 El origen de los diagramas de flujo . 15 3. 3 Elementos de un diagrama de flujo 16 3. 4 Desarrollo de un diagrama de flujo para un proceso cotidiano 16 3. 5 Instrucciones………… 17 3. 6 Operaciones aritmético 18 3. 6. 1 El operador de aslgnaclon 18 3. 6. 2 Operadores aritméticos o matemáticos. 18 3. 6. operadores 19 3. 6. 4 Operadores lógicos . 20 3. 7 Blfurcaciones — 21 3. 7. 1 sentencia 21 3. 7. 2 Sentencia if else . 21 3. 7. 3 Sentencia if elseif… e Ise múltiple „ 22 iii Índice 3. 8 Bucles „ 24 3. 8. 1 Bucle While — . 24 3. 8. 2 Bucle For — — — 26 3. 8. 3 Anidamiento de bucles 27 Capítulo 4 Funciones o procedimientos — 29 4. 1 Introducción…….. . 29 4. 2 Funciones o procedimientos . 29 Ejemplo 1.

Función matemática 30 Ejemplo 2. Derivada numérica de la anterior función 30 Ejemplo 3. Función que obtiene las raíces de un polinomio de 20 grado……. . 31 capítulo 5 Algoritmos . Algoritmos 33 5. 1 33 5. 2 Algoritmos directos 33 Ejemplo 4. Algoritmo para saber si el número 5 es . 33 Ejemplo 5. Determinar el tipo de pnmo raíces de un polinomio de segundo grado.. 34 5. 3 Algoritmos iterativos 35 Ejemplo 6. Determinar iterativamente si un número N es o no 35 Ejemplo 7. Mejora del algoritmo para calcular si un número N es primo . . 36 Ejemplo 8.

Obtención del factorial de un número N . 38 Ejemplo 9. Descomposición factorial iteratlvamente de un número 39 5. 4 Algoritmos recurslvos 40 Ejemplo 10. Obtención del factorial de un número N recursivamente . 41 Ejemplo 11. Determinar recursivamente si un número N es . 42 Ejemplo 12. El triángulo de o no primo . Sierpinski……………….. — . 43 5. 5 Algoritmos de prueba y error.. 47 5. 5. 1 Algoritmos iterativos de prueba y 47 Ejemplo 13. Método de Newton Rapshon de manera iterativa 47 Ejemplo 14. s OF Método de Newton Rapshon de manera iterativa — 47 Ejemplo 14.

Cálculo de las dimensiones óptimas de un cilindro.. 50 5. 5. 2 Algoritmos recursivos de prueba y . 52 Ejemplo 15. Método de Newton-Rapshon de manera recursiva 52 Ejemplo 16. El viaje del caballo. 54 Ejemplo 17. El problema de los emparejamientos stables. 57 Escuela Superior de Ingenieros de San Sebastián INTRODUCCIÓN AL MANUAL Este manual está dirigido en prmer lugar a los alumnos que cursan prmero en la escuela de Ingenieros de San Sebastián y se encuentran realizando la asignatura de Informática 1 0 Fundamentos de Computadores.

Pretende servir para que las personas nóveles se introduzcan en la lógica de la programación y, someramente, en los lenguajes de programación. Es un libro esencialmente práctico. No porque los ejemplos que en él aparecen sirvan para algo, sino porque rehuye de posibles elucidaciones abstractas – un siendo estas tan necesarias para el desarrollo de la lógica computacional. Es un manual que complementa a la colección de manuales «Aprenda Informática como si estuviera en Primero» publicados en TECNUN. Estos manuales son muy útiles para introducirse en el lenguaje de programación del que versan.

Sin embargo, este manual no está orientado a aprender ningún lenguaje de programación, sino a incentivar al lector para que aprenda a razonar los pasos necesarios para realizar una tarea acertadamente. Esto es, para que aprenda a programar. El sustrato de este manual realizar una tarea acertadamente. Esto es, para que aprenda a programar. El sustrato de este manual es la experiencia de los autores y los libros clásicos de algoritmia. Los ejemplos que se presentan plantean problemas que no necesitan un conocimiento profundo de matemáticas para entender su planteamiento y resolución.

Son, en muchos casos, ejemplos universalmente conocidos. La primera parte del manual, hasta el capítulo 4 incluido, esboza el estado del arte y expone los rudimentos necesarios para la programación. Se enseñan los elementos comúnmente utilizados en distintos lenguajes; principalmente, ómo se estructura la información y como se controla el flujo de un programa. El capitulo 5 presenta una agrupación de algoritmos con ejemplos. Como se ha comentado antenormente, no es intención del manual tratar con lenguajes de programación, pero la necesidad de aplicar los algoritmos que se presentan hace inevitable recurrir a éstos.

En concreto nos hemos decantado por utilizar Matlab debido a sus simplificadoras ventajas. Tipografia utilizada Para indicar… Variables Líneas del programa Funciones Este manual utiliza… Negrita Negrita con tamaño de letra pequeño Ejemplo M es una matriz Negrita e Itálica La función sin(Fi) devuelve el seno del ángulo Pi. Capítulo 1 Los programas 1. 1 ¿Qué es un programa? para el programa, y produce como resultado otra serie de datos que se derivan de los primeros al aplicar sobre los datos de entrada las instrucciones.

Debido a las capacidades de los actuales microprocesadores digitales, absolutamente todos los datos se representan de forma numérica y digital. Aunque esto pueda parecer inicialmente una limitación es en realidad la causa de la enorme flexibilidad y poder de las modernas computadoras. 1. 2 ¿Qué es un lenguaje de programación? Como los lenguajes humanos, los lenguajes de programación son herramientas de comunicación, pero al contrario que los lenguajes corrientes como el inglés o el chino, los destinatanos de los lenguajes de programación no son sólo humanos sino también los ordenadores.

El propósito general de un lenguaje de programación es permitir a un ser humano (el programador) traducir la idea de un programa en una secuencia de instrucciones que el ordenador sea capaz de ejecutar. 1. 3 Las cuatro patas de la programación Las cuatro patas de la programación son: Los datos Los bucles Las ifurcaciones Las funciones Los datos que almacena un ordenador son siempre números. Incluso las letras almacenadas en un ordenador se almacenan como números; en este caso los números codifican una letra (por ejemplo, la letra «a» es el número 97 en la codificación ASCII).

Los datos se pueden almacenar ordenadamente como: 1 Página 2 Datos individuales Vectores Matrices Hipermatrices Aprenda a programar como si estuviera en Primero Jugando con estos números se consiguen hacer los programas. Las herramientas de las q s lenguajes de programación para lugar c on los bucles V las ue disponen los lenguajes de programación para jugar con los datos son los bucles y las bifurcaciones, con quienes se controla el flujo del programa. Por último hay que destacar que la programación exige orden.

El orden se consigue separando las distintas subrutinas que componen el programa y esto se consigue mediante las funciones. El conjunto de las distintas funciones y subrutinas conforman el programa. 1. 4 Lenguajes de programación Existe una cantidad gigantesca de lenguajes de programación distintos (incluidos muchos dialectos), y muchas formas de clasificarlos. A continuación se verán algunas de las más mportantes y se nombrarán algunos de los lenguajes más populares, o importantes, en cada una de las categorías. . 4. 1 Lenguajes de alto y bajo nivel Esta clasificación divide a los lenguajes según la proximidad de las instrucciones que emplea el programador a las instrucciones que físicamente emplea el procesador de una computadora. Estas últimas son en general muy sencillas y tienen un valor numérico que las define. Aunque es posible crear un programa empleando directamente estos valores numéricos, en cuanto un programa alcanza unas pocas decenas de instrucciones comienza a ser ompletamente inmanejable.

Página 3 Para facilitar el trabajo de los programadores todos los fabricantes de CPU crean citicas para las ocesadores, sustituyendo instrucciones que soporta mnemónico. Por ejemplo, los procesadores de Intel o AMD que encontramos en los PC comparten las instrucciones y el lenguaje de ensamblador, pero no así el procesador de una SONY playstation que es distinto a los otros dos mencionados y requiere de otro lenguaje de ensamblador. Debido a la cercanía con las instrucciones básicas, los lenguajes de ensamblador se consideran lenguajes de bajo nivel.

Los lenguajes de alto nivel or el contrario abstraen al programador de las instrucciones, mediante el uso de expresiones más cercanas al lenguaje natural y/o a las matemáticas. Como botón de muestra compare estos ejemplos escritos en lenguaje ensamblador y con Matlab para realizar la misma operación: Ensamblador para procesadores Pentium o AMD Athlon mov eax, 10; mov ebx, 12; add eax, ebx; mov r, eax; r=10+12 Matlab 1. 4. 2 Lenguajes imperativos y funcionales En los lenguajes de programacion imperativos los programas se dividen claramente en datos y código, siendo este último el encargado de manipular los datos de forma explícita.

Suelen asarse, por lo tanto, en la manipulación de variables a las que el programa les va asignado valores específicos. En los lenguajes funcionales, por el contrario, se diluye en cierta medida la diferencia entre código y datos al poder asignar bloques de código a variables. Compárese una función para calcular el factorial en el lenguaje Scheme (funcional) y en Matlab (imperativo), se puede comprobar que en el caso de Matlab existen variables a las que se le asignan valores directamente (mediante el operador de asignación z) y la inexistencia del mismo en Scheme. Scheme (define fact (lambda (n) (if n 1) (* n (fact (- n 1))) 1