SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
Indice Modulo Básico

1. Tema 1: Introducción a la Programación:

     * Algoritmos y Lógica de la Programación.

     * Técnicas para el Diseño y Análisis de Sistemas.

 2. Entornos y Tecnologías para el Desarrollo de software.

     * Compilador GNU-GCC

     * Manejador de Proyectos:

         o Integrado: kdevelop.

         o Separado: autoconf.

     * Repositorios Centralizados: CVS.

1.- Introducción a la programación.

                        Cómo desarrollar programas?
Una técnica para escribir Programas




Herramientas

     ●   Editor de Texto

            Indentación

            Resaltado

            Autocompletación

     ●   Compilador GCC (GNU Compiler Collection)

     ●   Herramienta de proyectos: autoconf/KDevelop

     ●   ddd: Depurador Gráfico.

 Qué dificulta la programación?

Hay problemas que aún no estan resueltos ó en su defecto son complicados de
resolver. Se puede resolver buscando los algoritmos y traduciendolos a codigo,
reutilizando código GPL. No hay una caracterización del tipo de aplicaciones más
necesario.
Resolvamos un problema:

     Suponga que se tiene un Robot y solamente obedece 5 ordenes: DER (ir a la
     derecha), IZQ, ARR, ABA, REC (recoger una pieza).

 Cómo hariamos para moverlo a un punto de interes.

       Aproximación simple

       Aproximación eficiente


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
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
      Programación Web

Niveles de los lenguajes


       ●   Lenguaje Natural

       ●   Lenguaje de Programación
       ●   Compilador / Interprete
       ●   Lenguaje Máquina

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

     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 lenguaje ensamblador
operación
     00010101       10000001      LOAD A
     00010111       10000010      ADD B
     00010110       10000011      STORE C

     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

   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.
     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




     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.

     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.

       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.

       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.
      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.
      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?
      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
      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


Entrada: una moneda para hacer la decisión aleatoria.
Proceso: lanzar la moneda y luego tomar la decisión.
Salida: resultado en el examen.
     Diseño del algoritmo


Algoritmo estudiarONoEstudiar
0. Inicio
1. Lanzar una moneda.
2. Si el resultado es “cara” ir a 5.
3. Si el resultado es sello estudiar 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

Entradas: tres números reales l (largo), a (ancho) y h (altura)
Proceso:
         Calcular el área del paralelepípedo
AS = 2 x (l x a + l x h + a x h)
Salidas: número real que representa el área (AS)
      Diseño del algoritmo
Algoritmo Area
0. Inicio
1. Escribir(“Largo del paralelepipedo = ”)
2. Leer el valor de l
3. Escribir(“Ancho del paralelepipedo = ”)
4. Leer el valor de a
5. Escribir(“Altura del paralelepipedo = ”)
6. Leer el valor de h
7. AS = 2 * (l * a + l * h + a * h)
8. Escribir(“Area del paralelepipedo =”, AS)
9. Fin

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

      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
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                         printf("Largo del
 paralelepipedo = ”)                        paralelepipedo = ");
 2. Leer el valor de l                          scanf(“%f”,&l);
 3. Escribir(“Ancho del                         printf("Ancho del
 paralelepipedo = ”)                        paralelepipedo= ");
 4. Leer el valor de a                          scanf(“%f”,&a);
 5. Escribir(“Altura del                        printf("Altura del
 paralelepipedo = ”)                        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                          printf("Area de superficie del
 paralelepipedo =”,                                paralelepipedo = %f", AS);
               AS)                          }
 9. Fin
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
     printf("Largo del
                                           AS = 2 x (3.0 x 2.5 + 3.0 x
 paralelepipedo = ");                      7.3 +
     scanf(“%f”,&l);                              2.5 x 7.3) = 95.3
     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);
 }
●   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

       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.

       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.

       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
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?

     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.
     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.
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
Introducción al Lenguaje de Programación C

Fue diseñado e implementado por Brian Kernighan y Dennis Ritchie en 1972, a
partir de los lenguajes BCPL (1967) y B (1970). Su desarrollo está estrechamente
vinculado al del sistema operativo UNIX.

Combina características de los lenguajes de alto nivel (sentencias de control y
manipulación de datos) y de los lenguajes de bajo nivel (manejo de bits).
Es independiente del hardware.

¿Cual es la diferencia entre C y C++?

C++ es una extensión de C inventado por Bjarne Stroustrup a principio de la
década de 1980 en los laboratorios Bell.

Es un lenguaje de programación híbrido. Permite usar tanto la técnica de
programación estructurada y como la técnica de programación orientada a
objetos.


Enfoques de Programación


    ●   Programación estructurada (evolucionó en los sesenta y setenta)


    ●   Programación orientada a objetos (OOP: Object- Oriented Programming)
        (evolucionó en los ochenta)


Programación estructurada


Enfoque disciplinado que permite escribir programas estructurados, utilizando las
    siguientes tres estructuras de control bien definidas:
        Secuencial (asignación, lectura, escritura)
        Decisión o selección (simple, doble, múltiple)
        Repetición (repita-mientras, hacer-mientras, repita-para)


Programación orientada a acciones donde la unidad básica es la función.

Programación orientada a objetos


 Encapsula datos (atributos) y métodos (comportamiento) en objetos.
Objetos Computacionales: Componentes de software reutilizables que
  modelan objetos del mundo real.
 Un objeto, en general, es un ente que puede ser percibido con alguno de los
 sentidos.

     La unidad minima en la POO es la clase. Una clase es a un objeto lo que una
     idea es a un hecho.



     Ejemplo:


     Clase: Libro. Objetos: El mundo de Sofia. Hostein Gaarder. Piense como
        Leonardo Da Vinci. Michael Gelb.
     Clase: Planeta. Objetos: Mercurio, Venus, La Tierra.

¿ Por qué Programación Estructurada ?

     Vamos a estudiar en este curso la programación estructurada por las
     siguientes razones:



     Los objetos se componen en parte de fragmentos de programación
         estructurada.


     Los métodos se implementan usando programación estructurada.

Lenguajes de Programación C/C++
     Características generales


     Simple.
     Sintaxis Flexible.
     Flujo de control estructurado.
     Tipos de datos variados.
     Posibilidad de abstracción de datos.
     Amplia variedad de operadores.


Elementos sintácticos
Palabras clave
        Identificadores
        Delimitadores
        Comentarios

Palabras reservadas en C

    Las palabras listadas a continuación son reservadas del compilador y no
    pueden ser utilizadas para otro propósito que no sea el predefinido.


                            Palabras reservadas en C

        auto               break       case                    char        const
        continue           default     do                      double      else
        goto               if          float                   enum        extern
        float              for         int                     long        return
        register           short       signed                  sizeof      static
        struct             switch      typedef                 union      unsigned
        void               volatile    while

Identificadores

    Consideraciones Semanticas

    ●   Nombres que permiten señalar, mencionar o hacer referencia a los
        diferentes objetos manipulados por un programa.
    ●   Deben resultar significativos, sugiriendo lo que representan.


    Consideraciones Sintacticas


    ●   No pueden ser palabras reservadas.
    ●   El primer caracter debe ser una letra (ó un underscore).
    ●   Las letras mayusculas y minusculas son diferentes. Ej: “A” es diferente que
        “a”.
    ●   En la mayoria de los compiladores la máxima longitud es de al menos 31
        caracteres.

Ejemplos de identificadores
          Ejemplos:
Identificadores válidos


          promedio, TempMinima, _parametro_auxiliar, __p4,
          Color_Pared, _VALMAX, VAL_MINIMO5


        Identificadores inválidos


       4promedio, -TempMinima, parámetro_auxiliar, =_p4,
          8Color_Pared, °_VALMAX, ?VAL_MINIMO5

Delimitadores

             Signos especiales que permiten al compilador separar y reconocer las
       diferentes unidades sintácticas del lenguaje.


       ; (punto y coma). Se considera el de terminación, que es necesario cuando
           finaliza cada una de las sentencias o declaraciones.
       , (coma). Separa dos elementos consecutivos de una lista.
       ( ) (paréntesis). Enmarca una lista de parámetros, expresiones o
            condiciones.
       [ ] (corchetes). Enmarca la dimensión o el subíndice de un arreglo.
       { } (llaves). Enmarca un bloque de sentencias o una lista de valores
          iniciales.

comentarios

●   Permiten que el programador documente sus programas.

●   Los comentarios dan legilibilidad al programa.
●   Deben ser actualizados con regularidad.
●   No representan ningún peso para el desempeño final del programa pues son
    completamente ignorados por el compilador.

       Características Semanticas:

