SlideShare una empresa de Scribd logo
1 de 109
Descargar para leer sin conexión
Algoritmos
      y
Programación
Introducción
   El objetivo de estas sesiónes
    consistirá en explicar los
    conceptos     de     algoritmo,
    programa y lenguaje de
    programación.      Así   como
    explorar      otros      temas
    concurrentes.
Temática
   Sistemas     de    procesamiento de
    información.
   Concepto de Algoritmo.
   Lenguaje de programación.
   Datos, tipos de datos y operaciones
    primitivas.
   Constantes y variables.
   Expresiones.
   Funciones intrínsecas.
   Asignación.
   Entrada y salida de información.
1. Sistemas de
       procesamiento de la
           información
   Un sistema de esta clase se define
    como un conjunto de componentes
    interconectados     entre     sí  que
    transforman datos en información
    organizada, significativa y útil.
Esquemáticamente

         Datos



       Procesador



      Información
Una primera definición

       Un algoritmo consiste en el
        grupo de instrucciones que
        definen    la    secuencia   de
        operaciones a realizar para
        resolver un sistema específico o
        clase de problema.
Conceptos importantes

   Hardware: grupo de
    componentes físicos de una
    computadora.

   Software: conjunto de programas
    que controlan el funcionamiento
    de una computadora
2. Concepto de Algoritmo
      La     metodología  de    la
       programación es aquella que
       es necesaria para resolver
       problemas          mediante
       programas, su eje es el
       algoritmo.


                Diseño
Problema          del       Programa
               algoritmo
Pasos para la solución
de un problema
 El diseño del algoritmo describe
  el análisis del problema y
  desarrollo del algoritmo.
 Expresar el algoritmo como un
  programa en un lenguaje de
  programación.
 Ejecutar y validar el programa
  por la computadora.
Características         de      los
algoritmos
 Preciso, indicará el orden de cada
  paso.
 Definido, el mismo resultado se
  obtendrá al ejecutar el algoritmo
  “n” ocasiones.
 Finito, deberá terminar en algún
  momento.
Ejemplo 1 Genere un algoritmo
que solucione la entrega de un
pedido a un cliente

   Inicio.
   Leer el pedido.
   Examinar el historial crediticio del cliente
   Si el cliente es solvente, entregar el
    pedido. En caso contrario, rechazarlo.
   Fin
Ejemplo      2   Genere        un
    algoritmo   que     sume       los
    números entre el 3 y el 30.
    Inicio.
    Hacer SUMA igual cero.
    Establecer NUMERO igual a 3.
    Sumar NUMERO a SUMA.
    Incrementar NUMERO en 3
    Si NUMERO es menor o igual que 30 ir a
     4; si no imprimir a SUMA.
    Fin
Ejemplo 3 Genere un algoritmo que
determine al mayor de tres números
enteros.

   Inicio
   Leer los números y guardarlos en NUM1,
    NUM2 y NUM3 respectivamente
   Comparar NUM1 y NUM2, el número
    mayor se guarda en AUX.
   Comparar AUX y NUM3, imprimir el
    número mayor.
   Fin.
Tarea 1 Diseñe un algoritmo para
determinar si un número es primo o no.

Tarea 2 Genere un algoritmo que sume
los números entre el 2 y el 20.


Tarea 3 Genere un algoritmo que sume
los números entre el 5 y el 50.
3. Los lenguajes         de
    programación
 Cuando el procesador de datos es
  una computadora entonces el
  algoritmo de solución se expresa en
  un programa.
 Por tanto, un programa es escrito en
  un lenguaje de programación.
 Luego, la programación consiste en
  expresar las operaciones en forma
  de programa de un algoritmo.
Tipos de lenguajes
   Máquina; escritos en código binario.

   Bajo nivel (ensamblador); escrito en
    nemotécnicos.

   Alto nivel; diseñados para ser
    entendidos por el ser humano.
Instrucciones básicas
   Entrada/Salida; transferencia de información
    entre dispositivos periféricos y memoria central.

   Aritmético/Lógicas; ejecutan operaciones de
    éstos tipos.

   Selectivas; seleccionan tareas en función de los
    resultados

   Repetitivas; permiten la iteración de secuencias
    de instrucciones un número dado de veces
Traductores del Lenguaje

      A) Intérpretes; Toma un
       programa fuente lo traduce
       e inmediatamente lo ejecuta.

                               Traducción
Programa fuente   Intérprete   y ejecución
                                 en línea
Traductores            del      Lenguaje
(cont.)
    B) Compiladores; traduce un
     programa fuente a código objeto.
Programa           Programa          Programa
  fuente            Objeto           ejecutable


      Compilador              Montador
      (Compiler)              (Linker)
4. Datos, Tipos de Datos y
Operaciones Primitivas
 Un dato es la expresión general que
  describe los objetos con los cuales
  opera la computadora
 Los tipos son: simples (no
  estructurados) y compuestos
  (estructurados). Aquellos se
  subdividen en:
     Numericos (integer, real)
     Lógicos (booleans)
     Carácter (char, string)
Datos primitivos
                  Datos



Numérico         Carácter     Lógico




Entero          Real
5. Constantes y Variables

   Constantes: valores que
    durante la ejecución de un
    programa no cambian su valor.

   Variables: valores que
    cambiarán durante la
    ejecución del programa
6. Expresiones

 Se      definen      como        una
  combinación       de     constantes,
  variables, símbolos de operación,
  paréntesis,    y     nombres      de
  funciones especiales.
 Una     expresión      consta     de
  operandos y operadores.
 Las expresiones se clasifican en
  aritméticas, lógicas y carácter.
Expresiones aritméticas
Operador    Significado      Tipo de operandos   Tipo resultado
   **      Exponenciación       Entero o real     Entero o real

   +           Suma             Entero o real     Entero o real

   -           Resta            Entero o real     Entero o real

   *        Multiplicación      Entero o real     Entero o real

   /          División              Real              Real
  Div      División entera         Entero            Entero
  Mod          módulo              Entero            Entero
Reglas de prioridad
  Operador        Gráfo
  Parentesis       ( )
 Exponencial        **

 Multi, divide     *, /

  Div y mod      Div, mod

 Más y menos       +, -
Operadores de relación
Expresión 1    Operador de   Expresión 2
                relación

    Operador              Significado
       <                    Menor
       >                    Mayor
       =                     Igual
      <=                 Menor o igual
      >=                 Mayor o igual
     <>,!=                 Distinto
Operadores lógicos

Operador lógico   Expresión lógica   Significado
     Not               Not p         Negación
     And               PyQ           Conjunción
      Or               PoQ           disyunción
7. Funciones Intrínsecas
   Función       Descripción
    Abs(x)        Absoluto
   Arctan(x)   Tangente inversa
    Cos(x)         Coseno
    Exp(x)       Exponencial
     Ln(x)      Log neperiano
   Log10(x)      Log decimal
   Round(x)       Redondeo
    Sin(x)          Seno
    Sqr(x)        Cuadrado
    Sqrt(x)     Raíz cuadrada
   Trunc(x)     Truncamiento
8. Operación de Asignación

   Es la forma de darle valores
    tanto a variables como
    constantes, se representa
    con el símbolo
Tipos de asignación
     Aritmética

     Lógica

     Cadena de carácteres
Entrada y salida de
           información

   La operación de lectura READ
    permite el ingreso de los datos
    necesarios para los cálculos
    computacionales.

   La operación de escritura WRITE
    imprime       la      información
    procesada por el programa y su
    respectivo algoritmo.
PROBLEMAS RESUELTOS CON
   COMPUTADORAS Y
    HERRAMIENTAS DE
    PROGRAMACION



            15/10/2008    32
SOLUCION DE PROBLEMAS

   Fases de fragmentación:
    ◦ Análisis del problema: definición
      concisa a fin de que sea analizado
      en todo detalle.
    ◦ Diseño del algoritmo: procedimiento,
      paso a paso, para la solucionar el
      problema dado.
    ◦ Solución del algoritmo con la
      computadora:      codificación   del
      algoritmo en un lenguaje de
      programación

                     15/10/2008              33
ANALISIS DEL PROBLEMA

   El propósito es ayudar al programador
    a llegar a un cierto grado de
    comprensión de la naturaleza del
    problema.

   Una buena definición del problema,
    junto con una descripción detallada
    de entrada y salida, son los requisitos
    más importantes para una solución
    eficaz.


                       15/10/2008             34
ANALISIS DEL PROBLEMA cont.

  1.   Que información debe
       proporcionar la solución del
       problema.
                 Solución del
                  Problema


Análisis del     Diseño del     Solución por
 Problema        algoritmo      computadora
