You are on page 1of 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2.

Conceptos bsicos de algortmica

TEMA 2. CONCEPTOS BSICOS DE ALGORTMICA

2.1 Definicin de Algoritmo


Un algoritmo es una secuencia precisa de operaciones (pasos) que resuelven un problema en un tiempo finito.

Solucin(problema) ALGORITMO(Solucin(problema))
Pasos para la resolucin de un problema:

Los algoritmos son independientes del lenguaje de programacin y del ordenador que los ejecuta. Se pueden expresar en multitud de lenguajes y ejecutarse en ordenadores distintos.

2.1.1 Propiedades de los algoritmos


a) Siempre debe terminar. b) Debe contener instrucciones concretas, sin ninguna ambigedad. c) Todos sus pasos deben ser simples y tener un orden definido. d) Debe funcionar sean cuales sean los datos de entrada. e) Debe ser eficiente y rpido Hay que Optimizar Para un problema existen mltiples soluciones, y debemos escoger aquella que consuma menos tiempo y recursos. f) Es independiente de la mquina y del lenguaje de programacin que se vaya a utilizar. Un algoritmo puede implementarse (escribirse) en cualquier lenguaje de programacin.
Pgina 1 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

2.2 Qu es un programa?
Un programa es la expresin (transcripcin) de un algoritmo en un lenguaje de programacin, capaz de ser procesado por un ordenador tras su compilacin y linkado y que controla el funcionamiento de un ordenador a la hora de resolver un problema. ALGORITMO + LENGUAJE DE PROGRAMACIN 2.2.1 Cmo se construye un programa. El proceso de elaboracin de un programa, conlleva varias etapas:
Anlisis Diseo Codificacin Pruebas
Documentacin y Mantenimiento

PROGRAMA

Fase de Anlisis: decidir qu es lo que tenemos que hacer. Fase de Diseo (desarrollo de la solucin): se define cmo vamos a hacerlo. Obtencin del Algoritmo Se utilizar el Diseo Descendente o TOP-DOWN: Un problema complejo se resuelve dividiendo el problema en subproblemas, y as sucesivamente hasta que la resolucin de cada subproblema sea fcilmente programable. Fase de Codificacin: Implementacin del Algoritmo en el lenguaje de programacin ms adecuado Obtencin del Programa Fase de Pruebas: No basta que el programa est terminado Hay que comprobar que el programa NO falla y funciona perfectamente en todos los casos posibles que se puedan presentar. Fase de Documentacin y Mantenimiento: Se elabora la documentacin del programa, y se realizan las actualizaciones oportunas que se vayan necesitando.
Pgina 2 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

TODAS ESTAS FASES HAY QUE REALIZARLAS CON SUMO CUIDADO, PUESTO QUE UN ERROR EN UNA DE ELLAS, PUEDE CONLLEVAR LA VUELTA ATRS EN TODO EL PROCESO.

Resumen: Proceso de creacin de un programa


Planteamiento del problema a resolver. Antes de nada debemos conocer perfectamente el problema y los resultados a obtener. Representacin de los datos. Escoger los tipos de datos a usar. Diseo de un algoritmo. Comprobacin y optimizacin de algoritmos. Debemos asegurarnos que el algoritmo realiza la tarea correctamente. Codificacin del programa. Debemos transcribir el algoritmo a un lenguaje de programacin concreto para que pueda ser utilizado. Depuracin del programa. El programa debe estar libre de errores. Documentacin del programa.

2.3 Definicin y uso de herramientas para describir soluciones


Para representar los algoritmos existen dos mtodos principales: El pseudocdigo El diagrama de flujo. Mientras que el pseudocdigo permite enunciar el algoritmo, los diagramas de flujo (organigramas) permiten visualizarlo de forma grfica. 2.3.1 Diagramas de flujo (organigrama) Es una representacin grfica de un algoritmo mediante una serie de smbolos, que contienen en su interior los pasos del algoritmo, y unas flechas que los unen indicando la secuencia (orden) en la que se deben ejecutar. Los smbolos representan acciones y las flechas el flujo del algoritmo. La descripcin de las funciones se puede realizar de forma narrativa, usando un lenguaje natural (conviene que sea parecido al pseudocdigo)
Pgina 3 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

No

Si

N=2

No

Si

Escribe PAR

N=1

N=N-2

Escribe Impar

DFD para indicar si un nmero es Par o Impar.

Pgina 4 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