Deben ser coherentes con el programa.
Deben ser relevantes.
Deben mantenerse al día.
Siempre deben enriquecer el programa: conceptos, gráficos, relaciones entre
    funciones, etc..
En C los comentarios empiezan por los caracteres /* y terminan con
     los caracteres */.

 Pueden comprender varias líneas y estar distribuidos de cualquier forma, pero
   todo aquello que está entre el /* (inicio del comentario) y el */ (fin del
   comentario) es simplemente ignorado por el compilador.

Sintaxis de un comentario:

     Ejemplos:


    /* Esto es un comentario simple. */


    /* Esto es un comentario más largo,
        distribuido en varias líneas. El
        texto se suele alinear por la izquierda. */


    /****************************************
    * Esto es un comentario de varias         *
    * líneas, encerrado en una caja para *
    * llamar la atención.                     *
    *****************************************/

Un programa simple en C

             /* Evaluacion del polinomio x*x+x-1 en x=2 */

    int main()
    {
             int x, r; // Declaracion de la variable x y r
             r=x*x+x-1; // Calculo del resultado
    }

Consideraciones del programa anterior:

     La primera linea describe el propósito del programa.

Todo programa debe contener un punto de entrada para su ejecución:
        int main()
                          La llave que abre { indica el comienzo del cuerpo de la
                             función, mientras que la llave que cierra } indica el
final del cuerpo de la función.
                      {
                          int x, r; // Declaracion de la variable x y r


                          r=x*x+x-1; // Calculo del resultado
                      }

Programas en C++

     Esta línea dice al compilador que dos variables del tipo entero x y r, se van a
     usar en el programa. El compilador reservará espacio en memoria para
     estas variables durante su ejecución. Toda variable usada en un programa
     debe ser declarada y se le debe asignar un tipo de dato.

                                  int x, r;


El calculo del valor del polinomio se hace de la forma esperada:
                                     r = x*x+x-1

Programa en C

     La función principal y obligatoria de todo programa en C es la función main:

     void main( )
       {
            Aqui va el código.
       }


Sintaxis de un Prog. en C
     Sintaxis formal 1

/* Comentarios */
Declaración de importaciones
Definición de constantes                      ⇐ Opcional
Definición de tipos                           ⇐ Opcional
Declaración de prototipos                     ⇐ Opcional
Declaración de variables globales             ⇐ Opcional


void main ( )
{
Declaración de variables locales        ⇐ Opcional
     Declaración de constantes locales       ⇐ Opcional
     Conjunto de sentencias                  ⇐ Cuerpo de la función
}
Definición de funciones                      ⇐ Opcional

       Sintaxis formal 2


/* Comentarios */
Declaración de importaciones
Definición de constantes                     ⇐ Opcional
Definición de tipos                          ⇐ Opcional
Declaración de variables globales            ⇐ Opcional


Definición de funciones                      ⇐ Opcional


void main ( )
{
     Declaración de variables locales        ⇐ Opcional
     Declaración de constantes locales       ⇐ Opcional


     Conjunto de sentencias                  ⇐ Cuerpo de la funció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


Según Wirth: Programa = Algoritmo + Datos
Conjunto de sentencias

Estructuras de control

El proceso de diseño del algoritmo y posterior codificación del programa consiste
en definir las acciones o sentencias que resolverán el problema.
En un programa las sentencias son ejecutadas de forma secuencial y en el orden
en que aparecen escritas, a menos de que exista una indicación de salto abrupto.

Estructuras de Control

Programa lineal: Las sentencias se ejecutan secuencialmente en el orden en que
aparecen escritas.




Programa no lineal: Se interrumpe la secuencia mediante sentencias de
bifurcación.
Tipos de estructuras de control

La programación estructurada se caracteriza por utilizar tres estructuras de
control. Todos los programas pueden ser escritos en términos de estas
estructuras de control (Bohm y Jacopini):


    ●   Estructuras secuenciales
    ●   Estructuras de decisión o selección
    ●   Estructuras de repetición

Estructuras Secuenciales

Se ejecutan en secuencia sin posibilidad que la sentencia    siguiente a ejecutar
pueda ser otra diferente de la que sigue en la secuencia.


Tipo de sentencia       Pseudocódigo          Pseudocódigo            Código
                        en inglés             en español              en C

Comienzo de proceso        begin               Inicio                   {
Fin de proceso             end                 Fin                      }
Entrada (lectura)          read                Leer                   scanf
Salida (escritura)         write               Escribir               printf
Asignación                 A←5óA=5             A←5óA=5                A=5
Sentencia de Entrada (Lectura)

Permite leer de la entrada estandar determinados valores y             asignarlos a
determinadas variables. La entrada estandar puede estar determinada por los
dispositivos de entrada (teclados, unidades de disco, tarjetas de red, etc.)

Notación algorítmica

                Leer (lista de variables de entrada)
                Leer (a, b, c)

Notación en C

                scanf(“tipos”,&var1,&var 2, …,&varn);
                scanf(“tipos”,&a,&b,&c);

Sentencia de Salida (Escritura)

Permite escribir los resultados de un programa. La salida puede aparecer en un
dispositivo de salida (pantalla, impresora, etc.)


Notación algorítmica

                Escribir (mensajes y/o variables de salida)
                Escribir (“El resultado es”, resultado)

Notación en C++

                printf(“mensajes + tipos”, var1, var2, ..., varN);
                printf(“El resultado es %tipo”, resultado).

Ejemplo: ¡Hola Mundo!

#include <stdlib.h>

int main()
{
     printf(“¡Hola Mundo! n”);
    return 0;
}

Ejemplo 2: Saludo Personalizado.

#include <stdlib.h>
int main()
{
      char nombre[20];
    printf(“Ingrese su nombre: ”);
      scanf(“%s”, nombre);
      printf(“Hola %sn”, nombre);
    return 0;
}

Tipos Básicos de Datos en C

Recordar: Programa = Datos + Algoritmos


Entonces se necesitan:

    Un sublenguaje para definir los datos:
             Representación del problema en datos
             Nombres de las variables
             Tipos (enteros, reales, caracteres, ¿nuevos tipos?)
             Operaciones sobre los tipos (sumas, restas, juntura, ¿nuevas
               operaciones?, etc.)


      Un sublenguaje para definir los algoritmos:
             Qué le hacemos a los datos.
             En qué orden (cuándo se lo hacemos).
             Cuántas veces.

Conceptos Básicos

      Dato: En el computador un dato siempre se resume a un conjunto de bits.
      Dato
Un conjunto de reglas sobre esos bits forman un tipo de dato. Por ejemplo: un
dato de tipo entero, un dato de tipo caracter.

    Dos tipos de datos básicos
      1) Números: Entero, punto flotante de precisión variable, dirección de
          memoria.
      2) Carácter: Básicamente su utilizan para formar palabras.
A partir de estas dos clases de datos, los lenguajes de programación incorporan
    diversos tipos de datos que son reutilizables.
Las propiedades y operadores aplicables a dichos tipos de datos nos permiten
    modelar problemas del quehacer en la computación (muy amplio hoy en día,
    practicamente ubicuo).

Conceptos Básicos


           ●   Valor
           ●   Variable
           ●   Memoria
           ●   Nombre
           ●   Tipo de dato
Valor
    La definición más intuitiva de valor es similar a la de elemento perteneciente
    a un conjunto, el cual representa un tipo de dato. Todos los valores del
    conjunto deben cumplir la misma propiedad, y el conjunto define el tipo de
    operaciones que se pueden aplicar sobre sus valores.


    Ejemplo:


        El valor 2 es un elemento perteneciente al conjunto A = {0, 1, 2, 3, 4, ...}


 tipo de dato es equivalente a conjunto
 valor es equivalente a elemento
Variable
    Espacio de memoria que sirve para almacenar un valor, referenciada por un
    nombre, y perteneciente a un tipo de dato.
    A diferencia del valor, la variable tiene propiedades espacio-temporales, es
    decir, ocupa un espacio determinado de memoria que puede almacenar un
    valor distinto en cada instante de tiempo.
        ¿Cómo se define un instante de tiempo?
    Las variables que habitan en un programa definen el estado en cualquier
    instante de tiempo.
   1. Se definen (declaración)
    2. Se crean
    3. Se modifican
Dentro de las modificaciones estan:
      Se cargan con un valor inicial (datos de entrada)
     Su valor se modifica (programa)
     Llegan a un valor final (resultados de salida)


