SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
Introducción a la
Programación.

Andrés Arcia
Departamento de Computación
Escuela de Ingeniería de Sistemas
Facultad de Ingeniería
Universidad de Los Andes
Introducción a la
       Programación
Algunas definiciones importantes:
¿Qué es Programar?
          Es la acción de escribir instrucciones correctas para que sean
interpretadas por una máquina.
¿Qué es el Software?
         Son programas. Para que tengan sentido de software deben
ser ejecutados sobre una máquina.
¿En qué medida nos compete programar?
         Depende de su interes. De todas formas hoy en día es un
“must” para cualquier ingeniero.
¿En que medida dependemos de software?
         Depende de su estilo de vida, pero para el ciudadano común
la dependencia es bastante: celulares, controles remotos (TV, DVD,
radios, mp3 players, etc.), cajeros automaticos, etc. ¿Sabia Ud. Que
muy pronto será espiado sin darse cuenta?
Lenguajes de Programación
•   ¿Qué es un Lenguaje de Programación?
       Es un conjunto de reglas para comunicar ideas.
       Generalmente las ideas se le comunican a una
       máquina.
•   De que hay que estar pendiente cuando programamos
    en un lenguaje:
       Sintaxis / Semantica
       Sistema de tipos
       Errores / Excepciones
Lenguajes de Programación
•   Paradigmas de la Programación
       Programación Imperativa
       Programación Orientada por Objeto
       Programación Funcional
       Programación por Eventos
       Programación Concurrente
       etc.
•   Lenguajes de programación populares:
       C, C++, Java, PHP, Perl, XHTML.
•   Dominios de aplicación importantes:
       Programación Sistema
       Sistemas de Gestión de Información
Niveles de los lenguajes

 Lenguaje Natural
 Lenguaje de Programación
 Compilador / Interprete
 Lenguaje Máquina
¿Qué aprenderemos en el
curso?
 Aprenderemos a programar en
 lenguaje C.
   C fue diseñado para dar soporte a
   UNIX a mediados de los 70. Hoy en dia
   lo encontramos en los mas grandes
   OS: Linux y FreeBSD.
   C esta normalizado por ANSI (1988).
Enlaces a revisar

 yahoo.com: Tutorial de C, curso de C
 google.com: Tutorial de C, curso gratis
 de C, etc.
 www.elrincondelc.com
 www.emagister.com
 gcc.gnu.org
Etapas de la Compilación
Lenguaje de Máquina
•   Lenguaje mas básico, propio de cada computadora,
    ya que está relacionado con el diseño del hardware de
    la misma (dependiente de la máquina). Por lo general
    consisten en cadenas de números al final reducidos a
    ceros y unos (sistema numérico binario).

•   Operaciones:
     • Cargar
     • Almacenar
     • Sumar
     • Restar
Lenguaje de Máquina

     Ejemplo:

      Código de           Dirección             Significado
      operación
      00010101            10000001     (a) Cargar contenido de la dir. 129 en
                                      Acumulador
      00010111          10000010      (b) Sumar contenido de la dir 130 al
                                      Acumulador
      00010110          10000011      (c) Almacenar contenido del Acumulador
                                      en la dir. 131

(c) 10000011 = 27+21+20 = 131.
Lenguaje Ensamblador
•   Consiste en abreviaturas similares al inglés, llamadas
    instrucciones mnemotécnicas, que permiten
    representar las operaciones elementales de la
    computadora (dependiente de la máquina).
    Ejemplo:
    Código de           Dirección      Instrucción en
    operación                          lenguaje
                                       ensamblador

         00010101       10000001       LOAD A
         00010111       10000010       ADD B
         00010110       10000011       STORE C
Lenguaje Ensamblador

•   Lenguaje de bajo nivel o ensamblador:
    La computadora no entiende directamente lenguaje
    ensamblador por lo que un programa escrito en este
    lenguaje tiene que ser traducido a lenguaje de
    máquina por un programa llamado un ensamblador
    para que pueda ser ejecutado por la computadora.
    Los lenguajes ensambladores todavía requieren que
    el programador tenga un buen conocimiento de la
    arquitectura de la computadora.

    Como los lenguajes ensambladores son dependientes
    de la máquina, todo programa escrito en un lenguaje
    ensamblador particular tendrá que ser reescrito si se
    va a ejecutar en otro tipo de computadora.
Lenguaje de Alto Nivel

•   Permite a los programadores escribir instrucciones en un
    lenguaje mas familiar para ellos y que contiene notaciones
    matemáticas comúnmente utilizadas (independiente de la
    máquina).
    Ejemplo:
    Código de   Dirección      Instrucción en         Instrucción en
    operación                  lenguaje ensamblador    lenguaje de alto
                                                          nivel
    00010101    10000001       LOAD A
    00010111    10000010       ADD B
    00010110    10000011       STORE C                C= A+B

    Con este tipo de lenguajes, la programación es mas fácil para los
    usuarios ya que éste no necesita tener conocimiento de la
    arquitectura de la computadora.
Lenguaje de Alto Nivel
Lenguaje de alto nivel:
  Como ocurre con los lenguajes ensambladores, la
computadora no entiende directamente lenguaje de alto nivel,
por lo que un programa escrito en este lenguaje tiene que ser
traducido a lenguaje de máquina por un programa llamado un
compilador para que pueda ser ejecutado por la computadora.

        Los lenguajes de alto nivel permiten portabilidad,
mejor expresión de las ideas, facilidad de programar ciertas
clases de problemas, menos posibilidad de cometer errores,
una visión más amplia del problema, etc.
Lenguaje de Alto Nivel
Ejemplos de lenguajes de alto nivel:
   - Java                - BASIC
   -C                    - Visual Basic
   - C++                 - Pascal
   - COBOL
   - FORTRAN
   - PROLOG
   - LISP
   - PL/I
   - SMALLTALK
   - ADA
Lenguajes de Programación

  Lenguaje de   Usuario
  alto nivel

  Lenguaje
  ensamblador

  Lenguaje de
  máquina       Computadora
