FUNDAMENTOS DE PROGRAMACIÓN Estructura de contenidos Introducción 1. Conceptos generales de programación ....................................................4 1.1 ¿Qué es computador? ................................................................................4 1.2 Software y hardware ................................................................................5 2. Organización física del computador .........................................................5 3. Algoritmos y programa...............................................................................7 3.1 Ejemplo........................................................................................................7 3.2 Características de un algoritmo ................................................................8 3.3 Algoritmos cualitativos y algoritmos cuantitativos ................................9 4. Proceso de programación ..........................................................................10 4.1 Definición y análisis del problema.............................................................10 4.2 Diseño de algoritmo ...................................................................................10 4.3 Codificación del programa ........................................................................10 4.4 Implantación del programa .......................................................................10 4.5 Mantenimiento del programa ...................................................................11 5. Técnica de representación de algoritmos ................................................11 5.1 Diagrama de flujo .......................................................................................11 5.2 Pseudocódigo .............................................................................................12 FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje 2 ORGANIZADOR GRÁFICO FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje 3 INTRODUCCIÓN La computadora es uno de los elementos más importantes y esenciales en laactualidad, es una herramienta fundamental para las empresas industriales, lasinvestigaciones científicas y la educación; prácticamente se puede afirmar que seencuentra implícita en todos los campos de la vida.Hoy en día, la computadora es utilizada para almacenar y visualizar cualquierforma de datos, los cuales son procesados generando información. Estos datos yel procedimiento utilizado se encuentran almacenados en forma de un programa,el cual está constituido por una serie de instrucciones secuenciales y codificadasen un lenguaje de programación. En el documento se encuentran definiciones básicas como algoritmo, definidocomo una serie de instrucciones secuenciales, a través del cual es posibleresolver un problema. Esta secuencia ordenada de instrucciones que se ejecutaen un tiempo determinado, es un procedimiento con un uso de recursos finito, porconsiguiente los algoritmos tienen un inicio y un final; los algoritmosposteriormente se codifican en los lenguajes de programación. 1-Conceptos generales de programación En las últimas décadas, el computador se ha convertido en una herramienta indispensable para realizar cualquier tipo de trabajo, ya sea en el hogar, la industria o el estudio. Actualmente se destaca por su gran capacidad de almacenamiento de datos y procesamiento de información, los cuales son necesarios para generar resultados en muy poco tiempo. En el desarrollo de un programa, el computador interpreta las instrucciones que se le dan y las ejecuta gracias a la secuencia dada por el programador; dicha secuencia debe cumplir con reglas ya establecidas en el lenguaje de programación; este proceso es la forma de comunicarle a la máquina lo que debe hacer. El papel de los programadores es fundamental en la solución del problema planteado, traduciendo el problema en lenguaje de programación entendible para la máquina, el cual se convierte en código ejecutable o programa final. FAVA - Formación en Ambientes Virtuales de Aprendizaje Todo lo anterior no sería posible sin el computador, por esta razón es necesario delimitar ¿Qué es esta herramienta?, ¿Cuáles son sus partes y cuál es su funcionalidad básica? 1.1 ¿Qué es un computador? Un computador es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y la información se pueden introducir en la computadora por la entrada, la cual se denomina input y a continuación se procesan para producir una salida denominada output (ver Figura 1). El computador se puede considerar como una unidad en la que se almacenan ciertos datos; hay entrada de datos, luego se procesan los mismos, con el fin de producir unos datos de salida. Los datos de entrada y los datos de salida pueden ser cualquier tipo de archivo, ya sea una hoja de texto o de cálculo, fotos o videos. La forma más sencilla que una persona se pueda comunicar con el computador, es mediante un ratón (mouse), un teclado y una pantalla (monitor). Hoy día existen otros dispositivos muy populares como: SENA - Servicio Nacional de Aprendizaje 4 escáneres, micrófonos, altavoces, cámaras de vídeo, cámaras digitales; de igual manera, mediante módems, es posible conectar su computador con otros computadores, a través de redes, siendo Internet, la red más importante. COMPUTADORA SOFTWARE Datos de entrada Datos de salida encuentra el sistema operativo, el cual permite funcionar correctamente los demás programas. 2. Organización física del computador Por lo general, la mayoría de computadores ya sean grandes o pequeños, constan de tres componentes principales entre ellos están: la Unidad Central de Proceso (CPU) o procesador, la memoria principal y el programa. Procesador (CPU) Figura 1. Elementos que componen el computador Fuente: Prieto y Torres (2005) La unidad central de proceso, es el cerebro del computador, su función es controlar el perfecto funcionamiento de todos los componentes y ejecutar las instrucciones aritméticas y lógicas. La memoria es utilizada para que los programas del computador puedan iniciar o se ejecuten y queden a disposición del usuario. Ver representación gráfica en la figura 2. Memoria principal UAL 1.2 Hardware y software Todos los componentes físicos o tangibles que conforman el computador al igual que los dispositivos de entrada y salida, se conocen como hardware. El conjunto de programas o instrucciones que permiten el correcto funcionamiento del computador, se le denomina software. El software es la parte lógica que conforma el computador para la realización de tareas específicas, allí se Unidad de control, UC Entrada de datos Programa Salida de datos Figura 3. Organización Física del computador Fuente: Prieto y Torres (2005) FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje 5 FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje 6 3. Algoritmos y programa 3.1 Ejemplo Un algoritmo es un conjunto de instrucciones ordenadas, definidas y finitas con el cual se realiza una tarea en la solución de un problema determinado. Entre los pasos que se utilizan para la realización de un algoritmo, siempre debe existir un punto de inicio y un punto de terminación o fin, deben ser únicos y de fácil identificación. Las personas que realizan diariamente tareas asociadas con acciones que buscan alcanzar un resultado o la solución de un problema, ejecutan tareas siguiendo unos pasos de forma ordenada y adecuada, que comparados con un algoritmo, son exactamente lo mismo. Un ejemplo práctico de la vida diaria es abrir y cerrar una puerta. Como es lógico, en la cotidianidad se repite la misma acción una y otra vez y no se presta atención a los pasos que se deben seguir para poder realizar esta actividad sin contratiempos. A continuación, se tiene un ejemplo que fue tomado en su totalidad del texto Fundamentos de programación de Cairó. La tarea es construir un algoritmo para preparar la siguiente receta: chiles morita rellenos con salsa de nuez. Primero hay que tener en cuenta los ingredientes y luego el algoritmo que ayudará a preparar este delicioso plato. Ingredientes: A continuación, se desarrollará un algoritmo con todos los pasos a seguir para finalizar con un objetivo, en este caso, preparar un plato internacional mexicano. 150 g de chiles morita (unos 20) 2 cucharadas de aceite 12 dientes de ajo 1 cebolla cortada en aros finos 2 tazas de vinagre de vino tinto Sal 10 granos de pimienta negra 11/2 cucharadas de orégano seco 185 g de piloncillo rallado Relleno: 1 cucharada de aceite 1/2 cebolla finamente picada 2 dientes de ajo finamente picados 1/2 taza (125 g) de tomate finamente picado 1/4 taza (30 g) de almendras peladas y picadas FAVA - Formación en Ambientes Virtuales de Aprendizaje 1/4 taza (30 g) de uvas pasas sin semillas 1 pechuga entera de pollo cocida y finamente desmenuzada 1 cucharadita de sal 1/2 cucharada de pimienta recién molida Salsa: 2 huevos, separadas las claras de las yemas 3/4 taza (90 g) de harina Aceite para freír 3/4 taza (90 g) de nueces 1 taza de crema de leche espesa, no azucarada Algoritmo (preparación): • Lave los chiles y séquelos bien. Caliente el aceite en un sartén grande y saltee los chiles, los ajos y la cebolla. • Añada el vinagre, la sal, los granos de pimienta, el orégano y el piloncillo y continúe salteando durante 10 minutos. Retire del fuego, deje que se enfríe la mezcla y póngala en una cazuela, preferentemente de barro, tapada. Refrigere 24 horas. • Para preparar el relleno, caliente el aceite en un sartén y saltee la cebolla durante cinco minutos o hasta que este quede transparente. Agregue los ajos, el tomate, las pasas, las almendras y dos cucharadas de vinagre en el que se SENA - Servicio Nacional de Aprendizaje 7 cocieron los chiles. Mezcle bien y añada el pollo, la sal y la pimienta. Cueza a fuego lento durante ocho minutos, sin dejar de mover. Reserve. Muela el ajo, la pimienta y un poco de sal y únteselos a las pechugas. •Con unos guantes (para evitar que se irrite la piel), corte cada chile a lo largo. Quíteles las semillas y desvénelos. Ponga el relleno a cada chile con una cuchara pequeña. Ponga poca cantidad para evitar que se desparrame al freír los chiles. •Bata las claras al punto de nieve. Agregue una a una las yemas, pero sin agitar demasiado para evitar que las claras pierdan volumen. •En un sartén grande, caliente entre 2 y 3 cm de aceite y déjelo al fuego hasta que esté muy caliente. Ponga la harina en un plato y revuelque en ella cada chile hasta que este quede cubierto; sumérjalo en el huevo batido e inmediatamente póngalo en el aceite. Fría cada chile hasta que se dore por un lado y luego dele vuelta para que se dore el otro lado. •En un procesador de alimentos o similar, haga un puré con las nueces y la crema con una pizca de sal. Sirva los chiles con un poco de la crema de nuez encima de ellos (el resto se presenta en una salsera). En la siguiente figura se pueden observar claramente las etapas a seguir, para solucionar el problema planteado. Pr oblem a Análisis del programa Construcción de algoritmo Etapa 1E tapa 2E tapa 3 Figura 4. Etapas para la solución de un problema Fuente: Cairó (2006) 3.2 Características del algoritmo Existen unas características que debe cumplir el algoritmo, estas son: Preciso: los pasos a realizar en el algoritmo deben ser claros Determinado: debe arrojar los resultados esperados Finito: independientemente de lo complejo que sea, el algoritmo debe tener longitud finita Por definición, un algoritmo debe cumplir con tres partes fundamentales: entrada, proceso y salida. En el algoritmo de la receta de cocina del ejemplo 1, citado anteriormente, se tiene lo siguiente: Entrada: ingredientes y utensilios empleados Proceso: preparación de la receta Salida: plato terminado FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje 8 3.3 Algoritmos cualitativos algoritmos cuantitativos y Se dice que un algoritmo es cualitativo cuando sus instrucciones dadas son descritas por medio de palabras y no incluye cálculos numéricos; por ejemplo cambiar una llanta de un automóvil o hacer una llamada telefónica, como se plantea el siguiente ejemplo: Ejemplo 2 Una persona desea realizar una llamada telefónica a través de su teléfono celular. El algoritmo sería el siguiente: 1. Inicio 2. Marca el número de telefónico 3. Presiona el botón para llamar 4. Hablar 5. Terminar la llamada 6. Fin Mientras que los algoritmos cuantitativos son una serie de pasos o instrucciones ordenadas y lógicas que involucran cálculos matemáticos para llevar a cabo una solución. Ejemplo 3 Realizar un algoritmo para encontrar el área de un triángulo: 1. Inicio 2. Definir variables área, base, altura: real 3. Solicitar base y altura 4. Calcular área = base * altura /2 5. Imprimir área 6. Fin Programa Un programa o software de computadora, es un conjunto de instrucciones encaminadas a la realización de una tarea o actividad específica. El programa puede clasificarse según las funciones que este realiza: un ejemplo de ello es un software de sistema, el cual sirve para que el computador funcione correctamente; otro claro ejemplo, es un software de aplicación para que el usuario realice tareas cotidianas, por ejemplo, un procesador de texto como Word, un programa para elaborar hojas de cálculo como Excel, o un software para realizar presentaciones como PowerPoint. Por último y de gran importancia, hay que destacar que hoy en día los programas se codifican usando lenguajes de programación. En la figura 5 se observan las partes fundamentales de un programa. FAVA - Formación en Ambientes Virtuales de Aprendizaje Entrada de datos PROCESO Salida de datos Figura 5. Partes de un Programa Fuente: Cairó (2006) SENA - Servicio Nacional de Aprendizaje 9 4. Proceso de Programación 4.1 Definición y análisis del problema Es importante tener en cuenta que los programas se hacen con un lenguaje de programación. Este proceso inicia cuando se presenta la necesidad de resolver un problema específico, esta es la parte más crítica; por esta razón se debe entender el problema que se quiere solucionar. Elaborar un programa para computador implica varias etapas, en cada una de ellas se realiza una serie de pasos ordenados, con el propósito de dar solución al problema propuesto. Con el fin de que se lleve a buen término la solución del problema propuesto, se debe tener en cuenta los siguientes puntos: 4.2 Diseño de algoritmo En esta etapa se procede a diseñar la parte lógica para la solución del problema, a través de técnicas existentes de representación de algoritmos, entre las más conocidas se encuentra el diagrama de flujo y el pseudocódigo. 4.3 Codificación del programa Mantenimiento de programa Diseño de algoritmo En esta etapa se realiza el código fuente utilizando un lenguaje de programación. El código fuente debe ser compilado para que pueda se entendible por la máquina. 4.4 Implantación del programa Implantación del programa FAVA - Formación en Ambientes Virtuales de Aprendizaje Finalmente después de haber realizado las anteriores etapas, el programa se instala para poner en funcionamiento la solución planteada en la primera etapa. SENA - Servicio Nacional de Aprendizaje 10 4.5 Mantenimiento del programa de mediana complejidad. En el caso de detectar fallas o algún cambio en el desarrollo de la solución al problema, se realizan ajustes necesarios para producir los resultados esperados. Los siguientes son los símbolos básicos para la creación de diagramas de flujo para representar la solución a crear. A continuación se muestran algunos de los símbolos más utilizados: 5. Técnicas de representación de algoritmos Los métodos más usados son: - Diagramas de flujo - Pseudocódigo A continuación se explicará en qué consisten estos métodos: 5.1 Diagrama de flujo Un diagrama de flujo es una representación gráfica y lógica de un problema, para el diseño se utilizan símbolos simples y aprobados universalmente, de tal manera que por su sencillez cualquier persona puede interpretarlos; los diagramas de flujo se conectan con flechas denominadas líneas de flujo, las cuales indican la secuencia de operación. Es importante destacar que el diagrama de flujo es una herramienta útil en la etapa de análisis y diseño de software Indica repetición Líneas de flujo que indican la secuencia en la que se realizan las operaciones Indica el envío de datos a la impresora Indica el inicio o el final del diagrama de flujo Símbolo de proceso, indica la asignación de un valor a memoria o la ejecución de un proceso Representa la continuidad del diagrama dentro de la misma página Indica la entrada y salida de datos Símbolo de decisión, indica la realización de una comparación de valores Representa la continuidad del diagrama en otra página FAVA - Formación en Ambientes Virtuales de Aprendizaje Antes de continuar, se debe tener en cuenta algunas recomendaciones para elaborar unos diagramas de flujo: •Use solamente líneas horizontales y verticales •Use conectores solo cuando sea necesario •No deje líneas sin conectar •Evite cruce de líneas •Redacte el texto escrito que va dentro de los símbolos de manera clara y concisa SENA - Servicio Nacional de Aprendizaje 11 5.2 Pseudocódigo Para mayor claridad, observe como se representa un problema en un diagrama de flujo: Inicio Se requiere obtener el salario neto de un trabajador, para ello, se debe capturar el nombre, las horas trabajadas y el valor de la hora. Además, se debe realizar un descuento correspondiente al 10% por impuestos. Leer nombre, horas precio Tenga en cuenta que para elaborar el diagrama con los símbolos respectivos y obtener su correcta elaboración, existen algunos programas, ya sean libres o de propiedad que se pueden adquirir para realizar estos diagramas. Algunos de ellos son: SmartDraw, DFD, Microsoft Office Visio Professional 2010, GPL, Pseint, entre otros. Calcular jornal bruto = horas * precio Calcular neto bruto = bruto -0.10 * bruto Escribir nombre horas , , neto El pseudocódigo es una técnica para diseño de programas (algoritmos), el cual permite definir las estructuras de datos, las operaciones que se aplican a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema. Se utiliza un lenguaje muy parecido al idioma español, pero que respeta las directrices y los elementos de los lenguajes de programación. A continuación, se presenta el siguiente ejemplo: Ejemplo 5 Escribir el requerimiento planteado en el ejemplo 4, salario neto, utilizando pseudocódigo. 1. Inicio 2. Lea nombre, horas, valor_hora 3. Neto = salario-(salario*10%) 4. Imprima nombre, salario, neto 5. Final Fin FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje 12 CD-ROM (Compact Disk - Read Only Memory): Disco compacto de solo lectura. Tiene una capacidad de almacenamiento de hasta 650 megabytes. Controlador: programa que comanda los periféricos conectados a la computadora. CPU (Central Processing Unit): en español significa unidad central de procesamiento, es el procesador que contiene los circuitos lógicos que realizan las instrucciones de la computadora. DVD (Digital Versatile Disc): en español Disco Versátil Digital, en sus inicios sus siglas se tomaron como Disco de Video Digital. Este disco posee gran capacidad de almacenamiento y sirve para almacenar cualquier tipo de información incluidos datos, video o música. Gigabyte (GB): unidad de medida de una memoria. 1 gigabyte = 1024 megabytes = 1.073.741.824 bytes. Hardware: todos los componentes físicos de la computadora y sus periféricos. Lenguaje de programación: sistema de escritura para la descripción precisa de algoritmos o programas informáticos. Memoria caché: pequeña cantidad de memoria de alta velocidad que incrementa el rendimiento de la computadora almacenando datos temporalmente. Microprocesador (microprocessor): es el chip más importante de una computadora. Su velocidad se mide en MHz (Megahertz). Monitor: unidad de visualización, comúnmente conocida como pantalla. Periférico: todo dispositivo que se conecta a la computadora; por ejemplo: teclado, monitor, mouse, impresora, escáner. Procesador (processor): conjunto de circuitos lógicos que procesa las instrucciones básicas de una computadora. RAM (Random Acces Memory): en español significa memoria de acceso aleatorio. En esta memoria es donde la computadora almacena datos que le permiten al procesador acceder rápidamente al sistema operativo, las aplicaciones y los datos en uso. Tiene estrecha relación con la velocidad de la computadora. Se mide en megabytes. ROM (Read Only Memory): en español memoria de sólo lectura. Memoria incorporada que contiene datos que no pueden ser modificados. Permite a la CPU (Central Processing Unit): en español significa unidad central de procesamiento, es el procesador que contiene los circuitos lógicos que realizan las instrucciones de la computadora. DVD (Digital Versatile Disc): en español Disco Versátil Digital, en sus inicios sus siglas se tomaron como Disco de Video Digital. Este disco posee gran capacidad de almacenamiento y sirve para almacenar cualquier tipo de información incluidos datos, video o música. Gigabyte (GB): unidad de medida de una memoria. 1 gigabyte = 1024 megabytes = 1.073.741.824 bytes. Hardware: todos los componentes físicos de la computadora y sus periféricos. Lenguaje de programación: sistema de escritura para la descripción precisa de algoritmos o programas informáticos. Memoria caché: pequeña cantidad de memoria de alta velocidad que incrementa el rendimiento de la computadora almacenando datos temporalmente. Microprocesador (microprocessor): es el chip más importante de una computadora. Su velocidad se mide en MHz (Megahertz). Monitor: unidad de visualización, comúnmente conocida como pantalla. Periférico: todo dispositivo que se conecta a la computadora; por ejemplo: teclado, monitor, mouse, impresora, escáner. Procesador (processor): conjunto de circuitos lógicos que procesa las instrucciones básicas de una computadora. RAM (Random Acces Memory): en español significa memoria de acceso aleatorio. En esta memoria es donde la computadora almacena datos que le permiten al procesador acceder rápidamente al sistema operativo, las aplicaciones y los datos en uso. Tiene estrecha relación con la velocidad de la computadora. Se mide en megabytes. ROM (Read Only Memory): en español memoria de sólo lectura. Memoria incorporada que contiene datos que no pueden ser modificados. Permite a lacomputadora arrancar. A diferencia de la RAM, los datos de la memoria ROM no se pierden al apagar el equipo. Sistema Operativo (OS): programa que administra los demás programas en una computadora. Software: término general que designa los diversos tipos de programas usados en computación. USB (Universal Serial Bus): es una interfase de tipo plug & play entre una computadora y ciertos dispositivos, por ejemplo: teclados, teléfonos, escáneres e impresoras. FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje 13 FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje 14 PROGRAMA NOMBRE DEL OBJET O EXPERTO TEMÁTICO DISEÑADORES GRÁFICOS GESTOR DE REPOSITORIO PROGRAMADORES GUIONISTA Y PRODUCTOR DE MEDIOS AUDIOVISUALES GUIONISTA ASESORAS PEDAGÓGICAS LÍDER DE L A LÍNEA DE PRODUCCIÓN Metodología de la programación de sistemas informáticos Fundamentos de programación Carlos Felipe Domínguez Illera Caren Xiomara Carvajal Pére z y Luis Guillermo Roberto Báez Luis Carlos Reyes Parada Nancy Astrid Barón López Nilda Inés Camargo Suescún Fr edy Velandia Figueroa Jheison Edimer Muñoz R amírez Adriana Carolina Acosta Caycedo Kennia Andrea Peña Barrera Janet Lucia Villalba Triana. Zulma Yurany Vianchá Rodríguez FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje g 15 FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje 16