Criterios a seguir con las variables:
      ●   Cada variable debe tener un objetivo claro e inmutable.
      ●   No olvidarse de darles un valor inicial.
      ●   Controlar (y comprobar) que van tomando valores esperados:
          regularmente aplicar predicados que deben satisfacer y notificar si
          alguna se sale de lo previsto (programación defensiva).
      ●   Los lenguajes fuertemente tipeados obligan a declarar las variables
          antes de usarlas, lo que permite chequear su existencia y la coherencia
          en su uso.
  Memoria
    Puede ser interpretada como un conjunto de pares (variable, valor) que lleva
    asociada dos operaciones: Búsqueda y Almacenamiento.


      1) Memoria = {(Variable1, Valor1), ...,(Variablen, Valorn)}
      2) Búsqueda(Variable, Memoria) = Valor
      3) Almacenamiento(Variable, Valor, Memoria)


                 ……...
                 ……...
          numero 45
                 ……...
            suma -2
                 ……...
                 ……...
                 ……...

                  Memoria = {…, (numero, 45), …, (suma, -2), ...}
Memoria: Asignación


     Expresión sintáctica de la operación de Almacenamiento. Modifica el
     contenido de una variable.


     Notación algorítmica
                      Nombre ←Valor ó Nombre = valor
     Notación en C
                            nombre_variable = valor;

Memoria: Asignación

numero = 45

                           Memoria = {…, (numero, 45), …, ...}

suma = -2

                      Memoria = {…, (numero, 45), …, (suma, -2) ...}

numero = 28

                      Memoria = {…, (numero, 28), …, (suma, -2) ...}

      Cada operación de asignación (Almacenamiento) transforma la memoria de
un estado a otro respecto al tiempo.

     La ejecución de un programa tendrá como efecto (sin considerar los
     procesos de E/S) la transformación de la memoria inicial en otra final,
     realizando un conjunto de asignaciones sobre las n variables que intervienen
     en el programa, ejecutadas según un flujo de control establecido.

     La asignación X ←7 equivale a decir que X es una variable a la que se le
     asigna el valor 7.
     La asignación X ←X + 3 evalúa la expresión derecha, en donde la variable
     con nombre X tiene el valor de 7, sumándole la constante 3 y asignando el
     resultado (7 + 3) = 10 a la parte izquierda de la expresión, la variable X.
     De acuerdo a la programación estructurada, la asignación es una estructura
     de control secuencial.


Nombre
identificador que consta de varios caracteres alfanuméricos, de los cuales el
    primero normalmente es una letra.
    Ejemplos
          FechaInicio, NumeroDePersonas, Tmp10, direccion_1, direccion_2,
          _EstaActivado_, Tiempo_De_Ejec_00

Memoria: Asignación

    Cuádrupla V = < N, T, R, K >, donde N es el nombre de la variable, T su
    tipo de dato, R una referencia de memoria asignada a la variable para su
    almacenamiento, y K el valor almacenado.


    Ejemplo
                     V = < X, Entero, 10001, 7 >               X ←7
                       nombre de la variable                       X
                       tipo de dato                                Entero
                       referencia de memoria                       10001
                       valor                                       7


Tipo de dato

    Es la agrupación de un conjunto de valores, sobre el cual se pueden realizar un conjunto de
    operaciones.
    Toda variable debe estar asociada a un tipo de dato con el que se puede determinar univocamente
    el dominio de valores.

     Ejemplo

          El tipo de dato fecha podría estar representado por los atributos DIA, MES y AÑO, siendo
          los tres de tipo entero.


          Las operaciones aplicables sobre el tipo de dato fecha podrían ser:
                 ➢   Mostrar fecha
                 ➢   Incrementar día
                 ➢   Incrementar mes
                 ➢   Incrementar año
                 ➢   Intervalo entre dos fechas
Ejemplo

El tipo de dato coordenada podría estar representado por los atributos X, Y y Z, siendo los
tres de tipo entero.
     Las operaciones aplicables sobre coordenada podrían ser:
                   ➢   Distancia entre dos coordenadas (puntos)
                   ➢   Desplazar un punto
                   ➢   Mostrar el valor de X
                   ➢   Mostrar el valor de Y
                   ➢   Mostrar el valor de Z
     Por el hecho de que distintos valores pertenecientes a diferentes tipos de datos pueden tener la
     misma representación a nivel de máquina, la especificación del tipo de dato (dominio y
     operaciones aplicables) nos permite controlar la interpretación para cada uno.
     Ejemplo
            La secuencia de bits 01000001 (alfabeto binario de longitud 8) puede ser interpretada:
                   ➢   Carácter ‘A’ en el tipo de dato carácter, o
                   ➢   Entero +65 en el tipo de dato entero.

Puede clasificarse como escalar o estructurado.

            ➢   Escalar o simple: Aquel cuyo dominio presenta una propiedad de orden (entero, real,
                carácter, lógico).
            ➢   Estructurado o compuesto: Aquel que se define mediante composición de tipos de datos
                (vector, cadena de caracteres, matriz, registro).

Tipos de Datos en C

       Los lenguajes de programación ofrecen un conjunto completo de tipos de datos escalares y
estructurados con las especificaciones del dominio y operaciones.

     En este curso vamos a estudiar algunos de los tipos de datos que ofrece el lenguaje de

     programación C    .
Tipos de Datos Escalares en C




Tipos de Datos Escalares (Numéricos) en C

Tipo Entero
     Subconjunto finito de los números enteros. El tamaño del subconjunto dependerá del
     número de bits que correspondan al tipo de datos. Mientras más bits mayor será el tamaño
     del subconjunto.
     Ej:
      Entero corto (8 bits) llega hasta 255
      Entero (en un Pentium IV, 32 btis) llega hasta el orden de los 4000 Megaunidades.

Tipos de Datos Escalares (Numéricos) en C++

Tipo Entero

     Dependiendo del número de bits empleado en cada computadora (n), los dominios del tipo de
     dato Entero varían en
              a) –2 (n – 1), ..., 0, ..., 2 (n – 1) – 1 enteros positivos y negativos
                Si el n = 16
                –2 (16 – 1), ..., 0, ..., 2 (16 – 1) – 1
                    = –2 (15), ..., 0, ..., 2 (15) – 1
                    = -32768, …, 0, …, 32767
b) 0, ..., 2n – 1        enteros positivos


             Si n = 16
             0, ..., 216 – 1 = 0, ..., 65535

Tipo de Dato Entero en C++

                     Tipo            # bits              Rango
             Int                          32 -2147483648 ... 2147483647
             Long int                     32 Idem
             Unsigned int                 32 0 ... 4294967295
             Long long                    64 0 ... 18446744073709551615

Tipos de Datos Escalares (Numéricos) en C++

Tipo Real

➢   Subconjunto de los números reales limitado no sólo en el tamaño, sino también en cuanto a la
    precisión. Se conocen como números de punto flotante cuya representación consta de una mantisa
    (parte fraccional), de una base y de un exponente (potencia a la cual se eleva la base).
➢   Para el número 0.437875x103 se tiene:
                mantisa = 0.437875
                base = 10
                exponente = 3


      Ejemplos
        0.08 3739.41 -3.7452 52.3244 -8.12 3.0

Tipo de Dato Real

             Tipo        Nro. bits                  Rango                 Precisión
             float              32         1.17x10-38 a 3.4x1038     6 dígitos decimales

            double              64        2.22x10-308 a 1.79x10308        15 dígitos
                                                                          decimales




Tipos de Datos Escalares (No-Numéricos)

Tipo Carácter
Conjunto finito y ordenado de los caracteres que la computadora reconoce (letra, dígito, signo de
puntuación, etc.)
    Un carácter es almacenado en un byte usando el código de 8 bits ASCII (American Standard Code
for Information Interchange), lo que da la posibilidad de representar 28 = 256 caracteres diferentes.
    Ejemplos