Lenguajes de Programación

 Importante
   Cada CPU tiene su propio lenguaje de máquina
   interno. La programación a este nivel se realiza
   generalmente en el lenguaje ensamblador específico
   de la computadora. Cada instrucción en lenguaje
   ensamblador corresponde a una instrucción en
   lenguaje de máquina.
   Si existe una estandarización para un lenguaje de
   alto nivel, cualquier programa escrito usando este
   estándar debe poder ejecutarse en cualquier
   computadora después de compilarlo. Esto se le
   conoce como portabilidad de programas.
Lenguajes de Programación

 Elementos de un lenguaje de programación
   Un sublenguaje para definir los datos
      Qué datos tenemos
      Cómo les llamamos
      Cómo son (tipo y/o estructura)
      Qué se puede hacer con ellos

   Un sublenguaje para definir los algoritmos
      Qué le hacemos a los datos
      En qué orden (cuándo se lo hacemos)
      Cuántas veces
Metodología de Desarrollo
de Programas
 El desarrollo de programas sigue hoy en dia distintas
 metodologías: De arriba hacia abajo, espiral, modular, etc.
 En este curso Usted aprendera que lo más importante es
 comprender el problema cabalmente. Luego Usted podrá
 encasillarlo en cualquiera de las técnicas existentes.
 Para la comprensión de un problema se requiere que Usted
 este alerta con todos los sentidos.
 El proceso del pensamiento y abstracción del problema NO
 TIENE METODOLOGIA ESPECIFICA.
 “NO” CREA EN CUENTOS DE CAMINO. Por ejemplo entrada,
 proceso y salida. Es posible que funcione pero dese cuenta
 que lo está castrando!!!
 Cuando Usted logre conseguir la explicación más sencilla y la
 analogia correcta a un problema entonces ya lo habrá resuelto.
 Ejercicio: Explique la suma de números enteros, la resta, la
 multiplicación y la división.
Metodología de Desarrollo
de Programas
  Diseño del algoritmo: Descripción de una
  secuencia finita y ordenada de pasos – sin
  ambigüedades – que conducen a la solución
  de un problema dado.

  Herramientas de diseño
   • Diagramas de flujo (para la programación
     estructurada)
   • Círculos y canales de mensaje (programación
     orientada a objetos)
   • Pseudocódigo
   • Trazas personales
   • Grafismos
   • Formulas matemáticas
   • Todo aquello que le ayude a representar el
     problema.
Metodología de Desarrollo
de Programas
   Codificación: Traducción del algoritmo a un programa
   escrito en un lenguaje de programación adecuado
   (código fuente).

   Corrida en frío del programa: Prueba manual de la
   correctitud del programa.
   Depuración del programa: Identificación y eliminación
   de errores.
    • Errores de sintaxis: Violan las reglas del lenguaje
       de programación. Un buen compilador localizará e
       identificará la mayoría de estos automáticamente.
    • Errores lógicos: Equivocaciones que causan que
       el programa se ejecute de forma inesperada o
       incorrecta.
   Ejecución del programa: Ejecución del código
   ejecutable (código en lenguaje de máquina) del
   programa bajo el control del CPU, una instrucción a
   la vez.
Metodología de Desarrollo
de Programas

  Puesta en operación: Instalación del
  hardware y software, capacitación, etc..

  Mantenimiento del programa: Comienza tan
  pronto como el producto es lanzado. Permite
  corregir defectos menores, añadir una mayor
  funcionalidad, ya sea en respuesta a las
  demandas del mercado o a las peticiones
  del usuario.
Metodología de Desarrollo
de Programas
    Análisis E-P-S
–   Especificaciones de entrada: Información necesaria
    para la solución del problema.
       ¿ Qué datos son de entrada ?
       ¿ Cuántos datos se introducirán ?
       ¿ Cuáles datos de entrada son válidos ?

–   Proceso: Operaciones o cálculos necesarios para
    encontrar la solución del problema.
       ¿ Qué tipo de ecuaciones ?
       ¿ Cuántas ecuaciones ?
       ¿ Qué transformaciones sobre la data?
Metodología de Desarrollo
de Programas
    Análisis E-P-S
–   Especificaciones de salida: Resultados finales de los
    cálculos.
         ¿ Cuáles son los datos de salida
         ¿ Cuántos datos de salida se producirán
         ¿ Qué precisión tendrán los resultados
         ¿ Se debe imprimir un encabezado
Metodología de Desarrollo
de Programas
 Diseño del algoritmo
  Un algoritmo debe ser preciso e
  indicar el orden de realización de cada
  paso.
  Un algoritmo debe ser finito. Si se
  sigue un algoritmo, se debe terminar
  en algún momento; o sea, debe tener
  un número finito de pasos.
Ejemplo 1: Supóngase que tiene un examen de PDI.
Según una decisión aleatoria, algunos estudiantes
estudian antes del examen y otros se van a ver un
espectáculo. Realizar el análisis E-P-S y diseñar un
algoritmo para representar esta situación.

      Análisis E-P-S              Diseño del algoritmo

  Entrada: una moneda        Algoritmo
  para hacer la decisión        estudiarONoEstudiar
  aleatoria.
                             0. Inicio
  Proceso: lanzar la
  moneda y luego tomar la    1. Lanzar una moneda.
  decisión.                  2. Si el resultado es “cara” ir a 5.
  Salida: resultado en el    3. Si el resultado es sello estudiar
  examen.                         para el examen.
                             4. Ir a 6.
                             5. Ver un espectáculo.
                             6. Presentar el examen al día
                                  siguiente.
                             7. Fin
