Está en la página 1de 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

PROGRAMA

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

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)

Antes de hallar la raz cuadrada hay


que ver que la media no es negativa:

inicio
raiz = RaizCuadrada (media);
escribir (raiz);
fin
si no
escribir ("No se puede hallar la raiz cuadrada");

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);

Otra posible solucin sera:

si (teoria >= 5)

Leer (teoria); Leer (practica);

inicio

media = (teoria + practica) / 2;

si (practica < 5)
media = 0.4 * teoria + 0.6 * practica;

si (teoria >= 5)
inicio

si no

si (practica < 5)

media = (teoria + practica) / 2;

inicio

fin

media = 0.4 * teoria + 0.6 * practica;

si no

fin

inicio

fin

si (practica >= 5)
media = 0.6 * teoria + 0.4 * practica;

si no
inicio

si no

si (practica >= 5)

media = (teoria + practica) / 2;

media = 0.6 * teoria + 0.4 * practica;

fin

fin

escribir("La media es ", media);

escribir("La media es ", media);

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);

Leer (edad);

si (edad < 16 o edad >= 65)

si (edad >= 16 y edad < 65)

escribir("No puedes trabajar");


si no
escribir("Puedes trabajar");

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;

escribir("Dame un n no negativo");

leer (numero);

mientras (numero >= 0)


inicio
suma = suma + numero;
n = n + 1;
escribir("Dame un n no negativo");

leer (numero);

fin
si (n > 0)
inicio
media = suma / n;
escribir("La media es ", media);
fin
si no
escribir ("La media es 0");

Ej: Algoritmo anterior usando el repetir


suma = 0; n = 0;
repetir
inicio
escribir("Dame un n no negativo");

leer (numero);

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");

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);

Este bucle nunca finaliza ya que


olvidamos incrementar la variable n.

suma = suma + numero;


fin
mientras (n <= 20);
media = suma / (n-1);

suma = 0;
n = 1;
repetir
inicio
leer (numero);
suma = suma + numero;

En este caso, la n siempre es menor de


20, ya que la decrementamos en vez
de incrementarla.

n = n - 1;
fin
mientras (n <= 20);
media = suma / (n-1);

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

suma = suma + impar;


impar = impar + 2;
c = c + 1;

inicio

suma = suma + impar;


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

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

También podría gustarte