SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Clase #1
           Paso de C a C++
           Prof. Andrés Arcia
           Departamento de Computación
           Escuela de Ingeniería de Sistemas
           Facultad de Ingeniería
           Universidad de Los Andes



29/06/04          Programación Digital I       1
Origenes de C
➢   C es un lenguaje que nació en los laboratorios Bell de AT&T
    en 1972 bajo las manos de Dennis Ritchie:
    http://www.cs.bell-labs.com/who/dmr/ y como ayuda para
    crear UNIX junto con Ken Thompson.
➢   Luego de añadir algunos tipos de datos al lenguaje B, se
    convertiria en los que conocemos como lenguaje C.
➢   UNIX fue escrito enteramente en C, entonces para usar
    UNIX habia que saber C.
➢   En 1987 aparece la version estandar según Instituto de
    Estandares Nacionales Americano (ANSI).
➢   Es bueno trabajar con el estandar, esto garantiza
    portabilidad entre distintas plataformas.




29/06/04                    Programación II                       2
Variables Simples
   Para poder modelar algún problema, deben
    utilizarse tipos de datos:
     char  o tipo caracter, simbolo o letra.
     int tipo entero, se alinea con la longitud de
      palabra.
     float punto flotante de precision simple,
      calculos en R.
     doble punto flotante de doble precision,
      calculos en R más extensos (precision).
29/06/04                Programación II               3
Modificadores
   Pueden introducirse modificadores de tipo
    que agrandan o acortan la capacidad o
    rango:
     unsigned,  para solo números positivos
     signed, para números positivos y negativos
     short, reducción del rango
     long, ampliación del rango



29/06/04               Programación II             4
Ejemplos
   int k;
   long int lk;
   long otro_lk;
   unsigned char uc;




29/06/04                Programación II   5
Tamaños típicos en un PC
   char          8 bits
   short int     8 bits
   int           32 bits (en un Pentium!)
   long int      32 bits
   float         32 bits
   doble         64 bits
   long double   96 bits
29/06/04              Programación II        6
Pregunta
   Para qué tipos de datos tan grandes?
     R1: El computador no es para jugar! o si?
     R2: Aún con estos tipos hay limitaciones...
     R3: Qué es grande?




29/06/04               Programación II              7
Tipos de Almacenamiento
   Las variables locales pueden ser
    declaradas: auto, static o register.
   Variables Globales: declaradas fuera de la
    función; subsisten hasta que el programa
    finaliza. Pueden exportarse de programa
    en programa a través del constructo
    extern.

29/06/04             Programación II             8
Ejemplo de Variables Externas
   Haga un archivo A.cpp:

           #include <iostream>
           extern int in_other_prog;

           using namespace std;

           int main()
           {
                   cout << in_other_prog;
           }



29/06/04                   Programación II   9
Ejemplo de Variables Externas
   En el ejemplo anterior, el programa no
    funciona porque:
     La  variable in_other_prog, no esta definida,
      todavia...
     Intente compilarlo con g++ A.cpp, que errores
      obtiene?




29/06/04               Programación II            10
Ejemplo de Variables Externas
   Podemos hacer un segundo programa
    llamado B.cpp:
           int in_other_prog;

           void change_shared_var()
           {
              in_other_prog = 100;
           }

    Observe que estamos definiendo la
     variable que nos hace falta... También
     tenemos una función que la modifica.
29/06/04               Programación II        11
Ejemplo de Variables Externas
   Ahora, como juntamos este par de
    códigos?
    1) Compile B.cpp: g++ -c B.cpp. Así, generamos
      su código objeto.
    2) Compile A.cpp: g++ A.cpp -o prog B.o
   Ahora si, el compilador encontró una
    definición de la variable externa. Sin
    embargo, observe que no estamos
    operando sobre la variable.
29/06/04              Programación II            12
Ejemplo de Variables Externas
   Intuye alguna manera de llamar a la
    funcion definida en B.cpp desde A.cpp?
   Qué valor imprimirá si no se hace la
    llamada a funcion propuesta en el punto
    anterior?