2.3.2 El pseudocdigo El pseudocdigo es la representacin narrativa (no hay reglas sintcticas estrictas) de un algoritmo, escrita en lenguaje natural utilizando las estructuras de control tpicas de algn Lenguaje de Programacin y algunos smbolos algebraicos. La utilizacin de pseudocdigo presenta las ventajas de ser ms compacto que un organigrama, ser ms fcil de escribir y ser ms fcil de transcribir a un lenguaje de programacin. Las estructuras de control deciden qu camino hay que seguir en funcin de una condicin. Son las siguientes: 1. Estructura secuencial: consiste en colocar una instruccin tras otra, de manera que se van ejecutando de arriba abajo. 2. Estructura selectiva o condicional (si, si no): permiten ejecutar un conjunto de instrucciones u otras en funcin de si se cumple o no una condicin 3. Estructura iterativa o de repeticin (mientras, repetir, para): permite repetir una instruccin o grupo de ellas un n fijo de veces o mientras (o hasta que) una condicin sea cierta. Estructura secuencial Pseudocdigo de un algoritmo que calcule la media de tres nmeros: Leer (n1); Leer (n2); Leer (n3); suma = n1 + n2 + n3; media = suma / 3; escribir (media); El orden en el que se realizan las operaciones es importante: no puede calcularse la media sin antes haber ledo los nmeros.

Pgina 5 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

Estructura selectiva o condicional El formato de esta estructura es el siguiente: si (se cumple la condicin) inicio conjunto de acciones; fin sino inicio conjunto de acciones; fin Es decir, primero se examina la condicin: si resulta verdadera, se ejecutan las acciones asociadas al si, en caso contrario se ejecutan las acciones asociadas al sino. La instruccin si no no es obligatoria en una estructura condicional (si no queremos hacer nada en caso que la condicin sea falsa).

Algoritmo que calcula la media de 3 n y devuelve su raz cuadrada. Leer (n1); Leer (n2); Leer (n3); suma = n1 + n2 + n3; media = suma / 3; si (media >= 0) inicio raiz = RaizCuadrada (media); escribir (raiz); fin si no escribir ("No se puede hallar la raiz cuadrada"); Antes de hallar la raz cuadrada hay que ver que la media no es negativa:

Pgina 6 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

La estructura condicional permite anidar unas instrucciones en otras. Supongamos que queremos calcular la nota media de la siguiente forma: Si teora >= 5 y practica < 5: media = 0.4 x teora + 0.6 x prctica Si practica >= 5 y teora < 5: media = 0.6 x teora + 0.4 x prctica En cualquier otro caso se calculara su media normalmente.
Leer (teoria); Leer (practica); si (teoria >= 5) inicio si (practica < 5) media = 0.4 * teoria + 0.6 * practica; si no media = (teoria + practica) / 2; fin si no inicio si (practica >= 5) media = 0.6 * teoria + 0.4 * practica; si no media = (teoria + practica) / 2; fin escribir("La media es ", media); fin escribir("La media es ", media); fin si no inicio si (practica >= 5) media = 0.6 * teoria + 0.4 * practica; fin Otra posible solucin sera: Leer (teoria); Leer (practica); media = (teoria + practica) / 2; si (teoria >= 5) inicio si (practica < 5) inicio media = 0.4 * teoria + 0.6 * practica;

Otra forma de resolverlo es usando el operador y en las condiciones. Este operador permite combinar dos condiciones de manera que solo ser verdad si ambas condiciones se cumplen:
Leer (teoria); Leer (practica); si (teoria >= 5 y practica < 5) media = 0.4 * teoria + 0.6 * practica; si no inicio si (practica >= 5 y teoria < 5) media = 0.6 * teoria + 0.4 * practica; si no media = (teoria + practica) / 2; fin escribir("La media es ", media);

Pgina 7 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

Adems del operador y tambin existe el operador o el cual permite ejecutar una accin determinada si se verifica una de las condiciones. Leer (edad); si (edad < 16 o edad >= 65) escribir("No puedes trabajar"); si no escribir("Puedes trabajar"); Leer (edad); si (edad >= 16 y edad < 65) escribir("Puedes trabajar"); si no escribir("No Puedes trabajar");

Es decir, solo trabajan los que tengan 16 o ms aos y menos de 65. Estructura iterativa o de repeticin. Esta estructura presenta una serie de variantes que permiten: Estructura mientras Esta estructura permite repetir un conjunto de instrucciones 0 o ms veces, ya que la condicin se verifica antes de entrar en el bucle. El formato de esta estructura es el siguiente: mientras (se cumpla la condicin) inicio conjunto de acciones; fin Es decir, primero se examina la condicin: si resulta falsa, se pasa directamente a la instruccin que haya tras el fin, de manera que nos saltamos todas las instrucciones que haya dentro del bucle. Estructura repetir mientras Esta estructura evala la condicin una vez realizada la accin. Por tanto, las instrucciones que estn dentro se ejecutan al menos una vez. El formato de esta estructura es el siguiente: repetir inicio conjunto de acciones; fin mientras (se cumpla la condicin);
Pgina 8 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

