1 Tema 5: Programación de ordenadoresAsignatura: Introducción a la Informática 2º CC Ambientales Universidad Rey Juan Carlos INTRODUCCIÓN A LA INFORMÁTICA
2 INTRODUCCIÓN A LA INFORMÁTICA 2002-2003Objetivos Conocer las bases de la programación de ordenadores. Aprender las generalidades de los lenguajes y de los entornos de programación. Ver cómo se organizan los programas y los métodos (algoritmos) para resolver problemas. INTRODUCCIÓN A LA INFORMÁTICA
3 TEMARIO 5- PROGRAMACIÓN DE ORDENADORES.5.1 Fundamentos de programación. 5.2 Lenguajes y entornos de programación. 5.3 Organización de los programas: Algoritmos y estructuras de datos. Práctica: Programación en pseudocódigo INTRODUCCIÓN A LA INFORMÁTICA
4 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: Instrucción: Es un conjunto de símbolos que representa una orden de operación o tratamiento para el computador. Programa: Conjunto ordenado de instrucciones que indican las tareas u operaciones que el computador debe realizar. Es la representación de un algoritmo, escrito en algún lenguaje de programación. INTRODUCCIÓN A LA INFORMÁTICA
5 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: Lenguaje de programación (DEF1): Es el conjunto de símbolos y el conjunto de reglas para combinar dichos símbolos que se utilizan para realizar programas. Léxico (cjto. de símbolos permitidos). Sintaxis (reglas para realizar las construcciones del lenguaje). Semántica (reglas para determinar el significado de dichas construcciones). INTRODUCCIÓN A LA INFORMÁTICA
6 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: Lenguaje de programación (DEF2): Es una notación para escribir programas. Permite comunicarnos con el hardware y dar así las órdenes adecuadas para la realización de un determinado proceso. Viene definido por una gramática o conjunto de reglas que se aplican a un alfabeto constituido por el conjunto de símbolos utilizados. INTRODUCCIÓN A LA INFORMÁTICA
7 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: INSTRUCCIONES BÁSICAS: Instrucciones de asignación. Instrucciones selectivas (o bifurcaciones o condicionales) Instrucciones repetitivas (o iterativas o bucles) Instrucciones de entrada y salida (o de transferencia de datos entre periféricos y memoria central). INTRODUCCIÓN A LA INFORMÁTICA
8 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: PROGRAMACIÓN DE ORDENADORES: No todos los problemas pueden ser resueltos con un computador. Para resolver un problema con un ordenador hay que seguir las siguientes fases o etapas: 1. Planteamiento del problema: Definir bien el problema. Delimitar y aclarar todos sus aspectos. INTRODUCCIÓN A LA INFORMÁTICA
9 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: PROGRAMACIÓN DE ORDENADORES: 2. Análisis y diseño: Estudiar el problema y dividirlo en distintas sub-tareas. Decidir que estructuras de datos se van a usar. 3. Programación o codificación: Se implementan en el ordenador los datos y las tareas a realizar utilizando un lenguaje de programación. INTRODUCCIÓN A LA INFORMÁTICA
10 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: PROGRAMACIÓN DE ORDENADORES: 4. Prueba, depuración y mantenimiento: Se comprueba que el programa funciona según las especificaciones. Se corrigen los errores detectados. Se actualizan los datos o el programa (cuando sea necesario). INTRODUCCIÓN A LA INFORMÁTICA
11 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: INGENIERÍA DEL SOFTWARE: DEFINICIÓN: Disciplina que trata de los aspectos tecnológicos y burocráticos relacionados con el diseño, producción y mantenimientos sistemáticos de programas de computadores. INTRODUCCIÓN A LA INFORMÁTICA
12 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: INGENIERÍA DEL SOFTWARE: Tres elementos básicos: Métodos (cómo construir software) Planificación y estimación de proyectos Análisis de requerimientos Diseño Codificación Prueba y mantenimiento INTRODUCCIÓN A LA INFORMÁTICA
13 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: INGENIERÍA DEL SOFTWARE: Herramientas Desarrollo, integración, enlazado automático o semiautomático de los métodos. Procedimientos Definen cómo se aplican los métodos Documentos (formato, plazos) Controles para asegurar la calidad y la consistencia INTRODUCCIÓN A LA INFORMÁTICA
14 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: ALGORITMO: DEFINICIÓN: Conjunto ordenado de pasos a seguir para resolver un problema concreto, en un tiempo finito y sin ambigüedad. INTRODUCCIÓN A LA INFORMÁTICA
15 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: Ejemplo de ALGORITMO: Determinar si un número es par: Leer N Si N=2 Escribe: “es par” Si N=1 Escribe: “es impar” Si N=1 o N=2 ir a 7 N=N-2 Ir a 2 Fin del procedimiento INTRODUCCIÓN A LA INFORMÁTICA
16 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: Organización de datos: Ficheros (Archivos): Conjunto de información del mismo tipo (homogénea) que se guardan en unidades de almacenamiento masivo. Arrays (Vectores): Conjunto de información del mismo tipo (homogénea) guardada en memoria. INTRODUCCIÓN A LA INFORMÁTICA
17 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: Organización de datos: Registros: Conjunto de información de distinto tipo (heterogénea) relacionada de forma lógica Los datos que forman un registro se denominan campos. INTRODUCCIÓN A LA INFORMÁTICA
18 5.1 Fundamentos de programaciónCONCEPTOS BÁSICOS: Organización de datos: Base de datos: Organización sistemática de datos en archivos orientada a facilitar su acceso, recuperación y actualización, por diversos programas o usuarios y que incluye las relaciones de unos datos con otros. Sistema Gestor de Bases de Datos (DBMS Data Base Management System) INTRODUCCIÓN A LA INFORMÁTICA
19 5.2 Lenguajes de programaciónTipos: Lenguajes de bajo nivel Lenguaje máquina Lenguaje ensamblador Lenguajes de alto nivel Lenguajes imperativos o procedurales Lenguajes declarativos Lenguajes funcionales o de programación lógica. INTRODUCCIÓN A LA INFORMÁTICA
20 5.2 Lenguajes de programaciónEvolución histórica: -52: L. Máquina 49-56: Ensambladores 54-...: Fortran (56), Algol (58), Cobol (59), Lisp (62), Basic (64), C (72), Pascal (73), Modula-2 (79), Ada (80)... 61-...: Entornos de programación, Prolog(72), Smalltalk (72), C++ (85), Haskell (88), Java... INTRODUCCIÓN A LA INFORMÁTICA
21 5.2 Lenguajes de programaciónLENGUAJE MÁQUINA: Es el único que entiende directamente la computadora. Las instrucciones se expresan en sistema binario (u octal o hexadecimal). Los datos se referencian por medio de las direcciones de memoria donde están. Tiene una sintaxis rígida. Depende de la CPU del ordenador. INTRODUCCIÓN A LA INFORMÁTICA
22 5.2 Lenguajes de programaciónLENGUAJE MÁQUINA: Repertorio de instrucciones reducido. La programación en este lenguaje es tediosa y complicada No admite poner comentarios => Difícil legibilidad. Permite utilizar la totalidad de los recursos. Programas muy eficientes en tiempo de ejecución y en ocupación de memoria. INTRODUCCIÓN A LA INFORMÁTICA
23 5.2 Lenguajes de programaciónLENGUAJE MÁQUINA: Ejemplo: : Suma (1100) indirecta (1) del contenido de la dirección ( = 5910) con el acumulador. : Desplaza hacía la derecha (1010) el contenido del acumulador. : Carga el acumulador (0000) con el contenido de la dirección de memoria ( = 9310) INTRODUCCIÓN A LA INFORMÁTICA
24 5.2 Lenguajes de programaciónLENGUAJE ENSAMBLADOR: Es más cercano al lenguaje humano. Usa notación simbólica o nemotécnica para representar los códigos de operación. También utiliza nombres para referenciar datos guardados en memoria. Permite el uso de comentarios. Cada instrucción en ensamblador se corresponde con una en lenguaje máquina. INTRODUCCIÓN A LA INFORMÁTICA
25 5.2 Lenguajes de programaciónLENGUAJE ENSAMBLADOR: La traducción es realizada por un programa traductor llamado ensamblador. Posee la mayoría de los inconvenientes del lenguaje maquina: Baja portabilidad. Formato de instrucciones rígido. Repertorio reducido. INTRODUCCIÓN A LA INFORMÁTICA
26 5.2 Lenguajes de programaciónLENGUAJE ENSAMBLADOR: Ejemplo: SUM Coste : Suma (SUM) del contenido de la dirección de memoria (Coste) con el acumulador. DED Acum : Desplaza hacía la derecha (DED) el contenido del acumulador. CAR Numero : Carga el acumulador (CAR) con el contenido de la dirección de memoria (Numero) INTRODUCCIÓN A LA INFORMÁTICA
27 5.2 Lenguajes de programaciónLENGUAJES DE ALTO NIVEL: CARACTERÍSTICAS: Son independientes de la arquitectura física del computador. Una instrucción se traduce en varias instrucciones en lenguaje máquina. Utilizan una nomenclatura cercana a la usada por las personas. Facilita la escritura y lectura de programas. INTRODUCCIÓN A LA INFORMÁTICA
28 5.2 Lenguajes de programaciónLENGUAJES DE ALTO NIVEL: CARACTERÍSTICAS: Las instrucciones se expresan por medio de texto (inglés) con caracteres alfanuméricos y caracteres especiales (+, -, * , / , = ...). Dispone de instrucciones complejas, para todo tipo de operaciones aritméticas, para entrada/salida de datos... Hay una gran cantidad y variedad de lenguajes de alto nivel. INTRODUCCIÓN A LA INFORMÁTICA
29 5.2 Lenguajes de programaciónLENGUAJES DE ALTO NIVEL: Ejemplo (Matlab): function cuadrado % Este programa hace cuadrados de 1 a 10: for i=1:10 disp([i i^2]) end INTRODUCCIÓN A LA INFORMÁTICA
30 5.2 Entornos de programaciónENTORNO DE PROGRAMACIÓN: Es el software que integra varias programas para el desarrollo de aplicaciones. Facilitan las tareas de diseño codificación prueba depuración y mantenimiento. Ejemplos: Delphi, Visual Basic, Visual C++, JBuilder,… INTRODUCCIÓN A LA INFORMÁTICA
31 5.3 Organización de los programasTIPOS DE DATOS: Dato: Cualquier objeto manipulable por el ordenador. Rango: Cjto. de valores que puede tomar Operaciones primitivas: Operaciones que es posible realizar con los datos Operadores que se les pueden aplicar Tipos de datos: Conjunto de funciones externas e internas y de transformaciones definidas sobre el conjunto de datos INTRODUCCIÓN A LA INFORMÁTICA
32 5.3 Organización de los programasTIPOS DE DATOS: Clases de tipos de datos: Constantes Variables Clasificación: Datos simples Numéricos (enteros, reales, etc), caracteres, lógicos o booleanos, enumerados y subrangos. Datos compuestos Arrays (vectores), cadenas de caracteres, registros... INTRODUCCIÓN A LA INFORMÁTICA
33 5.3 Organización de los programasTIPOS DE DATOS: Datos simples Numéricos: Tipo entero: Representación del conjunto de los números enteros. Rango: subconjunto de enteros.(2n-1 - 1, -2 n-1) Operaciones/operadores: Aritméticos: + , - , *, /, Div, Mod, Abs, Sqr, Ln, Exp... Relacionales: =, <>, >=, >, <=, < INTRODUCCIÓN A LA INFORMÁTICA
34 5.3 Organización de los programasTIPOS DE DATOS: Datos simples Numéricos: Tipo real: Representación del conjunto de los números reales. Rango: subconjunto de reales. N=M*BE Operaciones/operadores: Aritméticos: Igual que enteros más Trunc, Round... Relacionales: =(*), <>(*), >=, >, <=, < (*) Estos operadores no se suelen usar debido a la falta de precisión en la representación. INTRODUCCIÓN A LA INFORMÁTICA
35 5.3 Organización de los programasTIPOS DE DATOS: Datos simples Caracteres: Representa elementos de un conjunto finito y ordenado de caracteres. Conjuntos usuales: ASCII American Standard Code for Information Interchange EBCDIC Extended Coded Decimal Interchange Code Operadores: Length, strcat Relacionales: =, <>, >=, >, <=, < INTRODUCCIÓN A LA INFORMÁTICA
36 5.3 Organización de los programasTabla ASCII-DOS INTRODUCCIÓN A LA INFORMÁTICA
37 5.3 Organización de los programasTabla ASCII-WIN INTRODUCCIÓN A LA INFORMÁTICA
38 INTRODUCCIÓN A LA INFORMÁTICA 2002-2003Tabla EBCDIC Decimal value Symbol Decimal value Symbol blank % ó _ > < ? ( : # | @ & ' ! = $ " * a-i ) j-r ; s-z ` A-I J-R / S-Z INTRODUCCIÓN A LA INFORMÁTICA
39 5.3 Organización de los programasTIPOS DE DATOS: Datos simples Booleanos (lógicos): Representan solo dos valores: Verdadero (True) o Falso (False). Rango: Dos valores Operaciones/operadores: AND, OR, NOT, XOR, NAND Op1 Op2 AND OR XOR NAND NOT (Op1) INTRODUCCIÓN A LA INFORMÁTICA
40 5.3 Organización de los programasTIPOS DE DATOS: Datos simples Enumerados: Representan a un conjunto finito de valores definidos explícitamente. Ejemplo: Type Genero = (dramatica, comica, suspense, terror). Operaciones/Operadores: Pred, Succ. Ejemplo: Pred (comica) = dramatica Succ(comica) = suspense INTRODUCCIÓN A LA INFORMÁTICA
41 5.3 Organización de los programasTIPOS DE DATOS: Datos simples Subrangos: Se definen a partir de los tipos enteros, carácter o enumerados, dando un rango entre un valor mínimo y un máximo de uno de esos tipos. Rango: [Valor mínimo...Valor Máximo] Operaciones/Operadores: Los mismos que tiene el tipo original Ejemplo : type dígito = 0..9; minúsculas = ‘a’..’z’; INTRODUCCIÓN A LA INFORMÁTICA
42 5.3 Organización de los programasTIPOS DE DATOS: Datos compuestos o estructurados Son tipos de datos construidos a partir de otros tipos de datos. Arrays (vectores o matrices): Colección ordenada de datos del mismo tipo. Acceso a los datos: Mediante índice(s) que determinan de manera unívoca un elemento. Ejemplo: Pascal: var Matriz : array [1..10,1..4] of real C : float Matriz[10,4] Acceso: Matriz [7,3] INTRODUCCIÓN A LA INFORMÁTICA
43 5.3 Organización de los programasTIPOS DE DATOS: Datos compuestos o estructurados Arrays (vectores o matrices): Es una estructura de datos estática. Los elementos se almacenan en memoria ocupando un área contigua. Ejemplo: El elemento i,j de una matriz MxN estará en la posición: Posición = Posición base + (i -1) * N + (j - 1) INTRODUCCIÓN A LA INFORMÁTICA
44 5.3 Organización de los programasTIPOS DE DATOS: Datos compuestos o estructurados Cadena de caracteres (Strings): Secuencia ordenada de caracteres. Operaciones: Concatenación Extracción de una subcadena Comparación de cadenas Longitud de la cadena Ejemplo: (Fortran) character(len=50)::frase frase = ‘Ciencias Ambientales’ INTRODUCCIÓN A LA INFORMÁTICA
45 5.3 Organización de los programasTIPOS DE DATOS: Datos compuestos o estructurados Registros (Records):Conjunto de información de distinto tipo (heterogénea) relacionada lógicamente. Los datos que forman un registro se denominan campos. Cada campo se identifica por un nombre Ejemplo (Matlab) empleado=struct('nombre','Juan','Apellido1','Fernandez',... 'Apellido2','Garcia','dni', ,'sueldo',345000); INTRODUCCIÓN A LA INFORMÁTICA
46 5.3 Organización de los programasTIPOS DE DATOS: Datos compuestos o estructurados Listas: Colección con un numero variable de datos del mismo tipo, ordenados de manera lineal. Estructura dinámica. Cada elemento tiene un predecesor, excepto el primero, y un sucesor, salvo el último. INTRODUCCIÓN A LA INFORMÁTICA
47 5.3 Organización de los programasTIPOS DE DATOS: Datos compuestos o estructurados Listas: Operaciones: Añadir un elemento Eliminar un elemento Acceder a un elemento Saber si la lista esta vacía INTRODUCCIÓN A LA INFORMÁTICA
48 5.3 Organización de los programasALGORITMOS: Conjunto ordenado de pasos a seguir para resolver un problema concreto, en un tiempo finito y sin ambigüedad. Acciones bien definidas Secuencia finita y ordenada Tiempo finito INTRODUCCIÓN A LA INFORMÁTICA
49 5.3 Organización de los programasALGORITMOS: Características: Precisión Repetitividad Finitud. Propiedad: Es independiente del lenguaje de programación en el que se implemente y de la computadora en la que se ejecute. INTRODUCCIÓN A LA INFORMÁTICA
50 5.3 Organización de los programasALGORITMOS: Para resolver un mismo problema se pueden definir varios algoritmos. Factores para decidir que algoritmo usar: Tiempo que tarda en hallar la solución Recursos utilizados para implantar el algoritmo. INTRODUCCIÓN A LA INFORMÁTICA
51 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Existen diferentes métodos: Pseudocódigo o lenguaje de descripción de algoritmos Organigramas o diagramas de flujo Diagramas de Nassi-Schneiderman (N-S) (o diagramas de Chapin) INTRODUCCIÓN A LA INFORMÁTICA
52 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Pseudocódigo o lenguaje de descripción de algoritmos: Es un conjunto pequeño y completo de sentencias mediante las cuales podemos expresar todas las instrucciones básicas. Reglas: Cada identificador (variable, constante...) debe tener un nombre significativo Cada sentencia debe ir en una línea Los nombres de las sentencias son únicos. INTRODUCCIÓN A LA INFORMÁTICA
53 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Pseudocódigo Ejemplo: Suma de un numero variable de datos: Suma = 0 lee (dato) mientras (dato <> 0) suma = suma + dato fin mientras escribe (‘La suma total es = ‘, Suma) INTRODUCCIÓN A LA INFORMÁTICA
54 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Pseudocódigo Ventajas sobre las representaciones gráficas Es más compacto Más fácil de escribir Más fácil de traducir a un lenguaje de programación concreto. INTRODUCCIÓN A LA INFORMÁTICA
55 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Organigramas o diagramas de flujo Herramienta gráfica de descripción de algoritmos fácil y extendida. Los símbolos representan acciones Las flechas representan el orden de ejecución. INTRODUCCIÓN A LA INFORMÁTICA
56 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Organigramas o diagramas de flujo Símbolos: Asignación: Terminal: M = 3 Inicio Fin INTRODUCCIÓN A LA INFORMÁTICA
57 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Organigramas o diagramas de flujo Símbolos: Selección: Entrada/Salida: Si N<>0 No Leer Dato INTRODUCCIÓN A LA INFORMÁTICA
58 5.3 Organización de los programasEjemplo: Suma de un numero variable de datos: Inicio Suma = 0 Leer Dato Si Dato<>0 Suma = Suma + Dato No Escribir Suma Fin INTRODUCCIÓN A LA INFORMÁTICA
59 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Diagramas de Nassi-Schneiderman Es otra manera gráfica de representar algoritmos. Facilita la utilización de las técnicas de programación estructurada. Solo posee símbolos y el flujo del programa es de arriba abajo. INTRODUCCIÓN A LA INFORMÁTICA
60 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Diagramas de Nassi-Schneiderman Símbolos: Asignación, entrada/salida Dato = 30 Escribir Dato ... INTRODUCCIÓN A LA INFORMÁTICA
61 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Diagramas de Nassi-Schneiderman Símbolos: Selección condición Si No Instruc1 Instruc2 ... InstrucA InstrucB INTRODUCCIÓN A LA INFORMÁTICA
62 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Diagramas de Nassi-Schneiderman Símbolos: Repetición condición Instrucción 1 Instrucción 2 .... INTRODUCCIÓN A LA INFORMÁTICA
63 5.3 Organización de los programasREPRESENTACIÓN DE ALGORITMOS: Diagramas de Nassi-Schneiderman Ejemplo: Suma = 0 Leer Dato Mientras Dato <> 0 Suma = Suma + Dato Leer Dato Escribir Suma INTRODUCCIÓN A LA INFORMÁTICA
64 INTRODUCCIÓN A LA INFORMÁTICA 2002-20035.5 REFERENCIAS ”Fundamentos de Informática” Luis A. Ureña- Antonio M. Sanchez... Ed. RA-MA 1997 “Introducción a la Informática” A. Prieto, A. Lloris ... Ed. McGrawHill 1997 INTRODUCCIÓN A LA INFORMÁTICA