29/06/04             Programación II          13
Variables Estaticas
   Son variables accesibles desde cualquier
    punto del programa sin necesidad de ser
    declaradas fuera de las funciones.
   Las variables estaticas no pueden ser
    referenciadas como externas. Es decir,
    solamente son validas dentro de un mismo
    módulo.
   Ejercicio: añada el modificador static al
    programa B.cpp y compile nuevamente.
    Que sucede?
29/06/04             Programación II        14
Funciones
   Una función es un conjunto de
    instrucciones (algoritmo) que es accesible
    a través de una interfaz.
   Usted deberia poder predecir lo que hace
    la función con tan solo ver su interfaz.
   Lo anterior es cierto si Usted diseña la
    interfaz pensando en dicha premisa...
   Piense en ejemplos de un mal diseño...
29/06/04             Programación II             15
Paso de C a C++
   Hacer prototipos de funciones, hablando en el
    sentido puritano, es la primera gran diferencia
    entre C y C++.
   Algunos no hacen senda distinción, y como
    consecuencia se obtiene una Chalupa de C/C++.
   Esto hace más difícil el paso y la comprensión de
    un lenguaje completamente orientado a objetos:
    java (por ejemplo).


29/06/04                Programación II            16
Operadores
   Que son tipos de datos sin operadores?
     R:      Un Ferrari F1 sin M. Schumacher, la
           vinotinto sin R. Páez, etc.
   Existen varios tipos de operadores: lógicos
    (&&, ||), matemáticos(+, -, *), de bits(&, |),
    de asignación abreviada(+=) y especiales
    (parentesis, [], .)


29/06/04                    Programación II         17
Punteros en C

                                                  0x1000
                                                  0x1004
           int vi;
           vi = 7;            vi           7      0x1008
           int * pi;                              0x100C
           p=&vi
                             pi          0x1008   0x1010
                                                  0x1014
                                                  0x1018


29/06/04               Programación II                     18
Aritmética de Punteros
 Suponga que se tiene el siguiente arreglo de enteros:
 int array[10];

           3      34   6    87     95        34     56     43   35     22
           0      1    2    3       4         5     6      7    8       9

La posición del primer elemento puede ser extraída como:
int * p_array = &array[0];

El n-esimo elemento se extrae como array[n-1], pero también puede utilizarse
la aritmética de punteros: *(p_array + n -1).

Fíjese que p_array almacena la dirección de memoria del primer elemento y como
el resto de los elementos son consecutivos, puede hacerse una simple suma o
resta para llegar al elemento de interés. Note también que las unidades sumadas
son relativas al tamaño.
29/06/04                          Programación II                              19
Aritmética de Punteros
 Recuerde que los apuntadores de memoria se mueven por bloques. Entonces,
 cuando hacemos alguna operación aritmética con algún apuntador de memoria,
 estamos sumando un bloque que esta formado por m bytes.

 Ej:
 float arr_fl[10];

 int tamano_float = sizeof(float); // el tamaño de un float son 4 bytes.

 float * inicio_fl;

 inicio_fl = arr_fl; // esta asignación también es valida. inicio_fl apunta al principio
                     // del arreglo de flotantes.

 *(inicio_fl + 5) = 11.2; // según esta asignación se esta modificando el 6to elemento
                          // del arreglo.
29/06/04                            Programación II                                 20
Aritmética de Punteros
 Suponga ahora que se desea hacer un recorrido por cada uno de los bytes
 que conforma a un arreglo.




              0   1       2       3         4       5    6       7
              0    -      -       -         1       -    -       -

  Arriba tenemos un arreglo de 2 enteros cuya declaración puede ser:
  int a[2];
  En la primera línea numerada tenemos la dirección de cada byte del
  del arreglo, que en total tiene 8 bytes (2 elem * 4 bytes_de_tamaño).
  En la segunda línea numerada tenemos las posiciones relativas al tipo
  de dato.
29/06/04                          Programación II                          21
Aritmetica de Punteros
  Si queremos navegar por todo el arreglo, byte por byte, podemos hacerlos
  de la siguiente manera:
  #define tam_arr 10
  char * p_char;
  float arr_fl[tam_arr];
  p_char = (char *)arr_fl;
  for (int i=0; i<tam_arr*sizeof(float); i++)
           cout << *(p_char + i) << endl;
  La línea que separa los arreglos y, los punteros y sus operaciones se ha
  difuminado!