Ej: algoritmo que lee por teclado unos nmeros (hasta que introduzcamos un nmero negativo) y calcula su media.
suma = 0; n = 0; leer (numero); escribir("Dame un n no negativo"); mientras (numero >= 0) inicio suma = suma + numero; n = n + 1; escribir("Dame un n no negativo"); fin si (n > 0) inicio media = suma / n; escribir("La media es ", media); fin si no escribir ("La media es 0"); leer (numero);

Ej: Algoritmo anterior usando el repetir


suma = 0; n = 0; repetir inicio escribir("Dame un n no negativo"); si (numero >= 0) inicio suma = suma + numero; n = n + 1; fin fin mientras (numero >= 0); si (n > 0) inicio media = suma / n; escribir("La media es ", media); fin si no escribir("La media es 0"); leer (numero);

Pgina 9 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

Estructura para Permite realizar una accin un nmero determinado de veces. El formato de esta estructura es el siguiente: para variable de inicio a fin inicio conjunto de acciones; fin En cada iteracin del bucle variable va tomando distintos valores comprendidos entre inicio y fin. En la primera iteracin toma el valor inicio, en la segunda inicio+1, y as sucesivamente hasta el valor fin. Ej: Algoritmo que pide 20 nmeros por teclado y calcula su media.
suma = 0; para n de 1 a 20 inicio escribir("Introduzca n", n); leer (numero); suma = suma + numero; fin media = suma / (n-1); escribir("La media es ", media);

Restamos 1 a n ya que se sale del bucle para cuando la variable n sobrepasa el valor 20. La estructura para puede sustituirse por mientras o por repetir:
suma = 0; n = 0; mientras (n < 20) inicio escribir("Introduzca n", n+1); leer (numero); suma = suma + numero; n = n + 1; fin media = suma / n; escribir(" La media es ", media);

Pgina 10 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

Cual de las tres variantes usar ante un determinado problema?:


si (el bucle tiene que ejecutarse un numero fijo de veces) Utilizar la estructura para; si no inicio si (el bucle debe ejecutarse como mnimo una vez) Utilizar la estructura repetir...mientras; si no Utilizar la estructura mientras; fin

Un error muy comn con las estructuras de repeticin consiste en poner mal la condicin de finalizacin u olvidarse de incrementar el contador, dando lugar a bucles infinitos (bucles que no acaban nunca).
suma = 0; n = 1; repetir inicio leer (numero); suma = suma + numero; fin mientras (n <= 20); media = suma / (n-1);

Este bucle nunca finaliza ya que olvidamos incrementar la variable n.

suma = 0; n = 1; repetir inicio leer (numero); suma = suma + numero; n = n - 1; fin mientras (n <= 20); media = suma / (n-1);

En este caso, la n siempre es menor de 20, ya que la decrementamos en vez de incrementarla.

Pgina 11 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

Ej: Calcular la media de una serie de n positivos dados por teclado. Un valor de 0, como entrada, indicar el final de la serie de nmeros. Pseudocdigo contador = 0; suma = 0; leer(numero);
mientras (numero <> 0) inicio

suma = suma + numero; contador = contador + 1; leer(numero);


fin si (contador <> 0)

media = suma / contador;


sino

media = 0; escribir(media);

Ej: Calcular la suma de los N primeros nmeros impares, siendo N un n dado por teclado. suma= 0; suma = 0; impar = 1; c = 1; leer (n); impar = 1; para c de 1 a n leer (n); mientras (c <= n)
inicio inicio

suma = suma + impar; impar = impar + 2; fin escribir(suma);

suma = suma + impar; impar = impar + 2; c = c + 1; fin escribir (suma);

Pgina 12 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

EJEMPLOS

Pseudocdigo leer(N); X = 2;
mientras (mod(N / X)<> 0 y X<N) inicio

X = X + 1;
fin si (X < N)

escribir( N no es primo);
sino

escribir(N es primo);

Pseudocdigo SUMA = 0; N = 2;
mientras (N < = 1000) inicio

SUMA = SUMA + N; N = N + 2;
fin

escribir(SUMA);

Pgina 13 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

2.4 Traduccin de ideas a un lenguaje de programacin concreto: El problema de la implementacin


