conceptos bassicoas de informatica

Upload: joey-mijail

Post on 04-Jun-2018

212 views

Category:

Documents


0 download

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.