29/06/04                              Programación II                        22
Punteros a Funciones
   También es posible mantener funciones
    completas en cierta región de memoria
    accesible a través de su dirección.
   Declaración del tipo de la función:
     float(* PointerType)(int, int);
     Si se tiene: float f(int a, int b).
     Se puede hacer: PointerType = f;
     (*PointerType)(4,2);

29/06/04                Programación II     23
Para que son buenos los
punteros a funcion?
   Dan flexibilidad y extensibilidad al
    programa.
   Puede delegar funciones al cliente de su
    sistema.
   Puede implantar cosas como callbacks.
    Muy utilizado en la programación por
    eventos.

29/06/04             Programación II           24
Ejercicios
   Haga un programa que invierta una cadena. La cadena esta
    dada como un arreglo de caracteres. Hagalo dentro de la
    misma cadena en una primera versión, en otra versión en una
    cadena nueva y en otra versión en una cadena que se asume
    viene lista para ser escrita pero distinta a la de entrada.
   Haga un programa que ordene un arreglo de enteros.

Consideraciones:
    Ambos programas contener una función que realice la tarea
    exigida. Piense cuidadosamente la interfaz: nombre de la
    función y parámetros.



29/06/04                    Programación II                     25

Más contenido relacionado

La actualidad más candente

La Integral Indefinida
La  Integral IndefinidaLa  Integral Indefinida
La Integral IndefinidaERICK CONDE
 
Representación gráfica de funciones (Bachillerato)
Representación gráfica de funciones (Bachillerato)Representación gráfica de funciones (Bachillerato)
Representación gráfica de funciones (Bachillerato)Bartoluco
 
matrices determinanates y sistema de ecuaciones lineales
matrices determinanates y sistema de ecuaciones linealesmatrices determinanates y sistema de ecuaciones lineales
matrices determinanates y sistema de ecuaciones linealesHanz Seymour
 
Concepto de integral definida (1)
Concepto de integral definida (1)Concepto de integral definida (1)
Concepto de integral definida (1)marcounmsm28
 
Cómo resolver integral de seno cúbico de x dx
Cómo resolver integral de seno cúbico de x dxCómo resolver integral de seno cúbico de x dx
Cómo resolver integral de seno cúbico de x dxJesus Rosales
 
Reglas basicas de integracion
Reglas basicas de integracionReglas basicas de integracion
Reglas basicas de integracionKarina Lizbeth
 
Ecuaciones diferenciales exactas, factor integral, lineales y de dernulli
Ecuaciones diferenciales exactas, factor integral, lineales y de dernulliEcuaciones diferenciales exactas, factor integral, lineales y de dernulli
Ecuaciones diferenciales exactas, factor integral, lineales y de dernullige0ser
 
11 maximos y minimos
11 maximos y minimos11 maximos y minimos
11 maximos y minimosalex
 
3 ecuaciones diferenciales_orden_superior (1)
3 ecuaciones diferenciales_orden_superior (1)3 ecuaciones diferenciales_orden_superior (1)
3 ecuaciones diferenciales_orden_superior (1)Jesus Burgos Matos
 
Regla de simpson un tercio para segmentos multiples
Regla de simpson un tercio para segmentos multiplesRegla de simpson un tercio para segmentos multiples
Regla de simpson un tercio para segmentos multiplesTensor
 
Matrices y determinantes
Matrices y determinantesMatrices y determinantes
Matrices y determinantesDeysi Guanga
 
Error en el polinomio de interpolación
Error en el polinomio de interpolaciónError en el polinomio de interpolación
Error en el polinomio de interpolaciónKike Prieto
 
Integración por sustitución
Integración por sustituciónIntegración por sustitución
Integración por sustituciónangiegutierrez11
 
Tabla de derivadas 1
Tabla de derivadas 1Tabla de derivadas 1
Tabla de derivadas 1Any Hernandez
 
Ejercicios Resueltos de Calculo II
Ejercicios Resueltos de Calculo IIEjercicios Resueltos de Calculo II
Ejercicios Resueltos de Calculo IICarlos Aviles Galeas
 

