GENERALIDADES DE LA PROGRAMACION
INTRODUCCION
Las computadoras son herramientas esenciales en muchas áreas: Industria, Gobierno, Ciencia, Educación, y en todos los campos de nuestra vida.
El papel (rol) de los programas de computadoras es esencial; sin una lista de instrucciones a seguir, las computadoras resultan inútiles.
Una computadora procesa datos y los convierte en información significativa. Para conseguir esos resultados, un programador necesita conocimientos tanto de Hardware y de Software.
El programa es la fuerza conductora de cualquier tarea que hace una computadora. Un programa es una lista detallada de instrucciones que indican a la computadora lo que debe hacer. La computadora no puede hacer nada sin un programa. Es el trabajo del programador de escribir programas lo que influye en la computadora a tomar datos y transformarlos en información significativa para el usuario final.
COMPUTADORAS Y LENGUAJES DE PROGRAMACION
Definición de Computadora:“Máquina electrónica dotada de una memoria de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas matemáticos y lógicos mediante la utilización automática de programas informáticos”.
Una computadora consta de dos partes bien diferenciadas, Hardware y Software: - El Hardware consta de partes físicas, tangibles de la computadora.
- El Software consta de programas, también llamadas aplicaciones, que contiene instrucciones que la computadora ejecuta (corre).
Cuando un usuario interactúa con una computadora, proporciona una entrada; en respuesta, la computadora procesa la entrada devolviendo una salida valiosa al usuario. Una computadora necesita disponer de un conjunto de funcionalidades y proporcionar la capacidad de:
1. Aceptar la entrada
2. Visualizar o presentar la salida. 3. Almacenar la información.
4. Ejecutar operaciones aritméticas o lógicas, ya sea sobre datos de entrada o sobre datos de salida.
5. Monitorizar, controlar y dirigir las operaciones globales y de secuencia del sistema.
EL HARDWARE
El MicroprocesadorEs un chip (circuito integrado) que controla y realiza las funciones y operaciones con los datos. En realidad, el microprocesador representa la Unidad Central de Proceso. Dispositivos de Entrada/Salida (Input/Output)
Permiten la comunicación entre la computadora y el usuario. Los dispositivos de Entrada sirven para introducir datos en la computadora para su proceso. Los datos se leen de los dispositivos y se almacenan en la memoria principal (interna). Ej. Teclado, ratón, lápices ópticos, lectores de código de barras, escáneres, micrófonos, etc. Los dispositivos de Salida permiten representar los resultados (salida) del proceso de los datos. Ej. Monitor, impresora, trazadores gráficos, reconocedores de voz, bocinas, etc. Los dispositivos de entrada/salida y los dispositivos de almacenamiento secundario o auxiliar (memoria externa), se conocen también como dispositivos periféricos, ya que, normalmente son externos a la computadora. Ej. Unidades de disco, CD-ROM, DVD, cintas, etc.
Memoria Principal (interna)
La memoria central o principal se utiliza para almacenar datos. Se divide en RAM y ROM. La RAM (Random Acces Memory) es normalmente volátil, lo que significa que todo cuanto se almacena o guarda en ella, se “pierde” cuando se apaga la computadora. En general la información que se guarda en la memoria puede ser de dos tipos: las Instrucciones de Programa y los Datos con los que operan las instrucciones. Para que un programa se pueda ejecutar (correr, run en Inglés) debe ser situado en la memoria central, en una operación llamada “carga” (Load) del programa. Cuando se ejecuta el programa, cualquier dato a procesar por este programa se debe llevar a la memoria mediante las instrucciones de programa.
Con el objetivo de que el procesador pueda obtener los datos de la memoria central más rápidamente, la mayoría de los procesadores actuales, utilizan con frecuencia una memoria denominada caché que sirve para el almacenamiento intermedio de los datos entre el procesador y la memoria principal. La memoria caché se incorpora casi siempre al procesador.
La memoria principal consta de un conjunto enorme de celdas de memoria. Cada celda de memoria consta normalmente de 8 bits (ceros y unos, un Byte). La unidad elemental de memoria se llama Byte. Un Byte tiene la capacidad de almacenar un carácter de información.
La memoria ROM (Read Only Memory), memoria de solo lectura (no es volátil), contiene instrucciones fundamentales que no pueden ser modificadas por el usuario. Esta memoria incluye aquellas instrucciones necesarias para cargar el software cuando se enciende el equipo y aquellas que el fabricante requiere que estén accesibles cuando la computadora está funcionando.
Direcciones de memoria
En la memoria principal se almacenan:
Los datos enviados para procesarse desde los dispositivos de entrada. Los programas que realizarán los procesos.
Los resultados obtenidos preparados para enviarse a un dispositivo de salida.
Memoria Auxiliar (externa)
Cuando un programa se ejecuta, se debe ubicar primero en la memoria principal de igual modo que los datos. La información almacenada en la memoria se pierde guando se apaga la computadora, además de ser limitada en capacidad. Para poder disponer de almacenamiento permanente, tanto para programas como para datos, se necesitan Dispositivos de almacenamiento secundario, auxiliar o masivo. Los dispositivos de almacenamiento o memorias auxiliares más comúnmente utilizados son: Cintas magnéticas, Discos magnéticos, Discos compactos y Video Discos Digitales o Discos Versátiles Digitales (Digital Versatile Disc).
La información almacenada en la memoria auxiliar se organiza en unidades independientes llamadas archivos (Files en Inglés). Los resultados de los programas se pueden almacenar como archivos de datos y los programas que se escriben se guardan como archivos de programas. Cualquier tipo de archivo se puede transferir desde la memoria auxiliar hasta la memoria principal para su proceso posterior.
EL SOFTWARE (LOS PROGRAMAS).
Las operaciones que deber realizar el hardware son especificadas por una lista de instrucciones, llamadas programas o software.
El Software se divide en dos grandes grupos: Software del sistema y software de aplicaciones.
El software del sistema es el conjunto de programas indispensables para que la máquina funcione; se denominan también programas del sistema. Estos programas son básicamente, el sistema operativo, los editores de texto, los compiladores/intérpretes (lenguajes de programación) y los programas de utilidad. Uno de los programas más importantes es el sistema operativo, que sirve, esencialmente, para facilitar la escritura y uso de sus propios programas. El sistema operativo dirige las operaciones globales de la computadora, instruye a la computadora para ejecutar otros programas y controla el almacenamiento y recuperación de archivos (programas y datos). Gracias al sistema operativo es posible que el programador pueda introducir y grabar nuevos programas, así como instruir a la computadora para que los ejecute.
Los sistemas operativos pueden ser: - Monousuarios (un solo usuario)
- Multiusuarios, o tiempo compartido (diferentes usuarios) - Monotarea (una sola tarea)
- Multitarea (múltiples tareas)
Los sistemas operativos más comunes en nuestro medio son: La familia de windos, Unix, Linux
- Sistema de administración de memoria. Asigna un área de memoria para cada programa que se está ejecutando.
- Administrador del sistema de archivos. Organiza y controla el uso de los discos. - Controladores de dispositivos. Controla los dispositivos de hardware conectados
a la computadora.
- Bibliotecas del sistemas. Contiene todos los tipos de programas de utilidad que se pueden llamar por programas de usuario.
PARA QUE SIRVE LA PROGRAMACIÓN
Una persona piensa y se comporta obedeciendo a un secuencial lógico. Una computadora realiza tareas y maneja datos en memoria obedeciendo a una secuencia de pasos lógicos para lo cual ha sido programado.
Programación de computadoras es la ciencia que permite a una persona programar una computadora para que resuelva tareas de manera rápida. Un Programa de computadora se puede definir como una secuencia de instrucciones que indica las acciones o tareas que han de ejecutarse para dar solución a un problema determinado. Programar computadoras es indispensable en cualquier área de las diferentes disciplinas, ya que diferentes problemas que se puedan presentar tardan tiempo resolverlos de manera manual. La computadora resuelve problemas de acuerdo como se le haya programado de manera rápida.
QUE ES LA PROGRAMACIÓN
La definición anterior deja muchas cosas que decir. Para llegar a tener una secuencia de instrucciones que den solución a un problema es necesario ejecutar varias etapas:
1. Análisis del problema 2. Diseño del programa 3. Prueba del diseño 4. Codificación
5. Compilación y ejecución 6. Verificación y depuración 7. Uso del programa
8. Mantenimiento 9. Documentación
1. Etapa de análisis
En esta etapa el programador debe entender claramente el problema. Saber que es lo que se quiere resolver. (analizar).
Debido a que la solución del problema se hará por computadora, se debe especificar detalladamente la entrada y la salida.
La especificación del programa requiere 5 actividades:
a. Determinación de los objetivos del programa
Definir claramente los problemas que deben ser resueltos para saber qué es lo que se pretende solucionar y proporcionar la información necesaria para el planteamiento de la solución.
b. Determinación de los datos de entrada
Los datos de entrada deben ser recolectados y analizados y la fuente de estos datos.
c. Determinación de los requerimientos de procesamiento
Se definen las tareas de procesamiento que deben realizarse para que los datos de entrada produzcan una salida.
d. Determinación de la salida
Podrá ser una salida impresa o presentada en el monitor de una forma ordenada para producir información.
e. Documentación de las especificaciones del programa.
Deben registrarse todos los datos para el procesamiento requerido.
2. Etapa de Diseño (Solución general):
Escribir la serie de pasos que sean necesarios para dar solución al problema. Estos pasos se pueden desarrollar a través de un Diagrama de flujo (Utilizando símbolos), ó a través de un seudo lenguaje (Utilizando Lenguaje común). A lo anterior es lo que se conoce con el nombre de Algoritmo. (Algoritmo: método para resolver problemas) El proceso que convierte los resultados del análisis del problema en un diseño modular que permita una posterior traducción a un lenguaje se denomina diseño del algoritmo.
El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar.
En la etapa de análisis del proceso de programación determina qué hace el programa. En la etapa de diseño se determina cómo hace el programa la tarea solicitada. El método más eficaz para la resolución de un problema complejo se realiza dividiendo el problema en subproblemas y a continuación estos en otros de nivel más bajo, hasta que pueda ser implementada una solución en la computadora. A este método se le conoce como diseño descendente o modular.
3. Etapa de prueba de escritorio:
4. Etapa de Codificación:
Consiste en traducir el algoritmo a un lenguaje de programación. En esta etapa se hace uso de la lógica que se desarrolló en el paso del diseño del programa.
5. Etapa de compilación y ejecución del programa
.Consiste en ejecutar el programa en un computador.
Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. El programa fuente debe ser traducido a lenguaje de máquina con el compilador.
Cuando el programa ejecutable se ha creado, se puede ya ejecutar (correr) desde el sistema operativo con sólo invocar su nombre.
Cuando un programa se ejecuta normalmente hay dos tipos de entrada a una computadora: el programa es un tipo de entrada (contiene instrucciones que la computadora debe realizar). El otro tipo de entrada son los datos para el programa. Estos datos serán procesados por la computadora. La salida es el resultado producido cuando la computadora sigue las instrucciones del programa.
Cuando se proporciona a la computadora un programa y datos se dice a la computadora que siga las instrucciones del programa, se realiza una operación que se denomina ejecución (running, correr) del programa.
6. Etapa de verificación y depuración del programa:
Revisar los datos arrojados para ver si son correctos y hacer los ajustes necesarios. La verificación de un programa es el proceso de ejecución del programa con una amplia variedad de datos de entrada, llamados datos de prueba, que determinarán si el programa tiene errores.
La Depuración, es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.
Cuando se prueba un programa se pueden encontrar los siguientes errores:
- Errores de sintaxis o de compilación. Violación de las reglas del lenguaje de programación.
- Errores de ejecución. Se debe a operaciones no permitidas. Ejemplos: División por cero, raíz cuadrada de números negativos. La ejecución del programa se detiene y se envía un mensaje de error.
- Errores de lógica. Obtención de resultados que no son correctos. Errores en el análisis y diseño.
7. Etapa de uso:
Consiste en instalar el programa de manera definitiva para el uso por parte del usuario.
8. Documentación del programa
La documentación va dirigida a los usuarios, Operadores, programadores y analistas de sistemas.
Documentos que se elaboran:
- Manual del usuario. Se les elabora un manual de referencia para que aprendan a utilizar el programa. A los operadores, por si se presenta cualquier error, para que sepan como responder a ellos.
- Manual del Analista. Dirigido a los programadores, para que recuerden aspectos de la elaboración del programa en caso que otras personas puedan actualizarlo o modificarlo. Dirigido a los Analistas de sistemas. Estas personas deben proporcionar toda la información al programador en caso de que sea uno el que analice y otro el que programe. Se encargan de hacer una investigación previa de cómo realizar el programa y documentar con las herramientas necesarias para que el programador pueda desarrollar el sistema en un lenguaje de programación.
9. Mantenimiento del programa
El propósito es garantizar que los programas en uso estén libres de errores de operación y sean eficientes. También incluye hacer cambios y corregir errores. Es práctica frecuente numerar las versiones sucesivas de de los programas.
Por lo tanto, la programación es el proceso de convertir especificaciones de un sistema en instrucciones utilizables por la computadora, que produzcan resultados.
QUE ES UN LENGUAJE DE PROGRAMACIÓN
Se puede definir un lenguaje de programación como un conjunto de reglas ó normas, símbolos y palabras especiales utilizadas para construir un programa y con él, darle solución a un problema determinado.
El lenguaje de programación es el encargado de que la computadora realice paso a paso las tareas que el programador ha diseñado en el algoritmo.
Se puede decir que un lenguaje de programación es el intermediario entre la máquina y el usuario para que este último pueda resolver problemas a través de la computadora haciendo uso de palabras (funciones) que le traducen dicho programa a la computadora para la realización de dicho trabajo.
Un lenguaje de programación es un idioma artificial diseñado para expresar
computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.1Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación (Wikipedia).
NIVELES DE LOS LENGUAJES
Lenguaje de máquina
:
Las primeras computadoras se programaban en código de máquina. Se puede decir que los programas eran diseñados en código binario. Eran difíciles de leer, difíciles de entender y por su puesto difíciles de corregir. Los programas se caracterizaban por ser pequeños.Las instrucciones en lenguaje de máquina son capaces de relacionarse directamente con los registros y circuitería del microprocesador de la computadora y que resulta directamente ejecutable por éste, sin necesidad de otros programas intermedios. Los datos se referencian por medio de las direcciones de memoria donde se encuentran y las instrucciones realizan operaciones simples.
Ventajas: No requiere traducción y la velocidad de ejecución es superior a cualquier lenguaje
Desventajas: Dificultad y lentitud en la codificación, es de poca fiabilidad, dificultad grande para verificarlo, sólo son ejecutables en el mismo procesador.
Lenguajes de Bajo Nivel
Para dar solución a lo difícil que era programar en código máquina, se desarrolló un lenguaje conocido como lenguaje ensamblador. Este lenguaje era encargado de tomar algunas palabras comunes a una persona y traducirlas al código máquina. Lo anterior facilitaría un poco la escritura de programas.
Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnico. Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: ADD, SUB, DIV, etc.
Tiene la ventaja de mayor facilidad de codificación en relación con el lenguaje de máquina y su velocidad de cálculo.
Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora, sino que requiere una fase de traducción al lenguaje de máquina, depende totalmente de la máquina, difícil de programar y requiere conocimiento del interior de la máquina.
Lenguaje de medio nivel
Se dice de lenguajes de programación como C, que se encuentran entre los lenguajes de alto nivel y los lenguajes de bajo nivel. Estos lenguajes son clasificados muchas veces de alto nivel, pero permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la creación de sistemas operativos, ya que permiten un manejo abstracto (independiente de la máquina, a diferencia del ensamblador), pero sin perder mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.
Una característica distintiva, por ejemplo, que convierte a C en un lenguaje de medio nivel y al Pascal en un lenguaje de alto nivel es que en el primero es posible manejar las letras como si fueran números (en Pascal no), y por el contrario en Pascal es posible concatenar las cadenas de caracteres con el operador suma y copiarlas con la asignación (en C es el usuario el responsable de llamar a las funciones correspondientes).
Lenguajes de alto nivel
estuvieran mas cerca de ésta manera de resolver problemas. Son los lenguajes de programación que se asemejan a los lenguajes humanos utilizando palabras y frase fáciles de entender. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Un lenguaje de alto nivel es independiente de la máquina
De los lenguajes de alto nivel se puede citar el Basic, Cobol, Fortran, Pascal, Turbo Pascal, C, Modula, Ada. C, C++, Visual BASIC, Java, C#, Prolog, LISP, Smaltalk, Eiffel, Delphi, SQL, etc. Lenguajes de programación actuales de Internet: Java, HTML, XML, JavaScript, C#, PHP.
Como se hace necesario traducir el programa a lenguaje de máquina, en los lenguajes de alto nivel esa operación la realiza un programa llamado Compilador.
Ventajas:
- El tiempo de formación de los programadores es relativamente corto comparado con los otros tipos de lenguajes.
- La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos. Por ejemplo, los nombres de las instrucciones, pueden ser READ, WRITE, PRINT, OPEN, etc.
- Las modificaciones y puesta a punto de los programas son más fáciles.
- Transportabilidad. Desventajas:
- Se necesitan diferentes traducciones del programa fuente para conseguir el programa definitivo.
- Aumento de la ocupación de memoria.
- El tiempo de ejcución de los programas es mucho mayor.
TRADUCTORES DE LENGUAJE
Son programas que traducen a su vez los programas fuente escritos en lenguaje de alto nivel a código máquina. Los traductores se dividen en:
Compiladores
Es un programa que traduce un programa escrito en un lenguaje de alto nivel. Es un tipo especial de programa, en el que sus entradas o datos son algún programa y su salida es otro programa (programa objeto)
Fases de la compilación:
1. Escritura del programa fuente con un editor 2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador del lenguaje 4. Verificar y corregir errores de compilación
5. Obtención del programa objeto
Intérpretes
Es el que permite que un programa fuente escrito en un lenguaje vaya traduciéndose y ejecutándose directamente sentencia a sentencia por la computadora. Convierte uno por uno los enunciados del código fuente a código objeto antes de ser ejecutados.
TIPOS DE PROGRAMACIÓN
Dependiendo del lenguaje de programación que se elija, se puede hablar del tipo de programación que se va a realizar.
Secuencial
:
Se considera programación secuencial a los programas que se diseñan con instrucciones que van unas detrás de otras. Las líneas se ejecutan una a una en secuencia. Ejemplos tales como Basic, Cobol.Estructurada
:
Se considera programación estructurada a la programación que se hace por módulos. Cada módulo realiza alguna tarea específica y cuando se necesite esa tarea simplemente se hace el llamado a ese módulo independiente de que se tengan que ejecutar los demás. Ejemplos tales como: Turbo PASCAL, C, Modula, Ada.Orientada
a
Objetos
:
Se considera programación orientada a objetos aquellos lenguajes que permiten la utilización de objetos dentro del diseño del programa y el usuario puede pegar a cada objeto código de programa. Ejemplos de estos lenguajes se pueden mencionar el Visual Basic de la Microsoft, C Builder de la Borland Internacional, Java, Xml entre otros.Lógica o de lenguaje natural
:
son aquellos programas que se diseñan con interfaces tal que la persona o usuario puede ordenar a la máquina tareas en un lenguaje natural. Pueden interactuar como una persona pero nunca llegan a producir conocimiento. Ejemplo como Prolog (Programming Logic, proveniente del francés PROgrammation en LOGique, es un lenguaje de programación lógico e interpretado, bastante conocido en el medio de investigación en Inteligencia Artificial). Estos lenguajes se desarrollaroncon base en las estructuras de sus antecesores. Recorren o navegan las bases de datos obedeciendo a reglas.
Inteligencia Artificial
:
Los programas de inteligencia artificial Son programas que se acercan a la inteligencia humana. Estos programas son capaces de desarrollar conocimiento. Este tipo de lenguajes trabajan similar a la mente humana.PROGRAMACIÓN ESTRUCTURADA
Turbo Pascal y C por su diseño son lenguajes estructurados. C y Turbo PASCAL no permiten al programador enlazar sentencias de cualquier manera. Existe una estructura básica que cada programa debe seguir (Estructura de un programa) y el compilador es estricto a la hora de hacer cumplir estas reglas. Un programa ha de ser codificado en varias partes y cada una de ellas debe ir en el lugar que le corresponde. La idea fundamental del lenguaje C y Turbo Pascal es crear programas que sean comprendidos sin necesidad de emplear docenas de páginas de diagramas de flujo y miles de explicaciones. Esta manera de realizar los programas es a lo que denomina como "PROGRAMACIÓN ESTRUCTURADA".
Aunque se pueda llegar a realizar programas que aparentan tener una estructura (ser estructurados), Turbo Pascal y C son lenguajes que exige su utilización.
Identificador) para cuando el programador la requiera sólo la llame con su nombre y automáticamente se ejecutará.
La programación estructurada se refiere a un conjunto de técnicas que aumentan la productividad del programa reduciendo el tiempo para escribir, depurar y mantener los programas. La programación estructurada utiliza un número limitado de estructuras de control que minimiza la complejidad de los programas, reduciendo errores, fáciles de escribir, verificar, leer y depurar.
Las estructuras de control de un lenguaje de programación son métodos de especificar el orden en que las instrucciones de un algoritmo se ejecutarán. El orden de ejecución de las sentencias o instrucciones determina el flujo de control. Estas estructuras de control son fundamentales en los lenguajes de programación y en los diseños de algoritmos.
Programación Estructurada significa escribir los programas de acuerdo a las siguientes reglas:
a. El programa tiene un diseño modular. Es uno de los métodos de diseño más flexible y potente para mejorar la productividad de un programa. El programa se divide en módulos (partes independientes) cada uno de los cuales ejecuta una única actividad o tarea y se codifican independientemente de otros módulos. Cada programa contiene un módulo llamado “programa principal” que controla los demás módulos (subprogramas). Cada módulo devuelve el control al módulo que lo llama cuando haya completado su tarea. Diferentes programadores pueden trabajar en un módulo distinto.
b. Los módulos son diseñados de modo descendente. Es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento. Cada módulo se diseña con independencia de los demás y siguiendo un método descendente se llegará hasta la descomposición final del problema en módulos de forma jerárquica (Diseñar algoritmos en etapas yendo de lo general a lo particular, descomponiendo el programa en módulos más simples).
c. Cada módulo se codifica utilizando las tres estructuras de control básicas: i. Secuenciales
ii. Selectivas iii.Repetitivas
Todas las instrucciones son ejecutables y no existen bucles infinitos.
Un programa propio puede ser escrito utilizando lo siguiente: Declaraciones:
Librerías de inclusión
Declaración de funciones y/o procedimientos Definición de constantes y/o variables
Estructuras de programación: Asignación
Decisión Cíclicas
Estructuras de datos: Estáticas simples Registros
Arreglos Archivos Funciones:
Predefinidas por el lenguaje Definidas por el usuario.
Generalmente cuando el algoritmo o solución de un problema determinado se deja en términos de diagrama de flujo, Seudo lenguaje o en Seudo código se puede trabajar únicamente con estructuras de programación.
ESTRUCTURAS DE PROGRAMACIÓN
También llamadas estructuras de control por algunos autores. Son aquellas que le permiten a un usuario ejecutar tareas que a la final le permiten dar solución a problemas que se quieran resolver usando microcomputadoras.
En general se puede decir que las estructuras de programación son herramientas que el lenguaje le provee al usuario para solucionar problemas haciendo uso de computadoras.
Las estructuras de programación que tienen la mayoría de los lenguajes son cuatro así:
Estructuras de Asignación Estructuras de Decisión Estructuras Cíclicas
Estructuras de Selección múltiple.
ALGORITMOS Y PROGRAMAS
La principal razón para que las personas aprendan lenguajes de programación es utilizar la computadora como una herramienta para la resolución de problemas.
El programador de computadora es una persona que resuelve problemas. Para ser programador debe resolver problemas de forma sistemática (seguir la metodología de la programación). Lo principal de esta metodología es el concepto de algoritmo. Un algoritmo es un conjunto de instrucciones que especifican la secuencia de operaciones para resolver un problema. Dichas instrucciones deben tener una secuencia lógica para poder llegar a la solución real. El algoritmo se puede expresar de diversas maneras. Mediante símbolos, utilizando un lenguaje determinado para hablar la solución, describir sintéticamente dicha solución o simplemente escribiéndolo en cualquier código valido para algún lenguaje de programación. La última forma de describir el algoritmo es a lo que se le denomina PROGRAMA.
Una computadora no tiene capacidad para resolver problemas; únicamente cuando se les proporcionan los pasos sucesivos. A estos pasos sucesivos a ejecutar por la computadora se le llama algoritmo.
La solución de un problema exige el diseño de un algoritmo que resuelva el problema propuesto.
Los pasos generales para la solución de un problema son:
1. Diseño del algoritmo, que describe la secuencia ordenada de pasos (sin ambigüedades), que conducen a la solución de un problema dado (análisis del problema desarrollo del algoritmo).
2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase de codificación).
3. Ejecución y validación del programa por la computadora.
Las características fundamentales que debe tener todo algoritmo son:
- Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. - Un algoritmo debe estar definido. Si se sigue un algoritmo más de una vez, se
debe obtener el mismo resultado.
- Un algoritmo debe ser finito. Debe tener un número finito de pasos, debe terminar en algún momento.
La definición de un algoritmo debe describir tres partes: Entrada, Proceso, Salida. La información proporcionada constituye su Entrada y la información producida por el algoritmo constituye su Salida.
El diseño de un algoritmo requiere creatividad y conocimiento de la técnica de programación.
REFINAMIENTO DE ALGORITMOS.
Los pasos descritos en un primer algoritmo pueden ser escasos o incompletos e indican sólo unos pocos pasos. En la primera descripción los pasos se amplían en una descripción más detallada con pasos más específicos. A este proceso se le llama refinamiento. Para problemas complejos se necesitan diferentes niveles de refinamiento antes de que se pueda obtener un algoritmo claro, preciso y completo. ESCRITURA DE ALGORITMOS (REPRESENTACION GRAFICA)
Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido. Ello permitirá que un algoritmo pueda ser codificado en cualquier lenguaje de programación.
Los métodos usuales para representar algoritmos son: 1. Descripción narrada
2. Diagramas de flujo.
3. Lenguaje de espeficificación de algoritmos: Pseudocódico.
Descripción narrada
Diagramas de flujo
Un diagrama de flujo (flowchart) es una de las técnicas de representación de algoritmos más antigua y a la vez más utilizada. Un diagrama de flujo es un diagrama que utiliza los símbolos estándar (normalizados por ANSI) que tienen los pasos del algoritmo escritos en cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar.
REGLAS PAA LA ELABORACION DE DIAGRAMS DE FLUJO
1. Se escribe de arriba hacia abajo y de izquierda a derecha
2. Siempre se usan flechas verticales y horizontales, nunca curvas. 3. Se debe evitar el cruce de flujos
4. En cada paso expresar una acción concreta.
SECUENCIA DE FLUJO NORMAL EN LA SOLUCION DE UN PROBLEMA 1. Tiene un inicio
2. Lectura o entrada de datos 3. El proceso de los datos 4. Salida de la información 5. Un final.
SÍMBOLOS UTILIZADOS EN LA CONSTRUCCIÓN DE DIAGRAMAS DE FLUJO
Para iniciar y Terminar un algoritmo
Para representar un proceso
Para toma de decisiones: Símbolo utilizado tanto en decisiones como en estructuras cíclicas
Para representar entrada de datos
Para representar salidas de datos
Indican la dirección de flujo en un diagrama, además conecta todos los símbolos del diagrama
Conector entre diagramas
En esencia el diagrama de flujo es un medio de Presentación visual y gráfica de flujo de datos, a través de un algoritmo, las operaciones ejecutadas dentro del sistema y la secuencia en que se ejecutan.
Los símbolos utilizados en los diagramas han sido normalizados por las organizaciones ANSI (American National Institute) y por ISO (Internacional Standard Organization) aunque el uso de esos Estándar es voluntario.
Pseudocódigo
Es un lenguaje de especificación (descripción) de algoritmos. El uso de este lenguaje hace el paso de codificación final.
Es una imitación y una versión abreviada de instrucciones reales para la computadora. El pseudocódigo utiliza un lenguaje parecido a nuestro idioma, pero respeta las directrices y los elementos de los lenguajes de programación.
ELEMENTOS BÁSICOS DE UN PROGRAMA
En programación se debe separar la diferencia entre el diseño del algoritmo y su implementación en un lenguaje específico.
Los lenguajes de programación tienen elementos básicos que se utilizan para construir un programa, así como reglas para las que esos elementos se combinan. A estas reglas se le denomina sintaxis. Solamente las instrucciones que cumplen con esa sintaxis serán aceptadas por la computadora.
En el ámbito general, un programa codificado o escrito bajo cualquier lenguaje de programación estructurado consta básicamente de dos secciones:
Sección encabezado
Sección cuerpo de programa
La sección de encabezado es usada para declarar, mencionar o identificar las variables con sus respectivos tipos y/o las constantes que se vayan a utilizar en el desarrollo del programa, así como también el nombre de las funciones y/o los procedimientos que ejecutarán las instrucciones de los diferentes algoritmos que va a tener dicho programa. Además en esta sección se declaran los archivos de inclusión (Archivos con extensión “.h”, en el caso de lenguaje C ó módulos en el caso del lenguaje Python) que permiten el uso de algunas funciones que son necesarias para el desarrollo en si del programa. Igualmente se especifican las estructuras de datos que se vayan a manejar. En la sección cuerpo de programa realmente se describen todos los procedimientos y/o funciones que se van a ejecutar dentro del programa así como también el código del programa principal. Como cuerpo de programa es indispensable que haya parte principal mientras que los procedimientos y/o funciones son opcionales.
Entre los elementos básicos que constituyen un programa son: - Palabras reservadas
- Identificadores
- Caracteres especiales - Constantes
Además de estos elementos básicos, hay otros que es necesario comprenderlos - Bucles
- Contadores - Acumuladores - Interruptores - Estructuras
o Secuenciales o Selectivas o Repetitivas
ESTRUCTURA DE UN PROGRAMA
PARTES DE UN PROGRAMA
Tras la decisión de desarrollar un programa, el programador debe establecer el conjunto de especificaciones que debe contener el programa: Entrada, salida y algoritmos de solución, que incluirán las técnicas para obtener las salidas a partir de las entradas.
INSTRUCCIONES
Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en el mismo orden en que han de ejecutarse, es decir, en secuencia.
TIPOS DE INSTRUCCIONES
Las instrucciones básicas que se deben implementar de modo general en un programa son las siguientes:
- Instrucciones de inicio y fin - Instrucciones de asignación
- Instrucciones de lectura de datos (Entrada) - Instrucciones de escritura de resultados (Salida)
- Instrucciones de bifurcación. El desarrollo secuencial (lineal) de un programa se interrumpe cuando se ejecuta una instrucción de bifurcación puede ser hacia delante o hacia atrás.
o Bifurcación condicional: Depende del cumplimiento de una determinada acción.
o Bifurcación incondicional: La bifurcación se realiza siempre que el flujo del programa pase por la instrucción sin necesidad del cumplimiento de una condición.
TIPOS DE DATOS
Un dato es la expresión general que describe los objetos con los cuales opera un programa. Los algoritmos y los programas operan sobre los datos.
Un tipo de dato es el conjunto de valores que puede tomar una variable.
La gran variedad de datos que trae consigo un lenguaje de programación hace que el programador escoja el tipo más adecuado para la aplicación que esté desarrollando. El rango de datos que maneja cada tipo, indica al usuario que escoger.
Existen dos clases de tipos de datos. Simples (sin estructura)
Compuestos (estructurados). Estructuras de datos son conjuntos de datos simples con relaciones definidas entre ellos.
Los datos simples se pueden agrupar en los siguientes tipos. Enteros
Decimales De Cadena
Boléanos (lógicos) Tipos de datos enteros
Conjunto finito de números enteros positivos o negativos, son completos, es decir, no tienen componentes fraccionarios o decimales.
Están comprendidos entre -32768 a +32767 (2 bytes) fuera de este rango se consideran como enteros largos. Sin embargo tienen un rango: -2,147,483,648 a +2,147,483,647 fuera de este rango se consideran reales.
Los tipos enteros largos son más precisos, pero los enteros cortos son más simples, rápidos y ocupan menos memoria.
El valor extremo del rango de cada uno de los enteros está dado por el espacio que ocupa dicho entero en memoria:
Un byte de memoria esta formado por 8 bits. Cada uno de estos bit pueden ser un bit 0 o un bit 1. Las combinaciones que podemos tener en un byte (8 bit) podrían ir desde:
0 0 0 0 0 0 0 0 (8 bits ceros) a 1 1 1 1 1 1 1 1 (8 bits unos)
Si se pasa el conjunto de bits (Sistema Binario) a Sistema decimal tenemos que el rango que se maneja ahora irá desde:
0 (decimal correspondiente a los 8 bits ceros) a 255 (decimal correspondiente a los 8 bits unos)
Como el rango anterior está utilizando todos los ocho bits del byte para almacenamiento de datos, sólo toma datos enteros positivos, no hay forma de reservar ningún campo bit para el signo.
En el caso del entero de tamaño byte, por utilizar siete bits para almacenamiento de datos, el octavo es usado para signar datos (signo mas o menos). Por tanto solo dispone en memoria de 7 bit para almacenar (bits unos) o (bits ceros). El rango manejado en sistema binario con siete (7) bit irá desde 0000000 hasta el 1111111, que en sistema decimal corresponde al rango de 0 al 127, o sea 128 datos enteros positivos. Como se deja un bit reservado para manejo de signo, entonces los datos negativos serán 128 también que irán en rango desde el -1 al -128.
El rango definitivo de enteros positivos y negativos para el tipo de dato entero corto será desde -128 al 127.
Tipos de datos reales
lenguajes de programación tiene un grupo para este tipo de datos. Al igual que los enteros, los reales se diferencian unos de otros por el rango que cada uno de ellos maneja.
Los números reales se pueden representar de dos formas:
Punto fijo: Son aquellos que la posición del punto decimal permanece fijo. Ej. 0.09 3.5472 -8.13 -53.321
Punto flotante: Los números se almacenan en dos partes distintas: Los dígitos significativos (mantisa)
La potencia de 10 que indica la posición del punto decimal (el exponente). Ejemplo: 4567.845 4567845x10-3 456.7845x101 45.67845x102
Flotante es una generalización de notación científica o exponencial. Existen dos tipos de números de punto flotante:
Simple precisión: Tienen una precisión de 7 dígitos y rangos de valores de -3.402823E38 a
-1.40129E-45 para números negativos, y 1.40129E-45 a 3.4028523E38 para números positivos.
Ocupan cuatro bytes de memoria (de los 32 bits, uno es el signo, ocho el exponente, veintitrés la mantisa).
Doble precisión: Tienen una precisión de 15 o 16 dígitos y tienen un rango de variación muy grande:
-1.797693134862316E308 a -4.94065E-324 para números negativos 4.94065E-324 a 1.797693134862316E308 para número positivos.
Tipo de datos caracter
El tipo carácter es el conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato de tipo carácter contiene un solo carácter. La mayoría de computadoras reconocen los caracteres alfabéticos, numéricos y especiales que conforman la tabla denominada ASCII.
Una variable que se defina como tipo Char puede almacenar un solo caracter especificado entre apóstrofes. {'A'}.
Cada caracter se almacena en memoria RAM como un byte o dicho de otra manera cada caracter se almacena en una posición de memoria. Por ser un solo byte, el número de caracteres diferentes que se pueden almacenar es de 256.
correspondiendo a los valores que van de 0 a 255 (en decimal) o 00000000 a 11111111 (en binario). El conjunto de caracteres de la tabla ASCII se agrupan en dos bloques así:
El primer bloque conformado por los caracteres de control. Corresponden a éste bloque los caracteres del código ASCII que van de 1 a 31.
El segundo bloque conformado por los caracteres básicos o caracteres imprimibles. Van del código ASCII 32 al 126, se introducen directamente por el teclado.
El tercer bloque conformado por caracteres del código ASCII ampliado. Para hacer referencia a ellos en turbo PASCAL se preceden del signo #.
Para asignar cualquier caracter ASCII a una variable de tipo Char existen varias formas así:
A = 'g'; {Se asigna el caracter g a la variable A} B = A; {Se asigna el valor de A, a la variable B}
C = #65; {Se asigna el caracter numero 65 de la tabla ASCII a la variable C}
Los tipos de datos cadena {String} son secuencia de caracteres que puede llegar a tener una longitud máxima de 255. cada caracter de esta cadena ocupa un byte en memoria, y la cadena ocupa tantos Bytes como caracteres le hayan asignado.
Las cadenas se pueden definir del tamaño que se necesite. El comportamiento de los String es similar al de los arreglos.
Nombre = 'Pedro Pérez';
La anterior cadena tiene 11 caracteres, por tanto va a ser una variable que ocupa 11 Bytes en memoria. Una variable de tipo cadena al ser definida en la sección de variables se le está
asignando un tamaño fijo en cuanto al número máximo de caracteres que puede almacenar en un momento determinado.
Datos lógicos (Boléanos):
Es aquel dato que sólo puede tomar uno de dos valores: VERDADERO (true) o FALSO (false). Este tipo de valore se utiliza para representar las alternativas SI/NO a determinadas condiciones.
VARIABLES Y CONSTANTES
Variable: Nombre que representa un objeto de datos cuyo valor puede cambiar durante la ejecución de un programa.
Dependiendo del lenguaje, hay diferentes tipos de variables: enteras, reales, caracteres, lógicas.
Una variable que es de un cierto tipo, puede tomar valores únicamente de ese tipo. Las variables llevan un nombre llamado identificador, este puede ser una cadena de letra y dígitos, empezando siempre con una letra.
Los identificadores son palabras creados por los programadores para dar nombre a los objetos y demás elementos que se necesitan declarar en un programa: variables, constantes, tipos, estructuras de datos, archivos, subprogramas. Estos nombres no den ser los mismos que las palabras reservadas de los lenguajes.
Constantes: Son objetos cuyo valor permanece invariable a lo largo de la ejecución de un programa. Una constante es la denominación de un valor concreto.
Ejemplo: 1.234 -0.14 82 “A” “4” 1,752.63 no válido
Expresiones
- Son representaciones de un cálculo necesario para la obtención de un resultado. - Son combinaciones de constantes, variables, símbolos de operación, paréntesis
y nombres de funciones especiales.
- Una expresión consta de operadores y operandos.
Operador: Es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o dos valores que son llamados operandos; lo que se obtiene de la combinación de operadores y operandos es el resultado de la expresión.
Según el tipo de objetos que manipulan, las expresiones se clasifican en: - Aritméticas
- Lógicas - De carácter
Son similares a las fórmulas matemáticas. Las variables y constantes son numéricas y las operaciones son las aritméticas.
Reglas de prioridad:
Las expresiones que tienen dos o más operandos requieren de unas reglas matemáticas que permitan determinar el orden de las aeraciones denominadas reglas de prioridad o precedencia.
1. Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados, las expresiones más internas se evalúan primero.
2. Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de prioridad:
a. Operador exponencial
b. Operadores de multiplicación y división
c. Operadores de división entera y módulo resto d. Operadores de suma y resta
Expresiones lógicas:
Es una expresión que sólo puede tomar dos valores : Verdadero (True) y Falso (False). En el lenguaje python el valor verdadero se expresa como True y el valor falso se expresa como False. Son los valores lógicos o Booleanos. Este nombre deriva del matemático Británico George Boole, que desarrolló un sistema algebraico basado en estos dos valores y tres operaciones: la conjunción, la disyunción y la negación.
Las expresiones lógicas se forman combinando constantes lógicas (valores lógicos Trae y False), variables lógicas, y otras expresiones lógicas utilizando los operadores lógicos not (no lógico o negación), and ( y lógico o conjunción) y or ( o lógico o disyunción) y los operadores relacionales o de comparación ( ==, !=, <, <=, >,>= ).
Los operadores de relación permiten realizar comparaciones a valores de tipo numérico o de carácter. El formato general para las comparaciones es el siguiente: