Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática INFORMATICA Objetivos o Enseñar una metodología para resolver problemas mediante una computadora. o Describir un problema a través de estructuras lógicas. o Mostrar los conceptos básicos de la programación estructurada Bibliografía • Fundamentos de programación: algoritmos y estructuras de datos, Luis Joyanes Aguilar, Mc Graw Hill 2003 • El Lenguaje de Programación C, B Kernighan D Ritchie, Prentice Hall 1991 • Elementos esenciales para programación: Algoritmos y Estructuras de Datos Autores FCEIA: Gagliano, Alarcón, Angelone, Guspi, Luna Disponible en http://www.latinproject.org/index.php/es/biblioteca Unidades (Plan 2014) 1. Fundamentos de la informática. Conceptos básicos 2. Tipos de datos, operaciones y expresiones 3. Resolución de problemas algorítmicos 4. Estructuras de los algoritmos. Estructuras de control 5. Subalgoritmos: procedimientos y funciones 6. Arreglos 7. Registros y archivos Página 1 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Informática La Informática nace bajo la idea de ayudar al hombre en aquellos cálculos rutinarios, donde frecuentemente existe una repetición de tareas, como por ejemplo la gestión de un censo, tal es el caso del primero automatizado en 1890 en EE.UU. usando tarjetas perforadas. En esa época se pensó que una máquina no sufriría cansancio ni cometería errores. Con el tiempo esta idea se fue afianzando en la sociedad, y es hoy día que se sigue trabajando para mejorar las prestaciones de los sistemas de cómputo. El término Informática nace recién en la década de 1960 en Francia bajo la denominación INFORMATIQUE, debida a la contracción de las palabras INFORmation y autoMATIQUE, es decir el tratamiento de la información por medios automáticos. INFORMÁTICA es la ciencia que estudia el tratamiento automático y racional de la información. Se habla de tratamiento automático debido a que son máquinas las que procesan la información y se dice racional por estar los procesos definidos a través de programas que siguen el razonamiento humano. Página 2 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Conceptos básicos Del mundo real a la solución por computadora Problema del mundo real Abstracción Modelo Especificación del problema Análisis & descomposición Programa Codificación de algoritmos Algoritmo Acciones para resolver el problema Lenguaje de programación Página 3 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Conceptos básicos Definiciones Especificación: se denomina al proceso por el cual se analiza y determina en forma clara y concreta el objetivo que se desea. Modelo: es la representación de un problema del mundo real, tratando de encontrar los aspectos principales que se pueden resolver (requerimientos), descartando aspectos secundarios, los datos que se han de procesar y el contexto del problema. Algoritmo: es el conjunto de acciones que seguidas paso a paso resuelvan el problema Lenguaje de programación: es el conjunto de instrucciones permitidas y definidas por sus reglas sintácticas y su valor semántico, para poder expresar la solución a un problema Programa: es un conjunto de instrucciones ejecutables sobre una computadora, que permite cumplir una función específica. Página 4 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Conceptos básicos Algoritmos Un algoritmo es una forma de describir la solución de un problema, explicando paso a paso como se debe proceder para llegar a una respuesta encuadrada a los datos disponibles, en un número finito de pasos. Un algoritmo es un conjunto finito y ordenado de reglas o instrucciones (también llamadas acciones) bien definidas tal que siguiéndolas paso a paso se obtiene la respuesta a un problema dado. Las características de un algoritmo son: 1) Un algoritmo debe ser preciso, es decir, debe indicar claramente (sin ambigüedades) cada uno de los pasos a seguir para conseguir el objetivo propuesto. 2) Un algoritmo debe estar exacto, es decir, que si se sigue el algoritmo varias veces con el mismo juego de datos, los resultados obtenidos deben ser los mismos. 3) Un algoritmo debe ser finito, debe concluir en algún momento. Entrada Proceso Salida Página 5 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Conceptos básicos Ejemplo de un Algoritmo Se desea realizar un algoritmo para calcular el área y el perímetro de un círculo en función de su radio. Entrada: Proceso: Salida: radio del círculo (datos) cálculo del área y de la longitud de la circunferencia valor de la superficie y perímetro (resultados) Un algoritmo escrito en forma coloquial será: Informar a la computadora (Leer) el valor del radio Calcular el área como pi * radio2 Calcular el perímetro como 2 * pi * radio Informar al usuario (Escribir) el valor del área Informar al usuario (Escribir) el valor del perímetro El algoritmo expresado en forma coloquial no puede ser entendido por la computadora Algoritmo escrito aplicando determinadas reglas Algoritmo escrito en ‘seudocódigo’ Algoritmo escrito con un lenguaje de programación formal Programa Página 6 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Conceptos básicos Modelo computacional • Objetivo generar algoritmos computacionales • Como comunicarnos?, como transferir los datos ? ENTRADA ⇒ PROCESO ⇒ SALIDA Como ingreso los datos ? teclado, mouse, lapíz óptico, scanner, ...... Microprocesador. Necesidad de MEMORIA. Mostrar los resultados. Impresora, monitor, .... Página 7 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Conceptos básicos Entrada: conjunto de datos que son necesarios para que el algoritmo lleve a cabo su tarea. Proceso: contiene la descripción de los pasos a seguir para resolver el problema. Salida: conjunto de resultados que se obtienen al ejecutar el proceso en función de los datos de entrada. Nuestro procesador: la computadora • su tarea es procesar información • tratamiento de la información en forma automática • sólo puede realizar acciones elementales, tales como − operaciones básicas +, -, /, * − operaciones relacionales <, >, <=, >= − almacenar información El procesador realiza su trabajo utilizando siempre la memoria. Página 8 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Conceptos básicos Números Texto - sistema binario (conveniencia y simplicidad) - el sistema binario al igual que el decimal es un sistema posicional Decimal 0 1 2 3 4 5 6 7 Binario 0 1 10 11 100 101 110 111 - está representado por un código numérico. Cada caracter (letras mayúsculas y minúsculas, signos de puntuación signos especiales como #, @, & etc.) tienen asociado un valor numérico. - Estos valores numéricos son arbitrarios - Código ASCII (American Standard Code for Information Interchange) - Algunos de los códigos más comunes son: Caracter Codigo Caracter Codigo Caracter Codigo . / 0 1 2 3 4 5 … 46 47 48 49 50 51 52 53 … A B C D E F G H … 65 66 67 68 69 70 71 72 … \ ] ^ _ ` a b c … 92 93 94 95 96 97 98 99 … Página 9 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Conceptos básicos Un dígito binario se denomina bit (contracción de binary digit). El conjunto de 8 bits que se denomina byte. Es interesante saber cuál es el mayor valor número que se puede representar con un cierto número de bits. Puesto que con un bit se puede representar dos posibilidades, con 2 bits tendremos 4 posibilidades (2x2) y en general tendremos 2N, véase la Tabla siguiente: Bits 1 2 3 4 5 6 7 8 (1 byte) ... 2 byte 4 byte 8byte Posibilidades 21=2 22=4 23=8 24=16 25=32 26=64 27=128 28=256 … 16 2 =65536 32 2 =4294967296 64 2 =18446744073709551616 Múltiplos: Kilobyte, MegaByte, Gigabyte, etc. Página 10 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Tipos de datos Un tipo de datos está determinado por un conjunto de valores ordenados y por las operaciones permitidas sobre esos valores. Atributos de los tipos de datos: 1) Rango de definición 2) Operaciones realizables sobre el tipo 3) Representación interna Tipos primitivos de datos Numéricos Enteros No numéricos Reales Carácter Lógico Página 11 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Tipos de datos Tipos entero Memoria usada en Bits 8 16 32 64 Valor mínimo -128 -32768 - 2147483648 ~ - 9.22 1018 Valor máximo +127 +32767 +2147483647 ~ + 9.22 1018 Tipos real Memoria usada en Bits 32 64 Valor mínimo ~ -3.4 1038 ~ - 1.7 10308 Valor máximo ~ +3.4 1038 ~ +1.7 10308 Tipo carácter Tipo lógico Cógido ASCII (American Standard Code Interchange Information) – 256 símbolos letras: A a la Z (excepto CH, Ñ, LL) y a a la z (excepto ch, ñ, ll) signos de puntuación: (.) punto, (;) punto y coma, etc. dígitos: 0, 1, 2, .....,9 símbolos especiales: +, -, “, ?, !, =, ..... caracteres de control: retorno, tab, etc. Memoria usada en Bits 1 Valores posibles Verdadero / Falso Página 12 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Tipos de datos TABLA : ASCII ^@ ^Â ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O ^P ^Q ^R ^S ^T ^U ^V ^W 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ^X ^Y ^Z ^[ ^\ ^] ^^ ^ ! “ # $ % & ‘ ( ) * + , . / 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 H I J K L M N O P Q R S T U V W X Y Z [ \ ] 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 ^ _ ` a b c d e f g h I j k l m n o p r s t 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 u v w x y z { | } ~ delete 116 117 118 119 120 121 122 123 124 125 126 ...... ..... 255 Página 13 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Variables y Constantes Como se mencionó anteriormente los programas manejan datos. Es necesario, por lo tanto, disponer de un mecanismo que permita el almacenamiento y la manipulación de los datos. En un programa esto es llevado a cabo por entidades a las que denominaremos variables y constantes. Variables: es un objeto de la memoria cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecución del programa. Una variable es un nombre que asignamos para una posición/es de memoria usada/s para almacenar un valor de un cierto tipo de dato. Las variables deben declararse (definirse) antes de usarse. Cuando se declara una variable estamos reservando una porción de memoria principal para el almacenar los correspondientes valores correspondientes al tipo de variable. La declaración de las variables implica el darles un nombre (identificador de la variable). El valor que almacena una variable se puede modificar a lo largo del programa. Nombres válidos (convenciones): - Todo nombre válido debe comenzar con una letra (obligatorio). - Debe estar formado por letras (may. y/o min.) y números - El nombre debe ser representativo (muy recomendable). Nombres Válidos Nombres Inválidos Radio 1N Area A-B N ¿Area N1 K,1 Cont5 Area Radio Página 14 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Variables y Constantes Atributos que caracterizan a una variable: Nombre Tipo de datos Valor Constantes: similar al concepto de variable pero con la particularidad de que su valor permanece inalterable en curso de la ejecución del algoritmo. Las constantes pueden tener un nombre (siguiendo las mismas convenciones que las variables) o expresarse directamente mediante su valor. Ejemplo: En el cálculo del perímetro de la circunferencia: 2 * pi * radio Constante expresada por su valor Constante con nombre Variable Página 15 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Expresiones Una expresión describe un cálculo a efectuar cuyo resultado es un único valor. Las expresiones son combinaciones de constantes, variables, operadores, paréntesis y nombres de funciones. De forma similar a lo que se entiende en notación matemática tradicional. Por ejemplo: A + B * sin(T) * 10 / 3 Según el tipo de objetos que manipulan las expresiones se clasifican en: - aritméticas - lógicas - carácter El resultado de la expresión aritmética es de tipo numérico; el resultado de la expresión lógica es de tipo lógico; el resultado de una expresión carácter es de tipo carácter. Expresión aritmética Expresión lógica Expresión caracter Resultado: valor numérico Resultado: valor lógico Resultado: valor caracter Página 16 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Expresiones aritméticas - - Las expresiones aritméticas son análogas a las fórmulas matemáticas. Las expresiones aritméticas se definen mediante una combinación de variables numéricas, constantes numéricas, paréntesis, llamadas a funciones numéricas y operadores aritméticos. - Los operadores aritméticos son: Operador Significado Tipo de operandos Tipo de resultado + Suma Entero / Real Entero / Real - Resta Entero / Real Entero / Real * Multiplicación Entero / Real Entero / Real / División Entero / Real Entero / Real ^ o ** Potencia Entero / Real Entero / Real Ejemplos: a) b) c) d) 3 + 5 * 8 ** 2 1/3 1.0 / 3.0 1.0 / 3 Página 17 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Expresiones aritméticas REGLAS PARA EVALUAR EXPRESIONES ARITMÉTICAS Las expresiones se evalúan de izquierda a derecha. Los paréntesis se usan para anidar expresiones y alterar el orden de evaluación. Las operaciones encerradas entre paréntesis se evalúan primero. Las reglas de precedencia de las expresiones nos dicen el orden en que la computadora evalúa una expresión cuando hay más de un operador. Para expresiones aritméticas se siguen, lógicamente, las reglas de precedencia aritmética. El orden de evaluación de los operadores en cualquier expresión es el siguiente: 1 2 3 Ejemplos: - A + B * 3 ** 2 -A/B/2 -A/B*2 ^ o ** */ + - (A + B) * 3 ** 2 -M/N*C - M / (N * C) ¿ Qué resultados tendrán las expresiones anteriores si A=8, B=3, C=3.0, M=4.0, N=2.0 ? Página 18 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Funciones internas Las operaciones que se requieren en los algoritmos exigen en numerosas ocasiones, además de las operaciones aritméticas básicas, ya tratadas, un número determinado de operaciones especiales que se denominan FUNCIONES INTERNAS FUNCIONES NUMÉRICAS INTERNAS Todas las funciones numéricas se utilizan incluyendo su nombre, seguido de los argumentos entre paréntesis y separados por comas, en alguna expresión aritmética. La función se evalúa y el resultado se incluye en dicha expresión aritmética. Ejemplos: Función Descripción Tipo de argunmento Resultado Expresión Raiz(25) Resultado 5 Abs(x) Valor absoluto Entero o real Igual al arg. Sin(x) Seno Entero o real Real Cos(x) Coseno Entero o real Real Nint(6.6) 7 Exp(x) Exponencial Entero o real Real Nint(3.1) 3 Alog(x) Logaritmo natural Entero o real Real Int(5.6) 5 Alog10(x) Logaritmo base 10 Entero o real Real Int(3.1) 3 Int(x) Parte Entera Real Entero Nint(x) Redondeo Real Entero Abs(9) 9 Mod(x,y) Resto de la división Enteros Entero Abs(-12) 12 Sqrt (x) Raiz cuadrado Entero o real Real Mod(15,4) 3 Página 19 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Expresiones lógicas El resultado de este tipo de expresiones es siempre VERDADERO o FALSO. Las expresiones lógicas se forman combinando constantes y variables (numéricas, lógicas o carácter) con operadores de relación (<, >, <=, >=, ==, /=), y otras expresiones lógicas con operadores lógicos (NOT, AND, OR) Operadores de relación: Genérico: Expresión 1 operador Expresión 2 Operador de Relación Significado < Mayor > Menor == Igual >= Mayor igual <= Menor igual /= o <> Distinto Página 20 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Expresiones lógicas Ejemplos: A–2<B–4 si A=4, B=3 ¿Resultado? (2 * X) – 5 /= (3 + 8) * 2 si X=3 ¿Resultado? Para realizar la comparación de datos tipo carácter se requiere una secuencia numérica de ordenación de los caracteres. Para ello recurrimos al código ASCII (American Standard Code for Information Interchange), donde existe un orden de todos los caracteres. Ejemplos: ‘A’ < ‘B’ ( ‘A’ : cód. ASCII 65 / ‘B’ : cód. ASCII 66 ) ‘A’ < ‘a’ ( ‘A’ : cód. ASCII 65 / ‘a’ : cód. ASCII 97 ) Página 21 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Expresiones lógicas Operadores lógicos: NOT: es un operador unario, es decir que influye sobre una única expresión del tipo lógica. NOT expresión lógica Expresión 1 V F F V Expresión 1 Expresión 2 V F V F V F F F Expresión 1 Expresión 2 V F V F V V V F AND: es la conjunción o multiplicación lógica expresión lógica 1 AND expresión lógica 2 OR: es la disyunción o suma lógica expresión lógica 1 OR expresión lógica 2 Ejemplos: 5 < B – 4 .AND. A = 4 X – 2 = 1 .OR. (X+3) > 6 .NOT. Z > 6 si A=4, B=3 ¿Resultado? si X=3 ¿Resultado? si Z=6 ¿Resultado? Página 22 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Acción de Asignación La operación de asignación es el modo de darle valores a una variable. La operación de asignación se representa con el símbolo ← variable ← expresión Es decir, se almacena el resultado de una expresión en una variable. Ejemplo: A2+3 Nombre de la variable A Valor 5 El valor 5 es almacenado en la celda de memoria que corresponde a la dirección de memoria reservada a la variable A AA+1 A 6 Se resuelve la expresión A+1 y el resultado se almacena de nuevo en la variable A IMPORTANTE: No confundir igualdad matemática con asignación Página 23 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Asignación aritmética Ejemplo2 Ejemplo1 AMN TER1 TER2 COCIENTE 3 + 14 + 8 1.45 + 8 0.75 * AMN TER1/TER2 Asignación lógica Ejemplo3 M N P A0 N1 AN+1 Asignación carácter Ejemplo4 8<5 M .OR. (7 <= 12) 7>6 MAYUS MINUS SIGNO ‘A’ ‘a’ ‘;’ Conversión de tipo: en las asignaciones no se pueden asignar valores a una variable de un tipo diferente del suyo. Se presentará un error si se trata de asignar valores de tipo carácter a una variable numérica o un valor numérico a una variable tipo carácter por ejemplo. Página 24 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Entrada y Salida de información Basándonos en el modelo computacional presentado anteriormente, necesitamos mecanismos (acciones) que nos permitan ingresar los datos a la computadora y otros para mostrar los resultados. Para ello existen dos acciones que denominaremos Leer y Escribir que describiremos a continuación. Acción Leer El objetivo de una acción Leer es cambiar el valor almacenado en una variable a través de periféricos de entrada (supongamos teclado), se puede pensar también como una asignación externa. Sintaxis: Leer (lista de variables) La lista de variables es separada por comas. Ejemplos: Leer (A) Detecta un valor introducido a través del periférico habilitado y posteriormente asigna dicho valor a la variable de nombre A Leer (Num1, Num2) Si desde teclado se ingresan dos números, el primer número se almacena en la variable Num1, y el segundo en la variable Num2. Página 25 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Acción Escribir El objetivo de una acción Escribir es mostrar los resultados o textos a través de periféricos de salida (supongamos monitor) Sintaxis: Escribir (“letrero o cartel opcional”,lista de expresiones de salida) Ejemplos: Escribir ( Num1) Muestra el valor de una variable , en este caso de Num1 Escribir ( “Buen día”) Muestra el texto encerrado entre comillas Escribir ( “El resultado es “, Num2) Muestra el texto y el valor de la variable Num2 Escribir (Num1 * Num2 / 34 ) Muestra el resultado de la expresión Página 26 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Estructura de un algoritmo Los algoritmos tienen dos partes bien definidas: la Parte declarativa, donde se describen los datos que se van a utilizar en el procedimiento de resolución y la Parte de procesos, donde se describen las acciones del algoritmo en sí (la lógica de resolución). Página 27 de 28 Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Estructura de un algoritmo Las palabras que están en negrita son palabras reservadas del lenguaje. Las secciones Algoritmo < nombre>, Inicio, < Proceso > y Fin deben estar presentes en todo algoritmo, no así las secciones constante, tipo, variables y <Subalgoritmos> que dependerán de la resolución. Página 28 de 28