La actualidad más candente (20)

FACTORES DE INTEGRACIÓN
FACTORES DE INTEGRACIÓNFACTORES DE INTEGRACIÓN
FACTORES DE INTEGRACIÓN
 
La Integral Indefinida
La  Integral IndefinidaLa  Integral Indefinida
La Integral Indefinida
 
Representación gráfica de funciones (Bachillerato)
Representación gráfica de funciones (Bachillerato)Representación gráfica de funciones (Bachillerato)
Representación gráfica de funciones (Bachillerato)
 
matrices determinanates y sistema de ecuaciones lineales
matrices determinanates y sistema de ecuaciones linealesmatrices determinanates y sistema de ecuaciones lineales
matrices determinanates y sistema de ecuaciones lineales
 
Concepto de integral definida (1)
Concepto de integral definida (1)Concepto de integral definida (1)
Concepto de integral definida (1)
 
Probabilidades
ProbabilidadesProbabilidades
Probabilidades
 
Cómo resolver integral de seno cúbico de x dx
Cómo resolver integral de seno cúbico de x dxCómo resolver integral de seno cúbico de x dx
Cómo resolver integral de seno cúbico de x dx
 
Reglas basicas de integracion
Reglas basicas de integracionReglas basicas de integracion
Reglas basicas de integracion
 
Ecuaciones diferenciales exactas, factor integral, lineales y de dernulli
Ecuaciones diferenciales exactas, factor integral, lineales y de dernulliEcuaciones diferenciales exactas, factor integral, lineales y de dernulli
Ecuaciones diferenciales exactas, factor integral, lineales y de dernulli
 
11 maximos y minimos
11 maximos y minimos11 maximos y minimos
11 maximos y minimos
 
Continuidad (Cálculo I)
Continuidad (Cálculo I)Continuidad (Cálculo I)
Continuidad (Cálculo I)
 
3 ecuaciones diferenciales_orden_superior (1)
3 ecuaciones diferenciales_orden_superior (1)3 ecuaciones diferenciales_orden_superior (1)
3 ecuaciones diferenciales_orden_superior (1)
 
Regla de simpson un tercio para segmentos multiples
Regla de simpson un tercio para segmentos multiplesRegla de simpson un tercio para segmentos multiples
Regla de simpson un tercio para segmentos multiples
 
Matrices y determinantes
Matrices y determinantesMatrices y determinantes
Matrices y determinantes
 
Error en el polinomio de interpolación
Error en el polinomio de interpolaciónError en el polinomio de interpolación
Error en el polinomio de interpolación
 
Redaccion de párrafos 2
Redaccion de párrafos 2Redaccion de párrafos 2
Redaccion de párrafos 2
 
Integración por sustitución
Integración por sustituciónIntegración por sustitución
Integración por sustitución
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Tabla de derivadas 1
Tabla de derivadas 1Tabla de derivadas 1
Tabla de derivadas 1
 
Ejercicios Resueltos de Calculo II
Ejercicios Resueltos de Calculo IIEjercicios Resueltos de Calculo II
Ejercicios Resueltos de Calculo II
 

Destacado

Tipos de Datos - Punto flotante
Tipos de Datos - Punto flotanteTipos de Datos - Punto flotante
Tipos de Datos - Punto flotanteOsberth De Castro
 
Diapositivas de la primera unidad del curso Fundamentos de programación
Diapositivas de la primera unidad del curso Fundamentos de programación Diapositivas de la primera unidad del curso Fundamentos de programación
Diapositivas de la primera unidad del curso Fundamentos de programación nzaragoza
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamientoSergio Ramos
 
Arreglo de punteros
Arreglo de punterosArreglo de punteros
Arreglo de punterospedreror1
 
Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no linealeslos4estatidinamicos
 

Destacado (9)

Tipos de Datos - Punto flotante
Tipos de Datos - Punto flotanteTipos de Datos - Punto flotante
Tipos de Datos - Punto flotante
 
Diapositivas de la primera unidad del curso Fundamentos de programación
Diapositivas de la primera unidad del curso Fundamentos de programación Diapositivas de la primera unidad del curso Fundamentos de programación
Diapositivas de la primera unidad del curso Fundamentos de programación
 
