conceptos bassicoas de informatica
TRANSCRIPT
-
8/13/2019 Conceptos Bassicoas de Informatica
1/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 1 de 16
TEMA 2. CONCEPTOS BSICOS DE ALGORTMICA
2.1 Definicin de Algoritmo
Unalgoritmoes una secuencia precisa de operaciones (pasos)queresuelven 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 ningunaambigedad .c) Todos sus pasos deben ser simplesy tener un ordendefinido.
d) Debe funcionarsean cuales sean los datos de entrada.
e) Debe ser eficiente y rpido Hay que Optimizar Para unproblema existen mltiples soluciones, y debemos escoger aquella
que consuma menos tiempo y recursos.
f) Es independientede la mquinay del lenguaje de programacin
que se vaya a utilizar. Un algoritmo puede implementarse(escribirse) en cualquier lenguaje de programacin.
-
8/13/2019 Conceptos Bassicoas de Informatica
2/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 2 de 16
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 trassu compilacin y linkado y que controla el funcionamiento de un
ordenador a la hora de resolver un problema.
ALGORITMO
+ PROGRAMA
LENGUAJE DE PROGRAMACIN
2.2.1 Cmo se construye un programa.
El proceso de elaboracin de un programa, conlleva varias etapas:
Anlisis
DiseoCodificacin
PruebasDocumentacin 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 ellenguaje de programacin ms adecuadoObtencin del Programa
Fase de Pruebas: No basta que el programa est terminado Hayque 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 actualizacionesoportunas que se vayan necesitando.
-
8/13/2019 Conceptos Bassicoas de Informatica
3/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 3 de 16
TODAS ESTAS FASES HAY QUE REALIZARLAS CON SUMOCUIDADO, 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 describ ir 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)
-
8/13/2019 Conceptos Bassicoas de Informatica
4/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 4 de 16
l
Si
SiNo
Escribe PAR
N=2
N=1
Escribe Impar
No
N = N - 2
DFD para indicar si un nmero es Par o Impar.
-
8/13/2019 Conceptos Bassicoas de Informatica
5/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 5 de 16
2.3.2 El pseudocdigo
El pseudocdigo es la representacin narrativa (no hay reglas
sintcticas estrictas) de un algoritmo, escrita en lenguaje naturalutilizando 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.
-
8/13/2019 Conceptos Bassicoas de Informatica
6/16
-
8/13/2019 Conceptos Bassicoas de Informatica
7/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 7 de 16
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);
Otra forma de resolverlo es usando el operador yen 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 ypractica < 5)
media = 0.4 * teoria + 0.6 * practica;
si no
inicio
si (practica >= 5 yteoria < 5)
media = 0.6 * teoria + 0.4 * practica;
si no
media = (teoria + practica) / 2;
fin
escribir("La media es ", media);
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;
fin
fin
si no
inicio
si (practica >= 5)
media = 0.6 * teoria + 0.4 * practica;
fin
escribir("La media es ", media);
-
8/13/2019 Conceptos Bassicoas de Informatica
8/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 8 de 16
Adems del operador ytambin existe el operador oel cual permiteejecutar una accin determinada si se verifica una de las condiciones.
Leer (edad);
si (edad < 16 oedad >= 65)
escribir("No puedes trabajar");
si no
escribir("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 nossaltamos 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);
Leer (edad);
si (edad >= 16 yedad < 65)
escribir("Puedes trabajar");
si no
escribir("No Puedes trabajar");
-
8/13/2019 Conceptos Bassicoas de Informatica
9/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 9 de 16
Ej: algoritmo que lee por teclado unos nmeros (hasta queintroduzcamos 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 repetirsuma = 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");
-
8/13/2019 Conceptos Bassicoas de Informatica
10/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 10 de 16
Estructura para
Permite realizar una accin un nmero determinado de veces.
El formato de esta estructura es el siguiente:
paravariable deinicio afin
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;
paran de1 a20
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);
-
8/13/2019 Conceptos Bassicoas de Informatica
11/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 11 de 16
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
-
8/13/2019 Conceptos Bassicoas de Informatica
12/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 12 de 16
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;
c = 1;
impar = 1;
leer (n);
mientras(c
-
8/13/2019 Conceptos Bassicoas de Informatica
13/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 13 de 16
EJEMPLOS
Pseudocdigo
leer(N);
X = 2;
mientras (mod(N / X) 0 yX
-
8/13/2019 Conceptos Bassicoas de Informatica
14/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 14 de 16
2.4 Traduccin de ideas a un lenguaje de programacin concreto:
El problema de la implementacin
Para que un ordenador pueda interpretarun 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 derealizacin 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 informacincon un medio externo
- Operaciones Aritmtico-Lgicas: Ejecutan operacionesaritmticas (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 funcinde si se cumple o no una determinada condicin.
- Ciclos (Bucles): Indican la repeticin de un segmento deprograma. El ciclo puede ser:
- Repetitivo: el segmento se repite un nmero fijo de veces,
-
Condicional: el segmento se repite mientras (while) se cumplauna condicin o hasta que (do while) deje de cumplirse.
2.4.2 Procedimientos o subrutina
Es un fragmentode 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. Suuso evita la duplicacin de cdigo.
-
8/13/2019 Conceptos Bassicoas de Informatica
15/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 15 de 16
2.5 Lenguajes de programacin. Clasificacin. Colocacin en laclasificacin 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 lenguajemquina 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.
-
8/13/2019 Conceptos Bassicoas de Informatica
16/16
Ingeniera Tcnica Industrial
Fundamentos de Informtica
Tema 2. Conceptos bsicos de algortmica
Pgina 16 de 16
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 dealto 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.