ANALISIS DEL PROBLEMA cont.

  2. Que datos se necesitan para
     resolver el problema.

                   Análisis del
                    Problema


Definicióndel   Especificaciones   Especificaciones
 Problema         de entrada          de salida
ANALISIS DEL PROBLEMA cont.

   Ejemplo: leer los lados de un
    triángulo rectángulo e imprima la
    hipotenusa.

    ◦ Entradas: valores de los lados (variable
      LADO1 y variable LADO2).
    ◦ Salida: valor de la hipotenusa (variable
      LADO3).
    ◦ Variables: LADO1, LADO2 y LADO3 (tipo
      reales).
DISEÑO DEL ALGORITMO
   La    información   proporcionada al
    algoritmo constituye su entrada y la
    información producida constituye su
    salida.

   Los problemas complejos se resuelven
    eficazmente si se fragmentan en
    subproblemas que sean más sencillos de
    solucionar que el original. Esta técnica es
    conocida como divide y vencerás
    (divide and conquer).
DISEÑO DEL ALGORITMO cont.

 La descomposición del problema
  original en subproblemas cuya
  solución puede implementarse a
  través de la computadora se le
  denomina diseño descendente (top
  down design)
 La descripción detallada de la
  solución mediante pasos específicos
  se le denomina refinamiento del
  algoritmo (stepwise refinement).
DISEÑO DEL ALGORITMO cont.


Tarea:
Investigar acerca de los diferentes
  tipos de algoritmos.
DISEÑO DEL ALGORITMO cont.


                Diseño del
                algoritmo


  Diseño      Refinamiento    Herramientas de
descendente    por pasos       programación
                             –diagramas de flujo
                             -pseudocódigo
DISEÑO DEL ALGORITMO cont.
   Ejemplo: Determine a los números
    menores que 90 y múltiplos de 9, así
    como su sumatoria.
Definicióndel    Especificaciones   Especificaciones
 Problema          de entrada          de salida


   Imprimir         TOTAL = 0        NUM, TOTAL
múltiplos de 9       NUM = 9
  y su suma        LIMITE = 90
  siempre y
 cuando sea
menor que 90
DISEÑO DEL ALGORITMO cont.

  Diseño          Refinamiento    Herramientas de
descendente        por pasos       programación

Múltiplos de 9   a) Num=9
                 b) Print num
                 c) Num <= 90
                    regresar a)
                 d) Num=+9

 Sumatoria       Total=+num
DISEÑO DEL ALGORITMO cont.

1.   Inicio
2.   Total=0, Num=9, Limite=90
3.   Print Num
4.   Total=Total+Num
5.   Si Num <= Limite entonces
     Num=Num+9 y regresar a 3
6.   Print Total
7.   Fin
tarea
1.   Determine si una palabra es un
     palíndromo.
2.   Determine el máximo común
     divisor para dos números enteros.
3.   Lea e imprima una serie de
     números distintos de cero. El
     algoritmo terminará con un valor
     que no se debe imprimir .
     Finalmente obtenga la cantidad
     de valores leídos.
tarea
4. Imprima y sume la serie de
    números múltiplos de 3 en el
    rango cerrado de 3 y 99.
5. Lea cuatro números e imprima el
    mayor de ellos.
6. Calcule la superficie de un
    triangulo en función de la base y
    la altura.
SOLUCION DE PROBLEMAS MEDIANTE
           LA COMPUTADORA
    Una vez diseñado el algoritmo y
     representado      mediante       una
     herramienta de programación se debe:

                 Solución del
                 Problema por
                 Computadora


Codificación     Ejecución del   Comprobación
del programa       programa      del programa
REPRESENTACION GRAFICA DE LOS
              ALGORITMOS

     Los    métodos     usuales para
      representarlo son:
1.    Diagrama de flujo
2.    Lenguaje de especificación de
      algoritmo
REPRESENTACION GRAFICA DE LOS
             ALGORITMOS

    Un     diagrama    de   flujo  es    la
     representación gráfica de un algoritmo.
     También se puede decir que es la
     representación detallada en forma
     gráfica de como deben realizarse los
     pasos en la computadora para producir
     resultados
REPRESENTACION GRAFICA DE LOS
             ALGORITMOS

   Inicio o fin del programa
   Pasos, procesos o líneas de instrucción de programa de
    computo
   Operaciones de entrada y salida
   Toma de decisiones y Ramificación
   Conector para unir el flujo a otra parte del diagrama
   Cinta magnética
   Disco magnético
   Conector de pagina
   Líneas de flujo
   Anotación
   Display, para mostrar datos
   Envía datos a la impresora
REPRESENTACION GRAFICA DE LOS
       ALGORITMOS cont
                      Enviar
      Inicio/fin
                    impresora



       Ent/Sal

                     Conector
                      pagina


      Procesos     Linea de flujo




     Decision         Conector
REPRESENTACION GRAFICA DE LOS
     ALGORITMOS EJEMPLO




 Diagrama de flujo para
 Sumar los primeros 50
 numeros.
PSEUDOCODIGO

 Es un lenguaje de especificación de
  algoritmos    que    permite    una
  codificación rápida y simple.
 Su ventaja radica en que el
  programador no debe preocuparse
  por la sintaxis de un lenguaje de
  programación en particular.
 Utiliza  palabras     sencillas  de
  entender para codificar programas.
ESTRUCTURA

  DE UN

PROGRAMA
Concepto de Programa


 Conjunto de instrucciones que
 producirán la ejecución de una
determinada tarea. Esencialmente
  es un medio para lograr un fin.
PROCESO DE PROGRAMACION

 Consiste en la solución de problemas
    y el desarrollo de programas
Fases del proceso de
            programación
 Definiciòn y análisis del problema.
 Diseño de algoritmos:
    ◦ Diagrama de flujo.
    ◦ Diagrama (N-S).
    ◦ Pseudocódigo
 Codificación del programa.
 Depuración y verificación del programa.
 Documentación.
 Mantenimiento.
Partes de un programa

 concepto de caja negra

Entrada   Algoritmo       Salida
Tipos de Instrucciones
(acciones que resuelven un
        problema)

  De inicio / fin.
  De asignación.
  De lectura,
  De escritura.
  De bifurcación.
Elementos básicos de un
      programa
 Palabras reservadas.
 Identificadores (nombres de
  variables).
 Caracteres especiales.
 Constantes.
 Variables.
 Expresiones.
 instrucciones.
Otros elementos……

 Iteraciones,
 Contadores,
 Acumuladores,
 Interruptores,
 Estructuras de control:
      Secuenciales,
      Selectivas,
      Repetitivas.
Iteraciones o bucles.
Es el segmento de un algoritmo o
programa, cuyas instrucciones se repiten
un número determinado de veces
mientras se cumple una determinada
condición. Sus partes son:
                   decisión
                   cuerpo del
                   bucle
                   salida

Los bucles se pueden anidar unos dentro de otros, y puede
haber varios bucles al mismo nivel, pero nunca se entrelazan.
Contadores

   Un contador es una variable cuyo valor
    se incrementa o decrementa en una
    cantidad constante en cada iteración.
Acumuladores

   Un Acumulador es una variable cuya
    misión es almacenar cantidades distintas
    resultantes de sumas sucesivas. Es una
    variable que también se suele usar en los
    bucles y que se incrementa o
    decrementa en cada iteración del
    bucle, pero no en una cantidad
    constante.
Acumuladores
Algoritmo ejemplo
Var cont, num, sum: entero
Inicio
  Cont  0
  Sum  0
  Mientras cont <> 3
   Leer num
   Sum  sum + num
   Cont  cont +1
  Fin mientras
  Escribir suma
End
Interruptores

   Un interruptor ( conmutador, bandera,
    flag) es una variable que puede tomar
    diversos valores durante la ejecución de
    un programa y que permite comunicar
    información desde una parte a otra del
    mismo.
Interruptores
Algoritmo ejemplo
Var cont, num, suma: entero
    Neg: boolean
  Inicio
   Cont  0
   Sum  0
   Neg  falso
   Mientras cont <>3
    Leer num
     Si num < 0
       Entonces neg  verdadero
     Fin si
     Sum  sum + num
     Cont  cont + 1
    Fin mientras
   Si neg=verdadero
     Entonces escribir (“Se ha leído negativos”)
   Fin si
  Escribir „La suma es‟,sum
  Fin
  OPCION
  Si es leer un número negativo o hasta 3
  números:
     Mientras (cont <> 3) y (neg = verdadero)
Interruptores

Ejemplo.
 Realizar un algoritmo que lea una serie de números reales y los sume. El