Diapositivas fundamentos-de-programacion
Diapositivas fundamentos-de-programacionDiapositivas fundamentos-de-programacion
Diapositivas fundamentos-de-programacion
 
Estructuras no-lineales
Estructuras no-linealesEstructuras no-lineales
Estructuras no-lineales
 
Arreglos multidimensionales y de apuntadores
Arreglos multidimensionales y de apuntadoresArreglos multidimensionales y de apuntadores
Arreglos multidimensionales y de apuntadores
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamiento
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Arreglo de punteros
Arreglo de punterosArreglo de punteros
Arreglo de punteros
 
Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no lineales
 

Similar a Clase 1- Programacion Lineal

Similar a Clase 1- Programacion Lineal (20)

Introduccion a la programacion en c 1
Introduccion a la programacion en c 1Introduccion a la programacion en c 1
Introduccion a la programacion en c 1
 
Transparencias4
Transparencias4Transparencias4
Transparencias4
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Curso C Ii
Curso C IiCurso C Ii
Curso C Ii
 
Diapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdfDiapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdf
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
 
Elementos basicos de_programacion
Elementos basicos de_programacionElementos basicos de_programacion
Elementos basicos de_programacion
 
ELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdfELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdf
 
Elementosbasicosc
Elementosbasicosc Elementosbasicosc
Elementosbasicosc
 
Elementos basicos cpp_oto2014
Elementos basicos cpp_oto2014Elementos basicos cpp_oto2014
Elementos basicos cpp_oto2014
 
Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Elementos basicos c
Elementos basicos cElementos basicos c
Elementos basicos c
 
Turbo c
Turbo cTurbo c
Turbo c
 
Introduccion a la programacion en c 18
Introduccion a la programacion en c 18Introduccion a la programacion en c 18
Introduccion a la programacion en c 18
 
Lenguajecviviana
LenguajecvivianaLenguajecviviana
Lenguajecviviana
 
A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
 
Lenguaje de Programación C++
Lenguaje de Programación C++Lenguaje de Programación C++
Lenguaje de Programación C++
 
PROGRAMACIÓN EN C
PROGRAMACIÓN EN CPROGRAMACIÓN EN C
PROGRAMACIÓN EN C
 
PROGRAMACION EN C
PROGRAMACION EN CPROGRAMACION EN C
PROGRAMACION EN C
 

Más de karlalopezbello

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetoskarlalopezbello
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetoskarlalopezbello
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2karlalopezbello
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1karlalopezbello
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3karlalopezbello
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2karlalopezbello
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1karlalopezbello
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-karlalopezbello
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacionkarlalopezbello
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtualkarlalopezbello
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_karlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 

Más de karlalopezbello (20)

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetos
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetos
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-
 
Didactica del chat
Didactica del chatDidactica del chat
Didactica del chat
 
Didactica del foro
Didactica del foroDidactica del foro
Didactica del foro
 
Guia completa de_moodle
Guia completa de_moodleGuia completa de_moodle
Guia completa de_moodle
 
Publicacion de material
Publicacion de materialPublicacion de material
Publicacion de material
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacion
 
Actividades en moodle
Actividades en moodleActividades en moodle
Actividades en moodle
 
Plataforma moodle
Plataforma moodlePlataforma moodle
Plataforma moodle
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtual
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Transparencias7
Transparencias7Transparencias7
Transparencias7
 

Último

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 

Último (20)

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 

