






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Este documento proporciona una introducción a los conceptos fundamentales de la programación, abarcando desde la definición de algoritmos y programas hasta los lenguajes y paradigmas de programación. Se explican los diferentes tipos de problemas, los lenguajes algorítmicos como el pseudocódigo, y las características de los lenguajes de programación, incluyendo sintaxis y semántica. Además, se aborda la evolución de los lenguajes de programación, los paradigmas como el imperativo, y la ingeniería del software con sus fases del ciclo de vida. Una visión general y conceptos clave para la resolución de problemas mediante la computadora.
Tipo: Esquemas y mapas conceptuales
1 / 10
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!







Para aprender a programar es necesario tener claros ciertos conceptos generales y espe- cíficos de todo lo que envuelve el proceso de la programación. En este capítulo se trata de dar una visión general de la programación y a la vez exponer los conceptos clave para la resolución de problemas por medio de la computadora u ordenador.
Una computadora se puede ver como un sistema, en el que se introducen unos datos (datos de entrada), el sistema los procesa, operando con ellos y a veces transformándolos, y devuelve el resultado de ese procesamiento (datos de salida). La figura 1.1 muestra gráficamente una computadora elemental. De esta definición informal se puede deducir un modelo computacional y describirlo dando los datos de entrada que admite y las operaciones básicas que va a poder efectuar con dichos datos. La programación consiste en escribir lo que debe hacer la computadora para resolver un problema concreto utilizando un lenguaje de programación.
En este apartado se introducen algunos conceptos básicos sobre los elementos que invo- lucra la programación.
Un problema es una proposición encaminada a averiguar el modo de obtener un resul- tado, cuando se conocen ciertos datos de partida. Los problemas se pueden dividir en tres tipos, dependiendo de las soluciones que tenga, que son:
Figura 1.1: Modelo de computadora
Sin solución o irresolubles: esos problemas no pueden ser solucionados con los me- dios disponibles. Por ejemplo, el clásico problema de la cuadratura del círculo: "Dado un círculo, construir un cuadrado de igual área que el círculo utilizando solamente regla y compás" (la mencionada regla es no graduada y solo sirve para trazar rectas).
Determinados: los problemas tienen solución y además es única. Por ejemplo, encon- trar un número natural x que resuelva la ecuación 2x=4.
Indeterminados: estos poseen un número indefinido de soluciones. Por ejemplo, hallar dos números enteros x, y que cumplen el siguiente sistema de ecuaciones: 2x-y=3; 4x-2y= -2;
Para la correcta resolución de un problema se deben seguir los pasos siguientes:
Existen varias definiciones para el concepto de algoritmo. Entre ellas destacan:
Definición 1: descripción precisa de los pasos que nos llevan a la solución de un pro- blema planteado.
También es deseable que tenga las siguientes características:
Los algoritmos indican como solucionar los problemas. Algunos problemas tienen dis- tintas soluciones algorítmicas. Por ejemplo, hallar el máximo común divisor de dos números. Otros problemas no tienen solución algorítmica, por ejemplo el problema de la parada (encontrar un algoritmo que determine si otro algoritmo finaliza o no con unos determinados datos de entrada).
Programa: es un conjunto de instrucciones precisas, en un lenguaje "entendible" por la computadora. Hay que notar que el ordenador solo comprende directamente el lenguaje máquina.
Programación: se denomina programación a todo el proceso que conlleva la construc- ción de programas.
Para construir un programa hay que seguir un método. La ingeniería del software se encarga del estudio y la aplicación de los distintos métodos existentes para desarrollar completamente aplicaciones informáticas. En el apartado 1.4 se da una explicación más amplia de la ingeniería del software.
En este apartado se definen los lenguajes de programación, se muestran sus característi- cas principales y su evolución. También se da una pequeña introducción a los paradigmas y se define el usado en este libro: el paradigma imperativo.
Un lenguaje de programación es un lenguaje artificial, diseñado para representar algorit- mos de forma inteligible para las computadoras. Existen muchos lenguajes de programación, pero el único que entiende el ordenador directamente, como se ha comentado anteriormente, es el lenguaje máquina, cuyas ins- trucciones están codificadas en forma de secuencias de ceros y unos (bits). El resto de lenguajes necesitan traducir o interpretar las instrucciones al lenguaje máquina.
Comparación entre el lenguaje natural y los lenguajes de programación
Los lenguajes de programación son más formales y rigurosos que el lenguaje natural. Esto es debido a que sus instrucciones no son ambiguas y por lo tanto no permiten dis- tintas interpretaciones. Todas las personas que lean una instrucción saben perfectamente qué hace (si conocen el lenguaje de programación). Los lenguajes de programación son más simples en su sintaxis y en su semántica que los naturales. Las reglas de formación de instrucciones (sintaxis) son rígidas, al contrario que los lenguajes naturales en los que una misma frase se suele poder escribir cambiando el orden de ciertos elementos. El significado de las instrucciones viene cla- ramente definido en los lenguajes de programación en contraposición con los lenguajes naturales en los que existe ambigüedad semántica. Algunas características importantes de los lenguajes de programación son:
Como evolución natural surgió un nuevo lenguaje llamado ensamblador, donde a cada secuencia de ceros y unos se le asocia un nombre nemotécnico. Estos nombres necesitan traducción, que se realiza mediante un programa que se llama como el lenguaje: ensam- blador. Aunque fue un gran avance, todavía es necesario conocer cómo está constituida y qué recursos tiene la computadora. Más tarde se fueron asociando nombres a conjuntos de instrucciones que realizaban una tarea compleja determinada, y a programar de manera independiente a la compu- tadora donde se iba a ejecutar el código. A los lenguajes que incluyen estas característi- cas se les denomina lenguajes de alto nivel, porque se encuentran más cercano a la forma de pensar de los humanos que al lenguaje que entiende la máquina. Los lenguajes de programación han ido evolucionando gracias a cuatro causas o motores que impulsan esta evolución, que son:
Abstracción: proceso mental por el que el ser humano extrae las características esen- ciales de algo, e ignora los detalles superfluos. Es esencial para modelar el mundo real. En un principio se hacían programas pensando como una computadora. En la actualidad se solucionan los problemas sin conocer la máquina donde va a ser ejecutado el programa.
Encapsulación: proceso por el que se ocultan los detalles de las características de una abstracción. En programación es esencial para reutilizar código. Si se ocultan los detalles de cómo está hecho un programa pero se conoce el modo de funcio- namiento, se puede utilizar en cualquier otro programa sin más que respetar su especificación.
Modularidad: proceso de descomposición de un sistema en un conjunto de elementos poco acoplados (independientes) y cohesivos (con significado propio). Es esencial para abordar la resolución de problemas extensos o complicados.
Jerarquía: proceso de estructuración por el que se organizan un conjunto de elementos en distintos niveles, atendiendo a determinados criterios (responsabilidad, compo- sición, etc.)
A medida que se fueron añadiendo estas características fueron surgiendo los siguien- tes estilos de programación:
Programación estructurada: se añade a la programación en código máquina la abs- tracción de datos e instrucciones.
Programación modular: se añade a la programación estructurada la modularidad.
Programación con tipos abstractos de datos (TAD): se añade a la programación mo- dular la encapsulación.
Programación orientada a objetos: es la más completa, pues reúne todas las propie- dades que impulsan la evolución de los lenguajes.
Las ventajas de añadir estas propiedades a los lenguajes de programación son:
Definición: Los paradigmas de programación son una colección de patrones concep- tuales que moldean la forma de razonar sobre problemas, de formular algoritmos y, a la larga, de estructurar programas.
Existen varias formas (paradigmas) de enfrentarse a los problemas. En este libro se va a seguir el paradigma imperativo, utilizando programación estructurada y modular. En la figura 1.2 se muestra un gráfico ilustrativo de la relación entre los paradigmas y los lenguajes de programación. La programación imperativa o de flujo de datos se basa en el modelo Von Neumann de un computador, donde la máquina es de propósito general (permite realizar cualquier tarea computacional) y el programa que contiene las órdenes o instrucciones se encuentra almacenado en memoria. Este programa contiene un conjunto de operaciones primiti- vas, que se van ejecutando de manera secuencial, es decir, una detrás de otra, en el orden en que están escritas. Las variables, expresiones e instrucciones son abstracciones de las tareas y los datos que se usan. Programar en este paradigma consiste en declarar los datos (variables) necesarios y diseñar una secuencia adecuada de instrucciones (asigna- ciones) controlando el flujo mediante instrucciones de control. Ejemplos de lenguajes de programación que soportan este paradigma imperativo son: Pascal, C, Ada, Modula2...
El desarrollo de programas se realiza siguiendo unos métodos. La ingeniería del software se encarga del estudio de todo el proceso que envuelve la realización de las aplicaciones informáticas y se puede definir como sigue:
Definición-1 (Bauer, 1969): el establecimiento y uso de principios robustos de la in- geniería a fin de obtener económicamente software que sea fiable y que funcione eficientemente sobre máquinas reales.
Definición-2 (IEEE, 1993): La aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software.
Ambas definiciones se basan en la aplicación de métodos de ingeniería para el desarro- llo de programas. Existen varios métodos pero nosotros nos fijaremos y seguiremos el denominado ciclo de vida del software que consiste en las siguientes fases o pasos:
Codificación
En este paso se escriben los algoritmos de los distintos módulos en el lenguaje de pro- gramación elegido. Una vez que se han implementado se integran las partes para que formen un programa completo.
Validación
Consiste en aplicar el sistema de pruebas descrito en la fase de análisis de requerimien- tos. Los métodos de validación son pruebas, inspecciones y la verificación formal. Estos métodos se han de aplicar a todos los objetos de validación que son: los módulos de programa, las conexiones entre ellos (integración) y finalmente a la aplicación entera.
Mantenimiento
Aquí se redacta la documentación actualizada de todos los pasos. Se inicia la explota- ción del software, poniéndolo en funcionamiento real. Se detectan y subsanan errores cometidos en etapas anteriores y si es necesario se adapta la aplicación a nuevos requi- sitos.