algoritmo debe preguntar al usuario cuando desea ingresar un siguiente
dato y si el usuario responde que no desea ingresar más datos el programa
debe confirmar la respuesta. Si el usuario desea continuar ingresando
datos se debe seguir solicitando datos y si el usuario confirma su deseo de
salir, el algoritmo debe mostrar la suma de los datos leídos y terminar.

Especificación:




Donde datos es la colección de n números reales que el usuario
ingresa hasta que decide no continuar ingresando datos y suma Î R
es la suma de dichos números.
Interruptores
INICIO
bandera: boolean
suma: real
dato: real
c: caracter
bandera := verdadero
suma <- 0
mientras (bandera) = verdadero hacer
            escribir( “Ingrese un dato:” )
            leer (dato)
            suma := suma + dato
            escribir( “Desea continuar ingresando datos (S/N):” )
            leer( c )
                        si (c = „N‟ | c = „n‟) entonces
                        escribir( “Realmente desea salir (S/N):” )
                        leer( c )
                                    si (c = „S‟ | c = „s‟) entonces
                                    bandera := falso
                                    fin_si
                        fin_si
fin_mientras
escribir( “La suma es:”)
escribir( suma )
FIN
Estructuras de control.
 Las estructuras de control tienen una finalidad
bastante definida: su objetivo es ir señalando el
orden en que tienen que sucederse los pasos
de un algoritmo o de un programa.

 Las estructuras de control son de tres tipos:
 1. Secuenciales
 2. Selectivas
 3. Repetitivas
Estructuras secuenciales.
Una estructura de control secuencial, en
realidad, no es más que escribir un paso del
algoritmo detrás de otro, el que primero que se
haya escrito será el que primero se ejecute.

Veamos un ejemplo: queremos leer el radio de
un círculo, calcular su área y mostrar por
pantalla al usuario el resultado
Estructuras secuenciales.
  Ejemplo de algoritmo:

  Declaración de variables
     REAL: radio, area     // No se suele poner acentos, y menos en
órdenes de programas.
   fin declaración de variables
   inicio
     mostrar por pantalla “dame el radio del circulo”
     leer del teclado la variable radio //asignación del valor de la
variable radio
     area =3.14159*radio //asignación del valor de la variable área
     mostrar por pantalla “el área del circulo es:”   //En los texto SI SE
PONEN ACENTOS
     mostrar por pantalla el contenido de la variable area
   fin
Estructuras selectivas.

  Estas estructuras se utilizan para
TOMAR DECISIONES (por eso también
se llaman estructuras de decisión o
alternativas). Lo que se hace es
EVALUAR una condición, y, a
continuación, en función del
resultado, se lleva a cabo una
opción u otra.
Estructuras selectivas.
  1) Alternativas simples (condicional IF)
 Son los conocidos quot;si... entoncesquot;. Se usan de la siguiente
manera: yo quiero evaluar una condición, y si se cumple (es
decir, si es cierta), entonces realizaré una serie de pasos.

  En pseudocódigo sería:
  Declaracion de variables
      REAL: numero, raiz
   fin declaracion de variables
   inicio
     mostrar por pantalla “introduce un numero”
     leer del teclado la variable numero
     SI numero>=0 ENTONCES:
       raiz=raiz_cuadrada(numero)
       mostrar por pantalla “la raíz cuadrada es:”
       mostrar por pantalla raiz
     fin del SI
  fin
Estructuras selectivas.
     2) Alternativas dobles (IF…….ELSE….)
     ¿Qué pasa si no cumple la condición puesta?
     Si no decimos nada el programa seguirá a la siguiente orden
   de forma secuencial. Pero también podemos especificar que
   pasaría si no cumple la condición. Es el famoso trío quot;si ...
   entonces ... sino esto otroquot;
Declaracion de variables
   REAL: numero, raiz
fin declaracion de variables
inicio
mostrar por pantalla 'introduce un numero'
  leer del teclado la variable numero
  SI numero >= 0 ENTONCES:
     raiz = raiz_cuadrada(numero)
     mostrar por pantalla 'la raiz cuadrada es:'
     mostrar por pantalla raiz
  SI NO es numero >=0 ENTONCES: {es decir, si numero es negativo}
     mostrar por pantalla 'lo siento, no puedo calcular la raiz cuadrada de un numero negativo'
  fin del SI
fin
Estructuras repetitivas.
  Estas estructuras son instrucciones que se repiten formando un
bucle. El bucle se repite mientras se cumpla una condición que
ha de ser especificada claramente. Cuando deje de cumplirse la
condición, se sale fuera del bucle y no se repiten más las
instrucciones.
  Un BUCLE (loop, en inglés) es un trozo de algoritmo o de un
programa cuyas instrucciones son repetidas un cierto número de
veces, mientras se cumple una cierta condición que ha de ser
claramente especificada
  Básicamente, existen tres tipos de estructuras repetitivas:

  1) Los bucles quot;mientras...quot; o quot;whilequot;
  2) Los bucles quot;repetir(hacer)... mientras quequot; o quot;do... untilquot; y
  3) Los bucles quot;desdequot; o quot;bucles forquot;.
Estructuras repetitivas.
  1) Estructura MIENTRAS(condición) o quot;WHILEquot;
  En este tipo de estructura, el cuerpo del bucle (las acciones que
deben ejecutarse repetidas veces) se repite MIENTRAS se cumple una
determinada condición, que especificamos entre paréntesis


  Pseudocódigo
  inicio
  contador=1
  Mientras (contador<=3.000) hacer
  mostrar por pantalla 'Prometo ser bueno'
      contador=contador+1
   fin mientras
   fin

   A la variable que quot;llevaquot; la cuenta de las veces que el bucle se ha
ejecutado, se le he llamado contador.

  Fijarse que ANTES de entrar en el bucle le asigno el valor 1 a la variable
contador. Si no, al entrar en el bucle y la variable (contador) no tener
valor, obtendríamos un error.
Estructuras repetitivas.
   2) Estructura REPETIR (hacer)... MIENTRAS QUE (condición) o
quot;DO.....UNTILquot;
   Aquí, lo que se desea es que un bucle se ejecute al menos una
vez antes de comprobar la condición de repetición. Es decir si
partiéramos que la variable condición fuera mayor de 3000, en
este caso, el bucle se ejecutaría una vez. En el caso de hacerlo
con while no se ejecutaría ninguna vez. ¡Esta es la única
diferencia¡.
   La estructura PARA NUESTRO EJEMPLO es esta:


  inicio
   Contador=1
   Repetir
      mostrar por pantalla 'Prometo ser bueno O:-)'
      Contador=Contador+1
   mientras que(Contador<=3000)
   fin
Estructuras repetitivas.
   3) Estructura DESDE o quot;bucles FORquot;.
   Esta estructura hubiera sido la más adecuada para resolver nuestra
situación real. Tiene la peculiaridad, que la variable contador esta dentro del
bucle y no hace falta asignarle el valor (ni definirla) fuera del bucle, y
además, al llegar el programa al bucle siempre se realizarán las instrucciones
que hay dentro del bucle, una cantidad de veces que nosotros fijemos.

  inicio
   desde contador=1 hasta contador<=3.000 contador=contador+1 hacer
      mostrar por pantalla 'Prometo ser bueno'
   fin desde
   fin

  Lo primero que hace es darle a la variable contador el valor 1. Después
comprueba si el valor de la variable es menor o igual a 3000 (comprueba la
condición), y si la cumple aumenta 1 el valor de la variable contador y
realiza las instrucciones que hay dentro del bucle. Así hasta que la condición
deja de cumplirse.
Vectores y Matrices (arreglos)

Introducción
Con lo aprendido hasta ahora resolvamos
 el siguiente problema:

  Dados    100 números enteros, obtener el
  promedio de ellos. Mostrar por pantalla dicho
  promedio y los números ingresados que sean
  mayores que él.
Vectores y Matrices
Una de las principales dificultades que se observan
con este tipo de problemas es que para la resolución
de ambos es necesario almacenar la totalidad de los
datos a procesar.
No sería eficiente crear n cantidad de variables para
guardar estos datos.
Para realizar programas y/o algoritmos que nos
permitan resolver los problemas planteados,
usaremos una nueva estructura de datos
denominada vectores.
Vectores y Matrices
   Una estructura de datos es un conjunto de
    datos con un cierto orden.
   Las estructuras de datos pueden ser
    dinámicas o estáticas.
    ◦ Estáticas: aquellas a las que se le asigna una
      cantidad fija de memoria de acuerdo a lo
      definido en la declaración de la variable.
    ◦ Dinámicas: son aquellas cuyo tamaño en
      memoria aumenta o disminuye en tiempo
      de ejecución de acuerdo a las necesidades
      del programa.
