ALGORITMOS
Fundamentos de Informática Prof: Marlene DL UNA- I ciclo 2012
QUE ES UN ALGORITMO “Es
un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema”. (Ávila, 2008) Una receta para hacer un proceso. “Cuando se desarrolla un algoritmo se da solución a un problema determinado”. (Oviedo, 2004).
2
PROPIEDADES DE UN ALGORITMO Preciso:
cada paso tiene un orden. Finito: tiene un determinado numero de pasos, debe tener un fin. Definido: Al ejecutar el algoritmo más de una vez llegaremos al mismo resultado.
3
ALGORITMOS “El
objetivo es tomar un problema, descomponerlo en partes más simples e imaginar una secuencia de pasos mediante la cual una máquina pueda generar una solución, y para ello se requiere tanto analizar el problema como sintetizar una solución”. (Ávila, 2008) Los algoritmos deben ser traducidos a un lenguaje de programación para ser interpretados por la computadora.
4
FASES PARA LA RESOLUCIÓN DE PROBLEMAS Según Ávila (2008) destaca 3 fases importantes: 1. Análisis del problema: requiere que el problema sea definido y comprendido para que pueda ser analizado con detalle. El análisis debe responder dos preguntas: ¿Qué información debe proporcionar la resolución del problema? ¿Que datos se necesitan para resolver el problema? 5
2.
Diseño o desarrollo del algoritmo: procedimiento paso a paso para solucionar el problema dado. 3. Resolución del algoritmo en el computador: Se necesita codificar el algoritmo en un lenguaje de programación, y comprobar que el programa soluciona el problema. 6
NOTACIONES PARA DESCRIBIR ALGORITMOS 1. Método informal: utiliza el lenguaje natural, con el inconveniente de que puede resultar impreciso o ambiguo. 2. Métodos formales: Pseudocódigo: Lenguaje natural limitado y sin ambigüedad. Diagramas de flujo u organigramas: utiliza un conjunto de símbolos para representar cada estructura de control y líneas que indican el orden en que se realiza el algoritmo. (Ávila, 2008)
7
SECCIONES DEL ALGORITMO
Según Cairo (2006) existen 3 secciones o módulos de un algoritmo:
8
DISEÑANDO UN BUEN ALGORITMO Ávila (2008) presenta las siguientes recomendaciones: Clarificar el problema: Entender el problema, enunciar de manera clara y precisa. Planificar la interfaz con el usuario: la forma como el programa ha de interactuar con el usuario; planificar las entradas/salidas, para formar una imagen mental de los pasos requeridos.
9
Dividir
el problema y entonces vencerlo: Las tareas complejas, se deben descomponer en subtareas que sean sencillas para programarlas con facilidad. Diseño descendente: Se tratan primero las tareas principales, y se dividen en tareas más pequeñas. Esquema jerárquico.
10
Emplear diagramas: para tener imágenes mentales de como funcionan los algoritmos y se manipulan los datos. Aprovechar el trabajo anterior: muchos algoritmos tienen partes en común. Se pueden armar programas conectando entre sí partes que ya se hayan construido. 11
Estructurar
los datos: Generalmente habrá más de un algoritmo para resolver un problema. la naturaleza del algoritmo determina la forma de organizar los datos. No contentarse con la primera idea: Una vez logrado, que un algoritmo funcione, tener presente que casi siempre existe un mejor algoritmo. 12
¿QUÉ ES UN PROGRAMA DE COMPUTADORA? Ávila (2008) se refiere a un programa de computadora como: Es el algoritmo que le dice a la computadora los pasos para llevar acabo una tarea. El orden es fundamental. El orden más básico es de arriba hacia abajo, (una instrucción tras otra). Pero un algoritmo puede variar en su flujo u orden dependiendo de los valores de inicio o que entran durante su ejecución. Figura: Programa de computadora Fuente: Oviedo, 2004.
13
SINTAXIS “La
sintaxis, estudia las formas en que se combinan las palabras. En un lenguaje de programación, las expresiones se deben construir respetando una serie de reglas sintácticas. “ (Ávila, 2008) Existen programas que revisan la estructura sintáctica de los programas que los usuarios, escriben, ayudando a la corrección de errores.
14
SEMÁNTICA “Se
refiere a los aspectos del significado la interpretación de un determinado símbolo, lenguaje o representación formal”. (Ávila, 2008) Un programa puede no presentar errores sintácticos, pero si semánticos( no hace lo que el programa debe hacer).
15
DEPURACIÓN DE PROGRAMAS Es
el proceso de identificar y eliminar errores de un programa. Examinar el código que se escribió y buscar el error para corregirlo.
16
IDENTIFICADORES Representan
los datos de un programa (constantes, variables, …). Identifican un elemento/objeto de forma única.
17
RESTRICCIONES DE LOS IDENTIFICADORES El primer carácter debe ser una letra 2. No puede haber espacio dentro de un identificador. 3. Pueden tener cualquier longitud dentro del límite que imponga el compilador 4. Las palabras reservadas (if, while, for, do, else, etc) del lenguaje no pueden utilizarse como identificadores. 5. Algunos lenguajes no distinguen entre caracteres en mayúsculas y minúsculas. 6. Los caracteres: * , : /. no son válidos (Ávila, 2008) 1.
18
VARIABLE “Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar durante la ejecución del programa”. (Ávila, 2008). Toda variable se debe declarar. La declaración consiste en asignarle nombre (identificador) y tipo a cada variable. “El tipo de variable le dice al computador como puede representar los datos, y de qué tamaño es el espacio en memoria que debe reservar para la variable”. (Ávila, 2008).
19
ALGUNOS TIPOS DE DATOS Datos numéricos: (int, float): Permiten almacenar valores numéricos, (números enteros y reales). Este tipo permiten realizar operaciones aritméticas. Datos Lógicos (bool): Solo pueden tener dos valores (cierto o falso). Datos Alfanuméricos (String): Permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc.
20
Entero (int): almacena números enteros. Real (float): almacena números con decimales. Cadena (string): almacena más de un carácter, una secuencia de caracteres. Carácter (char): almacena un carácter. 1. Letras mayúsculas y minúsculas 2. Símbolos especiales como . , ; / & # ? + [ ) 3. Dígitos decimales como símbolo y no como valor, etc. Booleanos (bool): almacena valores lógicos, Verdadero (True) o False (False).
21
SINTAXIS PARA LA DECLARACIÓN DE VARIABLES < tipo de dato > < lista de identificadores de variables >; Ejemplo:
float salario; int edad; int numero1, numero2; string nombreCiudad; bool respuesta;
22
CLASIFICACIÓN DE LAS VARIABLES
Por
Variables numéricas. Variables Lógicas. Variables Alfanuméricas
Por
su contenido
su uso
Variables de Trabajo: reciben el resultado de una operación matemática. Ejemplo: Suma = a + b/c; 23
Contadores: Cuenta el numero de veces en que se realiza una operación o se cumple una condición. Con incrementos generalmente de uno en uno. Ejemplo: a=a+1;
Acumuladores: Sirve para acumular una serie de valores que se van leyendo o calculando progresivamente. Ejemplo: total=total+precio;
24
ASIGNANDO DATOS A UNA VARIABLE La operación de asignación: Se utiliza para almacenar en una variable, el resultado de una expresión o una constante. Ejemplo: numero1= 12; total = numero1+ 10; cuidad= "Liberia "; 1.
25
2.
Operación de lectura: Indica al computador que debe detener la ejecución del programa y esperar a que se digite un dato.
Leer (nombreVariable) Leer(cuidad) Leer(numero1)
26
2.
Operación de escritura: consiste en enviar un resultado o mensaje por un dispositivo de salida
Escribir(" El resultado es: ", total) total es una variable que contiene un valor.
27
ASIGNACIONES (OPERACIONES DE ASIGNACIÓN)
Simples: asigna un valor constante a una variable.
Contador: Verifica el numero de veces que se realiza un proceso.
a = a + 1;
Acumulador: sumador en un proceso.
a = 15;
a = a + b;
De trabajo: recibe el resultado de una operación matemática que involucre muchas variables.
a = c + b * 2/4; 28
OPERADORES DE ASIGNACIÓN COMPUESTOS:
+ =,− =, =, / =, a
= a + 10; a+= 10; Operadores de incremento (++) y decremento (−−)
a= a+ 1;
a+ = 1;
a+ +;
Otros
operadores de asignación compuestos c = b++; Se asigna a c el valor de b y luego se incrementa b c = ++b; Se incrementa el valor de b y luego se asigna a c
29
EJEMPLO
Ejemplo 1
a = 3; b = (a++) * 5;
Solución b = 3 *5 = 15 a = a+ 1 = 4
Ejemplo 2 a = 3; b = (++a)* 5;
solución a = a+ 1 = 4 b = 4 *5 = 20
30
PRIORIDAD DE LOS OPERADORES
31
CONSTANTES Es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. (Ávila, 2008) Se inicializan las constantes al principio del algoritmo. Ejemplos
PI=3.14; saludo= " Bienvenidos al curso EIF200 "; maximo=500;
32
PALABRAS RESERVADAS(KEY WORDS O RESERVED WORDS) Son
identificadores que tienen un uso especial en los lenguajes de programación. El programador no puede darle un uso diferente al que el lenguaje les confiere. (Ávila, 2008). Por ejemplo:
int: indica al compilador que la variable es tipo entero. string permite “informar” que la variable almacenará cadenas de caracteres. 33
COMENTARIOS Es texto que se incluye en el código fuente con el objetivo de facilitar su legibilidad. Son ignorados por el compilador. (Ávila, 2008) Facilitan el entendimiento de los programas, más aun con el paso del tiempo, A esto se le llama comentar o documentar un programa. Ejemplo
// char solo permite almacenar un numero, letra o símbolo /* Así se escriben los comentarios que ocupen varias líneas */ 34
EXPRESIONES Y OPERADORES
Expresiones: son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.
a + (b+ 3)/c
“Grupo de Operadores que proporcionan un único resultado” (Oviedo, 2004). Una expresión consta de operadores y operandos. Las expresiones se clasifican en:
1. Aritméticas 2. Relacionales 3. Lógicas
35
Operadores: Son elementos que permiten manipular valores. Operadores Aritméticos: permiten realizar operaciones matemáticas con los valores (variables y constantes). Se utilizan con los tipos de datos int o float.
36
PRIORIDAD DE LOS OPERADORES ARITMÉTICOS: 1ro todas las expresiones entre paréntesis. Las expresiones con paréntesis anidados se evalúan de adentro hacia fuera. Dentro de una misma expresión los operadores se evalúan en el siguiente orden.
1. 2. 3.
^: Exponenciación * , /, mod: Multiplicación, división, modulo. +, − : Suma y resta.
Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha. 37
Los operadores relacionales: comparan valores del mismo tipo (numéricos o alfanuméricos) y produce un resultado de certeza o falsedad (verdadero o falso). Tienen el mismo nivel de prioridad en su evaluación pero menor prioridad que los aritméticos.
38
Operadores lógicos: se utilizan para establecer relaciones entre valores lógicos.
Prioridad de los operadores lógicos Not And Or
39
Prioridad de los operadores en general
40
Operador Not Operando Resultado T F
F T
Operador And Operando1 Operador T AND T F F
Operando2 T F T F
Resultado T F F F 41
Operador Or Operando1 Operador T Or T F F
Operando2 T F T F
Resultado T T T F
42
EJEMPLOS:
Sea: a = 10 b = 12 c = 13 d =10 ((a > b) or (a < c)) and ((a = c) or (a >= b)) ((a >= b) or (a < d)) and ((a >= d) and (c > d)) not (a == c) and (c > b)
solución
43
EJERCICIO
Suponga que I y J son variables enteras cuyos valores son 6 y 12 respectivamente. ¿Cuáles de las siguientes condiciones son verdaderas? 1. 2.
3. 4. 5. 6.
2* I 0) AND (I 25) OR((I < 50) AND (J < 50)) (I < 4) OR (J > 5) NOT (I > 6)
44
REFERENCIAS Ávila J. (2008). Crestomatía de temas para EIF200 Fundamentos de Informática. Cairo, O. (2006). Fundamentos de Programación. Mexico: Prentice Hall Oviedo E. (2004). Lógica de programación. (2ª ed). Bogotá: Ecoe ediciones.
45