‘v’ ‘.’ ‘A’ ‘a’ ‘)’ ‘{‘ ‘+’ ‘9’ ‘*’
Cada caracter tiene un equivalente en el tipo entero.
Hay otros sistemas de codificación aparte del ASCII, ej UTF-8.


         Tipo Nro. bits
         char    8

Declaración de Variables
En C todas las variables que van a ser usadas en un programa deben ser declaradas al principio de la
función o al principio del programa.

       Los objetivos de la declaración de variables son:

        Asociar un tipo de dato y un identificador único a la variable. Esto también permite que el
       compilador pueda verificar la correctitud de las operaciones en donde interviene la variable.

        Permitir que el compilador sepa cuánto espacio de memoria se necesita para almacenar el valor
       de la variable, y asignar la dirección de memoria donde este valor se va a almacenar.

     tipo_de_dato lista_de_variables;
               Ejemplos
                              int dia, mes, anio;
                              int edad;
                              unsigned int A = 347;
                              float pi = 3.14159;
                              double a, b, c;
                              unsigned long int B = 294967295;
                              long int C, distancia;

     Ejemplos
                              float precio, sub_total;
                              float costo_por_unidad;
                              char am_pm;
                              char letra = ‘Z’, suma = ‘+’;
                              bool error = false;

Tipos de Variables
Variable local
                 Es aquella que está declarada dentro de un bloque delimitado por { }.
                 Sólo se puede usar dentro del bloque en el que ha sido declarada.
Variable global
            Es aquella que está declarada para todo el programa, es decir, fuera de cualquier bloque o
                función. Retiene su valor durante la ejecución de todo el programa.

Declaración de Variables Locales: Ejemplo 1

  #include <stdio.h> ⇐ importacion de encabezados


        int main ()
    {
        double base = 10.5, ⇐ declaración de vars.
            altura = 2.5,
            superficie;
   CUERPO DE LA FUNCION
    }
                                 Bloque             Función


Declaración de Variables Locales: Ejemplo 2
#include <stdlib.h> ⇐ biblioteca
        char logico;            ⇐ variable global
        void main () {
    int i, j = 0, k; ⇐ variable local
             char car1, car2;
             float dividendo, divisor;
             int x, y, z;
             char indicador = 1;
    CUERPO DEL PROGRAMA
        }
Declaración de Variables Locales: Ejemplo 3
#include <stdio.h>
void main ()
{
               double x = 2.0;                                                    B1
               printf(“%f”,x);                 ⇐ imprime 2.0
               {
                               printf(“%f”,x);               ⇐ imprime 2.0   B2
                               double x = 3.0;
                               printf(“%f”,x);               ⇐ imprime 3.0
               }

                   printf(“%f”,x);              ⇐ imprime 2.0
}

Declaración de Variables Locales: Ejemplo 4

void main( )
{
                   int miEntero;                                                       B1
                   miEntero = 503;
                   {
                       int otroEntero;                                       B2
                       otroEntero = miEntero;
                   }
}

Declaración de Variables Globales y Locales: Ejemplo

#include <stdio.h>

int resultado;

int main()
{
    int x, y, z;

    printf(“Introduzca tres numeros enteros: “);
    scanf(“%i%i%i”,&x,&y,&z);
    /* Calcular el producto de los tres numeros */
    resultado = x * y * z;
    printf(“El producto de es %i”, resultado);
    return 0;
}
Ejemplo:
#include <stdio.h>

int main()
{
       int grad_c, grad_f;
       int intervalo;


       intervalo = 20;
       grad_c = 0;
inicio:
       printf("Cantidad de grados centígrados: %i n", grad_c);
       /* NO FUNCIONA ASI: grad_f = 5/9*(grad_c – 32) */
       grad_f = 5*(grad_c - 32)/9;
       printf("Conversión a grados farenheit: %i n", grad_f);
       grad_c = grad_c + 20;
    if (grad_c <= 300)
           goto inicio;
       printf("Fin de la ejecuciónn");
}



Constantes

Constante
          Valor que no cambia durante la ejecución de un programa.
          Puede ser numérica entera, numérica real, lógica, carácter.


Definición de Constantes (Globales)

                                          #define identificador valor
       Asigna un valor a un identificador.
       Un proceso previo a la compilación sustituirá el identificador por el valor en cualquier parte del
       programa donde aparezca el identificador.
Definición de Constantes (Globales)
      Ejemplos
              #define PI 3.14159
              #define MAXIMO 256
              #define PRIMERALETRA ‘A’
              #define MENSAJE "Introduzca su nombre:"


Ejemplo

#include <stdio.h>
#define LONGITUD 32
int main ()
{
    int l1 = LONGITUD, x;
    x = LONGITUD + 1;
      printf(“x = %i“,x);
}

Declaración de Constantes (Locales)

       const tipo_de_dato identificador = valor;

void main ( )
{
   Declaración de constantes          // Opcional
     Declaración de variables locales // Opcional

    Conjunto de sentencias              // Cuerpo de la funcion
}


void main ( )
{
      const int LONGITUD = 32;
      int ln = LONGITUD;


    CUERPO DEL PROGRAMA
}
Ejemplos

void main()
{
   const float pi;
   // Error: pi debe ser inicializada
   // en la declaracion

     pi = 3.14159;
     // Error: no se puede modificar
     // el valor de una constante

}

Ejemplo: Dado el radio de una esfera, calcular su área y su volumen

    #include <iostream.h>
    #define CUATRO 4.0
     float radio;

          int main ()
     {
             const float PI = 3.14159;
             float area, volumen;

              printf(“De el radio de la esfera: ”);
              scanf(“%f”,&radio);
              area = CUATRO * PI * radio * radio;
              printf(“Area = %fn“,area);
              volumen = area * (radio/3);
              printf(“Volumen = %fn“,volumen);
         return 0;
     }
Recuerde.

Al definir o declarar una constante o variable se reserva espacio de memoria principal y se etiqueta con
el identificador correspondiente.




Ejercicios

Definir cada una de las siguientes constantes (consulte las fuentes apropiadas para los valores que se
necesiten).

       A) Como globales
       B) Como locales


       613                      - Número de Avogrado
       613.0                    - Masa del electrón (en Kg)
       -613                     - Diámetro atómico (en cm)
       ‘6’
       “PD-10”
       -3.012x1015
       17x1012
       e

Contenu connexe

Tendances

Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programaciónRonny Parra
 
Tutorial conceptos programacion
Tutorial conceptos programacionTutorial conceptos programacion
Tutorial conceptos programacionMichele André
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
programacion INFORMATICA.pptx
programacion INFORMATICA.pptxprogramacion INFORMATICA.pptx
programacion INFORMATICA.pptxDavidOrtega737036
 
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 programacionjoel210696
 
Introducción a la Programación.
Introducción a la Programación.Introducción a la Programación.
Introducción a la Programación.guestdf1874
 
Presentacion Programacion
Presentacion ProgramacionPresentacion Programacion
Presentacion Programacionguestd5974a6
 
Concepto de programacion
Concepto de programacionConcepto de programacion
Concepto de programacionalanqueeman
 
Introducción a la Programación
Introducción a la Programación Introducción a la Programación
Introducción a la Programación henser
 
Conceptos basicos de la programacion
Conceptos basicos de la programacionConceptos basicos de la programacion
Conceptos basicos de la programacionyamy matin
 
Presentacion info
Presentacion infoPresentacion info
Presentacion infomariopoza00
 
Taller de fundamentos de programacion
Taller de fundamentos de programacionTaller de fundamentos de programacion
Taller de fundamentos de programacionUDECI
 
1.5 Metodología para la Solucion de Problemas
1.5 Metodología para la Solucion de Problemas1.5 Metodología para la Solucion de Problemas
1.5 Metodología para la Solucion de ProblemasMeztli Valeriano Orozco
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónMarco Chunab
 

Tendances (17)

Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programación
 
Tutorial conceptos programacion
Tutorial conceptos programacionTutorial conceptos programacion
Tutorial conceptos programacion
 
Diap 01
Diap 01Diap 01
Diap 01
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
programacion INFORMATICA.pptx
programacion INFORMATICA.pptxprogramacion INFORMATICA.pptx
programacion INFORMATICA.pptx
 
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
 
Introducción a la Programación.
Introducción a la Programación.Introducción a la Programación.
Introducción a la Programación.
 
Presentacion Programacion
Presentacion ProgramacionPresentacion Programacion
Presentacion Programacion
 
Concepto de programacion
Concepto de programacionConcepto de programacion
Concepto de programacion
 
Introducción a la Programación
Introducción a la Programación Introducción a la Programación
Introducción a la Programación
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Conceptos basicos de la programacion
Conceptos basicos de la programacionConceptos basicos de la programacion
Conceptos basicos de la programacion
 
Presentacion info
Presentacion infoPresentacion info
Presentacion info
 
FUNDAMENTOS DE PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓNFUNDAMENTOS DE PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
 
Taller de fundamentos de programacion
Taller de fundamentos de programacionTaller de fundamentos de programacion
Taller de fundamentos de programacion
 
1.5 Metodología para la Solucion de Problemas
1.5 Metodología para la Solucion de Problemas1.5 Metodología para la Solucion de Problemas
1.5 Metodología para la Solucion de Problemas
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 