Vectores y Matrices
   Qué es un vector? Un vector (o arreglo
    unidimensional) es una estructura de datos en
    la cual se almacena un conjunto de datos de
    un mismo tipo. Es decir que un arreglo es una
    lista de n elementos que posee las siguientes
    características:
     ◦ se identifica por un único nombre de
       variable
     ◦ sus elementos se almacenan en posiciones
       contiguas de memoria
     ◦ se accede a cada uno de sus elementos en
       forma aleatoria
Vectores
                     Elementos

 Mi_vector       9 5 6 2 4 8 3


Nombre de
 la variable              Posición : 1
                 Contenido : Mi_vector[1] = 9
Vectores
Ejemplo:
   Cargar 10 elementos en un
   vector, sumarlos y mostrar el
   resultado por pantalla.

   Pasos para resolver este
   problema:

      Leer un vector de 10
      elementos
      Sumar los elementos
      Mostrar el resultado de la
      suma por pantalla
Vectores
//Pseudocodigo Ejemplo1//
sumandos <-arreglo[1..10] de enteros;
suma, i <- enteros
vec_sumandos : sumandos;
suma <-0;
Inicio
para i:= 1 a10 hacer
         leer(vec_sumandos[i] )
para i := 1 a 10 hacer
         suma<- suma +vec_sumandos[i];
Escribir ´La suma de los números es´, suma;
Fin.
Vectores
Como ya dijimos anteriormente, los arreglos son
estructuras de datos, por lo tanto las mismas
deben ser declaradas.

     Ejemplos de declaraciones:
            const
                    Max= 500;
        type
            T_Texto = array[ 1..Max ] of
            char;
        var
                   Texto: T_Texto;
Vectores
En el PSEINT la instrucción Dimension permite definir un arreglo,
indicando sus dimensiones.

   Dimesion <identificador> (<maxl>,...,<maxN>);

Esta instrucción define un arreglo con el nombre indicado en
<indentificador> y N dimensiones. Los N parámetros indican la
cantidad de dimensiones y el valor máximo de cada una de ellas.
La cantidad de dimensiones puede ser una o más, y la máxima
cantidad de elementos debe ser una expresión numérica positiva.
Se pueden definir más de un arreglo en una misma instrucción,
separándolos con una coma (,).

   Dimension <ident1> (<max11>,...,<max1N>),..., <identM>
(<maxM1>,...,<maxMN>)

Es importante notar que es necesario definir un arreglo antes de
utilizarlo.
Vectores
// Se ingresa una lista de nombres (la lista termina
// cuando se ingresa un nombre en blanco) no permitiendo
// ingresar repetidos y luego se ordena y muestra

Proceso OrdenaLista

     Dimension lista[200];

     Escribir quot;Ingrese los nombres (enter en blanco para terminar):quot;;

     // leer la lista
     cant<-0;
     Leer nombre;
     Mientras nombre<>quot;quot; Hacer
           cant<-cant+1;
           lista[cant]<-nombre;
           Repetir // leer un nombre y ver que no este ya en la lista
                    Leer nombre;
                    se_repite<-Falso;
                    Para i<-1 Hasta cant Hacer
                          Si nombre=lista[i] Entonces
                                se_repite<-Verdadero;
                          FinSi
                    FinPara
           Hasta Que ~se_repite
     FinMientras
Vectores
// ordenar
      Para i<-1 Hasta cant-1 Hacer
            // busca el menor entre i y cant
            pos_menor<-i;
            Para j<-i+1 Hasta cant Hacer
                    Si lista[j]<lista[pos_menor] Entonces
                            pos_menor<-j;
                    FinSi
            FinPara
            // intercambia el que estaba en i con el menor que
encontro
            aux<-lista[i];
            lista[i]<-lista[pos_menor];
            lista[pos_menor]<-aux;
      FinPara

     // mostrar como queda la lista
     Escribir quot;La lista ordenada es:quot;;
     Para i<-1 Hasta cant Hacer
           Escribir quot; quot;,lista[i];
     FinPara

FinProceso
Vectores
Tarea:
1) Calcular el promedio de 25 valores
    almacenados en un vector. Determinar
    además cuantos son mayores que el
    promedio, imprimir el promedio, el número
    de datos mayores que el promedio y una
    lista de valores mayores que el promedio.
 2) Llenar dos vectores A y B de 35 elementos
    cada uno, sumar el elemento uno del
    vector A con el elemento uno del vector B
    y así sucesivamente hasta 35, almacenar el
    resultado en un vector C, e imprimir el
    vector resultante.
Componentes de un algoritmo

    Algoritmo

    Cabecera del programa
    Sección de declaración
    Sección de acciones
PROGRAMACIÓN

ESTRUCTURADA
Técnicas de Programación...

    Programación modular:
     
Descomposición del problema en
          módulos.

  Programación estructurada:
 Programación de cada módulo
mediante métodos estructurados.
Características de la
        programación modular
   Todo programa tiene un módulo principal.
   Dicho módulo primario se divide en
    submódulos, que a su vez ejecutan una
    tarea única y podrán codificarse de manera
    independiente de cualquier otra actividad.
    Sin embargo, al finalizar su función
    devolverán el control al módulo principal.
   Esta independencia alude a que ningún otro
    módulo podrá accesarlo directamente, a
    excepción de sus propios subsubmódulos y al
    módulo principal.
Consideraciones …….
   La descomposición de un programa
    podría implemetarse así:
    ◦   Módulo principal.
    ◦   Submódulo impresión de títulos
    ◦   Submódulo de lectura de datos
    ◦   Submódulo ejecución de procesos
    ◦   Submódulo impresión de resultados
Características de la
    programación estructurada
 Conjunto de técnicas que reducen
  el tiempo requerido para escribir,
  verificar, depurar y mantener los
  programas.
 Mediante el uso de:
    ◦ recursos abstractos,
    ◦ diseño descendente,
    ◦ estructuras básicas.
Recursos Abstractos

   Consiste en descomponer una
    determinada acción compleja en un
    número de acciones más simples,
    capaces de ser ejecutada por una
    computadora y sus respectivas
    instrucciones.
Diseño Descendente
         TOP-DOWN DESIGN

 Esta metodología efectúa una relación
  de refinamiento entre las distintas etapas
  de estructuración, de modo que se
  relacionen unas con otras, mediante
  entradas y salidas de información.
 Descompone el problema en etapas o
  estructuras jerárquicas, de modo que se
  pueda considerar cada estructura desde
  dos puntos de vista: qué hace y cómo lo
  hace
Diseño Descendente
   Desde el exterior …..
Diseño Descendente
   Desde el interior …..
Estructuras básicas
Teorema de la programación estructurada:

  Un programa propio es aquel que cumple las
             siguientes características:
     secuenciales,
     selectivas, y
     repetitivas.
     posee un solo punto de entrada y salida.
     se puede recorrer toda la estructura del
      programa modular.
     todas las instrucciones son ejecutables y no
      existen bucles infinitos.
Instrucciones Secuenciales
Instrucción Selectiva Simple
Instrucción Selectiva Compuesta
Instrucción Selectiva Múltiple
Instrucción Repetitiva “While”
Instrucción Repetitiva “Repeat”
Instrucción Repetitiva “For”

Más contenido relacionado

La actualidad más candente (20)

Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programación
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Anexo1
Anexo1Anexo1
Anexo1
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Sesión 09 Fund Programación
Sesión 09 Fund ProgramaciónSesión 09 Fund Programación
Sesión 09 Fund Programación
 
Algoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujoAlgoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujo
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
estructuras algoritmicas ciclicas mientras
estructuras algoritmicas ciclicas mientrasestructuras algoritmicas ciclicas mientras
estructuras algoritmicas ciclicas mientras
 
Disenoestructuradoalgoritmos
DisenoestructuradoalgoritmosDisenoestructuradoalgoritmos
Disenoestructuradoalgoritmos
 
01 presentación - módulo n°1 • algoritmos
01 presentación - módulo n°1 • algoritmos01 presentación - módulo n°1 • algoritmos
01 presentación - módulo n°1 • algoritmos
 
Guia de aprendizaje VS2005-2010
Guia de aprendizaje VS2005-2010Guia de aprendizaje VS2005-2010
Guia de aprendizaje VS2005-2010
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Logica algoritmos
Logica algoritmosLogica algoritmos
Logica algoritmos
 
Apuntes De Algoritmos
Apuntes De AlgoritmosApuntes De Algoritmos
Apuntes De Algoritmos
 
Unidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmosUnidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmos
 
Unidad ii construiralgoritmos
Unidad ii construiralgoritmosUnidad ii construiralgoritmos
Unidad ii construiralgoritmos
 
Programacion primero
Programacion primeroProgramacion primero
Programacion primero
 
