introducciÓn al lenguaje c++. 2 entrada y salida  en c++ la entrada y salida de datos se realiza...

Download INTRODUCCIÓN AL LENGUAJE C++. 2 Entrada y Salida  En C++ la Entrada y Salida de datos se realiza a través de operaciones de flujos (streams).  Estos

Post on 29-Jan-2016

218 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • INTRODUCCIN AL LENGUAJE C++

  • Entrada y SalidaEn C++ la Entrada y Salida de datos se realiza a travs de operaciones de flujos (streams).

    Estos flujos estn definidos en la librera iostream.h que deber ser includa en el programa.

  • Salida: coutcout corresponde al flujo de SALIDA.

    Normalmente corresponde a la pantalla del usuario.

    El operador de inserccin,

  • Salida: Formatocout.setf(ios::fixed) Imprime en formato punto fijo (scientific es el estndar)

    cout.setf(ios::showpoint) Imprime mostrando el punto decimal.

    cout.precision(n) Cantidad de decimales de precisincout.width(n) Espacios para mostrar un valor.cout.setf(ios::right) Justifica el texto a imprimir a la derecha. (left)

  • Entrada: cinProporciona un flujo de entrada.

    El operador de extraccin >>, extrae valores del flujo y lo almacena en variables.

    Normalmente el flujo de entrada es el teclado.int numero1, numero2;cin>>numero1;cin>>numero2;

  • #include void main(){ cout > miEdad; cout > suEdad; if (miEdad < suEdad) cout suEdad) cout
  • Tipos de Datos ELEMENTALES

  • Tipos de Datos: Numricos

    TipoEjemploBytesRangochara10..255short-151-128..127int10242-32768..32767long2621444-2147483648..2147483637float10.543.4*10E-38.3.4*10E308double0.0004581.7*10E-308..1.7*10E308

  • PunterosUna variable que puede almacenar una direccin de memoria se llama puntero.

    Una variable de tipo puntero puede guardar direcciones de variables de un tipo determinado: punteros a int, double, char, etc.

  • Declaracin de punterostipo *nombre_variable;

    int i=3, *p,*r;// p y r son punteros a enterodouble d=3.3,*q;// q es un puntero a doublechar* c='a', *t;// t es un puntero a carcter

    p=&i;r=p;p = q; es un ERROR porque son punteros de diferente tipo.

  • Otras operaciones con punteros

    cin>>*p;if (p==r)cout

  • Mostrar una direccinEs posible mostrar el una direccin como valor de una variable de tipo puntero, o la direccin de cualquier variable, en la pantalla utilizando un cout.

    cout

  • Ejemplo Ilustrativo1. int *p, *q, a=52. p=&a5a:a:a:a:

  • Ejemplo Ilustrativoa:a:b:NOTAa,b,p,q : variables locales automticas

  • Ejemplo 1:void main(){ int x, y, *p, *q;p = &x;*p = 5;q = &y;*q = 23;cout
  • Ejemplo 2:void main(){int *p, *q, x, y;

    p = &x;*p = 14;q = p;cout

  • Ejemplo 3:void main(){int x, y, *p, *q;p = &x;*p = 12;q = &y;*q = 23;cout
  • Ejemplo 4:void main(){int x, y, *p, *q;p = &x;*p = 14;q = p;if ( p == q)cout
  • Tipos enumerados enum Frutas {Manzana, Pera, Guinda, Kiwi,}; enum Color {Rojo=10, Verde, Azul};void main(){Color c=Verde; if (c==Verde)cout
  • Tipos de Datos ESTRUCTURADOS

  • Tipos de Datos: ArreglosPermite definir variables estructuradas homogneas.Vectores o Arreglos Unidimensionales

    int v[10];cout

  • Tipos de Datos: MatricesMatrices o Arreglos Bidimensionales

    float a[5][3];int x[5][3]={{33,21,47}, {82,91,95}, {50,72,45}, {36,79,63}, {53,60,74}} cout

  • Tipos de Datos: StringsStrings: Vector de caracteres, que termina con el caracter NULO: '\0'

    char s[5];char s1[5]={'h','o','l','a','\0'};char s2[5]="hola";char s3[]="hola";typedef char String[5]String s;

  • Tipos de Datos: StringsLa lectura de un Stringcin>>s;Lee del flujo de entrada un string.Deja para la siguiente lectura el '\n'No reconoce el espacio inicial en las entradasi=1;do{cin>>s;cout
  • Tipos de Datos: StringsLa lectura de un Stringcin.getline(s, largo);Lee del flujo de entrada un string de largo caracteres.La lectura termina:Con la lnea ('\n'), si la cantidad de caracteres es menor que largo. Cuando se extrado la cantidad largo de caracteres, aunque NO haya terminado la lnea.

  • Tipos de Datos: StringsLa lectura de un Stringi=1;do{cin.getline(s,20);cout
  • Tipos de Datos: StringsFunciones de stringsstrlen(string);strcpy(destino,origen);strcmp(string1, string2);0: Si string1 ==string21: Si string1 > string2-1: Si string1 < string2

  • Tipos de Datos: Strings#include #include

    void main(){char x[5]; char y[]="Hola"; strcpy(x,y);

    cout

  • Tipos de Datos: Strings#include #include

    void main(){char *x; char y[]="Hola"; x=new char[strlen(y)+1];

    cin.getline(x,20);

    cout

  • Tipos de Datos: Strings#include #include

    void Copiar(char a[], char b[]){strcpy(a,b);}

    void main(){char *x; char y[]="Hola"; x=new char[strlen(y)+1]; Copiar(x,y); cout

  • Tipos de Datos: Strings#include #include

    void Copiar(char *a, char *b){strcpy(a,b);}

    void main(){char *x; char y[]="Hola"; x=new char[strlen(y)+1]; Copiar(x,y); cout

  • Tipos de Datos: Strings#include #include

    char *Mayor(char a[], char *b){if (strcmp(a,b)>0) return a; return b;}

    void main(){char *x; char y[]="Hola"; x=new char[strlen(y)+1]; cin.getline(x,20);

    cout

  • Tipos de Datos: EstructurasConstructor de tipos de dato que permite agrupar elementos de diversos tipos de datos como UNA variable.struct{int RUT; char nom[10]; float prom;} Persona;Persona a;RUT nom promcout
  • Tipos de Datos: Estructurasstruct{int hh; int mm; int ss;} Hora;Hora h, v[10], *p;h.hh=8;p=&h;v[3].hh= 5;v[7]=(*p).hh;cout
  • Nuevos Tipos de Datostypedef int Vector[10];Vector v;typedef float Matriz[5][3];Matriz a;typedef enum Boolean {FALSE, TRUE};enum Color {Rojo, Verde, Azul, Amarillo}typedef struct Persona{ char paterno[10]; char materno[10]; char nombre[10];};

  • Nuevos Tipos de DatosVector v; // int v[10];Boolean sw = FALSE;

    Persona alumno;

    Numero x;typedef union Numero{ int i; float f;};

  • OBJETOS CONSTANTES

  • Objetos ConstantesSe definen mediante el prefijo const.Estos objetos NO puede ser modificada por asignacin.Slo se permite su inicializacin.const int x;// error: x debe ser inicializadax = 7;// error: x no puede ser modificada por asignacinconst int z = 3; cout
  • FUNCIONES

  • Definicin Tipo de retorno Nombre ( Parmetros ){ declaraciones localesInstrucciones} Las funciones no se pueden anidar.

    Todas las funciones son externas, se pueden llamar desde cualquier punto del programa.

  • Prototipo de funciones#include void f1(); void f2(void); void main() { f1(); f2(); } void f1() {cout
  • Tipos de retornoSi la funcin no devuelve un valor int, se debe especificar el tipo de dato devuelto: char, double, float

    Tambin puede retornar un UN PUNTERO.

    Puede no retornar valores (void).

    Puede retornar una referencia: (ALIAS)& Nombre(parmetros)

  • Declaracin (prototipo)Tipo_de_retorno Nombre ( Parmetros );Se pueden omitir los nombres de los parmetros y dejar solamente los tipos.

    No es necesario declarar las funciones si las definimos antes de usarlas.

  • Variables locales y globalesUna variable que se declara fuera de las funciones es una variable global y puede ser utilizada dentro de todas las funciones del programa.

    Una variable que se declara dentro de una funcin es una variable local y solamente puede ser utilizada dentro de dicha funcin. Al terminar la ejecucin de la funcin desaparece.

  • ParmetrosParmetros Formales

    Son los que se escriben al definir y/o declarar la funcin.

    Parmetros Actuales

    Son los que se escriben al llamar la funcin. Argumentos.

    Los parmeros actuales se usan para dar valor inicial a los parmetros formales o para recibir valores desde las rutinas.

  • Parmetros actualesLos parmetros actuales pueden ser:ValoresVariablesExpresiones.Ejemplo:total = CalcArea(20, 4);L = 30;A=12;total = CalcArea(L,A+2);

  • Formas de ParametrizacinParmetros por Valor

    Al llamar a la funcin se copia valor del parmetro actual en el parmetro formal.El parmetro formal se inicializa con el valor de parmetro actual. La funcin trabaja con una copia, por lo tanto:No modifica el valor de la variable o parmetro actual.

    LLAMADADEFINICINEjemplo(a);Ejemplo(a+1);Ejemplo(4);void Ejemplo(int x)

  • Parmetros por Referencia

    Se pasa la direccin del parmetro actual al parmetro formalEl parmetro actual es ALIAS del parmetro formalLa funcin puede cambiar su valor.Formas de Parametrizacin

    LLAMADADEFINICINEjemplo(a);void Ejemplo(int&x)

  • Ejemplo: Por referenciavoid Ejemplo(int a, int &b);

    void main( ){int x = 2, y = 4; Ejemplo(x, y); cout

  • Ejemplo:Escriba una funcin que calcule el cuadrado y el cubo de un nmero entero.stos resultados se DEBEN retornar como parmetros.

  • Ejemplos: Prototipos#include

    int cuadPorVal(int);void cuadPorInd(int *);void cuadPorRef(int &);

  • Ejemplosvoid main(){ int x = 2, y = 3, z = 4; cout
  • Ejemplosint cuadPorVal(int a){return a = a*a; }

    void cuadPorInd(int *b){*b = (*b) * (*b); }

    void cuadPorRef(int &c){c = c*c; }

  • Prototipos de funciones

    #include void f1();void f2(void);main(){f1();f2();return 0;}void f1(){ cout

  • Funciones en lneaLa clusula inline sugiere al compilador la generacin de una copia del cdigo de esa funcin "in situ" (cuando sea apropiado), a fin de evitar una llamada.

    Esta sugerencia es generalmente acogida en el caso de funciones pequeas.

  • Funciones inlineinline