Clase 1- Programacion Lineal

  • 1. Clase #1 Paso de C a C++ Prof. Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes 29/06/04 Programación Digital I 1
  • 2. Origenes de C ➢ C es un lenguaje que nació en los laboratorios Bell de AT&T en 1972 bajo las manos de Dennis Ritchie: http://www.cs.bell-labs.com/who/dmr/ y como ayuda para crear UNIX junto con Ken Thompson. ➢ Luego de añadir algunos tipos de datos al lenguaje B, se convertiria en los que conocemos como lenguaje C. ➢ UNIX fue escrito enteramente en C, entonces para usar UNIX habia que saber C. ➢ En 1987 aparece la version estandar según Instituto de Estandares Nacionales Americano (ANSI). ➢ Es bueno trabajar con el estandar, esto garantiza portabilidad entre distintas plataformas. 29/06/04 Programación II 2
  • 3. Variables Simples  Para poder modelar algún problema, deben utilizarse tipos de datos:  char o tipo caracter, simbolo o letra.  int tipo entero, se alinea con la longitud de palabra.  float punto flotante de precision simple, calculos en R.  doble punto flotante de doble precision, calculos en R más extensos (precision). 29/06/04 Programación II 3
  • 4. Modificadores  Pueden introducirse modificadores de tipo que agrandan o acortan la capacidad o rango:  unsigned, para solo números positivos  signed, para números positivos y negativos  short, reducción del rango  long, ampliación del rango 29/06/04 Programación II 4
  • 5. Ejemplos  int k;  long int lk;  long otro_lk;  unsigned char uc; 29/06/04 Programación II 5
  • 6. Tamaños típicos en un PC  char 8 bits  short int 8 bits  int 32 bits (en un Pentium!)  long int 32 bits  float 32 bits  doble 64 bits  long double 96 bits 29/06/04 Programación II 6
  • 7. Pregunta  Para qué tipos de datos tan grandes?  R1: El computador no es para jugar! o si?  R2: Aún con estos tipos hay limitaciones...  R3: Qué es grande? 29/06/04 Programación II 7
  • 8. Tipos de Almacenamiento  Las variables locales pueden ser declaradas: auto, static o register.  Variables Globales: declaradas fuera de la función; subsisten hasta que el programa finaliza. Pueden exportarse de programa en programa a través del constructo extern. 29/06/04 Programación II 8
  • 9. Ejemplo de Variables Externas  Haga un archivo A.cpp: #include <iostream> extern int in_other_prog; using namespace std; int main() { cout << in_other_prog; } 29/06/04 Programación II 9
  • 10. Ejemplo de Variables Externas  En el ejemplo anterior, el programa no funciona porque:  La variable in_other_prog, no esta definida, todavia...  Intente compilarlo con g++ A.cpp, que errores obtiene? 29/06/04 Programación II 10
  • 11. Ejemplo de Variables Externas  Podemos hacer un segundo programa llamado B.cpp: int in_other_prog; void change_shared_var() { in_other_prog = 100; }  Observe que estamos definiendo la variable que nos hace falta... También tenemos una función que la modifica. 29/06/04 Programación II 11
  • 12. Ejemplo de Variables Externas  Ahora, como juntamos este par de códigos? 1) Compile B.cpp: g++ -c B.cpp. Así, generamos su código objeto. 2) Compile A.cpp: g++ A.cpp -o prog B.o  Ahora si, el compilador encontró una definición de la variable externa. Sin embargo, observe que no estamos operando sobre la variable. 29/06/04 Programación II 12
  • 13. Ejemplo de Variables Externas  Intuye alguna manera de llamar a la funcion definida en B.cpp desde A.cpp?  Qué valor imprimirá si no se hace la llamada a funcion propuesta en el punto anterior? 29/06/04 Programación II 13
  • 14. Variables Estaticas  Son variables accesibles desde cualquier punto del programa sin necesidad de ser declaradas fuera de las funciones.  Las variables estaticas no pueden ser referenciadas como externas. Es decir, solamente son validas dentro de un mismo módulo.  Ejercicio: añada el modificador static al programa B.cpp y compile nuevamente. Que sucede? 29/06/04 Programación II 14
  • 15. Funciones  Una función es un conjunto de instrucciones (algoritmo) que es accesible a través de una interfaz.  Usted deberia poder predecir lo que hace la función con tan solo ver su interfaz.  Lo anterior es cierto si Usted diseña la interfaz pensando en dicha premisa...  Piense en ejemplos de un mal diseño... 29/06/04 Programación II 15
  • 16. Paso de C a C++  Hacer prototipos de funciones, hablando en el sentido puritano, es la primera gran diferencia entre C y C++.  Algunos no hacen senda distinción, y como consecuencia se obtiene una Chalupa de C/C++.  Esto hace más difícil el paso y la comprensión de un lenguaje completamente orientado a objetos: java (por ejemplo). 29/06/04 Programación II 16
  • 17. Operadores  Que son tipos de datos sin operadores?  R: Un Ferrari F1 sin M. Schumacher, la vinotinto sin R. Páez, etc.  Existen varios tipos de operadores: lógicos (&&, ||), matemáticos(+, -, *), de bits(&, |), de asignación abreviada(+=) y especiales (parentesis, [], .) 29/06/04 Programación II 17
  • 18. Punteros en C 0x1000 0x1004 int vi; vi = 7; vi 7 0x1008 int * pi; 0x100C p=&vi pi 0x1008 0x1010 0x1014 0x1018 29/06/04 Programación II 18
  • 19. Aritmética de Punteros Suponga que se tiene el siguiente arreglo de enteros: int array[10]; 3 34 6 87 95 34 56 43 35 22 0 1 2 3 4 5 6 7 8 9 La posición del primer elemento puede ser extraída como: int * p_array = &array[0]; El n-esimo elemento se extrae como array[n-1], pero también puede utilizarse la aritmética de punteros: *(p_array + n -1). Fíjese que p_array almacena la dirección de memoria del primer elemento y como el resto de los elementos son consecutivos, puede hacerse una simple suma o resta para llegar al elemento de interés. Note también que las unidades sumadas son relativas al tamaño. 29/06/04 Programación II 19
  • 20. Aritmética de Punteros Recuerde que los apuntadores de memoria se mueven por bloques. Entonces, cuando hacemos alguna operación aritmética con algún apuntador de memoria, estamos sumando un bloque que esta formado por m bytes. Ej: float arr_fl[10]; int tamano_float = sizeof(float); // el tamaño de un float son 4 bytes. float * inicio_fl; inicio_fl = arr_fl; // esta asignación también es valida. inicio_fl apunta al principio // del arreglo de flotantes. *(inicio_fl + 5) = 11.2; // según esta asignación se esta modificando el 6to elemento // del arreglo. 29/06/04 Programación II 20
  • 21. Aritmética de Punteros Suponga ahora que se desea hacer un recorrido por cada uno de los bytes que conforma a un arreglo. 0 1 2 3 4 5 6 7 0 - - - 1 - - - Arriba tenemos un arreglo de 2 enteros cuya declaración puede ser: int a[2]; En la primera línea numerada tenemos la dirección de cada byte del del arreglo, que en total tiene 8 bytes (2 elem * 4 bytes_de_tamaño). En la segunda línea numerada tenemos las posiciones relativas al tipo de dato. 29/06/04 Programación II 21
  • 22. Aritmetica de Punteros Si queremos navegar por todo el arreglo, byte por byte, podemos hacerlos de la siguiente manera: #define tam_arr 10 char * p_char; float arr_fl[tam_arr]; p_char = (char *)arr_fl; for (int i=0; i<tam_arr*sizeof(float); i++) cout << *(p_char + i) << endl; La línea que separa los arreglos y, los punteros y sus operaciones se ha difuminado! 29/06/04 Programación II 22
  • 23. Punteros a Funciones  También es posible mantener funciones completas en cierta región de memoria accesible a través de su dirección.  Declaración del tipo de la función:  float(* PointerType)(int, int);  Si se tiene: float f(int a, int b).  Se puede hacer: PointerType = f;  (*PointerType)(4,2); 29/06/04 Programación II 23
  • 24. Para que son buenos los punteros a funcion?  Dan flexibilidad y extensibilidad al programa.  Puede delegar funciones al cliente de su sistema.  Puede implantar cosas como callbacks. Muy utilizado en la programación por eventos. 29/06/04 Programación II 24
  • 25. Ejercicios  Haga un programa que invierta una cadena. La cadena esta dada como un arreglo de caracteres. Hagalo dentro de la misma cadena en una primera versión, en otra versión en una cadena nueva y en otra versión en una cadena que se asume viene lista para ser escrita pero distinta a la de entrada.  Haga un programa que ordene un arreglo de enteros. Consideraciones: Ambos programas contener una función que realice la tarea exigida. Piense cuidadosamente la interfaz: nombre de la función y parámetros. 29/06/04 Programación II 25