Similaire à Tema1 b

Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01Fernando Jim
 
02- Clase 1 - UD2 - Lenguajes.pdf
02- Clase 1 - UD2 -  Lenguajes.pdf02- Clase 1 - UD2 -  Lenguajes.pdf
02- Clase 1 - UD2 - Lenguajes.pdfNancyHerrera88
 
LENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONLENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONKathGon1
 
Universidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programaciónUniversidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programaciónKatherine Gonzales
 
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
 
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
 
Tema 1.3.- Programación
Tema 1.3.- ProgramaciónTema 1.3.- Programación
Tema 1.3.- ProgramaciónYenny Salazar
 
Introduccion a la prgrmacion.
Introduccion a la prgrmacion.Introduccion a la prgrmacion.
Introduccion a la prgrmacion.Vladimir Pomares
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
1. que es programacion
1. que es programacion1. que es programacion
1. que es programacionFausto Orozco
 
1. Que es programacion
1. Que es programacion1. Que es programacion
1. Que es programacionFausto Orozco
 
Intro ProgramacióN
Intro ProgramacióNIntro ProgramacióN
Intro ProgramacióNAlfonso
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacionmichelledelgado97
 
Presentacion_Lenguajes_Programacion
Presentacion_Lenguajes_ProgramacionPresentacion_Lenguajes_Programacion
Presentacion_Lenguajes_Programacionymendal
 
QUE ES PROGRAMACION DE SISTEMAS
QUE ES PROGRAMACION DE SISTEMASQUE ES PROGRAMACION DE SISTEMAS
QUE ES PROGRAMACION DE SISTEMASsergiosalazarcano
 

Similaire à Tema1 b (20)

Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01
 
02- Clase 1 - UD2 - Lenguajes.pdf
02- Clase 1 - UD2 -  Lenguajes.pdf02- Clase 1 - UD2 -  Lenguajes.pdf
02- Clase 1 - UD2 - Lenguajes.pdf
 
LENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONLENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACION
 
Universidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programaciónUniversidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programación
 
Universidad de panamá kathia j
Universidad de panamá kathia jUniversidad de panamá kathia j
Universidad de panamá kathia j
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Diseño de Algoritmos
 Diseño de Algoritmos Diseño de Algoritmos
Diseño de Algoritmos
 
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
 
Tema 1.3.- Programación
Tema 1.3.- ProgramaciónTema 1.3.- Programación
Tema 1.3.- Programación
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Introduccion a la prgrmacion.
Introduccion a la prgrmacion.Introduccion a la prgrmacion.
Introduccion a la prgrmacion.
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
1. que es programacion
1. que es programacion1. que es programacion
1. que es programacion
 
1. Que es programacion
1. Que es programacion1. Que es programacion
1. Que es programacion
 
Intro ProgramacióN
Intro ProgramacióNIntro ProgramacióN
Intro ProgramacióN
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacion
 
Presentacion_Lenguajes_Programacion
Presentacion_Lenguajes_ProgramacionPresentacion_Lenguajes_Programacion
Presentacion_Lenguajes_Programacion
 
TEMA 01 PROGRAMACION .pdf
TEMA 01 PROGRAMACION .pdfTEMA 01 PROGRAMACION .pdf
TEMA 01 PROGRAMACION .pdf
 
Software
SoftwareSoftware
Software
 
QUE ES PROGRAMACION DE SISTEMAS
QUE ES PROGRAMACION DE SISTEMASQUE ES PROGRAMACION DE SISTEMAS
QUE ES PROGRAMACION DE SISTEMAS
 

Plus de Aldo Hernán Zanabria Gálvez

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...Aldo Hernán Zanabria Gálvez
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...Aldo Hernán Zanabria Gálvez
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoAldo Hernán Zanabria Gálvez
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesAldo Hernán Zanabria Gálvez
 

Plus de Aldo Hernán Zanabria Gálvez (20)

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
 
mejorando la web guia de html 5
mejorando la web guia de html 5mejorando la web guia de html 5
mejorando la web guia de html 5
 
Guía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdfGuía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdf
 
emprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptxemprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptx
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
 
didactica
didacticadidactica
didactica
 
Tarea1 aldo zanabria
Tarea1 aldo zanabriaTarea1 aldo zanabria
Tarea1 aldo zanabria
 
Tarea 2 aldo zanabria
Tarea 2 aldo zanabriaTarea 2 aldo zanabria
Tarea 2 aldo zanabria
 
Carolinos del milenio pasado - Puno
Carolinos del milenio pasado - PunoCarolinos del milenio pasado - Puno
Carolinos del milenio pasado - Puno
 
ingenieria de sistemas
ingenieria de sistemasingenieria de sistemas
ingenieria de sistemas
 
Electricidad con recursos renovables
Electricidad con recursos renovablesElectricidad con recursos renovables
Electricidad con recursos renovables
 
Variables
VariablesVariables
Variables
 
Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal
 
Calidad de Agua
Calidad de AguaCalidad de Agua
Calidad de Agua
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede Turismo
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y Comunicaciones
 
Plan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la MujerPlan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la Mujer
 
peritaciones y tasación puno
peritaciones y tasación punoperitaciones y tasación puno
peritaciones y tasación puno
 
producción en la empresa turística
producción en la empresa turísticaproducción en la empresa turística
producción en la empresa turística
 