Ejemplo 2: Realizar el análisis E-P-S y diseñar un
algoritmo para calcular el área de superficie de un
paralelepípedo de dimensiones l (largo), a (ancho) y h
(altura)

       Análisis E-P-S                     Diseño del algoritmo

  Entradas: tres números      Algoritmo Area
  reales l (largo), a (ancho) 0. Inicio
                              1. Escribir(“Largo del paralelepipedo = ”)
  y h (altura)                2. Leer el valor de l
  Proceso:                    3. Escribir(“Ancho del paralelepipedo = ”)
      Calcular el área del        4. Leer el valor de a
      paralelepípedo              5. Escribir(“Altura del paralelepipedo = ”)
 AS = 2 x (l x a + l x h + a x    6. Leer el valor de h
                h)                7. AS = 2 * (l * a + l * h + a * h)
                                  8. Escribir(“Area del paralelepipedo =”, AS)
  Salidas: número real que        9. Fin
  representa el área (AS)
Metodología de Desarrollo
     de Programas
Codificación
  Traducir el algoritmo producido en el paso anterior en un
  programa escrito en un lenguaje de programación de alto
  nivel (programa fuente o código fuente). En nuestro caso
  C++.
  Los diferentes pasos de un algoritmo se expresan en los
  programas como instrucciones (término usado para los
  lenguajes de máquina y bajo nivel), sentencias o
  proposiciones (términos usados para los lenguajes de alto
  nivel).
Metodología de Desarrollo
     de Programas
Codificación
  Programa: Secuencia de sentencias, cada una de las cuales
  especifica ciertas operaciones que debe ejecutar la
  computadora.
  Tipos básicos de sentencias:
     Sentencias de entrada/salida
     Sentencias aritmético-lógicas
     Sentencias de decisión o selectivas
     Sentencias repetitivas o lazos
Metodología de Desarrollo
      de Programas
Codificación: Tipos básicos de sentencias
   Sentencias de entrada/salida: Sentencias de transferencia de
   información y datos entre dispositivos de E/S (teclado, impresora,
   discos, etc.) y la memoria principal.
   Sentencias aritmético-lógicas: Sentencias que ejecutan operaciones
   aritméticas (suma, resta, multiplicación, etc.) o lógicas (y lógico, o
   lógico, negación).
   Sentencias de decisión o selectivas: Sentencias que permiten la
   selección de tareas alternativas en función de los resultados de
   diferentes expresiones condicionales.
   Sentencias repetitivas o lazos: Sentencias que permiten la repetición
   de secuencias de sentencias un número determinado o indeterminado
   de veces.
Ejemplo 2: Realizar el análisis E-P-S y diseñar un
             algoritmo para calcular el área de superficie de un
             paralelepípedo de dimensiones l (largo), a (ancho) y h
             (altura).

            Diseño del algoritmo                              Codificación