Logica de programacion de algoritmos
Logica de programacion de algoritmosLogica de programacion de algoritmos
Logica de programacion de algoritmos
 
Principios de Programacion
Principios de ProgramacionPrincipios de Programacion
Principios de Programacion
 

Destacado (8)

02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo
 
Semana6
Semana6Semana6
Semana6
 
Actividad 3.Equipo 2 Proyecto Final Final Fase 1
Actividad 3.Equipo 2 Proyecto Final Final Fase 1Actividad 3.Equipo 2 Proyecto Final Final Fase 1
Actividad 3.Equipo 2 Proyecto Final Final Fase 1
 
Elaboracion de algoritmos
Elaboracion de algoritmosElaboracion de algoritmos
Elaboracion de algoritmos
 
Examen de oposicion telesecundaria
Examen de oposicion telesecundariaExamen de oposicion telesecundaria
Examen de oposicion telesecundaria
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Anexo 1 Diagramas De Flujo
Anexo 1   Diagramas De FlujoAnexo 1   Diagramas De Flujo
Anexo 1 Diagramas De Flujo
 

Similar a Unidad 1

Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clasedaosma
 
Algoritmos Y Programas Unidad1
Algoritmos Y  Programas Unidad1Algoritmos Y  Programas Unidad1
Algoritmos Y Programas Unidad1Silvanac
 
Algoritmos y programas datos importantes
Algoritmos y programas datos importantesAlgoritmos y programas datos importantes
Algoritmos y programas datos importantesEsteban Bedoya
 
Proyecto de-programacion
Proyecto de-programacionProyecto de-programacion
Proyecto de-programacionhelp center
 
Semana 1 - Principios de Algoritmos.pdf
Semana 1 - Principios de Algoritmos.pdfSemana 1 - Principios de Algoritmos.pdf
Semana 1 - Principios de Algoritmos.pdfCarlosJahnsen3
 
Algoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkAlgoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkLaurence HR
 
Solución de problemas aplicando la computadora
Solución de problemas aplicando la computadoraSolución de problemas aplicando la computadora
Solución de problemas aplicando la computadorarestradal
 
Solución de problemas aplicando la computadora
Solución de problemas aplicando la computadoraSolución de problemas aplicando la computadora
Solución de problemas aplicando la computadorarestradal
 
Diseno dealgoritmos
Diseno dealgoritmosDiseno dealgoritmos
Diseno dealgoritmosDeyvid Atens
 
Unidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.pptUnidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.pptssuser6eba56
 
Fundamentos de Programacion
Fundamentos de ProgramacionFundamentos de Programacion
Fundamentos de Programacionneyvajms
 
Algoritmosconeptosbasicos 1
Algoritmosconeptosbasicos 1Algoritmosconeptosbasicos 1
Algoritmosconeptosbasicos 1Espoch_lvaca
 
Fundamentos de programación en diseño web
Fundamentos de programación en diseño webFundamentos de programación en diseño web
Fundamentos de programación en diseño webDayraNieto9807
 

Similar a Unidad 1 (20)

Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clase
 
Algoritmos Y Programas Unidad1
Algoritmos Y  Programas Unidad1Algoritmos Y  Programas Unidad1
Algoritmos Y Programas Unidad1
 
Ayudantia 1
Ayudantia 1Ayudantia 1
Ayudantia 1
 
Algoritmos y programas datos importantes
Algoritmos y programas datos importantesAlgoritmos y programas datos importantes
Algoritmos y programas datos importantes
 
Proyecto de-programacion
Proyecto de-programacionProyecto de-programacion
Proyecto de-programacion
 
Semana 1 - Principios de Algoritmos.pdf
Semana 1 - Principios de Algoritmos.pdfSemana 1 - Principios de Algoritmos.pdf
Semana 1 - Principios de Algoritmos.pdf
 
Clase 2
Clase 2Clase 2
Clase 2
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Algoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkAlgoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tk
 
Solución de problemas aplicando la computadora
Solución de problemas aplicando la computadoraSolución de problemas aplicando la computadora
Solución de problemas aplicando la computadora
 
Solución de problemas aplicando la computadora
Solución de problemas aplicando la computadoraSolución de problemas aplicando la computadora
Solución de problemas aplicando la computadora
 
Diseno dealgoritmos
Diseno dealgoritmosDiseno dealgoritmos
Diseno dealgoritmos
 
Unidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.pptUnidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.ppt
 
Seudocodigo
SeudocodigoSeudocodigo
Seudocodigo
 
Fundamentos de Programacion
Fundamentos de ProgramacionFundamentos de Programacion
Fundamentos de Programacion
 
Algoritmos2
Algoritmos2Algoritmos2
Algoritmos2
 
Algoritmos2
Algoritmos2Algoritmos2
Algoritmos2
 
Programacion
 Programacion  Programacion
Programacion
 
Algoritmosconeptosbasicos 1
Algoritmosconeptosbasicos 1Algoritmosconeptosbasicos 1
Algoritmosconeptosbasicos 1
 
Fundamentos de programación en diseño web
Fundamentos de programación en diseño webFundamentos de programación en diseño web
Fundamentos de programación en diseño web
 

Último

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 

Último (11)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