Tema1 b

  • 1. Indice Modulo Básico 1. Tema 1: Introducción a la Programación: * Algoritmos y Lógica de la Programación. * Técnicas para el Diseño y Análisis de Sistemas. 2. Entornos y Tecnologías para el Desarrollo de software. * Compilador GNU-GCC * Manejador de Proyectos: o Integrado: kdevelop. o Separado: autoconf. * Repositorios Centralizados: CVS. 1.- Introducción a la programación. Cómo desarrollar programas?
  • 2. Una técnica para escribir Programas Herramientas ● Editor de Texto Indentación Resaltado Autocompletación ● Compilador GCC (GNU Compiler Collection) ● Herramienta de proyectos: autoconf/KDevelop ● ddd: Depurador Gráfico. Qué dificulta la programación? Hay problemas que aún no estan resueltos ó en su defecto son complicados de resolver. Se puede resolver buscando los algoritmos y traduciendolos a codigo, reutilizando código GPL. No hay una caracterización del tipo de aplicaciones más necesario.
  • 3. Resolvamos un problema: Suponga que se tiene un Robot y solamente obedece 5 ordenes: DER (ir a la derecha), IZQ, ARR, ABA, REC (recoger una pieza). Cómo hariamos para moverlo a un punto de interes. Aproximación simple Aproximación eficiente 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
  • 4. 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 Programación Web Niveles de los lenguajes ● Lenguaje Natural ● Lenguaje de Programación ● Compilador / Interprete ● Lenguaje Máquina 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
  • 5. 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 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.
  • 6. 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 lenguaje ensamblador operación 00010101 10000001 LOAD A 00010111 10000010 ADD B 00010110 10000011 STORE C 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.
  • 7. 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. 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 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
  • 8. programa escrito usando este estándar debe poder ejecutarse en cualquier computadora después de compilarlo. Esto se le conoce como portabilidad de programas. 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. 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
  • 9. Grafismos Formulas matemáticas Todo aquello que le ayude a representar el problema. 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. 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. 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? 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 Diseño del algoritmo
  • 10. 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 Entrada: una moneda para hacer la decisión aleatoria. Proceso: lanzar la moneda y luego tomar la decisión. Salida: resultado en el examen. Diseño del algoritmo Algoritmo estudiarONoEstudiar 0. Inicio 1. Lanzar una moneda. 2. Si el resultado es “cara” ir a 5. 3. Si el resultado es sello estudiar 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 Entradas: tres números reales l (largo), a (ancho) y h (altura) Proceso: Calcular el área del paralelepípedo AS = 2 x (l x a + l x h + a x h) Salidas: número real que representa el área (AS) Diseño del algoritmo
  • 11. Algoritmo Area 0. Inicio 1. Escribir(“Largo del paralelepipedo = ”) 2. Leer el valor de l 3. Escribir(“Ancho del paralelepipedo = ”) 4. Leer el valor de a 5. Escribir(“Altura del paralelepipedo = ”) 6. Leer el valor de h 7. AS = 2 * (l * a + l * h + a * h) 8. Escribir(“Area del paralelepipedo =”, AS) 9. Fin 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). 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 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
  • 12. 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 printf("Largo del paralelepipedo = ”) paralelepipedo = "); 2. Leer el valor de l scanf(“%f”,&l); 3. Escribir(“Ancho del printf("Ancho del paralelepipedo = ”) paralelepipedo= "); 4. Leer el valor de a scanf(“%f”,&a); 5. Escribir(“Altura del printf("Altura del paralelepipedo = ”) 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 printf("Area de superficie del paralelepipedo =”, paralelepipedo = %f", AS); AS) } 9. Fin
  • 13. 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 printf("Largo del AS = 2 x (3.0 x 2.5 + 3.0 x paralelepipedo = "); 7.3 + scanf(“%f”,&l); 2.5 x 7.3) = 95.3 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); }
  • 14. 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 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. 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. 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
  • 15. 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? 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. 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
  • 16. n = 131, n = 28, n = 7 y n = 1024. Calcular la circunferencia y superficie de un círculo. 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
  • 17. Introducción al Lenguaje de Programación C Fue diseñado e implementado por Brian Kernighan y Dennis Ritchie en 1972, a partir de los lenguajes BCPL (1967) y B (1970). Su desarrollo está estrechamente vinculado al del sistema operativo UNIX. Combina características de los lenguajes de alto nivel (sentencias de control y manipulación de datos) y de los lenguajes de bajo nivel (manejo de bits). Es independiente del hardware. ¿Cual es la diferencia entre C y C++? C++ es una extensión de C inventado por Bjarne Stroustrup a principio de la década de 1980 en los laboratorios Bell. Es un lenguaje de programación híbrido. Permite usar tanto la técnica de programación estructurada y como la técnica de programación orientada a objetos. Enfoques de Programación ● Programación estructurada (evolucionó en los sesenta y setenta) ● Programación orientada a objetos (OOP: Object- Oriented Programming) (evolucionó en los ochenta) Programación estructurada Enfoque disciplinado que permite escribir programas estructurados, utilizando las siguientes tres estructuras de control bien definidas: Secuencial (asignación, lectura, escritura) Decisión o selección (simple, doble, múltiple) Repetición (repita-mientras, hacer-mientras, repita-para) Programación orientada a acciones donde la unidad básica es la función. Programación orientada a objetos Encapsula datos (atributos) y métodos (comportamiento) en objetos.
  • 18. Objetos Computacionales: Componentes de software reutilizables que modelan objetos del mundo real. Un objeto, en general, es un ente que puede ser percibido con alguno de los sentidos. La unidad minima en la POO es la clase. Una clase es a un objeto lo que una idea es a un hecho. Ejemplo: Clase: Libro. Objetos: El mundo de Sofia. Hostein Gaarder. Piense como Leonardo Da Vinci. Michael Gelb. Clase: Planeta. Objetos: Mercurio, Venus, La Tierra. ¿ Por qué Programación Estructurada ? Vamos a estudiar en este curso la programación estructurada por las siguientes razones: Los objetos se componen en parte de fragmentos de programación estructurada. Los métodos se implementan usando programación estructurada. Lenguajes de Programación C/C++ Características generales Simple. Sintaxis Flexible. Flujo de control estructurado. Tipos de datos variados. Posibilidad de abstracción de datos. Amplia variedad de operadores. Elementos sintácticos
  • 19. Palabras clave Identificadores Delimitadores Comentarios Palabras reservadas en C Las palabras listadas a continuación son reservadas del compilador y no pueden ser utilizadas para otro propósito que no sea el predefinido. Palabras reservadas en C auto break case char const continue default do double else goto if float enum extern float for int long return register short signed sizeof static struct switch typedef union unsigned void volatile while Identificadores Consideraciones Semanticas ● Nombres que permiten señalar, mencionar o hacer referencia a los diferentes objetos manipulados por un programa. ● Deben resultar significativos, sugiriendo lo que representan. Consideraciones Sintacticas ● No pueden ser palabras reservadas. ● El primer caracter debe ser una letra (ó un underscore). ● Las letras mayusculas y minusculas son diferentes. Ej: “A” es diferente que “a”. ● En la mayoria de los compiladores la máxima longitud es de al menos 31 caracteres. Ejemplos de identificadores Ejemplos:
  • 20. Identificadores válidos promedio, TempMinima, _parametro_auxiliar, __p4, Color_Pared, _VALMAX, VAL_MINIMO5 Identificadores inválidos 4promedio, -TempMinima, parámetro_auxiliar, =_p4, 8Color_Pared, °_VALMAX, ?VAL_MINIMO5 Delimitadores Signos especiales que permiten al compilador separar y reconocer las diferentes unidades sintácticas del lenguaje. ; (punto y coma). Se considera el de terminación, que es necesario cuando finaliza cada una de las sentencias o declaraciones. , (coma). Separa dos elementos consecutivos de una lista. ( ) (paréntesis). Enmarca una lista de parámetros, expresiones o condiciones. [ ] (corchetes). Enmarca la dimensión o el subíndice de un arreglo. { } (llaves). Enmarca un bloque de sentencias o una lista de valores iniciales. comentarios ● Permiten que el programador documente sus programas. ● Los comentarios dan legilibilidad al programa. ● Deben ser actualizados con regularidad. ● No representan ningún peso para el desempeño final del programa pues son completamente ignorados por el compilador. Características Semanticas: Deben ser coherentes con el programa. Deben ser relevantes. Deben mantenerse al día. Siempre deben enriquecer el programa: conceptos, gráficos, relaciones entre funciones, etc..
  • 21. En C los comentarios empiezan por los caracteres /* y terminan con los caracteres */. Pueden comprender varias líneas y estar distribuidos de cualquier forma, pero todo aquello que está entre el /* (inicio del comentario) y el */ (fin del comentario) es simplemente ignorado por el compilador. Sintaxis de un comentario: Ejemplos: /* Esto es un comentario simple. */ /* Esto es un comentario más largo, distribuido en varias líneas. El texto se suele alinear por la izquierda. */ /**************************************** * Esto es un comentario de varias * * líneas, encerrado en una caja para * * llamar la atención. * *****************************************/ Un programa simple en C /* Evaluacion del polinomio x*x+x-1 en x=2 */ int main() { int x, r; // Declaracion de la variable x y r r=x*x+x-1; // Calculo del resultado } Consideraciones del programa anterior: La primera linea describe el propósito del programa. Todo programa debe contener un punto de entrada para su ejecución: int main() La llave que abre { indica el comienzo del cuerpo de la función, mientras que la llave que cierra } indica el
  • 22. final del cuerpo de la función. { int x, r; // Declaracion de la variable x y r r=x*x+x-1; // Calculo del resultado } Programas en C++ Esta línea dice al compilador que dos variables del tipo entero x y r, se van a usar en el programa. El compilador reservará espacio en memoria para estas variables durante su ejecución. Toda variable usada en un programa debe ser declarada y se le debe asignar un tipo de dato. int x, r; El calculo del valor del polinomio se hace de la forma esperada: r = x*x+x-1 Programa en C La función principal y obligatoria de todo programa en C es la función main: void main( ) { Aqui va el código. } Sintaxis de un Prog. en C Sintaxis formal 1 /* Comentarios */ Declaración de importaciones Definición de constantes ⇐ Opcional Definición de tipos ⇐ Opcional Declaración de prototipos ⇐ Opcional Declaración de variables globales ⇐ Opcional void main ( ) {
  • 23. Declaración de variables locales ⇐ Opcional Declaración de constantes locales ⇐ Opcional Conjunto de sentencias ⇐ Cuerpo de la función } Definición de funciones ⇐ Opcional Sintaxis formal 2 /* Comentarios */ Declaración de importaciones Definición de constantes ⇐ Opcional Definición de tipos ⇐ Opcional Declaración de variables globales ⇐ Opcional Definición de funciones ⇐ Opcional void main ( ) { Declaración de variables locales ⇐ Opcional Declaración de constantes locales ⇐ Opcional Conjunto de sentencias ⇐ Cuerpo de la funció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 Según Wirth: Programa = Algoritmo + Datos
  • 24. Conjunto de sentencias Estructuras de control El proceso de diseño del algoritmo y posterior codificación del programa consiste en definir las acciones o sentencias que resolverán el problema. En un programa las sentencias son ejecutadas de forma secuencial y en el orden en que aparecen escritas, a menos de que exista una indicación de salto abrupto. Estructuras de Control Programa lineal: Las sentencias se ejecutan secuencialmente en el orden en que aparecen escritas. Programa no lineal: Se interrumpe la secuencia mediante sentencias de bifurcación.
  • 25. Tipos de estructuras de control La programación estructurada se caracteriza por utilizar tres estructuras de control. Todos los programas pueden ser escritos en términos de estas estructuras de control (Bohm y Jacopini): ● Estructuras secuenciales ● Estructuras de decisión o selección ● Estructuras de repetición Estructuras Secuenciales Se ejecutan en secuencia sin posibilidad que la sentencia siguiente a ejecutar pueda ser otra diferente de la que sigue en la secuencia. Tipo de sentencia Pseudocódigo Pseudocódigo Código en inglés en español en C Comienzo de proceso begin Inicio { Fin de proceso end Fin } Entrada (lectura) read Leer scanf Salida (escritura) write Escribir printf Asignación A←5óA=5 A←5óA=5 A=5
  • 26. Sentencia de Entrada (Lectura) Permite leer de la entrada estandar determinados valores y asignarlos a determinadas variables. La entrada estandar puede estar determinada por los dispositivos de entrada (teclados, unidades de disco, tarjetas de red, etc.) Notación algorítmica Leer (lista de variables de entrada) Leer (a, b, c) Notación en C scanf(“tipos”,&var1,&var 2, …,&varn); scanf(“tipos”,&a,&b,&c); Sentencia de Salida (Escritura) Permite escribir los resultados de un programa. La salida puede aparecer en un dispositivo de salida (pantalla, impresora, etc.) Notación algorítmica Escribir (mensajes y/o variables de salida) Escribir (“El resultado es”, resultado) Notación en C++ printf(“mensajes + tipos”, var1, var2, ..., varN); printf(“El resultado es %tipo”, resultado). Ejemplo: ¡Hola Mundo! #include <stdlib.h> int main() { printf(“¡Hola Mundo! n”); return 0; } Ejemplo 2: Saludo Personalizado. #include <stdlib.h>
  • 27. int main() { char nombre[20]; printf(“Ingrese su nombre: ”); scanf(“%s”, nombre); printf(“Hola %sn”, nombre); return 0; } Tipos Básicos de Datos en C Recordar: Programa = Datos + Algoritmos Entonces se necesitan: Un sublenguaje para definir los datos: Representación del problema en datos Nombres de las variables Tipos (enteros, reales, caracteres, ¿nuevos tipos?) Operaciones sobre los tipos (sumas, restas, juntura, ¿nuevas operaciones?, etc.) Un sublenguaje para definir los algoritmos: Qué le hacemos a los datos. En qué orden (cuándo se lo hacemos). Cuántas veces. Conceptos Básicos Dato: En el computador un dato siempre se resume a un conjunto de bits. Dato Un conjunto de reglas sobre esos bits forman un tipo de dato. Por ejemplo: un dato de tipo entero, un dato de tipo caracter. Dos tipos de datos básicos 1) Números: Entero, punto flotante de precisión variable, dirección de memoria. 2) Carácter: Básicamente su utilizan para formar palabras.
  • 28. A partir de estas dos clases de datos, los lenguajes de programación incorporan diversos tipos de datos que son reutilizables. Las propiedades y operadores aplicables a dichos tipos de datos nos permiten modelar problemas del quehacer en la computación (muy amplio hoy en día, practicamente ubicuo). Conceptos Básicos ● Valor ● Variable ● Memoria ● Nombre ● Tipo de dato Valor La definición más intuitiva de valor es similar a la de elemento perteneciente a un conjunto, el cual representa un tipo de dato. Todos los valores del conjunto deben cumplir la misma propiedad, y el conjunto define el tipo de operaciones que se pueden aplicar sobre sus valores. Ejemplo: El valor 2 es un elemento perteneciente al conjunto A = {0, 1, 2, 3, 4, ...} tipo de dato es equivalente a conjunto valor es equivalente a elemento Variable Espacio de memoria que sirve para almacenar un valor, referenciada por un nombre, y perteneciente a un tipo de dato. A diferencia del valor, la variable tiene propiedades espacio-temporales, es decir, ocupa un espacio determinado de memoria que puede almacenar un valor distinto en cada instante de tiempo. ¿Cómo se define un instante de tiempo? Las variables que habitan en un programa definen el estado en cualquier instante de tiempo. 1. Se definen (declaración) 2. Se crean 3. Se modifican
  • 29. Dentro de las modificaciones estan: Se cargan con un valor inicial (datos de entrada) Su valor se modifica (programa) Llegan a un valor final (resultados de salida) Criterios a seguir con las variables: ● Cada variable debe tener un objetivo claro e inmutable. ● No olvidarse de darles un valor inicial. ● Controlar (y comprobar) que van tomando valores esperados: regularmente aplicar predicados que deben satisfacer y notificar si alguna se sale de lo previsto (programación defensiva). ● Los lenguajes fuertemente tipeados obligan a declarar las variables antes de usarlas, lo que permite chequear su existencia y la coherencia en su uso. Memoria Puede ser interpretada como un conjunto de pares (variable, valor) que lleva asociada dos operaciones: Búsqueda y Almacenamiento. 1) Memoria = {(Variable1, Valor1), ...,(Variablen, Valorn)} 2) Búsqueda(Variable, Memoria) = Valor 3) Almacenamiento(Variable, Valor, Memoria) ……... ……... numero 45 ……... suma -2 ……... ……... ……... Memoria = {…, (numero, 45), …, (suma, -2), ...}
  • 30. Memoria: Asignación Expresión sintáctica de la operación de Almacenamiento. Modifica el contenido de una variable. Notación algorítmica Nombre ←Valor ó Nombre = valor Notación en C nombre_variable = valor; Memoria: Asignación numero = 45 Memoria = {…, (numero, 45), …, ...} suma = -2 Memoria = {…, (numero, 45), …, (suma, -2) ...} numero = 28 Memoria = {…, (numero, 28), …, (suma, -2) ...} Cada operación de asignación (Almacenamiento) transforma la memoria de un estado a otro respecto al tiempo. La ejecución de un programa tendrá como efecto (sin considerar los procesos de E/S) la transformación de la memoria inicial en otra final, realizando un conjunto de asignaciones sobre las n variables que intervienen en el programa, ejecutadas según un flujo de control establecido. La asignación X ←7 equivale a decir que X es una variable a la que se le asigna el valor 7. La asignación X ←X + 3 evalúa la expresión derecha, en donde la variable con nombre X tiene el valor de 7, sumándole la constante 3 y asignando el resultado (7 + 3) = 10 a la parte izquierda de la expresión, la variable X. De acuerdo a la programación estructurada, la asignación es una estructura de control secuencial. Nombre
  • 31. identificador que consta de varios caracteres alfanuméricos, de los cuales el primero normalmente es una letra. Ejemplos FechaInicio, NumeroDePersonas, Tmp10, direccion_1, direccion_2, _EstaActivado_, Tiempo_De_Ejec_00 Memoria: Asignación Cuádrupla V = < N, T, R, K >, donde N es el nombre de la variable, T su tipo de dato, R una referencia de memoria asignada a la variable para su almacenamiento, y K el valor almacenado. Ejemplo V = < X, Entero, 10001, 7 > X ←7 nombre de la variable X tipo de dato Entero referencia de memoria 10001 valor 7 Tipo de dato Es la agrupación de un conjunto de valores, sobre el cual se pueden realizar un conjunto de operaciones. Toda variable debe estar asociada a un tipo de dato con el que se puede determinar univocamente el dominio de valores. Ejemplo El tipo de dato fecha podría estar representado por los atributos DIA, MES y AÑO, siendo los tres de tipo entero. Las operaciones aplicables sobre el tipo de dato fecha podrían ser: ➢ Mostrar fecha ➢ Incrementar día ➢ Incrementar mes ➢ Incrementar año ➢ Intervalo entre dos fechas
  • 32. Ejemplo El tipo de dato coordenada podría estar representado por los atributos X, Y y Z, siendo los tres de tipo entero. Las operaciones aplicables sobre coordenada podrían ser: ➢ Distancia entre dos coordenadas (puntos) ➢ Desplazar un punto ➢ Mostrar el valor de X ➢ Mostrar el valor de Y ➢ Mostrar el valor de Z Por el hecho de que distintos valores pertenecientes a diferentes tipos de datos pueden tener la misma representación a nivel de máquina, la especificación del tipo de dato (dominio y operaciones aplicables) nos permite controlar la interpretación para cada uno. Ejemplo La secuencia de bits 01000001 (alfabeto binario de longitud 8) puede ser interpretada: ➢ Carácter ‘A’ en el tipo de dato carácter, o ➢ Entero +65 en el tipo de dato entero. Puede clasificarse como escalar o estructurado. ➢ Escalar o simple: Aquel cuyo dominio presenta una propiedad de orden (entero, real, carácter, lógico). ➢ Estructurado o compuesto: Aquel que se define mediante composición de tipos de datos (vector, cadena de caracteres, matriz, registro). Tipos de Datos en C Los lenguajes de programación ofrecen un conjunto completo de tipos de datos escalares y estructurados con las especificaciones del dominio y operaciones. En este curso vamos a estudiar algunos de los tipos de datos que ofrece el lenguaje de programación C .
  • 33. Tipos de Datos Escalares en C Tipos de Datos Escalares (Numéricos) en C Tipo Entero Subconjunto finito de los números enteros. El tamaño del subconjunto dependerá del número de bits que correspondan al tipo de datos. Mientras más bits mayor será el tamaño del subconjunto. Ej: Entero corto (8 bits) llega hasta 255 Entero (en un Pentium IV, 32 btis) llega hasta el orden de los 4000 Megaunidades. Tipos de Datos Escalares (Numéricos) en C++ Tipo Entero Dependiendo del número de bits empleado en cada computadora (n), los dominios del tipo de dato Entero varían en a) –2 (n – 1), ..., 0, ..., 2 (n – 1) – 1 enteros positivos y negativos Si el n = 16 –2 (16 – 1), ..., 0, ..., 2 (16 – 1) – 1 = –2 (15), ..., 0, ..., 2 (15) – 1 = -32768, …, 0, …, 32767
  • 34. b) 0, ..., 2n – 1 enteros positivos Si n = 16 0, ..., 216 – 1 = 0, ..., 65535 Tipo de Dato Entero en C++ Tipo # bits Rango Int 32 -2147483648 ... 2147483647 Long int 32 Idem Unsigned int 32 0 ... 4294967295 Long long 64 0 ... 18446744073709551615 Tipos de Datos Escalares (Numéricos) en C++ Tipo Real ➢ Subconjunto de los números reales limitado no sólo en el tamaño, sino también en cuanto a la precisión. Se conocen como números de punto flotante cuya representación consta de una mantisa (parte fraccional), de una base y de un exponente (potencia a la cual se eleva la base). ➢ Para el número 0.437875x103 se tiene: mantisa = 0.437875 base = 10 exponente = 3 Ejemplos 0.08 3739.41 -3.7452 52.3244 -8.12 3.0 Tipo de Dato Real Tipo Nro. bits Rango Precisión float 32 1.17x10-38 a 3.4x1038 6 dígitos decimales double 64 2.22x10-308 a 1.79x10308 15 dígitos decimales Tipos de Datos Escalares (No-Numéricos) Tipo Carácter
  • 35. Conjunto finito y ordenado de los caracteres que la computadora reconoce (letra, dígito, signo de puntuación, etc.) Un carácter es almacenado en un byte usando el código de 8 bits ASCII (American Standard Code for Information Interchange), lo que da la posibilidad de representar 28 = 256 caracteres diferentes. Ejemplos ‘v’ ‘.’ ‘A’ ‘a’ ‘)’ ‘{‘ ‘+’ ‘9’ ‘*’ Cada caracter tiene un equivalente en el tipo entero. Hay otros sistemas de codificación aparte del ASCII, ej UTF-8. Tipo Nro. bits char 8 Declaración de Variables En C todas las variables que van a ser usadas en un programa deben ser declaradas al principio de la función o al principio del programa. Los objetivos de la declaración de variables son: Asociar un tipo de dato y un identificador único a la variable. Esto también permite que el compilador pueda verificar la correctitud de las operaciones en donde interviene la variable. Permitir que el compilador sepa cuánto espacio de memoria se necesita para almacenar el valor de la variable, y asignar la dirección de memoria donde este valor se va a almacenar. tipo_de_dato lista_de_variables; Ejemplos int dia, mes, anio; int edad; unsigned int A = 347; float pi = 3.14159; double a, b, c; unsigned long int B = 294967295; long int C, distancia; Ejemplos float precio, sub_total; float costo_por_unidad; char am_pm; char letra = ‘Z’, suma = ‘+’; bool error = false; Tipos de Variables
  • 36. Variable local Es aquella que está declarada dentro de un bloque delimitado por { }. Sólo se puede usar dentro del bloque en el que ha sido declarada. Variable global Es aquella que está declarada para todo el programa, es decir, fuera de cualquier bloque o función. Retiene su valor durante la ejecución de todo el programa. Declaración de Variables Locales: Ejemplo 1 #include <stdio.h> ⇐ importacion de encabezados int main () { double base = 10.5, ⇐ declaración de vars. altura = 2.5, superficie; CUERPO DE LA FUNCION } Bloque Función Declaración de Variables Locales: Ejemplo 2 #include <stdlib.h> ⇐ biblioteca char logico; ⇐ variable global void main () { int i, j = 0, k; ⇐ variable local char car1, car2; float dividendo, divisor; int x, y, z; char indicador = 1; CUERPO DEL PROGRAMA }
  • 37. Declaración de Variables Locales: Ejemplo 3 #include <stdio.h> void main () { double x = 2.0; B1 printf(“%f”,x); ⇐ imprime 2.0 { printf(“%f”,x); ⇐ imprime 2.0 B2 double x = 3.0; printf(“%f”,x); ⇐ imprime 3.0 } printf(“%f”,x); ⇐ imprime 2.0 } Declaración de Variables Locales: Ejemplo 4 void main( ) { int miEntero; B1 miEntero = 503; { int otroEntero; B2 otroEntero = miEntero; } } Declaración de Variables Globales y Locales: Ejemplo #include <stdio.h> int resultado; int main() { int x, y, z; printf(“Introduzca tres numeros enteros: “); scanf(“%i%i%i”,&x,&y,&z); /* Calcular el producto de los tres numeros */ resultado = x * y * z; printf(“El producto de es %i”, resultado); return 0; }
  • 38. Ejemplo: #include <stdio.h> int main() { int grad_c, grad_f; int intervalo; intervalo = 20; grad_c = 0; inicio: printf("Cantidad de grados centígrados: %i n", grad_c); /* NO FUNCIONA ASI: grad_f = 5/9*(grad_c – 32) */ grad_f = 5*(grad_c - 32)/9; printf("Conversión a grados farenheit: %i n", grad_f); grad_c = grad_c + 20; if (grad_c <= 300) goto inicio; printf("Fin de la ejecuciónn"); } Constantes Constante Valor que no cambia durante la ejecución de un programa. Puede ser numérica entera, numérica real, lógica, carácter. Definición de Constantes (Globales) #define identificador valor Asigna un valor a un identificador. Un proceso previo a la compilación sustituirá el identificador por el valor en cualquier parte del programa donde aparezca el identificador.
  • 39. Definición de Constantes (Globales) Ejemplos #define PI 3.14159 #define MAXIMO 256 #define PRIMERALETRA ‘A’ #define MENSAJE "Introduzca su nombre:" Ejemplo #include <stdio.h> #define LONGITUD 32 int main () { int l1 = LONGITUD, x; x = LONGITUD + 1; printf(“x = %i“,x); } Declaración de Constantes (Locales) const tipo_de_dato identificador = valor; void main ( ) { Declaración de constantes // Opcional Declaración de variables locales // Opcional Conjunto de sentencias // Cuerpo de la funcion } void main ( ) { const int LONGITUD = 32; int ln = LONGITUD; CUERPO DEL PROGRAMA }
  • 40. Ejemplos void main() { const float pi; // Error: pi debe ser inicializada // en la declaracion pi = 3.14159; // Error: no se puede modificar // el valor de una constante } Ejemplo: Dado el radio de una esfera, calcular su área y su volumen #include <iostream.h> #define CUATRO 4.0 float radio; int main () { const float PI = 3.14159; float area, volumen; printf(“De el radio de la esfera: ”); scanf(“%f”,&radio); area = CUATRO * PI * radio * radio; printf(“Area = %fn“,area); volumen = area * (radio/3); printf(“Volumen = %fn“,volumen); return 0; }
  • 41. Recuerde. Al definir o declarar una constante o variable se reserva espacio de memoria principal y se etiqueta con el identificador correspondiente. Ejercicios Definir cada una de las siguientes constantes (consulte las fuentes apropiadas para los valores que se necesiten). A) Como globales B) Como locales 613 - Número de Avogrado 613.0 - Masa del electrón (en Kg) -613 - Diámetro atómico (en cm) ‘6’ “PD-10” -3.012x1015 17x1012 e