Para que un ordenador pueda interpretar un algoritmo, ste debe ser expresado en forma de un programa que estar escrito en un determinado lenguaje de programacin, lo cual requiere que conozcamos el juego o repertorio de instrucciones del lenguaje. 2.4.1 Acciones y Estructuras de control usadas en los algoritmos Las acciones marcan el juego de operaciones que se pueden realizar, mientras que las estructuras de control determinan el orden de realizacin de las mismas. ACCIONES: - Asignaciones: consiste en la evaluacin de una expresin y en el almacenamiento de su valor en una variable - E/S: se utilizan para que el programa intercambie informacin con un medio externo - Operaciones Aritmtico-Lgicas: Ejecutan operaciones aritmticas (suma, divisin, potenciacin) y lgicas (and, or, not) ESTRUCTURAS DE CONTROL: - Decisiones: son acciones de control de flujo. Permiten modificar el orden en que se realizan otras acciones en funcin de si se cumple o no una determinada condicin. - Ciclos (Bucles): Indican la repeticin de un segmento de programa. El ciclo puede ser: - Repetitivo: el segmento se repite un nmero fijo de veces, - Condicional: el segmento se repite mientras (while) se cumpla una condicin o hasta que (do while) deje de cumplirse. 2.4.2 Procedimientos o subrutina Es un fragmento de un programa que realiza una tarea concreta y que tiene un nombre por el que puede ser llamado desde cualquier parte del programa. Se comunica con el programa que los llama a travs de unas variables de comunicacin denominadas argumentos, que permiten el paso de informacin entre el programa y el procedimiento. Su uso evita la duplicacin de cdigo.
Pgina 14 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

2.5 Lenguajes de programacin. Clasificacin. Colocacin en la clasificacin del lenguaje C, C++


Un programa es un conjunto de instrucciones que se dan al ordenador indicndoles las operaciones o tareas a realizar. Estas instrucciones se dan en un determinado lenguaje de programacin, el cual tiene una determinada sintaxis (palabras clave, smbolos) y debe redactarse cumpliendo una determinada gramtica (reglas). LENGUAJE DE PROGRAMACIN herramienta que nos permite transformar un algoritmo en un programa. Consta de: Un lxico. Una gramtica. Una semntica. Los circuitos electrnicos de la UC slo pueden interpretar instrucciones escritas en lenguaje mquina, por lo que los programas escritos en Lenguajes de alto nivel hay que traducirlos a lenguaje mquina para que el procesador los pueda procesar. Para realizar esta tarea existen unos programas llamados traductores que realizan esta labor (le damos un programa escrito en un lenguaje de alto nivel y genera un programa equivalente escrito en lenguaje mquina). Existen dos tipos de traductores: compiladores e intrpretes. Compiladores: traducen el programa inicial (programa fuente) y generan un programa (programa objeto). Intrpretes: van analizando, traduciendo y ejecutando una a una las instrucciones del programa fuente; no se analiza una instruccin hasta que la anterior se haya ejecutado. Los intrpretes no generan programa objeto.

Pgina 15 de 16

Ingeniera Tcnica Industrial Fundamentos de Informtica Tema 2. Conceptos bsicos de algortmica

2.5.1 Clasificacin de los lenguajes de programacin Los lenguajes de programacin los podemos clasificar en tres grupos: lenguaje mquina (prcticamente no utilizado). Son directamente inteligibles por el ordenador, ya que sus instrucciones son cadenas binarias. Dificultad de codificacin, poca fiabilidad, dificultad grande de verificar y poner a punto, slo ejecutable en el procesador especfico. lenguaje de bajo nivel (ensamblador). Dependen de la mquina en particular y difcil de programar. Son ms fciles de codificar que en lenguaje mquina. Dependen de la mquina particular donde se ejecutan. Son ms difciles de programar que los lenguajes de alto nivel. lenguajes de alto nivel. Son independientes de la mquina, no dependen del diseo del hardware, son muy portables. Ms fciles de programar y entender. La sintaxis usada est ms cerca del lenguaje humano que de la mquina. Inconvenientes: Tiempo de ejecucin mayor y no se aprovechan los recursos internos de la mquina eficientemente. Existen muchos lenguajes de programacin de alto nivel (C/C++, COBOL, Visual Basic, Java, Modula-2, LISP, etc.)

2.5.2 El Lenguaje C. - Es un lenguaje de nivel medio: combina elementos de lenguajes de alto nivel con la funcionalidad del ensamblador. - Permite hacer cosas que otros lenguajes de alto nivel no pueden hacer (manipulacin de bits, bytes, direcciones) y es tan fcil de usar como cualquier otro lenguaje de alto nivel. - Es particularmente adecuado para la programacin de sistemas. - Es muy portable, es decir, es posible adaptar el software escrito para un tipo de ordenador en otro.

Pgina 16 de 16