Unidad 1

  • 1. Algoritmos y Programación
  • 2. Introducción  El objetivo de estas sesiónes consistirá en explicar los conceptos de algoritmo, programa y lenguaje de programación. Así como explorar otros temas concurrentes.
  • 3. Temática  Sistemas de procesamiento de información.  Concepto de Algoritmo.  Lenguaje de programación.  Datos, tipos de datos y operaciones primitivas.  Constantes y variables.  Expresiones.  Funciones intrínsecas.  Asignación.  Entrada y salida de información.
  • 4. 1. Sistemas de procesamiento de la información  Un sistema de esta clase se define como un conjunto de componentes interconectados entre sí que transforman datos en información organizada, significativa y útil.
  • 5. Esquemáticamente Datos Procesador Información
  • 6. Una primera definición  Un algoritmo consiste en el grupo de instrucciones que definen la secuencia de operaciones a realizar para resolver un sistema específico o clase de problema.
  • 7. Conceptos importantes  Hardware: grupo de componentes físicos de una computadora.  Software: conjunto de programas que controlan el funcionamiento de una computadora
  • 8. 2. Concepto de Algoritmo  La metodología de la programación es aquella que es necesaria para resolver problemas mediante programas, su eje es el algoritmo. Diseño Problema del Programa algoritmo
  • 9. Pasos para la solución de un problema  El diseño del algoritmo describe el análisis del problema y desarrollo del algoritmo.  Expresar el algoritmo como un programa en un lenguaje de programación.  Ejecutar y validar el programa por la computadora.
  • 10. Características de los algoritmos  Preciso, indicará el orden de cada paso.  Definido, el mismo resultado se obtendrá al ejecutar el algoritmo “n” ocasiones.  Finito, deberá terminar en algún momento.
  • 11. Ejemplo 1 Genere un algoritmo que solucione la entrega de un pedido a un cliente  Inicio.  Leer el pedido.  Examinar el historial crediticio del cliente  Si el cliente es solvente, entregar el pedido. En caso contrario, rechazarlo.  Fin
  • 12. Ejemplo 2 Genere un algoritmo que sume los números entre el 3 y el 30.  Inicio.  Hacer SUMA igual cero.  Establecer NUMERO igual a 3.  Sumar NUMERO a SUMA.  Incrementar NUMERO en 3  Si NUMERO es menor o igual que 30 ir a 4; si no imprimir a SUMA.  Fin
  • 13. Ejemplo 3 Genere un algoritmo que determine al mayor de tres números enteros.  Inicio  Leer los números y guardarlos en NUM1, NUM2 y NUM3 respectivamente  Comparar NUM1 y NUM2, el número mayor se guarda en AUX.  Comparar AUX y NUM3, imprimir el número mayor.  Fin.
  • 14. Tarea 1 Diseñe un algoritmo para determinar si un número es primo o no. Tarea 2 Genere un algoritmo que sume los números entre el 2 y el 20. Tarea 3 Genere un algoritmo que sume los números entre el 5 y el 50.
  • 15. 3. Los lenguajes de programación  Cuando el procesador de datos es una computadora entonces el algoritmo de solución se expresa en un programa.  Por tanto, un programa es escrito en un lenguaje de programación.  Luego, la programación consiste en expresar las operaciones en forma de programa de un algoritmo.
  • 16. Tipos de lenguajes  Máquina; escritos en código binario.  Bajo nivel (ensamblador); escrito en nemotécnicos.  Alto nivel; diseñados para ser entendidos por el ser humano.
  • 17. Instrucciones básicas  Entrada/Salida; transferencia de información entre dispositivos periféricos y memoria central.  Aritmético/Lógicas; ejecutan operaciones de éstos tipos.  Selectivas; seleccionan tareas en función de los resultados  Repetitivas; permiten la iteración de secuencias de instrucciones un número dado de veces
  • 18. Traductores del Lenguaje  A) Intérpretes; Toma un programa fuente lo traduce e inmediatamente lo ejecuta. Traducción Programa fuente Intérprete y ejecución en línea
  • 19. Traductores del Lenguaje (cont.)  B) Compiladores; traduce un programa fuente a código objeto. Programa Programa Programa fuente Objeto ejecutable Compilador Montador (Compiler) (Linker)
  • 20. 4. Datos, Tipos de Datos y Operaciones Primitivas  Un dato es la expresión general que describe los objetos con los cuales opera la computadora  Los tipos son: simples (no estructurados) y compuestos (estructurados). Aquellos se subdividen en:  Numericos (integer, real)  Lógicos (booleans)  Carácter (char, string)
  • 21. Datos primitivos Datos Numérico Carácter Lógico Entero Real
  • 22. 5. Constantes y Variables  Constantes: valores que durante la ejecución de un programa no cambian su valor.  Variables: valores que cambiarán durante la ejecución del programa
  • 23. 6. Expresiones  Se definen como una combinación de constantes, variables, símbolos de operación, paréntesis, y nombres de funciones especiales.  Una expresión consta de operandos y operadores.  Las expresiones se clasifican en aritméticas, lógicas y carácter.
  • 24. Expresiones aritméticas Operador Significado Tipo de operandos Tipo resultado ** Exponenciación Entero o real Entero o real + Suma Entero o real Entero o real - Resta Entero o real Entero o real * Multiplicación Entero o real Entero o real / División Real Real Div División entera Entero Entero Mod módulo Entero Entero
  • 25. Reglas de prioridad Operador Gráfo Parentesis ( ) Exponencial ** Multi, divide *, / Div y mod Div, mod Más y menos +, -
  • 26. Operadores de relación Expresión 1 Operador de Expresión 2 relación Operador Significado < Menor > Mayor = Igual <= Menor o igual >= Mayor o igual <>,!= Distinto
  • 27. Operadores lógicos Operador lógico Expresión lógica Significado Not Not p Negación And PyQ Conjunción Or PoQ disyunción
  • 28. 7. Funciones Intrínsecas Función Descripción Abs(x) Absoluto Arctan(x) Tangente inversa Cos(x) Coseno Exp(x) Exponencial Ln(x) Log neperiano Log10(x) Log decimal Round(x) Redondeo Sin(x) Seno Sqr(x) Cuadrado Sqrt(x) Raíz cuadrada Trunc(x) Truncamiento
  • 29. 8. Operación de Asignación  Es la forma de darle valores tanto a variables como constantes, se representa con el símbolo
  • 30. Tipos de asignación  Aritmética  Lógica  Cadena de carácteres
  • 31. Entrada y salida de información  La operación de lectura READ permite el ingreso de los datos necesarios para los cálculos computacionales.  La operación de escritura WRITE imprime la información procesada por el programa y su respectivo algoritmo.
  • 32. PROBLEMAS RESUELTOS CON COMPUTADORAS Y HERRAMIENTAS DE PROGRAMACION 15/10/2008 32
  • 33. SOLUCION DE PROBLEMAS  Fases de fragmentación: ◦ Análisis del problema: definición concisa a fin de que sea analizado en todo detalle. ◦ Diseño del algoritmo: procedimiento, paso a paso, para la solucionar el problema dado. ◦ Solución del algoritmo con la computadora: codificación del algoritmo en un lenguaje de programación 15/10/2008 33
  • 34. ANALISIS DEL PROBLEMA  El propósito es ayudar al programador a llegar a un cierto grado de comprensión de la naturaleza del problema.  Una buena definición del problema, junto con una descripción detallada de entrada y salida, son los requisitos más importantes para una solución eficaz. 15/10/2008 34
  • 35. ANALISIS DEL PROBLEMA cont. 1. Que información debe proporcionar la solución del problema. Solución del Problema Análisis del Diseño del Solución por Problema algoritmo computadora
  • 36. ANALISIS DEL PROBLEMA cont. 2. Que datos se necesitan para resolver el problema. Análisis del Problema Definicióndel Especificaciones Especificaciones Problema de entrada de salida
  • 37. ANALISIS DEL PROBLEMA cont.  Ejemplo: leer los lados de un triángulo rectángulo e imprima la hipotenusa. ◦ Entradas: valores de los lados (variable LADO1 y variable LADO2). ◦ Salida: valor de la hipotenusa (variable LADO3). ◦ Variables: LADO1, LADO2 y LADO3 (tipo reales).
  • 38. DISEÑO DEL ALGORITMO  La información proporcionada al algoritmo constituye su entrada y la información producida constituye su salida.  Los problemas complejos se resuelven eficazmente si se fragmentan en subproblemas que sean más sencillos de solucionar que el original. Esta técnica es conocida como divide y vencerás (divide and conquer).
  • 39. DISEÑO DEL ALGORITMO cont.  La descomposición del problema original en subproblemas cuya solución puede implementarse a través de la computadora se le denomina diseño descendente (top down design)  La descripción detallada de la solución mediante pasos específicos se le denomina refinamiento del algoritmo (stepwise refinement).
  • 40. DISEÑO DEL ALGORITMO cont. Tarea: Investigar acerca de los diferentes tipos de algoritmos.
  • 41. DISEÑO DEL ALGORITMO cont. Diseño del algoritmo Diseño Refinamiento Herramientas de descendente por pasos programación –diagramas de flujo -pseudocódigo
  • 42. DISEÑO DEL ALGORITMO cont.  Ejemplo: Determine a los números menores que 90 y múltiplos de 9, así como su sumatoria. Definicióndel Especificaciones Especificaciones Problema de entrada de salida Imprimir TOTAL = 0 NUM, TOTAL múltiplos de 9 NUM = 9 y su suma LIMITE = 90 siempre y cuando sea menor que 90
  • 43. DISEÑO DEL ALGORITMO cont. Diseño Refinamiento Herramientas de descendente por pasos programación Múltiplos de 9 a) Num=9 b) Print num c) Num <= 90 regresar a) d) Num=+9 Sumatoria Total=+num
  • 44. DISEÑO DEL ALGORITMO cont. 1. Inicio 2. Total=0, Num=9, Limite=90 3. Print Num 4. Total=Total+Num 5. Si Num <= Limite entonces Num=Num+9 y regresar a 3 6. Print Total 7. Fin
  • 45. tarea 1. Determine si una palabra es un palíndromo. 2. Determine el máximo común divisor para dos números enteros. 3. Lea e imprima una serie de números distintos de cero. El algoritmo terminará con un valor que no se debe imprimir . Finalmente obtenga la cantidad de valores leídos.
  • 46. tarea 4. Imprima y sume la serie de números múltiplos de 3 en el rango cerrado de 3 y 99. 5. Lea cuatro números e imprima el mayor de ellos. 6. Calcule la superficie de un triangulo en función de la base y la altura.
  • 47. SOLUCION DE PROBLEMAS MEDIANTE LA COMPUTADORA  Una vez diseñado el algoritmo y representado mediante una herramienta de programación se debe: Solución del Problema por Computadora Codificación Ejecución del Comprobación del programa programa del programa
  • 48. REPRESENTACION GRAFICA DE LOS ALGORITMOS  Los métodos usuales para representarlo son: 1. Diagrama de flujo 2. Lenguaje de especificación de algoritmo
  • 49. REPRESENTACION GRAFICA DE LOS ALGORITMOS  Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados
  • 50. REPRESENTACION GRAFICA DE LOS ALGORITMOS  Inicio o fin del programa  Pasos, procesos o líneas de instrucción de programa de computo  Operaciones de entrada y salida  Toma de decisiones y Ramificación  Conector para unir el flujo a otra parte del diagrama  Cinta magnética  Disco magnético  Conector de pagina  Líneas de flujo  Anotación  Display, para mostrar datos  Envía datos a la impresora
  • 51. REPRESENTACION GRAFICA DE LOS ALGORITMOS cont Enviar Inicio/fin impresora Ent/Sal Conector pagina Procesos Linea de flujo Decision Conector
  • 52. REPRESENTACION GRAFICA DE LOS ALGORITMOS EJEMPLO Diagrama de flujo para Sumar los primeros 50 numeros.
  • 53. PSEUDOCODIGO  Es un lenguaje de especificación de algoritmos que permite una codificación rápida y simple.  Su ventaja radica en que el programador no debe preocuparse por la sintaxis de un lenguaje de programación en particular.  Utiliza palabras sencillas de entender para codificar programas.
  • 54. ESTRUCTURA DE UN PROGRAMA
  • 55. Concepto de Programa Conjunto de instrucciones que producirán la ejecución de una determinada tarea. Esencialmente es un medio para lograr un fin.
  • 56. PROCESO DE PROGRAMACION Consiste en la solución de problemas y el desarrollo de programas
  • 57. Fases del proceso de programación  Definiciòn y análisis del problema.  Diseño de algoritmos: ◦ Diagrama de flujo. ◦ Diagrama (N-S). ◦ Pseudocódigo  Codificación del programa.  Depuración y verificación del programa.  Documentación.  Mantenimiento.
  • 58. Partes de un programa concepto de caja negra Entrada Algoritmo Salida
  • 59. Tipos de Instrucciones (acciones que resuelven un problema)  De inicio / fin.  De asignación.  De lectura,  De escritura.  De bifurcación.
  • 60. Elementos básicos de un programa  Palabras reservadas.  Identificadores (nombres de variables).  Caracteres especiales.  Constantes.  Variables.  Expresiones.  instrucciones.
  • 61. Otros elementos……  Iteraciones,  Contadores,  Acumuladores,  Interruptores,  Estructuras de control: Secuenciales, Selectivas, Repetitivas.
  • 62. Iteraciones o bucles. Es el segmento de un algoritmo o programa, cuyas instrucciones se repiten un número determinado de veces mientras se cumple una determinada condición. Sus partes son: decisión cuerpo del bucle salida Los bucles se pueden anidar unos dentro de otros, y puede haber varios bucles al mismo nivel, pero nunca se entrelazan.
  • 63. Contadores  Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante en cada iteración.
  • 64. Acumuladores  Un Acumulador es una variable cuya misión es almacenar cantidades distintas resultantes de sumas sucesivas. Es una variable que también se suele usar en los bucles y que se incrementa o decrementa en cada iteración del bucle, pero no en una cantidad constante.
  • 65. Acumuladores Algoritmo ejemplo Var cont, num, sum: entero Inicio Cont  0 Sum  0 Mientras cont <> 3 Leer num Sum  sum + num Cont  cont +1 Fin mientras Escribir suma End
  • 66. Interruptores  Un interruptor ( conmutador, bandera, flag) es una variable que puede tomar diversos valores durante la ejecución de un programa y que permite comunicar información desde una parte a otra del mismo.
  • 67. Interruptores Algoritmo ejemplo Var cont, num, suma: entero Neg: boolean Inicio Cont  0 Sum  0 Neg  falso Mientras cont <>3 Leer num Si num < 0 Entonces neg  verdadero Fin si Sum  sum + num Cont  cont + 1 Fin mientras Si neg=verdadero Entonces escribir (“Se ha leído negativos”) Fin si Escribir „La suma es‟,sum Fin OPCION Si es leer un número negativo o hasta 3 números: Mientras (cont <> 3) y (neg = verdadero)
  • 68. Interruptores Ejemplo. Realizar un algoritmo que lea una serie de números reales y los sume. El algoritmo debe preguntar al usuario cuando desea ingresar un siguiente dato y si el usuario responde que no desea ingresar más datos el programa debe confirmar la respuesta. Si el usuario desea continuar ingresando datos se debe seguir solicitando datos y si el usuario confirma su deseo de salir, el algoritmo debe mostrar la suma de los datos leídos y terminar. Especificación: Donde datos es la colección de n números reales que el usuario ingresa hasta que decide no continuar ingresando datos y suma Î R es la suma de dichos números.
  • 69. Interruptores INICIO bandera: boolean suma: real dato: real c: caracter bandera := verdadero suma <- 0 mientras (bandera) = verdadero hacer escribir( “Ingrese un dato:” ) leer (dato) suma := suma + dato escribir( “Desea continuar ingresando datos (S/N):” ) leer( c ) si (c = „N‟ | c = „n‟) entonces escribir( “Realmente desea salir (S/N):” ) leer( c ) si (c = „S‟ | c = „s‟) entonces bandera := falso fin_si fin_si fin_mientras escribir( “La suma es:”) escribir( suma ) FIN
  • 70. Estructuras de control. Las estructuras de control tienen una finalidad bastante definida: su objetivo es ir señalando el orden en que tienen que sucederse los pasos de un algoritmo o de un programa. Las estructuras de control son de tres tipos: 1. Secuenciales 2. Selectivas 3. Repetitivas
  • 71. Estructuras secuenciales. Una estructura de control secuencial, en realidad, no es más que escribir un paso del algoritmo detrás de otro, el que primero que se haya escrito será el que primero se ejecute. Veamos un ejemplo: queremos leer el radio de un círculo, calcular su área y mostrar por pantalla al usuario el resultado
  • 72. Estructuras secuenciales. Ejemplo de algoritmo: Declaración de variables REAL: radio, area // No se suele poner acentos, y menos en órdenes de programas. fin declaración de variables inicio mostrar por pantalla “dame el radio del circulo” leer del teclado la variable radio //asignación del valor de la variable radio area =3.14159*radio //asignación del valor de la variable área mostrar por pantalla “el área del circulo es:” //En los texto SI SE PONEN ACENTOS mostrar por pantalla el contenido de la variable area fin
  • 73. Estructuras selectivas. Estas estructuras se utilizan para TOMAR DECISIONES (por eso también se llaman estructuras de decisión o alternativas). Lo que se hace es EVALUAR una condición, y, a continuación, en función del resultado, se lleva a cabo una opción u otra.
  • 74. Estructuras selectivas. 1) Alternativas simples (condicional IF) Son los conocidos quot;si... entoncesquot;. Se usan de la siguiente manera: yo quiero evaluar una condición, y si se cumple (es decir, si es cierta), entonces realizaré una serie de pasos. En pseudocódigo sería: Declaracion de variables REAL: numero, raiz fin declaracion de variables inicio mostrar por pantalla “introduce un numero” leer del teclado la variable numero SI numero>=0 ENTONCES: raiz=raiz_cuadrada(numero) mostrar por pantalla “la raíz cuadrada es:” mostrar por pantalla raiz fin del SI fin
  • 75. Estructuras selectivas. 2) Alternativas dobles (IF…….ELSE….) ¿Qué pasa si no cumple la condición puesta? Si no decimos nada el programa seguirá a la siguiente orden de forma secuencial. Pero también podemos especificar que pasaría si no cumple la condición. Es el famoso trío quot;si ... entonces ... sino esto otroquot; Declaracion de variables REAL: numero, raiz fin declaracion de variables inicio mostrar por pantalla 'introduce un numero' leer del teclado la variable numero SI numero >= 0 ENTONCES: raiz = raiz_cuadrada(numero) mostrar por pantalla 'la raiz cuadrada es:' mostrar por pantalla raiz SI NO es numero >=0 ENTONCES: {es decir, si numero es negativo} mostrar por pantalla 'lo siento, no puedo calcular la raiz cuadrada de un numero negativo' fin del SI fin
  • 76. Estructuras repetitivas. Estas estructuras son instrucciones que se repiten formando un bucle. El bucle se repite mientras se cumpla una condición que ha de ser especificada claramente. Cuando deje de cumplirse la condición, se sale fuera del bucle y no se repiten más las instrucciones. Un BUCLE (loop, en inglés) es un trozo de algoritmo o de un programa cuyas instrucciones son repetidas un cierto número de veces, mientras se cumple una cierta condición que ha de ser claramente especificada Básicamente, existen tres tipos de estructuras repetitivas: 1) Los bucles quot;mientras...quot; o quot;whilequot; 2) Los bucles quot;repetir(hacer)... mientras quequot; o quot;do... untilquot; y 3) Los bucles quot;desdequot; o quot;bucles forquot;.
  • 77. Estructuras repetitivas. 1) Estructura MIENTRAS(condición) o quot;WHILEquot; En este tipo de estructura, el cuerpo del bucle (las acciones que deben ejecutarse repetidas veces) se repite MIENTRAS se cumple una determinada condición, que especificamos entre paréntesis Pseudocódigo inicio contador=1 Mientras (contador<=3.000) hacer mostrar por pantalla 'Prometo ser bueno' contador=contador+1 fin mientras fin A la variable que quot;llevaquot; la cuenta de las veces que el bucle se ha ejecutado, se le he llamado contador. Fijarse que ANTES de entrar en el bucle le asigno el valor 1 a la variable contador. Si no, al entrar en el bucle y la variable (contador) no tener valor, obtendríamos un error.
  • 78. Estructuras repetitivas. 2) Estructura REPETIR (hacer)... MIENTRAS QUE (condición) o quot;DO.....UNTILquot; Aquí, lo que se desea es que un bucle se ejecute al menos una vez antes de comprobar la condición de repetición. Es decir si partiéramos que la variable condición fuera mayor de 3000, en este caso, el bucle se ejecutaría una vez. En el caso de hacerlo con while no se ejecutaría ninguna vez. ¡Esta es la única diferencia¡. La estructura PARA NUESTRO EJEMPLO es esta: inicio Contador=1 Repetir mostrar por pantalla 'Prometo ser bueno O:-)' Contador=Contador+1 mientras que(Contador<=3000) fin
  • 79. Estructuras repetitivas. 3) Estructura DESDE o quot;bucles FORquot;. Esta estructura hubiera sido la más adecuada para resolver nuestra situación real. Tiene la peculiaridad, que la variable contador esta dentro del bucle y no hace falta asignarle el valor (ni definirla) fuera del bucle, y además, al llegar el programa al bucle siempre se realizarán las instrucciones que hay dentro del bucle, una cantidad de veces que nosotros fijemos. inicio desde contador=1 hasta contador<=3.000 contador=contador+1 hacer mostrar por pantalla 'Prometo ser bueno' fin desde fin Lo primero que hace es darle a la variable contador el valor 1. Después comprueba si el valor de la variable es menor o igual a 3000 (comprueba la condición), y si la cumple aumenta 1 el valor de la variable contador y realiza las instrucciones que hay dentro del bucle. Así hasta que la condición deja de cumplirse.
  • 80. Vectores y Matrices (arreglos) Introducción Con lo aprendido hasta ahora resolvamos el siguiente problema: Dados 100 números enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los números ingresados que sean mayores que él.
  • 81. Vectores y Matrices Una de las principales dificultades que se observan con este tipo de problemas es que para la resolución de ambos es necesario almacenar la totalidad de los datos a procesar. No sería eficiente crear n cantidad de variables para guardar estos datos. Para realizar programas y/o algoritmos que nos permitan resolver los problemas planteados, usaremos una nueva estructura de datos denominada vectores.
  • 82. Vectores y Matrices  Una estructura de datos es un conjunto de datos con un cierto orden.  Las estructuras de datos pueden ser dinámicas o estáticas. ◦ Estáticas: aquellas a las que se le asigna una cantidad fija de memoria de acuerdo a lo definido en la declaración de la variable. ◦ Dinámicas: son aquellas cuyo tamaño en memoria aumenta o disminuye en tiempo de ejecución de acuerdo a las necesidades del programa.
  • 83. Vectores y Matrices  Qué es un vector? Un vector (o arreglo unidimensional) es una estructura de datos en la cual se almacena un conjunto de datos de un mismo tipo. Es decir que un arreglo es una lista de n elementos que posee las siguientes características: ◦ se identifica por un único nombre de variable ◦ sus elementos se almacenan en posiciones contiguas de memoria ◦ se accede a cada uno de sus elementos en forma aleatoria
  • 84. Vectores Elementos Mi_vector 9 5 6 2 4 8 3 Nombre de la variable Posición : 1 Contenido : Mi_vector[1] = 9
  • 85. Vectores Ejemplo: Cargar 10 elementos en un vector, sumarlos y mostrar el resultado por pantalla. Pasos para resolver este problema: Leer un vector de 10 elementos Sumar los elementos Mostrar el resultado de la suma por pantalla
  • 86. Vectores //Pseudocodigo Ejemplo1// sumandos <-arreglo[1..10] de enteros; suma, i <- enteros vec_sumandos : sumandos; suma <-0; Inicio para i:= 1 a10 hacer leer(vec_sumandos[i] ) para i := 1 a 10 hacer suma<- suma +vec_sumandos[i]; Escribir ´La suma de los números es´, suma; Fin.
  • 87. Vectores Como ya dijimos anteriormente, los arreglos son estructuras de datos, por lo tanto las mismas deben ser declaradas. Ejemplos de declaraciones: const Max= 500; type T_Texto = array[ 1..Max ] of char; var Texto: T_Texto;
  • 88. Vectores En el PSEINT la instrucción Dimension permite definir un arreglo, indicando sus dimensiones. Dimesion <identificador> (<maxl>,...,<maxN>); Esta instrucción define un arreglo con el nombre indicado en <indentificador> y N dimensiones. Los N parámetros indican la cantidad de dimensiones y el valor máximo de cada una de ellas. La cantidad de dimensiones puede ser una o más, y la máxima cantidad de elementos debe ser una expresión numérica positiva. Se pueden definir más de un arreglo en una misma instrucción, separándolos con una coma (,). Dimension <ident1> (<max11>,...,<max1N>),..., <identM> (<maxM1>,...,<maxMN>) Es importante notar que es necesario definir un arreglo antes de utilizarlo.
  • 89. Vectores // Se ingresa una lista de nombres (la lista termina // cuando se ingresa un nombre en blanco) no permitiendo // ingresar repetidos y luego se ordena y muestra Proceso OrdenaLista Dimension lista[200]; Escribir quot;Ingrese los nombres (enter en blanco para terminar):quot;; // leer la lista cant<-0; Leer nombre; Mientras nombre<>quot;quot; Hacer cant<-cant+1; lista[cant]<-nombre; Repetir // leer un nombre y ver que no este ya en la lista Leer nombre; se_repite<-Falso; Para i<-1 Hasta cant Hacer Si nombre=lista[i] Entonces se_repite<-Verdadero; FinSi FinPara Hasta Que ~se_repite FinMientras
  • 90. Vectores // ordenar Para i<-1 Hasta cant-1 Hacer // busca el menor entre i y cant pos_menor<-i; Para j<-i+1 Hasta cant Hacer Si lista[j]<lista[pos_menor] Entonces pos_menor<-j; FinSi FinPara // intercambia el que estaba en i con el menor que encontro aux<-lista[i]; lista[i]<-lista[pos_menor]; lista[pos_menor]<-aux; FinPara // mostrar como queda la lista Escribir quot;La lista ordenada es:quot;; Para i<-1 Hasta cant Hacer Escribir quot; quot;,lista[i]; FinPara FinProceso
  • 91. Vectores Tarea: 1) Calcular el promedio de 25 valores almacenados en un vector. Determinar además cuantos son mayores que el promedio, imprimir el promedio, el número de datos mayores que el promedio y una lista de valores mayores que el promedio. 2) Llenar dos vectores A y B de 35 elementos cada uno, sumar el elemento uno del vector A con el elemento uno del vector B y así sucesivamente hasta 35, almacenar el resultado en un vector C, e imprimir el vector resultante.
  • 92. Componentes de un algoritmo Algoritmo Cabecera del programa Sección de declaración Sección de acciones
  • 94. Técnicas de Programación... Programación modular:  Descomposición del problema en módulos.  Programación estructurada: Programación de cada módulo mediante métodos estructurados.
  • 95. Características de la programación modular  Todo programa tiene un módulo principal.  Dicho módulo primario se divide en submódulos, que a su vez ejecutan una tarea única y podrán codificarse de manera independiente de cualquier otra actividad. Sin embargo, al finalizar su función devolverán el control al módulo principal.  Esta independencia alude a que ningún otro módulo podrá accesarlo directamente, a excepción de sus propios subsubmódulos y al módulo principal.
  • 96. Consideraciones …….  La descomposición de un programa podría implemetarse así: ◦ Módulo principal. ◦ Submódulo impresión de títulos ◦ Submódulo de lectura de datos ◦ Submódulo ejecución de procesos ◦ Submódulo impresión de resultados
  • 97. Características de la programación estructurada  Conjunto de técnicas que reducen el tiempo requerido para escribir, verificar, depurar y mantener los programas.  Mediante el uso de: ◦ recursos abstractos, ◦ diseño descendente, ◦ estructuras básicas.
  • 98. Recursos Abstractos  Consiste en descomponer una determinada acción compleja en un número de acciones más simples, capaces de ser ejecutada por una computadora y sus respectivas instrucciones.
  • 99. Diseño Descendente TOP-DOWN DESIGN  Esta metodología efectúa una relación de refinamiento entre las distintas etapas de estructuración, de modo que se relacionen unas con otras, mediante entradas y salidas de información.  Descompone el problema en etapas o estructuras jerárquicas, de modo que se pueda considerar cada estructura desde dos puntos de vista: qué hace y cómo lo hace
  • 100. Diseño Descendente Desde el exterior …..
  • 101. Diseño Descendente Desde el interior …..
  • 102. Estructuras básicas Teorema de la programación estructurada: Un programa propio es aquel que cumple las siguientes características:  secuenciales,  selectivas, y  repetitivas.  posee un solo punto de entrada y salida.  se puede recorrer toda la estructura del programa modular.  todas las instrucciones son ejecutables y no existen bucles infinitos.