clase de lenguaje CPPV4.pdf

Embed Size (px)

Citation preview

  • Lenguaje C++Lenguaje C++Lenguaje C++Lenguaje C++

    Historia y definiciones Tipos de datos utilizados Tipos de datos utilizados Arreglos y estructuras F i Funciones Libreras en C

  • Lenguaje CLenguaje CHistoria

    El C++ nace en 1983 de un proyecto para incorporar el paradigmade programacin orientado a objetos al lenguaje C. Su creador fuBjarne Stroustrup que desde 1979 inicia este trabajo como su tesisj p q jdoctoral.

    La idea fue el crear un lenguaje de propsitogeneral que facilitara la programacin y lageneral que facilitara la programacin y larealizacin de muchas de las tareasanteriormente reservadas al lenguajeensamblador como el C pero que incorporaseensamblador como el C, pero que incorporaseel paradigma de programacin orientado aobjetos.

  • Lenguaje C++Lenguaje C++

    Evolucin

    1983: nace el C++ incorporando el paradigma de programacind b l l C ( S )orientado a objetos al lenguaje C (Bjarne Stroustrup).

    1985: Stroustrup crea su primer libro de C++ titulado "The C++Programming Language.1998: surge el primer estndar internacional para C++ (C++1998: surge el primer estndar internacional para C++ (C++ISO/IEC 14882:1998) conocido como C++98.2011: se culmin el estndar ms reciente denominado C++11 quetuvo gran influencia de la biblioteca Boosttuvo gran influencia de la biblioteca Boost.

  • Lenguaje C++Lenguaje C++

    Qu es C++?

    C++ es un lenguaje de programacin de AltoNivel, que incorpora funcionalidad de lenguajesde bajo nivel como el ensamblador y C (de nivelde bajo e co o e e sa b ado y C (de eintermedio).

    Qu es un lenguaje de programacin?

    Un lenguaje de programacin es el conjunto de smbolos y palabras yreglas que permiten al usuario de una computadora darleinstrucciones y rdenes para que esta los ejecuteinstrucciones y rdenes para que esta los ejecute.

  • Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin

    Los lenguajes de programacin se pueden clasificar segn varioscriterios:

    Nivel de abstraccin Propsito

    Lugar de ejecucin Concurrencia

    Evolucin histrica Manera de ejecutarse Manera de abordar la tarea a realizar

    Interactividad Realizacin visual Determinismo

    Paradigma de programacin Sistema de tipos

    Productividad Estandarizacin

  • Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin

    Criterio 1: Nivel de Abstraccin: indica el parecido entre ellenguaje de programacin y el lenguaje natural (manejado por loshumanos). Mientras mayor sea el nivel de abstraccin mayor es elu a os) e t as ayo sea e e de abst acc ayo es eparecido del lenguaje de programacin con el natural.BAJO NIVEL NIVEL MEDIO ALTO NIVEL

    La programacin se realiza

    teniendo muy en t l

    Permiten un mayor grado de abstraccin pero

    Manejan datos de una manera

    cercana al pensamientocuenta las

    caractersticas del hardware.

    se mantienen algunas

    cualidades de los l j d

    pensamiento humano

    ignorando del funcionamiento

    Ensamblador

    lenguajes de bajo nivel

    C

    funcionamiento de la mquina

    Java, fortran,C++Ej.

  • Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin

    COMPILADOS

    Criterio 2: Manera de Ejecutarse

    INTERPRETADOS MIXTOS

    El compilador traduce el cdigo fuente (programa

    escrito en un lenguaje) en

    El intrprete traduce una instruccin y la

    ejecuta, luego

    Se compilan a un lenguaje rpido de ejecutar yescrito en un lenguaje) en

    cdigo mquina (cdigo objeto). Luego el

    enlazador unir los

    ejecuta, luego contina con la

    prxima de la misma manera hasta

    de ejecutar y luego se

    interpretan.

    ficheros de cdigo objeto del programa principal con los de las libreras

    terminar el programa. Java, C#

    Python, PhP, Perl, Html

    para producir el programa ejecutable.

    Fortran, C, C++,Pascal

  • Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin

  • Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin

  • Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin

    OtCriterio 3: el Paradigma de Programacin

    Programacin Orientada a Objetos

    OtrosParadigmas

    Procedimentamental

    Son lenguajes que organizan los algoritmos en procedimientos,

    Es una especializacin de la programacin estructurada en el cual l d ll f

    (POO)(Estructurado)

    algoritmos en procedimientos, funciones o subrutinas, cuyo objeto es dividir en pasos ms simple un problema complejo. Se dicen

    el programa se desarrolla en funcin de objetos. Los objetos integran datos y programas (subrutinas) que aplican sobre estos datos y permiten

    p p jestructurados porque adems plantean un modelo para la organizacin en el cual se organizan las instrucciones

    aplican sobre estos datos y permiten la interaccin entre otros objetos similares o no. Permite mejor utilizacin de cdigo y facilita lapara que se ejecuten de forma

    secuencial, esto es, evitando saltos.

    Fortran, C, Pascal

    utilizacin de cdigo y facilita la comprensin de las aplicaciones .

    Java, C++, Python

  • Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin

    C i i d i iCriterio 4: EstandarizacinAlgunos lenguajes son estandarizados, otros no lo son y algunos otrosposeen un estndar informal.

    Por qu es importante la estandarizacin?La estandarizacin garantiza que un programa escrito un lenguajeestndar se ejecute de la misma manera sin importar elestndar se ejecute de la misma manera sin importar elcompilador /intrprete usado ni el sistema operativo.Los organismos internacionales que producen estndares paralenguajes de programacin son el ANSI (American National Stardardlenguajes de programacin son el ANSI (American National StardardInstitute) y la ISO (International Standard Organization).

    C11 es el nombre informal para el estndar ISO/IEC 9899:2011l t l l j Cque reglamenta al lenguaje C.

    C++11 es el nombre informal para el estndar ISO/IEC 14882:2011que reglamenta al lenguaje C++.

  • Lenguaje C++Lenguaje C++Caractersticas del C++

    El lenguaje C++ es un lenguaje de propsito general que hasido empleado para el desarrollar gran cantidad de aplicacionescomplejas como sistemas operativos, compiladores, procesadores det t b d d t t t Ej ltexto, bases de datos entre otras. Ejemplos:

    OS: Windows (95, 98, Me, 2000, XP, )Procesador de texto: Microsoft OfficeExploradores de internet: Internet Explorer Firefox GoogleExploradores de internet: Internet Explorer, Firefox, Google.Aplicaciones varias: Adobe, etc.

    Es un lenguaje portable, es decir, ofrece la posibilidad de utilizarlot t d d i i i d dtanto en macroordenadores como en mini y microordenadores

  • Lenguaje C++Lenguaje C++Caractersticas del C++

    Posibilita una programacin estructurada o modular, POO,programacin genrica y otros. Es un lenguaje compilado y estandarizado.g j p y Produce programas de cdigo compacto y eficiente Caractersticas de Alto nivel con rasgos presentes de bajo nivel,sin embargo para aplicaciones de bajo nivel se prefiere elEnsamblador o el Lenguaje C.

    Desventajas del C++ Puede ser difcil de aprender a manejar todas sus caractersticas. Se requiere ms tiempo en conseguir el ejecutable, porque cadavez compila todo el fichero.p

  • Lenguaje C++Lenguaje C++Primer programa en C++

    // Mi primer programa en C++ Comentarios de lnea (//). Se utilizan para explicar el uso o significado de

    Programa Partes

    #include Preprocesador: incluir una biblioteca estandar o de usuario. En esta caso

    para explicar el uso o significado de un programa.

    using namespace std;

    estandar o de usuario. En esta caso la de en de entrada/salida.Uso del espacio de nombre std queincluye a todos los elementos de labibli t t d d C (

    int main(){

    biblioteca estandar de C++ (e.g. cout).

    Definicin de la funcin main.E t l i f icout

  • Lenguaje C++Lenguaje C++Primer programa en C++

    #include Incluir biblioteca estandar deentrada/salida (preprocesador)

    using namespace std;

    int main() {

    Uso del espacio de nombrestd que incluye al objeto cout

    Definicin de la funcin main() {cout

  • Lenguaje C++Lenguaje C++Directivas del Preprocesador de C++

    Los programas en C++ (como los de C) pueden incluir otrosprogramas externos denominados bibliotecas mediante elPreprocesador y la directiva:

    #include

  • Lenguaje C++Lenguaje C++Directivas del Preprocesador de C++

    El Preprocesador se llama antes de compilar el programa y seencarga de interpretar todas las instrucciones que comiencen por elsmbolo de #smbolo de # .

    Otra directiva muy comnmente utilizada del Preprocesador es#define La misma permite definir palabras en el proceso de#define. La misma permite definir palabras en el proceso decompilacin para posteriormente realizar compilaciones selectivas, osimplemente para reemplazar un valor numrico donde aparezcandichas palabras. Tambin es posible definir pseudo-funciones conp p pesta directiva.

    Otras directivas tiles son las tres de compilacin condicional #if-#elif-#else-#endif, #ifdef-#else-#endif y #ifndef-#else-#endif.

  • Lenguaje C++Lenguaje C++Definiciones

    Algoritmo

    Es una secuencia ordenada de pasos que permitenl b l blalcanzar una meta obtener o resolver un problema.

    No necesariamente son programas de computadora.

    ProgramaPrograma

    Es una secuencia de instrucciones ordenadas a ser ejecutadas poruna computadora. Un programa debe estar escrito en algn lenguajede programacin, y puede incluir uno o ms algoritmos

  • Lenguaje C++Lenguaje C++Definiciones

    ConstanteUna constante es un valor que no puede ser alterado durante laejecucin de un programa Se crean anteponiendo la palabra constejecucin de un programa. Se crean anteponiendo la palabra consta una declaracin de variable.

    VariableVariableLas variables son espacios reservados en la memoria que puedencambiar de contenido a lo largo de la ejecucin de un programa. Sedeclaran (crean) colocando el tipo de dato y su nombredeclaran (crean) colocando el tipo de dato y su nombre(identificador).

  • Lenguaje C++Lenguaje C++Tipos bsicos de datos

    enteros reales

    punteros

    caracteres lgicos

    vacio

    complejos El soporte para datos complejos viene dado por la bibliotecaestndar de C++, en el archivo de cabecera complex.

    TamaoSignoModificadores SignoAlmacenamiento

    Proteccin

  • Lenguaje C++Lenguaje C++Tipos de datos

    Modificadores

    Tamaoshortlong

    Signosignedunsigned

    Modo de

    auto (por defecto)->seg. pila

    register->registros

    Static >globales o montculoModo de

    private

    protected

    AlmacenarStatic->globales o montculo

    Extern->globales

    mutable y volatile->globales

    Proteccin(POO)

    public

    const

  • Lenguaje C++Lenguaje C++

    Nombre Descripcin Tamao Rango

    Tipos de datos Primitivos (bsicos)Nombre Descripcin Tamao Rango

    char Carcter o entero pequeo 1byte signed: -128 a 127unsigned: 0 a 255

    short int(short) Entero corto 2bytes signed: -32768 a 32767unsigned: 0 a 65535( ) y unsigned: 0 a 65535

    int Nmero entero 4bytes signed: -2147483648 a 2147483647unsigned: 0 a 4294967295

    i d 2147483648 2147483647long int (long) Nmero entero largo 4bytes signed: -2147483648 a 2147483647unsigned: 0 a 4294967295

    bool Valor booleano 1byte true o falseN fl d / 3 4* ( / 38)float Nmero punto flotante de precisin simple 4bytes

    +/- 3.4*e(+/- 38) (~7 dgitos de precisin)

    double Nmero punto flotante de precisin doble 8bytes+/- 1.7*e(+/- 308) (~15 dgitos de precisin)

    long double Nmero punto flotante de precisin doble extendida 8bytes+/- 1.7*e(+/- 308) (~15 dgitos de precisin)

    wchar_t Caracteres largos 2 o 4 bytes 1 carcter largo

  • Lenguaje C++Lenguaje C++Declaracin de datos

    P d tili d t C i l t di i tPara poder utilizar datos en C++ es necesario crearlos, a este procedimientose le denomina declaracin de datos.

    En C++ los tipos bsicos de datos se declaran colocando el tipo seguido porEn C los tipos bsicos de datos se declaran colocando el tipo seguido poruna lista de nombres (o identificadores) de datos separada por comas.

    Los identificadores son los nombres asignados a las variables, contantes,funciones nombres de espacio objetos y clases Estos pueden contenerfunciones, nombres de espacio, objetos y clases. Estos pueden contenercaracteres alfanumricos y el carcter de piso _ (no se permiten caracteresespeciales). Adems, los identificadores no pueden coincidir con las palabrasreservadas del lenguaje.

    tipo_de_dato nombre1 [, nombre2, nombre 3,]g j

  • Lenguaje C++Lenguaje C++Tipos de datos

    Existen diferentes tamaos de nmeros enteros que, segn el compilador y

    Enteros

    Existen diferentes tamaos de nmeros enteros que, segn el compilador yla plataforma de hardware, pueden tener desde 1 byte hasta 8 bytes

  • Lenguaje C++Lenguaje C++Tipos de datos

    Enterosint a1; // Entero de 4 Bytes con signoint a2=50; // Declaracin e inicializacin de un entero de 4 Bytesint a2=50; // Declaracin e inicializacin de un entero de 4 Bytes.unsigned int a3; // Enteros de 4 Bytes sin signosigned long a4; /* Enteros de 4 Bytes con signo. Puede omitirse el

    difi d i d */modificador signed */signed long long a5 = 10000000; // Enteros de 8 Bytes con signoconst int radio = 20; /* Constantes creadas por el compilador */#define K 20 /* Constantes creadas por el preprocesador */bool condicion = false; // Declara una variable booleana y le asigna falso.

  • Lenguaje C++Lenguaje C++Tipos de datos

    Llamados tambin punto flotantes, ya que utilizan un sistema de

    Reales

    representacin basado en la tcnica de punto flotante, que permite operarcon nmeros reales de diversas magnitudes, mediante un nmero decimalllamado mantisa y un exponente que indica el orden de magnitud.

    Estndar IEEE 754 Precisin simple (4 Bytes)[ 1 bit-signo | 8 bits-exponente | 23 bits-mantisa ]Precisin double (8 Bytes) Precisin double (8 Bytes)[ 1 bit-signo | 11 bits-exponente | 52 bits-mantisa ]

    Precisin double extendida (10 Bytes)[ 1 bit-signo | 1 bit-parte entera | 15 bits-exponente | 63 bits-mantisa ][ g | p | p | ]

    No soportado por todos los compiladores y sistemas operativos

  • Lenguaje C++Lenguaje C++Tipos de datos

    El tipo de dato punto flotante en lenguaje C++ slo tiene dos

    Reales

    tamaos: float y double, que son 4 bytes y 8 bytes respectivamente. Seles puede utilizar tanto para representar nmeros decimales, como pararepresentar nmeros enteros con un orden de magnitud muy grande.

    flfloat a;double a = 1e23;double a = 3.1416;float a = 4e-9;double a = -78;const double pi = 3.141516927;

  • Lenguaje C++Lenguaje C++Tipos de datos

    Los caracteres se representan utilizando el tipo char, que tiene slo 1 bytede tamao. Este tipo se utiliza para representar los 255 caracteres de la

    Caracteres (char)

    de tamao. Este tipo se utiliza para representar los 255 caracteres de latabla de caracteres ASCII (del ingls American Standard Code forInformation Interchange Cdigo Estndar para el Intercambio deInformacin ). El tipo char es tambin un tipo entero, ya que puede tomar

    l d 0 255 E t t d tibl l ISO/IEC 10646valores de 0 a 255. Este estndar es compatible con el ISO/IEC 10646creado por el ISO Working Group, que define el un conjunto decaracteres universales en octetos.

    #include #include int main() {

    char a = 's';char A = a;

    char c;std::cin>>c ;std::cout

  • Lenguaje C++Lenguaje C++Tipos de datos

    Caracteres

  • Lenguaje C++Lenguaje C++Tipos de datos

    Caracteres

  • Lenguaje C++Lenguaje C++Tipos de datos

    Caracteres

  • Lenguaje C++Lenguaje C++Tipos de datos

    Al igual que los datos de tipo char son datos enteros de 2 4 Bytes, quepermiten almacenar caracteres de tipo UNICODE que tambin es

    Caracteres Anchos (wchar_t)

    p p qcompatible con el estndar ISO/IEC 10646 y otros estndares.El estndar UNICODE permite almacenar los caracteres en 8, 16 y 32 bits.El estndar UNICODE permite representar los caracteres y grafemas dediferentes lenguas adems de sus signos diacrticos caracteres dediferentes lenguas, adems de sus signos diacrticos, caracteres depuntuacin, ideogramas, caracteres silbicos, caracteres de control y otros .

    #include int main() {() {

    wchar_t aw= 's';wchar_t a2w= L's'; char c;std::wcout

  • Lenguaje C++Lenguaje C++Tipos de datos

    Caracteres Anchos (wchar_t): tabla UNICODE

  • Lenguaje C++Lenguaje C++Tipos de datos

    En C++ todas las variables deben ser declaradas antes de su uso

    Declaraciones

    En C++ todas las variables deben ser declaradas antes de su uso.Una declaracin especifica un tipo y contiene una lista de una o msvariables (identificadores) de ese tipo.

    int menor;

    int menor, mayor, paso;char inicial, nombre[100];

    int mayor;int paso;char inicial;;char nombre[100];

    int i =0;i t li it i 1int limite=maximo+1;

  • Lenguaje C++Lenguaje C++Tipos de datos

    Declaraciones de variables

    Tipo_dato Nombre_variable

    static long int cantidad;int importe, suma, total, media;char letra carac = A;char letra, carac = A ;flota precio = 500;

    Declaraciones de constantesHay dos tipos de constantes en C++ las creadas por el compilador y las creadas por el preprocesador.

    const long int maximo; // creada por el compiladorconst long int maximo; // creada por el compilador#define MAX 100 // creada por el preprocesador

  • Lenguaje C++Lenguaje C++Tipos de datos:Modificadores de tipo de almacenamiento

    auto (por defecto): los datos creados dentro de funciones se almacenan

    en el segmento de pila y su valor no se retiene entre llamadas.

    register: almacena los datos en los registros del CPU, si es posible.

    static: almacena los datos en el segmento de datos pero son visibles

    l d t d l f i d dslo dentro de la funcin donde se crearon.

    extern: indica al compilador que las variables globales y funciones no

    estaticas pueden utilizarce desde otros archivos.p

    mutable: indica que datos compuestos de tipo constante poseen

    campos que pueden cambiar.

    volatile: indican que la variable puede cambiar por fuentes externas de

    software o hardware.

  • Lenguaje C++Lenguaje C++Tipos de datos

    i lLiteralesRepresentan valores constantes naturales alfanumricas que permitenrepresentar distintos valores. Se utilizan para darle valores a las variables yconstantes.

    // Literales enteros5, 6, -20 // decimales0113 // octales

    // Literales de caracteres ASCIId, c, a

    0113 // octales0x4b // hexadeciamales33u // entero sin signo33l // entero largo33ul // entero largo sin signo

    // Literales de cadenas de caracteres// ASCIIHola Mundo!!!palabra

    // Literales decimales3.14159 // double6.02e23 // 6.02 x 10^23 double1 6e-19L // 1 6 x 10^-19 long double

    // Literales de cadenas UNICODELaLHola Mundo!!!

    1.6e 19L // 1.6 x 10 19 long double6.02e23f // float

  • Lenguaje C++Lenguaje C++Tipos de datos

    i ibilid d d l dVisibilidad de los datosEstablece desde donde son visibles los datos. La visibilidad es globalcuando los datos se declaran fuera de cualquier par de llaves {} de locontrario son locales. Observacin: los datos globales se inicializan en cero,mientras que los locales no.

    #include using namespace std;int entero;char car=a;Variables globales Formas alternas para

    int main() {unsigned int car=3;double simple (3.1415);Variables locales

    asignar valores inicia-les a variables. La primera es una asignacin y la

    cout

  • Lenguaje C++Lenguaje C++Tipos de datos

    Tipo especial: void

    Permite indicar de forma explcita que no existe ningn dato. El otro uso deeste tipo es para referirse a un puntero a un objeto de tipo desconocido.

    void a; // error: a tiene que ser de tipo distinto a vaco.void g(); // La funcin g no devuelve datosvoid g(); // La funcin g no devuelve datos.void *p; // declaracin de un puntero a un dato de tipo desconocido.

  • Lenguaje C++Lenguaje C++Conversin entre tipos de datos

    C i iConversin automtica:Cuando se operan con datos primitivos de diferentes tipos en una mismaexpresin, se determina cual es el dato de mayor jerarqua y todos losp , y j q ydems se convierten en este tipo. Las reglas de jerarqua se muestran acontinuacin:

    int < unsigned < long int < unsigned long < float < double < long double

    Conversin explcita:

    int < unsigned < long int < unsigned long < float < double < long double

    Note que los datos bool, char, short o enum se promueven a int.

    Convierte explcitamente los datos de un tipo en otro sin atender a las reglasde conversin automticas. Las dos maneras clsicas de realizar esto son:

    p

    Alternativa 1: (tipo) expresin // la expresin se convierte al tipo entre parntesisAlternativa 2: Tipo(expresin) // igual que antes, pero parecido a una llama de

    // funcin.

  • Lenguaje C++Lenguaje C++Palabras reservadas del C++

    Se pueden utilizar para los nombres de variables cualquier combinacindeseada de palabras, excepto las 63 siguientes que estn reservadas parauso exclusivo del lenguaje:

    asm auto bool break casecatch char class const const_castcontinue default delete do doubled i t l li it tdynamic_cast else enum explicit exportextern false float for friendgoto if inline int longmutable namespace new operator privatep p pprotected public register reinterpret_cast returnshort signed sizeof static static_caststruct switch template this throwtrue try typedef typeid typenametrue try typedef typeid typenameunion unsigned using virtual voidvolatile wchar_t while

  • Lenguaje C++Lenguaje C++Operadores de entrada/salida

    Las operaciones de entrada y salida no estn propiamente definidas por ellenguaje C++, sin embargo las necesidades de interaccin con el mundoexternos son notables.

    P b i l i i t d t d lid d d t lPara cubrir los requerimientos de entrada y salida de datos, se recurre aluso de bibliotecas, entre las cuales la principal es: iostream.h

    Salida (cout): permite imprimir a la salida por defecto, el monitor.Utiliza el operador

  • Lenguaje C++Lenguaje C++Operadores de entrada/salida

    Escritura: secuencias de escape para representar caracteresespeciales.

    #include using namespace std;g p ;

    int main() {cout

  • Lenguaje C++Lenguaje C++Operadores de entrada/salida

    Entrada (cin): permite leer de la entrada por defecto, el teclado.Utiliza el operador >> para indicar que el flujo de datos se dirige a la variable que almacenar el valor ledo del teclado.cin espera hasta que se presione la tecla enter para leer los datoscin espera hasta que se presione la tecla enter para leer los datos.

    int edad;double peso, altura;char letra cad[101] cadena1[101];char letra, cad[101], cadena1[101];string cadena2;cin >> edad;cin >> peso >> altura;

    // Lectura de cadenas de caracteres.cin >> letra; // lee un carcter ASCII.cin >> cad; // lee una palabra.cin.getline(cadena1,100); /* lee una cadena de caracteres de hasta 100

    100 caracteres */100 caracteres /getline(cin, cadena2); // lee una cadena utilizando la biblioteca string.h

  • Lenguaje C++Lenguaje C++Operadores de entrada/salida

    Conversin de cadenas a valores numricos: la conversin de cadenasConversin de cadenas a valores numricos: la conversin de cadenasa valores numricos se puede realiza tambin con la bibliotecasstream.h (stringstream) , como se muestra en el siguiente ejemplo.

    #include #include #include using namespace std;int main () {string mystr;float price=0;int quantity=0;cout > price;cout > quantity;cout

  • Lenguaje C++Lenguaje C++Operadores de entrada/salida

    El manejo de archivos para la lectura y escritura se realiza medianteotro conjunto de bibliotecas estndares referidas a continuacin:

    ofstream: contiene mtodos (funciones) para escribir en archivos. ifstream: contine mtodos para leer de archivos.f t ti t d l ibi d hifstream: contiene mtodos para leer y escribir de archivos.

    En general solamente se utiliza la biblioteca fstream.h para el manejo dearchivos ya que combina las funciones de entrada y salidaarchivos, ya que combina las funciones de entrada y salida.

  • Lenguaje C++Lenguaje C++Funciones

    E i d di i d di b jEs una seccin de cdigo independiente, con nombre, que ejecuta una

    tarea especfica y puede o no devolver un valor al programa que la llam.

    Las funciones dividen tareas grandes de computacin en

    varias pequeas, ocultando la manera como realizan su

    t Ad it tili l di d ll dtarea. Adems, permiten reutilizar el cdigo desarrollado

    por otros de forma modular.

    Sencillez Claridad Eficiencia

    Nota: todos los programas en C++ poseen una funcin principal denominada main donde se inicia la ejecucin del programa.

  • Lenguaje C++Lenguaje C++Funciones

    Existen tres operaciones que se requieren para utilizar las funciones:

    1. Definicin: es donde se indica como se denomina la funcin

    (denominado prototipo de la funcin) y la manera en la que realiza su(denominado prototipo de la funcin) y la manera en la que realiza su

    trabajo (cuerpo de la funcin).

    2. Declaracin: indica como se denomina la funcin y las variables de

    entrada y salida (prototipo). Se requiere declarar las funciones antes de

    utilizarlas.

    3 Ll d f i ll ili d b l3. Llamado: para usar una funcin se llama utilizando su nombre y los

    parmetros o variables de entrada (parte del prototipo).

    Partes del prototipo de una funcin:

    tipo_retorno nombre_de_la_funcin (paramtro1, paramtro2,...)

    Partes del prototipo de una funcin:

  • Lenguaje C++Lenguaje C++Funciones: prototipo

    Sin valor

    Tipo de retorno: indica el TIPO de dato (valor) que devuelve lafuncin.

    voidSin valor

    Con valor

    void

    int , float , double , char , u otros tipo del

    lenguaje o creados por el usuario.

    Parmetros: establece los datos que recibe la funcin para poderrealizar su trabajo. Cada parmetro posee un TIPO y unidentificador.

    void imprimir()

    int factorial( int n )Tipo de retorno

    Identificador o nombre de la funcin

    int factorial( int n )

    float promedio( int A, int B )

    p

    Parmetros

  • Lenguaje C++Lenguaje C++Funciones: definicin

    Ejemplo: Hola mundo

    #include using namespace std;

    int main() {

    cout

  • Lenguaje C++Lenguaje C++Funciones: declaracin y llamado

    Ejemplo#include U i tdUsing namespace std;void holamundo();

    int main()

    Declaracin

    int main(){

    holamundo();return 0;;

    }

    void holamundo() Llamado{

    cout

  • Lenguaje Lenguaje C++C++Funciones: ejemplo 1 de llamado a una funcin

    j l#include

    Ejemplo using namespace std;double promedio(int x, int y);

    int main(void)int main(void){

    double prom; int A=5,B=8;

    di (A B)prom = promedio(A,B);cout

  • Lenguaje C++Lenguaje C++Funciones: ejemplo 2 ocultamiento de la informacin

    #include using namespace std;

    void sumar valor(int numero);void sumar_valor(int numero); int main(void){

    int numero = 57;sumar_valor(numero);cout

  • Lenguaje C++Lenguaje C++Funciones y variables

    Revisin de variables locales y globales

    Los datos declarados dentro de una funcin solo son accesibles dentro deesta misma funcin y se les conocen como Variables Locales. Lasvariables locales se definen dentro de cada una de las funciones y sontotalmente distinta una de otra a pesar de poseer identificadores idnticos,p py no se puede utilizar fuera de esta.

    Las Variables Globales son las que se definen fuera de cualquier funcinLas Variables Globales son las que se definen fuera de cualquier funcin,estas variables se pueden utilizar dentro de la funcin main() y dentro decualquier funcin creada por nosotros.

  • Lenguaje C++Lenguaje C++Funciones

    Variables locales

    #include using namespace std;using namespace std;int main(void){

    funcion1(); f i 2()funcion2(); return 0;

    }void funcion1() void funcion2()void funcion1(){

    int dato = 53; cout

  • Lenguaje C++Lenguaje C++Funciones

    Variables globales#include using namespace std;int variable_G = 99;void funcion();main(){

    cout

  • Lenguaje C++Lenguaje C++Funciones: parmetros por defecto (opcional)

    En C++ las funciones pueden recibir algunos parmetros y losdems pueden tener valores por defecto. Los parmetros pordefecto se especifican en el prototipo como muestra el siguiente

    lejemplo.int incrementar (int valor, int incremento=1);int incrementar (int valor, int incremento) {

    return (valor+incremento);}

    Observacin: se requiere que todos los parmetros a la derecha del d f b lprimer parmetro por defecto tambin posean un valor por

    defecto.

    int sumar(int primer, int segundo=0, int tercero=0); VALIDO( p , g , );int sumar(int primer, int segundo=0, int tercero); INVALIDOint sumar(int primer, int segundo, int tercero=0); VALIDO

  • Lenguaje C++Lenguaje C++Funciones inline: (opcional)

    Las funciones cortas que se llaman muchas veces y que poseenuna sola clausula de retorno (return) pueden definirse como en-lnea. Este tipo de funciones se ejecuta ms rpidamente que otrasd b d l l d d d l d ddebido a que el compilador copia su contenido en cada lugar dondese hubiese llamado la funcin, esto es, nunca se produce elllamado.

    inline long cuadrado(long int num) {return (num*num);

    }}

  • Lenguaje C++Lenguaje C++Funciones : sobrecarga de funciones (opcional)

    Existen muchos funciones que realizan las mismas operacionessobre distintos tipos de datos (e.g. enteros, punto flotante, enterossin signo, etc) o con distinto nmero de parmetros. En estos

    l l b l dcasos es conveniente utilizar el mismo nombre para las distintasfunciones que realizan la misma tarea sobre diferentes tipos dedatos, a esto se le denomina sobrecarga de funciones.

    int maximo(int a, int b);int maximo (int a, int b, int c);float maximo (float a float b);float maximo (float a, float b);double maximo (double a, double b)

    Observe que el compilador puede determinar la funcinsobrecargada a utilizar mediante el nmero y tipo de parmetrosque recibe.

  • Lenguaje C++Lenguaje C++Operadores

    AritmticosLos operadores son smbolos que tienen un significado especifico y que le indican al procesador que operacin ha de realizar.

    C++ incluye 5 operadores bsicos para operaciones aritmticas

    p q p

    Si los operandos son enteros el resultado es entero. Si alguno de ellos esdouble, float o long double el resultado ser flotante.

    Un operador bsico para modificar una variable es el operador deasignacin =. Este operador le asigna el valor a la derecha del operadora la variable ubicada a la izquierda del mismo.

  • Lenguaje CLenguaje C++++Operadores

    Aritmticos

    Funciones de la librera :

    double sin(valor);double cos(valor);double tan(valor);

    double cosh(valor);double tanh(valor);double log10(valor);double tan(valor);

    double asin(valor);double atan(valor);

    double log10(valor);double log(valor);double ldexp(valor1,valor2);

    double acos(valor);double sinh(valor);

    double pow(valor);double sqrt(valor);

    Nota: cmath contiene la biblioteca de funciones matemticas en C++.

  • Lenguaje C++Lenguaje C++Operadores

    Aritmticos

    Las expresiones matemticas se evalan de izquierda a derecha Es recomendable utilizar parntesis para eliminar interpretacioneserrneas y posibles ambiguedades

    Si ti

    1i i

    Signo negativo -Incremento ++Decremento --

    Casos particulares i

  • Lenguaje C++Lenguaje C++Operadores

    Relacionales

    Lgicos

  • Lenguaje C++Lenguaje C++Operadores

    De bits: slo aplica a datos enteros y caracteres con o sin signo.Los datos punto flotante arrojan errores de compilacin.

    Operador Nombre Significado EjemploOperador Nombre Significado Ejemplo

    & AND AND a nivel de bits p & 255

    | OR OR a nivel de bits s | 125

    ^ XOR XOR a nivel de bits y ^ 44

    ~ NOT Negacin de bits ~n

  • Lenguaje C++Lenguaje C++Operadores

    Otros

    Coma (,): a = (b=3 b+2); // b=3 y a=5Coma (,) : a = (b=3, b+2); // b=3 y a=5

    Tamao de dato sizeof: a = sizeof(int a); // a=4

    D i i ? ? l d d l f lDesicin ? : expr ? valor_verdadero : valor_falso

    Conversin de tipo: float a = 3.1415;float a 3.1415;int b = (int) a; int b = int(a) // convierte el dato decimal en entero

  • Lenguaje C++Lenguaje C++Operadores: precedencia

    Nivel Operador Descripcin Orden1 :: Scope Izq. a der.2 () [] . -> ++ -- conversin de tipo Postfix Izq. a der.() [] p q

    3++ -- ~ ! sizeof new delete unarios (prefijo)

    Der. a izq.* & punteros+ - Signo

    4 (type) Tipo Der. a izq.5 .* ->* Miembro de puntero Izq. a der.6 * / % + - Aritmticos Izq. a der.7 > < > = == != Relacional Izq. a der.q8 & ^ | && || De bits Izq. a der.9 ?: Conditional Der. a izq.10 = *= /= %= += -= >>=

  • Lenguaje C++Lenguaje C++Estructuras condicionales

    if else else ifEste conjunto de proposiciones se utilizan paraexpresar decisiones Permite realizar una preguntaexpresar decisiones. Permite realizar una preguntadonde la posible respuesta solo puede ser verdadera ofalsa.

    "si se cumple la condicin, haz esto, y sino, haz esto otro"

  • Lenguaje C++Lenguaje C++Estructuras condicionales

    if else else if

    if (condicin) if (nota>=10)if (condicin)sentencia;

    if (nota>=10)cout =10)t A b d sentencia1;

    elsesentencia2;

    cout

  • Lenguaje C++Lenguaje C++Estructuras condicionales

    if else else if

    if (condicin){{

    sentencia;sentencia; La indentacin (los espacios al comienzo de

    l l )}else{

    sentencia;

    las lneas) no es necesaria, pero ayuda a la claridad del cdigo

    sentencia;sentencia;

    }

  • Lenguaje C++Lenguaje C++Estructuras condicionales

    if else if else

    if (condicin1) i 1

    if (T>=100)caliente;

    else if (T> 50)sentencia1;else if (condicin2)

    sentencia2;

    else if (T>=50)tibio;

    else if (T>=0)felse if (condicin3)

    sentencia3;

    l

    fresco;else

    frio;else

    sentencia ninguno de los anteriores;

    calienteTibiofrescofro

    100500

  • Lenguaje C++Lenguaje C++Estructuras condicionales

    switch / case

    C++ tiene incorporada una sentencia de bifurcacin mltiplell d it h C t t i l t d bllamada switch. Con esta sentencia, la computadora comprueba unavariable (enteras o de tipo char) sucesivamente frente a una lista deconstantes enteras. Despus de encontrar una coincidencia, la computadoraejecuta la sentencia o bloque de sentencias que se asocian con la constante

  • Lenguaje C++Lenguaje C++Estructuras condicionales

    switch / case

    switch(mes)switch(mes){

    case 1:enero;b kbreak;

    case 2:febrero;break;break;

    default:error;break;

    break;}

  • Lenguaje C++Lenguaje C++Estructuras cclicas

    whileEl bucle while sirve para ejecutar cdigo reiteradas veces. El uso de esta instruccin o de otras estructuras cclicas queda ade esta instruccin o de otras estructuras cclicas queda a discrecin del programador

    while (expresion) {

    sentenciasrelacin A>=B

    sentencias} entero

    constante

    ,1,5,1000...0

    1

  • Lenguaje C++Lenguaje C++Estructuras cclicas

    whileEjemplo: imprimir los nmeros del 1 al 10

    #include using namespace std;

    main() {int i=1;while (i

  • Lenguaje C++Lenguaje C++Estructuras cclicas

    do whileRealiza la misma tarea que el while con la diferencia de que evala la condicin al final del ciclo.

    #include using namespace std;

    int main() {int i=1;do {do {

    cout

  • Lenguaje C++Lenguaje C++Estructuras cclicas

    forEsta instruccin cclica se halla presente en la mayora de los lenguajes de programacin estructurados y permite repetir unalenguajes de programacin estructurados, y permite repetir una instruccin o conjunto de instrucciones un nmero determinado de veces.

    for (inicializacin; condicin de paro; paso) {

    sentenciassentencias}

  • Lenguaje C++Lenguaje C++Estructuras cclicas

    forEjemplo: imprimir la tabla de multiplicar del 2

    #include using namespace std;main() {

    int i; int tabla = 2; for (i=1;i

  • Lenguaje CLenguaje C++++Estructuras cclicas

    forEjemplo: introducir una serie de nmeros en un arreglo

    for(i=0;i

  • Lenguaje CLenguaje C++++Estructuras cclicas

    Sentencias goto , break y continue

    goto : realiza un salto a la etiqueta especificada (e g goto et1;)goto : realiza un salto a la etiqueta especificada (e.g. goto et1;)

    break : interrumpe la ejecucin de una estructura cclica y continua en l llas instrucciones que le siguen.

    continue : se salta el resto del ciclo actual y reinicia uno nuevo. No implica necesariamente la salida de la estructura cclica.

  • Lenguaje C++Lenguaje C++Arreglos

    Los arreglos son una coleccin de variables del mismo tipo que seLos arreglos son una coleccin de variables del mismo tipo que se referencian utilizando un nombre comn.

    En C++ la cantidad de elementos que podr contener un arreglo es fijo yEn C++ la cantidad de elementos que podr contener un arreglo es fijo yse define cuando se declara el arreglo.

    Los ndices de los arreglos comienzan en cero (0) y terminan en el tamaod l l 1del arreglo menos 1.

    Los arreglos declarados globalmente o como static se inicializan a cero,mientras que los locales no se inicializan.e t as que os oca es o se c a a

    arreglo[0]

    arreglo[1]

    tipo_elemento nombre[tamao];

    int N elementos

    arreglo[n-1]

    intchar

    doublefloat

    N elementos

  • Lenguaje C++Lenguaje C++Arreglos

    int notas[40];

    double vector[] = { -1 , 5 , 3 }; -1 5 3double vector[] { 1 , 5 , 3 }; 1

    vector[0]

    5

    vector[1]

    3

    [ ]

    vector[2]

    int lista [10];lista[2] = 15; // sobrescribir elemento 3

    num = lista[8]; // extraer elemento 9

    C ifi l l it d l di d lC++ no verifica los lmites de los ndices, de manera que en el ejemplo anterior lista[19] es una operacin vlida aunque noexista el dato.

  • Lenguaje C++Lenguaje C++Arreglos

    float tabla[20][30];

    int arreglo[n][m];

    arreglo[0][0] arreglo[0][m-1]

    arreglo[1][0] arreglo[1][m-1]

    n x m elementos

    arreglo[n-1][1] arreglo[n-1][m-1]

  • Lenguaje C++Lenguaje C++Arreglos

    float tabla[20][30][40];

  • Lenguaje C++Lenguaje C++Arreglos

    Manejo de arreglos : introduccin de elementos

    n = numero de elementos

    -1 2 0 3 5 1 4 10 2 -2

    vector[0] vector[9]

    i t t [10] 10int vector[10], n=10;for(i=0 ; i

  • Lenguaje CLenguaje C++++Arreglos

    Manejo de arreglos : suma

    9

    vector[0]

    -1 2 0 3 5 1 4 10 2 -2 90vector

    ii

    vector[9]vector[0] vector[9]

    suma=0;for(i=0 ; i

  • Lenguaje C++Lenguaje C++Arreglos

    Manejo de arreglos : imprimir un arreglo

    9

    vector[0]

    -1 2 0 3 5 1 4 10 2 -2 90vector

    ii

    vector[9]vector[0] vector[9]

    for(i=0 ; i

  • Lenguaje C++Lenguaje C++Arreglos

    Manejo de matrices : introduccin de elementos

    a a a 11 12 121 22 2

    m

    m

    a a aa a a

    1 2

    ij

    n n nm

    aa a a

    for(i=0 ; i

  • Lenguaje CLenguaje C++++Arreglos

    Manejo de matrices : suma por filas

    11 12 1

    21 22 2

    ma a aa a a

    1matriz [1][ ] sumfila[1]

    m

    jj

    matriz [2][ ] sumfila[2]m

    j 21 22 2mij

    a a aa

    1matriz [2][ ] sumfila[2]

    jj

    1 2n n nma a a

    1matriz [ ][ ] sumfila[ ]

    m

    jn j n

    n

    1TOTAL sumfila[ ]

    n

    ii

  • Lenguaje C++Lenguaje C++Arreglos

    Manejo de matrices : suma por filas

    for(i=0 ; i

  • Lenguaje C++Lenguaje C++Arreglos

    Manejo de matrices : suma por columnas

    11 12 1a a a 11 12 121 22 2

    m

    m

    a a aa a a

    1 2

    ij

    n n nm

    aa a a

    1 2n n nm 1matriz [ ][1]

    n

    jj

    TOTAL sumcol[ ]m

    j 1 matriz [ ][ ]n

    jj m

    sumcol[1]j

    1TOTAL sumcol[ ]

    jj

    1

    sumcol[ ]j

    m

  • Lenguaje C++Lenguaje C++Arreglos

    Manejo de matrices : suma por columnas

    for(j=0 ; j

  • Lenguaje CLenguaje C++++Tipos de datos derivados

    EnumeracionesSon conjuntos de constantes enteras relacionadas que pueden tomar UNOd l ibl l i d l t d d fi i l C d d lde los posibles valores asignados al momento de definirla. Cada uno de losvalores especificados en la definicin de la unin es asignado un valorentero que puede ser especificado por el usuario. Si el valor entero no seespecifica entonces se asocian con las constantes enteras 0, 1, 2, 3, Las enumeraciones se definen con la palabra enum seguida del identificadordel tipo enumeracin y finalmente de una lista de items que constituyen laenumeracin.

    enum identificador { enumerador1, enumerador2, numeradorN };

    0 1 N

  • Lenguaje CLenguaje C++++Tipos de datos derivados

    EnumeracionesOtras formas de crear enumeraciones se presentan a continuacin:

    enum identificador { enumerador1=valor1, enumerador2=valor2, numeradorN=valorN };enum { enumerador1, enumerador2=valor2, numeradorN};

    Algunos ejemplos de posibles enumeraciones siguen:

    enum dia {lunes, martes, mircoles, jueves, viernes, sbado, domingo};

    enum color {amarillo, azul=4, rojo, verde=1, morado};

    enum genero {masculino, femenino, androgeno};

  • Lenguaje C++Lenguaje C++Tipos de datos derivados

    EnumeracionesLa creacin de datos enumeracin requiere el uso del identificadorseguido del nombre de la variable. Opcionalmente, se puedeseguido del nombre de la variable. Opcionalmente, se puedecolocar antes del identificador la palabra reservada enum.

    enum DiasSemanas {Domingo,Lunes,Martes,Miercoles,Jueves,Viernes,Sabado};int main() {int main() {

    DiasSemanas dia = Domingo; // alternativamente DiasSemanas dia;int diaInt = dia;f (di I t D i di I t < S b d di I t++) {for (diaInt = Domingo; diaInt

  • Lenguaje CLenguaje C++++Tipos de datos derivados

    Enumeraciones

    #include

    enum colores {negro = -1, blanco = 7, azul, rojo, cian, verde, naranja};

    main(){

    cout

  • Lenguaje C++Lenguaje C++Tipos de datos derivados

    EstructurasUna estructura es una agrupacin de varios datos los cuales pueden ser deigual o de diferente naturaleza (tipo). Las estructuras deben ser declaradasal inicio del programa, antes del main()A diferencia de los arreglos, las estructuras nos permiten agrupar variosdatos, que mantengan algn tipo de relacin, aunque sean de distinto tipo,permitiendo manipularlos todos juntos, usando un mismo identificador, ocada uno por separadop p

    struct tipo_estructura

    {

    ti i bl b i bl 1tipo_variable nombre_variable1; tipo_variable nombre_variable2;

    };

  • Lenguaje C++Lenguaje C++Tipos de datos derivados

    Estructuras

    struct trabajador{

    char nombre[20]; int edad;

    Camposint edad;char puesto[10];

    };

    trabajador fijo; typedef struct trabajador;trabajador fijo;

  • Lenguaje C++Lenguaje C++Tipos de datos derivados

    Estructuras

    struct cd{

    char artista[25];float precio;

    Artista

    precio

    canciones

    CD1

    float precio;int canciones;

    };

    ca c o es

    Artista

    canciones

    CD2typedef struct cd CD;CD CD1,CD2;

    Artista

    precio

    CD2

  • Lenguaje C++Lenguaje C++Tipos de datos derivados

    Estructuras

    Artista=Rihannastruct cd {

    h ti t [25] Artista=Rihanna

    Precio=52.60

    Canciones=12

    char artista[25];float precio;int canciones;

    } CD1;} ;cout > CD1.artista;cout > CD1.canciones;cout

  • Lenguaje CLenguaje C++++Tipos de datos derivados

    Estructuras

    struct par struct complejop{

    int x;int y;

    }

    p j{

    double real;double imaginario;

    }}

    typedef struct par punto ;punto P1,P2;

    }

    struct complejo A,B,C;

    P1.x=5;P2.y=4;

    C.real=A.real+B.real;

    y ;P2=P1;

  • Lenguaje C++Lenguaje C++Tipos de datos derivados

    Arreglo de Estructuras

    struct persona p{

    long cedula;char nombre[20];

    };};

    typedef struct persona empleado;

    empleado profesor[200];profesor[i].nombre

    empleado profesor[200];profesor[i].cedula

    Observacin 1: es posible tener estructuras anidadas.Observacin 2: C++ admite declarar funciones dentro de las estructuras, a

    tipo de dato se le denomina Clases y es uno de los elementos fundamentales de la programacin orientada a objeto.

  • Lenguaje C++Lenguaje C++Tipos de datos derivados

    UnionesLa definicin de "unin" es similar a la de "estructura", La diferencia entre

    las dos es que en una estructura, los miembros ocupan diferentes reas dela memoria, pero en una unin, los miembros ocupan la misma rea dememoria. La memoria total de la unin se define por el dato de mayortamao que exista dentro de la unin.Se puede acceder a sus campos pero no al mismo tiempo. Como ocupan lamisma rea de memoria, modificar uno equivale a modificar el valor delotro.

    union nombre {

    tipo variable campo1; p _ p ;tipo_variable campo2;

    };

  • Lenguaje C++Lenguaje C++Tipos de datos derivados

    Uniones

    union palabra struct sistemap{

    char mensajes[50];char ayudas[50];

    }

    {char mensajes[50];char ayudas[50];

    }} }

    palabra.mensajes = "Primer" sistema.mensajes = "Primer"

    palabra.ayudas = Segundo" sistema.ayudas = Segundo"

    DF1

  • Slide 103

    DF1 Pensar en cambiar esta lamina o remodelarlaDavid Fernandez, 9/3/2013

  • Lenguaje C++Lenguaje C++Tipos de datos derivados

    Uniones

    Las uniones son usadas cuando se necesita que una variable tome

    union u_tag{

    valores de tipos diferentes. En el ejemplo siguiente:

    int ival;float fval;char pval;

    } uval;} uval;

    la variable "uval" de tipo "u_tag" puede tomar valores:

    "int" si se usa "uval.ival""fl t" i " l f l""float" si se usa "uval.fval""char *" si se usa "uval.pval"

  • Lenguaje C++Lenguaje C++Punteros

    Memoria

  • Lenguaje C++Lenguaje C++Punteros

    Memoria

    Al declarar una variableestamos diciendo alestamos diciendo alordenador que reserve unaparte de la memoria RAMpara almacenarla

    La variable def guardaLa variable def guardala direccin dondereside el grupo debytes de la variableabc

  • Lenguaje C++Lenguaje C++Punteros

    Un puntero es una variable que permite almacenar direcciones de

    Definicin

    Un puntero es una variable que permite almacenar direcciones dememoria

    Son muy usados en C y C++, en parte porque algunas veces es la nicay y , p p q gmanera de programar ciertos clculos, en parte porque usualmente seobtiene cdigo ms compacto y eficiente

    Pueden producir fcilmente programas imposibles de

    entender si se emplean sin precauciones

  • Lenguaje C++Lenguaje C++Punteros

    Definicin

    El gran secreto de C++ esta en el uso de los apuntadores

    C++ usa los apuntadores en forma explicita y extensiva porque:

    Es la nica forma de expresar algunos clculos. Se genera cdigo compacto y eficiente. Es una herramienta muy poderosa

  • Lenguaje C++Lenguaje C++Punteros

    La declaracin de un puntero es inconfundible ya que su declaracini l t i f t l i i t

    Declaracin y manejo

    incluye uno o ms asteriscos y su formato es el siguiente:

    El tipo del dato puede ser:puede ser: entero punto flotante booleano carcter punteroDato compuesto

  • Lenguaje C++Lenguaje C++Punteros

    int *puntero; // Declara un puntero a una variable tipo int

    Ejemplo

    int *puntero; // Declara un puntero a una variable tipo intint var1; // Declara una variable tipo intint var2;

    1 123456 // Al l l 123456var1 = 123456; // Almacena el valor 123456puntero = &var1; // Se almacena su direccin en punterocout

  • Lenguaje C++Lenguaje C++Punteros

    Operadores

    El operador & antepuesto al nombre de una variable retorna el valor dela direccin inicial de memoria donde el compilador almacen oalmacenar el valor de la variable. Para acceder al valor que se encuentraen la direccin de memoria apuntada por un puntero se debe"dereferenciar" el puntero utilizando al operador * delante del mismodereferenciar el puntero utilizando al operador * delante del mismo.

    Por estos motivos se suele denominar a & eloperador de referencia y a * el operadoroperador de referencia y a el operadorde indireccin.

  • Lenguaje CLenguaje C++++Punteros

    Ejemplo

    EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;

    xx CC0044CC0044 11

    yy CC0048CC0048 22

    int *ip, *ip2;

    ipip CC004CCC004C ip2ip2 CC0050CC0050

    CC0054CC0054 z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C

  • Lenguaje C++Lenguaje C++Punteros

    Ejemplo

    EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;

    xx CC0044CC0044 11

    yy CC0048CC0048 22

    int ip, ip2;ip = &x;

    ipip CC004CCC004C CC0044CC0044

    ip2ip2 CC0050CC0050 CC0054CC0054

    z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C

  • Lenguaje C++Lenguaje C++Punteros

    Ejemplo

    EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;

    xx CC0044CC0044 11

    yy CC0048CC0048 11

    int ip, ip2;ip = &x; y = *ip;

    ipip CC004CCC004C CC0044CC0044

    ip2ip2 CC0050CC0050 CC0054CC0054

    z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C

  • Lenguaje C++Lenguaje C++Punteros

    Ejemplo

    EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;

    xx CC0044CC0044 00

    yy CC0048CC0048 11

    int ip, ip2;ip = &x; y = *ip;*ip = 0;

    ipip CC004CCC004C CC0044CC0044

    ip2ip2 CC0050CC0050 CC0054CC0054

    z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C

  • Lenguaje C++Lenguaje C++Punteros

    Ejemplo

    EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;

    xx CC0044CC0044 00

    yy CC0048CC0048 11

    int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i

    ipip CC004CCC004C CC0044CC0044

    ip2ip2 CC0050CC0050 CC0044CC0044

    ip2 = ip;

    CC0054CC0054 z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C

  • Lenguaje C++Lenguaje C++Punteros

    Ejemplo

    EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;

    xx CC0044CC0044 00

    yy CC0048CC0048 11

    int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i

    ipip CC004CCC004C CC0044CC0044

    ip2ip2 CC0050CC0050 CC0044CC0044

    ip2 = ip; z[0] = *ip2;

    CC0054CC0054 z[0]z[0] CC0058CC0058 00[ ][ ]

    z[1]z[1] CC005CCC005C

  • Lenguaje C++Lenguaje C++Punteros

    Ejemplo

    EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;

    xx CC0044CC0044 00

    yy CC0048CC0048 11

    int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i

    ipip CC004CCC004C CC0044CC0044

    ip2ip2 CC0050CC0050 CC0058CC0058

    ip2 = ip; z[0] = *ip2; ip2 = &z[0];

    CC0054CC0054 z[0]z[0] CC0058CC0058 00[ ][ ]

    z[1]z[1] CC005CCC005C

  • Lenguaje C++Lenguaje C++Punteros

    Ejemplo

    EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;

    xx CC0044CC0044 00

    yy CC0048CC0048 11

    int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i

    ipip CC004CCC004C CC0044CC0044

    ip2ip2 CC0050CC0050 CC0058CC0058

    ip2 = ip; z[0] = *ip2; ip2 = &z[0];*ip2 = 7;

    CC0054CC0054 z[0]z[0] CC0058CC0058 77

    p ;

    [ ][ ]

    z[1]z[1] CC005CCC005C

  • Lenguaje C++Lenguaje C++Punteros

    Ejemplo

    EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;

    xx CC0044CC0044 77

    yy CC0048CC0048 11

    int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i

    ipip CC004CCC004C CC0044CC0044

    ip2ip2 CC0050CC0050 CC0058CC0058

    ip2 = ip; z[0] = *ip2; ip2 = &z[0]; *ip2 = 7;

    CC0054CC0054 z[0]z[0] CC0058CC0058 77

    p ;*ip = *ip2

    [ ][ ]

    z[1]z[1] CC005CCC005C

  • Lenguaje C++Lenguaje C++Punteros

    Aritmtica de punteros

    La aritmtica de punteros se limita a suma (incremento), resta(d t ) i i i tili d t d(decremento), comparacin y asignacin utilizada con apuntadores.

    char c; // suponga que se crea en 0x400

    char* pc;p ;

    short int a, *pa; // suponga que a se crea en 0x500

    pc = &c; // pc ahora apunta a 0x400

    pc pc + 1; // pc ahora apunta a 0x401pc = pc + 1; // pc ahora apunta a 0x401

    pa = &a;

    pa++; // pa contiene el valor 0x502

  • Lenguaje C++Lenguaje C++Punteros

    Aritmtica de punteros

    En un arreglo, sug ,nombre es unpuntero constante.Por lo tanto, elnombre del arreglonombre del arregloconoce donde estel primer elemento(primera variable) delgrupo.

    El nombre del arreglo no es una variable, es una constante. g ,Sus elementos son las variables.

    No se requiere & si se apunta al inicio de un arreglo

  • Lenguaje C++Lenguaje C++Punteros

    Punteros y funcionesEn general, cuando C++ pasa argumentos a funciones los pasa por valor,es decir si el parmetro es modificado dentro de la funcin una vez quees decir, si el parmetro es modificado dentro de la funcin, una vez quetermina la funcin el valor pasado (original) de la variable permaneceinalterado.

    Sin embargo, hay muchos casos que se quiere alterar el argumentopasado a la funcin y recibir el nuevo valor una vez que la funcin haterminado Para hacer lo anterior se debe usar una llamada porterminado. Para hacer lo anterior se debe usar una llamada porreferencia, que se realiza en C++ pasando un puntero al argumento.

  • Lenguaje C++Lenguaje C++Punteros

    Punteros y funcionesPunteros y funcionesvoid intercambiar(a, b);main() {

    int a = 1 b = 3;int a 1, b 3;cout

  • Lenguaje CLenguaje C++++Punteros

    Arreglos de punteros

    En C++ se pueden tener arreglos de apuntadores ya que, los apuntadores son variables

    i t *di [7] d l d 7 t tint *dia[7] da: arreglo de 7 punteros a enteros

    int *vector[]={ }vector: arreglo de n punteros aenteros definido por la cantidad deint vector[]={,,} enteros definido por la cantidad deelementos presentes en {}

    int (*hora)[12] hora: puntero a un arreglo de 12 enteros( )[ ] p g

  • Lenguaje C++Lenguaje C++Punteros

    Arreglos de punteros : ejemplo

    Se desea ordenar las lneas de un texto de diferente longitud como semuestra en la figura. Escriba las lneas de cdigo que realizan estaoperacin.

    SolSol

    MaraMara

    SolSol

    LuisLuisMaraMara

    LuisLuis

    LuisLuis

    MaraMara

  • Lenguaje C++Lenguaje C++Punteros

    Arreglos de punteros : ejemplo

    1.- Guardar todas las lneas en un arreglo de tipo char grande.2 Guardar los apuntadores en un arreglo diferente donde cada puntador2.- Guardar los apuntadores en un arreglo diferente donde cada puntadorapunta al primer carcter de cada lnea3. Comparar dos lneas usando la funcin de la biblioteca estndarstrcmp().

    S lS l

    4. Si dos lneas estn desacomodadas intercambiar los apuntadores (no eltexto).

    p[0] p[0]SolSol

    MaraMara

    p[0]

    p[1]

    p[0]

    p[1]

    strcmp

    LuisLuisp[2] p[2]