Algoritmo Area                                float Area()
0. Inicio                                     {
                                                 float l, h,a, AS;

1. Escribir(“Largo del paralelepipedo = ”)        printf("Largo del paralelepipedo = ");
2. Leer el valor de l                             scanf(“%f”,&l);
3. Escribir(“Ancho del paralelepipedo = ”)        printf("Ancho del paralelepipedo= ");
4. Leer el valor de a                             scanf(“%f”,&a);
5. Escribir(“Altura del paralelepipedo = ”)       printf("Altura del paralelepipedo= ");
6. Leer el valor de h                             scanf(“%f”,&h);
7. AS = 2 x (l x a + l x h + a x h)               AS = 2 * (l * a + l * h + a * h);
8. Escribir(“Area del paralelepipedo =”,          printf("Area de superficie del
              AS)                                     paralelepipedo = %f", AS);
9. Fin                                        }
Metodología de Desarrollo
de Programas
 Corrida en frío del programa
   El programador realiza una corrida en frío
   sobre el programa fuente escogiendo un
   conjunto de datos de entrada, ejecutando
   manualmente cada sentencia del programa
   fuente y verificando que los resultados
   obtenidos son los esperados de acuerdo al
   conjunto de datos de entrada.

   Como una técnica de depuración, el
   programador debe realizar este proceso
   utilizando conjuntos de datos que permitan
   ejecutar todos los “caminos” posibles del
   programa.
Ejemplo 2: Realizar el análisis E-P-S y diseñar un
            algoritmo para calcular el área de superficie de un
            paralelepípedo de dimensiones l (largo), a (ancho) y h
            (altura)

               Codificación                             Corrida en frío
float Area()                                 l = 3.0
{                                            a = 2.5
   float l, h,a, AS;                         h = 7.3
                                             AS = 2 x (3.0 x 2.5 + 3.0 x 7.3 +
    printf("Largo del paralelepipedo = ");          2.5 x 7.3) = 95.3
    scanf(“%f”,&l);
    printf("Ancho del paralelepipedo= ");
    scanf(“%f”,&a);
    printf("Altura del paralelepipedo= ");
    scanf(“%f”,&h);
    AS = 2 * (l * a + l * h + a * h);
    printf("Area de superficie del
        paralelepipedo = %f", AS);
}
Metodología de Desarrollo
de Programas
 Ejecución del programa
   El programa fuente es introducido a la
   computadora utilizando un programa
   llamado editor.
   Una vez editado, el programa fuente es
   traducido por el compilador a un programa
   escrito en lenguaje de máquina (código
   objeto), siempre y cuando el programa no
   tenga errores de sintaxis (errores de
   gramática).
   Ejemplo
    if (a < b    // Falta un paréntesis que cierra
Metodología de Desarrollo
de Programas
 Ejecución del programa
   Si el programa fuente tiene errores de
   sintaxis no se genera código objeto. Los
   errores deben ser corregidos usando el
   editor y luego se el programa fuente se debe
   volver a compilar.
   Cuando el programa está sintácticamente
   correcto, el código objeto es encadenado
   con las funciones de librería (otros
   programas) requeridas usando un programa
   llamado encadenador.
Metodología de Desarrollo
de Programas
 Ejecución del programa
   El código objeto compilado y encadenado es
   cargado en la memoria principal para su
   ejecución por un programa llamado
   cargador.
   El código objeto compilado, enlazado y
   cargado (código ejecutable) es ejecutado
   con los datos de entrada.
Metodología de Desarrollo
de Programas
 Comprobación del programa
   Comprobar que el programa realiza las
   tareas para las cuales ha sido diseñado y
   produce el resultado correcto y esperado.
   Si el programa tiene errores de lógica
   (errores en el método de solución por lo que
   las salidas obtenidas no corresponden con
   las salidas esperadas), éstos deben ser
   corregidos en el programa fuente usando el
   editor, el cual se debe volver a compilar.
   Ejemplo
   b = 0;
   c = 5/b;         // División entre cero
Metodología de Desarrollo
           de Programas
                                                                  Funciones
Programa                Programa                                  de librería
fuente                  fuente
             Editor                     Compilador    Encadenador
                                                                                Código
                                                                                objeto
                                                                 Código
                   SI                     Errores      NO        objeto
                                                                          Cargador
                                          de
         Corregir errores en              sintaxis                           Código
         el programa fuente                                                  ejecutable
                                   SI                 Errores Resultados
                                                      de lógica
                                                                         Ejecución

                                                            NO
                                               Solución del problema
Ejercicios

 Suponga que dispone de un Robot que
 sigue instrucciones muy simples:
 mover <dirección> <# de pasos>,
 tomar objeto, dejar objeto.
 Proponga como trasladar un objeto
 desde A hasta B dando instrucciones
 al Robot.
 Qué suposiciones esta haciendo
 acerca del robot: ¿Tiene visión?
 ¿Escucha?
Ejercicios

 Busque en diferentes manuales de
 vehiculos cómo cambiar un caucho.
 Busque una receta de cocina.
 Busque las instrucciones de como
 armar algún juguete para niños.
 Preguntese acerca del nivel de detalle
 en cada caso. Hace falta mas o menos
 detalle. Critique.
Ejercicios

Realizar el análisis E-P-S y diseñar un algoritmo para
resolver los siguientes problemas:
   Cambiar el caucho a un carro.
   Comprar una entrada para un concierto.
   Saber si un número n es primo o no. Correr el algoritmo en
   frío para los valores de n = 131, n = 28, n = 7 y n = 1024.
   Calcular la circunferencia y superficie de un círculo.
Ejercicios

Un corredor de maratón recorre una distancia d en h horas y
m minutos. Calcular el tiempo medio en minutos por
kilómetros. Correr el programa en frío para los valores d =
42,195 Km., h = 2 y m = 25.

Encontrar la media de una lista indeterminada de números
positivos terminada con un número negativo. Correr el
programa en frío para la lista 2, 4, 5, 6, 23, 54, 12, 65, -1.
Resolución de Ejercicios
Cambiar el caucho a un carro.
      Algoritmo pinchazo
      0. Inicio
      1. Si el gato del carro está dañado
              Llamar a un amigo
              Ir a 2
          sino
              Sacar el gato
              Poner el gato
              Levantar el coche con el gato
              Aflojar y sacar los tornillos del caucho
              Quitar el caucho
              Poner el caucho de repuesto
              Poner los tornillos y apretarlos
              Bajar el gato
              Guardar el gato
          fin_si
      2. Fin

Más contenido relacionado

La actualidad más candente

La actualidad más candente (13)

Introducción a la Programación.
Introducción a la Programación.Introducción a la Programación.
Introducción a la Programación.
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Tutorial conceptos programacion
Tutorial conceptos programacionTutorial conceptos programacion
Tutorial conceptos programacion
 
Presentacion Programacion
Presentacion ProgramacionPresentacion Programacion
Presentacion Programacion
 
Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programación
 
Presentacion
PresentacionPresentacion
Presentacion
 
Clase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionClase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacion
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Diapositivas fundamentos-de-programacion
Diapositivas fundamentos-de-programacionDiapositivas fundamentos-de-programacion
Diapositivas fundamentos-de-programacion
 
Cristian david castro
Cristian david castroCristian david castro
Cristian david castro
 
Taller de fundamentos de programacion
Taller de fundamentos de programacionTaller de fundamentos de programacion
Taller de fundamentos de programacion
 
FUNDAMENTOS DE PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓNFUNDAMENTOS DE PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
 
Diap 01
Diap 01Diap 01
Diap 01
 

Destacado

Lenguaje de máquina y lenguaje ensamblador
Lenguaje de máquina y lenguaje ensambladorLenguaje de máquina y lenguaje ensamblador
Lenguaje de máquina y lenguaje ensambladorAdriana Polly
 
Generaciòn de la robotica y lenguajes de programacion
Generaciòn de la robotica y lenguajes de programacionGeneraciòn de la robotica y lenguajes de programacion
Generaciòn de la robotica y lenguajes de programacionMil La
 
Lenguaje alto y bajo_Huber Nava
Lenguaje alto y bajo_Huber NavaLenguaje alto y bajo_Huber Nava
Lenguaje alto y bajo_Huber NavaHuber2907
 
Lenguajes De Programacion
Lenguajes De ProgramacionLenguajes De Programacion
Lenguajes De Programacionfcolauravel
 
Lenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipeLenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipeDanielRomoDR
 
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURGRelatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURGCibele Vasconcelos Dziekaniak
 
Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador evelynm10
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensambladorgbermeo
 

Destacado (20)

Tema 2
Tema 2Tema 2
Tema 2
 
Algoritmo para cambiar un neumático
Algoritmo para cambiar un neumáticoAlgoritmo para cambiar un neumático
Algoritmo para cambiar un neumático
 
Lenguaje de máquina y lenguaje ensamblador
Lenguaje de máquina y lenguaje ensambladorLenguaje de máquina y lenguaje ensamblador
Lenguaje de máquina y lenguaje ensamblador
 
Generaciòn de la robotica y lenguajes de programacion
Generaciòn de la robotica y lenguajes de programacionGeneraciòn de la robotica y lenguajes de programacion
Generaciòn de la robotica y lenguajes de programacion
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Lenguaje alto y bajo_Huber Nava
Lenguaje alto y bajo_Huber NavaLenguaje alto y bajo_Huber Nava
Lenguaje alto y bajo_Huber Nava
 
Conceptos basicos algoritmos
Conceptos basicos algoritmosConceptos basicos algoritmos
Conceptos basicos algoritmos
 
Historia de los cpu
Historia de los cpuHistoria de los cpu
Historia de los cpu
 
Lenguajes De Programacion
Lenguajes De ProgramacionLenguajes De Programacion
Lenguajes De Programacion
 
Algoritmos+y+solucion+de+problemas
Algoritmos+y+solucion+de+problemasAlgoritmos+y+solucion+de+problemas
Algoritmos+y+solucion+de+problemas
 
Unidad 1 interfaz
Unidad 1 interfazUnidad 1 interfaz
Unidad 1 interfaz
 
Ots 2014 2 a5
Ots 2014 2 a5Ots 2014 2 a5
Ots 2014 2 a5
 
Tipos De Lenguajes
Tipos De LenguajesTipos De Lenguajes
Tipos De Lenguajes
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Lenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipeLenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipe
 
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURGRelatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
 
Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador
 
Lenguajeensamblador
LenguajeensambladorLenguajeensamblador
Lenguajeensamblador
 
Mipag web
Mipag webMipag web
Mipag web
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 

Similar a Introducccion programacion

02- Clase 1 - UD2 - Lenguajes.pdf
02- Clase 1 - UD2 -  Lenguajes.pdf02- Clase 1 - UD2 -  Lenguajes.pdf
02- Clase 1 - UD2 - Lenguajes.pdfNancyHerrera88
 
Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01Fernando Jim
 
Universidad de panamá kathia j
Universidad de panamá kathia jUniversidad de panamá kathia j
Universidad de panamá kathia jJoel Boya
 
Diseño de Algoritmos
 Diseño de Algoritmos Diseño de Algoritmos
Diseño de AlgoritmosTaniaCalle
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacionmichelledelgado97
 
3 Conceptos progamacion-tema3
3 Conceptos progamacion-tema33 Conceptos progamacion-tema3
3 Conceptos progamacion-tema3Elba Sepúlveda
 
LENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONLENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONKathGon1
 
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOadark
 
Conceptos Básicos de Programación
Conceptos Básicos de ProgramaciónConceptos Básicos de Programación
Conceptos Básicos de ProgramaciónMaraIsabel87
 
Clase 1 - Programación.pptx
Clase 1 - Programación.pptxClase 1 - Programación.pptx
Clase 1 - Programación.pptxnaldocz1
 
Powerpoint jimpulgar
Powerpoint jimpulgarPowerpoint jimpulgar
Powerpoint jimpulgarjimsaso
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionalexlo92
 
Presentacion_Lenguajes_Programacion
Presentacion_Lenguajes_ProgramacionPresentacion_Lenguajes_Programacion
Presentacion_Lenguajes_Programacionymendal
 
Tema 1.3.- Programación
Tema 1.3.- ProgramaciónTema 1.3.- Programación
Tema 1.3.- ProgramaciónYenny Salazar
 
Intro ProgramacióN
Intro ProgramacióNIntro ProgramacióN
Intro ProgramacióNAlfonso
 

Similar a Introducccion programacion (20)

02- Clase 1 - UD2 - Lenguajes.pdf
02- Clase 1 - UD2 -  Lenguajes.pdf02- Clase 1 - UD2 -  Lenguajes.pdf
02- Clase 1 - UD2 - Lenguajes.pdf
 
Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01
 
Universidad de panamá kathia j
Universidad de panamá kathia jUniversidad de panamá kathia j
Universidad de panamá kathia j
 
Diseño de Algoritmos
 Diseño de Algoritmos Diseño de Algoritmos
Diseño de Algoritmos
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacion
 
3 Conceptos progamacion-tema3
3 Conceptos progamacion-tema33 Conceptos progamacion-tema3
3 Conceptos progamacion-tema3
 
LENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONLENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACION
 
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
 
Conceptos Básicos de Programación
Conceptos Básicos de ProgramaciónConceptos Básicos de Programación
Conceptos Básicos de Programación
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Clase 1 - Programación.pptx
Clase 1 - Programación.pptxClase 1 - Programación.pptx
Clase 1 - Programación.pptx
 
Powerpoint jimpulgar
Powerpoint jimpulgarPowerpoint jimpulgar
Powerpoint jimpulgar
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Presentacion_Lenguajes_Programacion
Presentacion_Lenguajes_ProgramacionPresentacion_Lenguajes_Programacion
Presentacion_Lenguajes_Programacion
 
Tema 1.3.- Programación
Tema 1.3.- ProgramaciónTema 1.3.- Programación
Tema 1.3.- Programación
 
Intro ProgramacióN
Intro ProgramacióNIntro ProgramacióN
Intro ProgramacióN
 
Presentacion c
Presentacion cPresentacion c
Presentacion c
 
Algoritmos - Curso UNE
Algoritmos - Curso UNEAlgoritmos - Curso UNE
Algoritmos - Curso UNE
 
Presentacion c
Presentacion cPresentacion c
Presentacion c
 

Último

Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTESaraNolasco4
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesRaquel Martín Contreras
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docxLuisAndersonPachasto
 
cuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicacuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicaGianninaValeskaContr
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsxJuanpm27
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxLudy Ventocilla Napanga
 

Último (20)

Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materiales
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
 
cuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicacuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básica
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
 

Introducccion programacion

  • 1. Introducción a la Programación. Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes
  • 2. Introducción a la Programación Algunas definiciones importantes: ¿Qué es Programar? Es la acción de escribir instrucciones correctas para que sean interpretadas por una máquina. ¿Qué es el Software? Son programas. Para que tengan sentido de software deben ser ejecutados sobre una máquina. ¿En qué medida nos compete programar? Depende de su interes. De todas formas hoy en día es un “must” para cualquier ingeniero. ¿En que medida dependemos de software? Depende de su estilo de vida, pero para el ciudadano común la dependencia es bastante: celulares, controles remotos (TV, DVD, radios, mp3 players, etc.), cajeros automaticos, etc. ¿Sabia Ud. Que muy pronto será espiado sin darse cuenta?
  • 3. Lenguajes de Programación • ¿Qué es un Lenguaje de Programación? Es un conjunto de reglas para comunicar ideas. Generalmente las ideas se le comunican a una máquina. • De que hay que estar pendiente cuando programamos en un lenguaje: Sintaxis / Semantica Sistema de tipos Errores / Excepciones
  • 4. Lenguajes de Programación • Paradigmas de la Programación Programación Imperativa Programación Orientada por Objeto Programación Funcional Programación por Eventos Programación Concurrente etc. • Lenguajes de programación populares: C, C++, Java, PHP, Perl, XHTML. • Dominios de aplicación importantes: Programación Sistema Sistemas de Gestión de Información
  • 5. Niveles de los lenguajes Lenguaje Natural Lenguaje de Programación Compilador / Interprete Lenguaje Máquina
  • 6. ¿Qué aprenderemos en el curso? Aprenderemos a programar en lenguaje C. C fue diseñado para dar soporte a UNIX a mediados de los 70. Hoy en dia lo encontramos en los mas grandes OS: Linux y FreeBSD. C esta normalizado por ANSI (1988).
  • 7. Enlaces a revisar yahoo.com: Tutorial de C, curso de C google.com: Tutorial de C, curso gratis de C, etc. www.elrincondelc.com www.emagister.com gcc.gnu.org
  • 8. Etapas de la Compilación
  • 9. Lenguaje de Máquina • Lenguaje mas básico, propio de cada computadora, ya que está relacionado con el diseño del hardware de la misma (dependiente de la máquina). Por lo general consisten en cadenas de números al final reducidos a ceros y unos (sistema numérico binario). • Operaciones: • Cargar • Almacenar • Sumar • Restar
  • 10. Lenguaje de Máquina Ejemplo: Código de Dirección Significado operación 00010101 10000001 (a) Cargar contenido de la dir. 129 en Acumulador 00010111 10000010 (b) Sumar contenido de la dir 130 al Acumulador 00010110 10000011 (c) Almacenar contenido del Acumulador en la dir. 131 (c) 10000011 = 27+21+20 = 131.
  • 11. Lenguaje Ensamblador • Consiste en abreviaturas similares al inglés, llamadas instrucciones mnemotécnicas, que permiten representar las operaciones elementales de la computadora (dependiente de la máquina). Ejemplo: Código de Dirección Instrucción en operación lenguaje ensamblador 00010101 10000001 LOAD A 00010111 10000010 ADD B 00010110 10000011 STORE C
  • 12. Lenguaje Ensamblador • Lenguaje de bajo nivel o ensamblador: La computadora no entiende directamente lenguaje ensamblador por lo que un programa escrito en este lenguaje tiene que ser traducido a lenguaje de máquina por un programa llamado un ensamblador para que pueda ser ejecutado por la computadora. Los lenguajes ensambladores todavía requieren que el programador tenga un buen conocimiento de la arquitectura de la computadora. Como los lenguajes ensambladores son dependientes de la máquina, todo programa escrito en un lenguaje ensamblador particular tendrá que ser reescrito si se va a ejecutar en otro tipo de computadora.
  • 13. Lenguaje de Alto Nivel • Permite a los programadores escribir instrucciones en un lenguaje mas familiar para ellos y que contiene notaciones matemáticas comúnmente utilizadas (independiente de la máquina). Ejemplo: Código de Dirección Instrucción en Instrucción en operación lenguaje ensamblador lenguaje de alto nivel 00010101 10000001 LOAD A 00010111 10000010 ADD B 00010110 10000011 STORE C C= A+B Con este tipo de lenguajes, la programación es mas fácil para los usuarios ya que éste no necesita tener conocimiento de la arquitectura de la computadora.
  • 14. Lenguaje de Alto Nivel Lenguaje de alto nivel: Como ocurre con los lenguajes ensambladores, la computadora no entiende directamente lenguaje de alto nivel, por lo que un programa escrito en este lenguaje tiene que ser traducido a lenguaje de máquina por un programa llamado un compilador para que pueda ser ejecutado por la computadora. Los lenguajes de alto nivel permiten portabilidad, mejor expresión de las ideas, facilidad de programar ciertas clases de problemas, menos posibilidad de cometer errores, una visión más amplia del problema, etc.
  • 15. Lenguaje de Alto Nivel Ejemplos de lenguajes de alto nivel: - Java - BASIC -C - Visual Basic - C++ - Pascal - COBOL - FORTRAN - PROLOG - LISP - PL/I - SMALLTALK - ADA
  • 16. Lenguajes de Programación Lenguaje de Usuario alto nivel Lenguaje ensamblador Lenguaje de máquina Computadora
  • 17. Lenguajes de Programación Importante Cada CPU tiene su propio lenguaje de máquina interno. La programación a este nivel se realiza generalmente en el lenguaje ensamblador específico de la computadora. Cada instrucción en lenguaje ensamblador corresponde a una instrucción en lenguaje de máquina. Si existe una estandarización para un lenguaje de alto nivel, cualquier programa escrito usando este estándar debe poder ejecutarse en cualquier computadora después de compilarlo. Esto se le conoce como portabilidad de programas.
  • 18. Lenguajes de Programación Elementos de un lenguaje de programación Un sublenguaje para definir los datos Qué datos tenemos Cómo les llamamos Cómo son (tipo y/o estructura) Qué se puede hacer con ellos Un sublenguaje para definir los algoritmos Qué le hacemos a los datos En qué orden (cuándo se lo hacemos) Cuántas veces
  • 19. Metodología de Desarrollo de Programas El desarrollo de programas sigue hoy en dia distintas metodologías: De arriba hacia abajo, espiral, modular, etc. En este curso Usted aprendera que lo más importante es comprender el problema cabalmente. Luego Usted podrá encasillarlo en cualquiera de las técnicas existentes. Para la comprensión de un problema se requiere que Usted este alerta con todos los sentidos. El proceso del pensamiento y abstracción del problema NO TIENE METODOLOGIA ESPECIFICA. “NO” CREA EN CUENTOS DE CAMINO. Por ejemplo entrada, proceso y salida. Es posible que funcione pero dese cuenta que lo está castrando!!! Cuando Usted logre conseguir la explicación más sencilla y la analogia correcta a un problema entonces ya lo habrá resuelto. Ejercicio: Explique la suma de números enteros, la resta, la multiplicación y la división.
  • 20. Metodología de Desarrollo de Programas Diseño del algoritmo: Descripción de una secuencia finita y ordenada de pasos – sin ambigüedades – que conducen a la solución de un problema dado. Herramientas de diseño • Diagramas de flujo (para la programación estructurada) • Círculos y canales de mensaje (programación orientada a objetos) • Pseudocódigo • Trazas personales • Grafismos • Formulas matemáticas • Todo aquello que le ayude a representar el problema.
  • 21. Metodología de Desarrollo de Programas Codificación: Traducción del algoritmo a un programa escrito en un lenguaje de programación adecuado (código fuente). Corrida en frío del programa: Prueba manual de la correctitud del programa. Depuración del programa: Identificación y eliminación de errores. • Errores de sintaxis: Violan las reglas del lenguaje de programación. Un buen compilador localizará e identificará la mayoría de estos automáticamente. • Errores lógicos: Equivocaciones que causan que el programa se ejecute de forma inesperada o incorrecta. Ejecución del programa: Ejecución del código ejecutable (código en lenguaje de máquina) del programa bajo el control del CPU, una instrucción a la vez.
  • 22. Metodología de Desarrollo de Programas Puesta en operación: Instalación del hardware y software, capacitación, etc.. Mantenimiento del programa: Comienza tan pronto como el producto es lanzado. Permite corregir defectos menores, añadir una mayor funcionalidad, ya sea en respuesta a las demandas del mercado o a las peticiones del usuario.
  • 23. Metodología de Desarrollo de Programas Análisis E-P-S – Especificaciones de entrada: Información necesaria para la solución del problema. ¿ Qué datos son de entrada ? ¿ Cuántos datos se introducirán ? ¿ Cuáles datos de entrada son válidos ? – Proceso: Operaciones o cálculos necesarios para encontrar la solución del problema. ¿ Qué tipo de ecuaciones ? ¿ Cuántas ecuaciones ? ¿ Qué transformaciones sobre la data?
  • 24. Metodología de Desarrollo de Programas Análisis E-P-S – Especificaciones de salida: Resultados finales de los cálculos. ¿ Cuáles son los datos de salida ¿ Cuántos datos de salida se producirán ¿ Qué precisión tendrán los resultados ¿ Se debe imprimir un encabezado
  • 25. Metodología de Desarrollo de Programas Diseño del algoritmo Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un número finito de pasos.
  • 26. Ejemplo 1: Supóngase que tiene un examen de PDI. Según una decisión aleatoria, algunos estudiantes estudian antes del examen y otros se van a ver un espectáculo. Realizar el análisis E-P-S y diseñar un algoritmo para representar esta situación. Análisis E-P-S Diseño del algoritmo Entrada: una moneda Algoritmo para hacer la decisión estudiarONoEstudiar aleatoria. 0. Inicio Proceso: lanzar la moneda y luego tomar la 1. Lanzar una moneda. decisión. 2. Si el resultado es “cara” ir a 5. Salida: resultado en el 3. Si el resultado es sello estudiar examen. para el examen. 4. Ir a 6. 5. Ver un espectáculo. 6. Presentar el examen al día siguiente. 7. Fin
  • 27. Ejemplo 2: Realizar el análisis E-P-S y diseñar un algoritmo para calcular el área de superficie de un paralelepípedo de dimensiones l (largo), a (ancho) y h (altura) Análisis E-P-S Diseño del algoritmo Entradas: tres números Algoritmo Area reales l (largo), a (ancho) 0. Inicio 1. Escribir(“Largo del paralelepipedo = ”) y h (altura) 2. Leer el valor de l Proceso: 3. Escribir(“Ancho del paralelepipedo = ”) Calcular el área del 4. Leer el valor de a paralelepípedo 5. Escribir(“Altura del paralelepipedo = ”) AS = 2 x (l x a + l x h + a x 6. Leer el valor de h h) 7. AS = 2 * (l * a + l * h + a * h) 8. Escribir(“Area del paralelepipedo =”, AS) Salidas: número real que 9. Fin representa el área (AS)
  • 28. Metodología de Desarrollo de Programas Codificación Traducir el algoritmo producido en el paso anterior en un programa escrito en un lenguaje de programación de alto nivel (programa fuente o código fuente). En nuestro caso C++. Los diferentes pasos de un algoritmo se expresan en los programas como instrucciones (término usado para los lenguajes de máquina y bajo nivel), sentencias o proposiciones (términos usados para los lenguajes de alto nivel).
  • 29. Metodología de Desarrollo de Programas Codificación Programa: Secuencia de sentencias, cada una de las cuales especifica ciertas operaciones que debe ejecutar la computadora. Tipos básicos de sentencias: Sentencias de entrada/salida Sentencias aritmético-lógicas Sentencias de decisión o selectivas Sentencias repetitivas o lazos
  • 30. Metodología de Desarrollo de Programas Codificación: Tipos básicos de sentencias Sentencias de entrada/salida: Sentencias de transferencia de información y datos entre dispositivos de E/S (teclado, impresora, discos, etc.) y la memoria principal. Sentencias aritmético-lógicas: Sentencias que ejecutan operaciones aritméticas (suma, resta, multiplicación, etc.) o lógicas (y lógico, o lógico, negación). Sentencias de decisión o selectivas: Sentencias que permiten la selección de tareas alternativas en función de los resultados de diferentes expresiones condicionales. Sentencias repetitivas o lazos: Sentencias que permiten la repetición de secuencias de sentencias un número determinado o indeterminado de veces.
  • 31. Ejemplo 2: Realizar el análisis E-P-S y diseñar un algoritmo para calcular el área de superficie de un paralelepípedo de dimensiones l (largo), a (ancho) y h (altura). Diseño del algoritmo Codificación Algoritmo Area float Area() 0. Inicio { float l, h,a, AS; 1. Escribir(“Largo del paralelepipedo = ”) printf("Largo del paralelepipedo = "); 2. Leer el valor de l scanf(“%f”,&l); 3. Escribir(“Ancho del paralelepipedo = ”) printf("Ancho del paralelepipedo= "); 4. Leer el valor de a scanf(“%f”,&a); 5. Escribir(“Altura del paralelepipedo = ”) printf("Altura del paralelepipedo= "); 6. Leer el valor de h scanf(“%f”,&h); 7. AS = 2 x (l x a + l x h + a x h) AS = 2 * (l * a + l * h + a * h); 8. Escribir(“Area del paralelepipedo =”, printf("Area de superficie del AS) paralelepipedo = %f", AS); 9. Fin }
  • 32. Metodología de Desarrollo de Programas Corrida en frío del programa El programador realiza una corrida en frío sobre el programa fuente escogiendo un conjunto de datos de entrada, ejecutando manualmente cada sentencia del programa fuente y verificando que los resultados obtenidos son los esperados de acuerdo al conjunto de datos de entrada. Como una técnica de depuración, el programador debe realizar este proceso utilizando conjuntos de datos que permitan ejecutar todos los “caminos” posibles del programa.
  • 33. Ejemplo 2: Realizar el análisis E-P-S y diseñar un algoritmo para calcular el área de superficie de un paralelepípedo de dimensiones l (largo), a (ancho) y h (altura) Codificación Corrida en frío float Area() l = 3.0 { a = 2.5 float l, h,a, AS; h = 7.3 AS = 2 x (3.0 x 2.5 + 3.0 x 7.3 + printf("Largo del paralelepipedo = "); 2.5 x 7.3) = 95.3 scanf(“%f”,&l); printf("Ancho del paralelepipedo= "); scanf(“%f”,&a); printf("Altura del paralelepipedo= "); scanf(“%f”,&h); AS = 2 * (l * a + l * h + a * h); printf("Area de superficie del paralelepipedo = %f", AS); }
  • 34. Metodología de Desarrollo de Programas Ejecución del programa El programa fuente es introducido a la computadora utilizando un programa llamado editor. Una vez editado, el programa fuente es traducido por el compilador a un programa escrito en lenguaje de máquina (código objeto), siempre y cuando el programa no tenga errores de sintaxis (errores de gramática). Ejemplo if (a < b // Falta un paréntesis que cierra
  • 35. Metodología de Desarrollo de Programas Ejecución del programa Si el programa fuente tiene errores de sintaxis no se genera código objeto. Los errores deben ser corregidos usando el editor y luego se el programa fuente se debe volver a compilar. Cuando el programa está sintácticamente correcto, el código objeto es encadenado con las funciones de librería (otros programas) requeridas usando un programa llamado encadenador.
  • 36. Metodología de Desarrollo de Programas Ejecución del programa El código objeto compilado y encadenado es cargado en la memoria principal para su ejecución por un programa llamado cargador. El código objeto compilado, enlazado y cargado (código ejecutable) es ejecutado con los datos de entrada.
  • 37. Metodología de Desarrollo de Programas Comprobación del programa Comprobar que el programa realiza las tareas para las cuales ha sido diseñado y produce el resultado correcto y esperado. Si el programa tiene errores de lógica (errores en el método de solución por lo que las salidas obtenidas no corresponden con las salidas esperadas), éstos deben ser corregidos en el programa fuente usando el editor, el cual se debe volver a compilar. Ejemplo b = 0; c = 5/b; // División entre cero
  • 38. Metodología de Desarrollo de Programas Funciones Programa Programa de librería fuente fuente Editor Compilador Encadenador Código objeto Código SI Errores NO objeto Cargador de Corregir errores en sintaxis Código el programa fuente ejecutable SI Errores Resultados de lógica Ejecución NO Solución del problema
  • 39. Ejercicios Suponga que dispone de un Robot que sigue instrucciones muy simples: mover <dirección> <# de pasos>, tomar objeto, dejar objeto. Proponga como trasladar un objeto desde A hasta B dando instrucciones al Robot. Qué suposiciones esta haciendo acerca del robot: ¿Tiene visión? ¿Escucha?
  • 40. Ejercicios Busque en diferentes manuales de vehiculos cómo cambiar un caucho. Busque una receta de cocina. Busque las instrucciones de como armar algún juguete para niños. Preguntese acerca del nivel de detalle en cada caso. Hace falta mas o menos detalle. Critique.
  • 41. Ejercicios Realizar el análisis E-P-S y diseñar un algoritmo para resolver los siguientes problemas: Cambiar el caucho a un carro. Comprar una entrada para un concierto. Saber si un número n es primo o no. Correr el algoritmo en frío para los valores de n = 131, n = 28, n = 7 y n = 1024. Calcular la circunferencia y superficie de un círculo.
  • 42. Ejercicios Un corredor de maratón recorre una distancia d en h horas y m minutos. Calcular el tiempo medio en minutos por kilómetros. Correr el programa en frío para los valores d = 42,195 Km., h = 2 y m = 25. Encontrar la media de una lista indeterminada de números positivos terminada con un número negativo. Correr el programa en frío para la lista 2, 4, 5, 6, 23, 54, 12, 65, -1.
  • 43. Resolución de Ejercicios Cambiar el caucho a un carro. Algoritmo pinchazo 0. Inicio 1. Si el gato del carro está dañado Llamar a un amigo Ir a 2 sino Sacar el gato Poner el gato Levantar el coche con el gato Aflojar y sacar los tornillos del caucho Quitar el caucho Poner el caucho de repuesto Poner los tornillos y apretarlos Bajar el gato Guardar el gato fin_si 2. Fin