Diferencias sintácticas entre C y C++ Pablo San Segundo (C-206)

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Unidad 15 Características de C++ no relacionadas con el DOO.
Introducción a C#.
Ejemplo de Programa C++
Repaso para la construcción del intérprete 2012
Funciones. Programación, Algoritmos y Estructuras de Datos.
A partir del lenguaje C Entorno de programación Visual C++
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Programación 1 Presentación de c++
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Archivos Programación.
Numeric Types, Expressions, and Output
Prog. Univ. Rodríguez Rey, Pablo Funciones Programación I.
Archivos.
1 3Tablas o matrices 3.1. Concepto Las tablas corresponden al concepto matemático de matriz. Todos sus elementos deben ser del mismo tipo y se accede a.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Informática Ingeniería en Electrónica y Automática Industrial
Sintaxis de C# (Declaraciones y Tipos)
Computación II Unidad IX Flujos y archivos. Presentación de la unidad Objetivos: –Comprender como utilizar el flujo de entrada y salida en C++ –Comprender.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
FIEE VARIABLES Ing. José Antonio Poma G.. FIEE Variables Una variable es un identificador (nombre de la variable) que hace referencia a.
El lenguaje de programación C - Vectores y matrices -
Herramientas de polimorfismo y herencia en C++
Introducción a los punteros Prof. Domingo Hernández.
Elementos básicos del lenguaje
Unidad II Introducción a la programación en C++
Programación en C para electrónicos
1 Unidad IV Archivos en Java y C++ M.C. Juan Carlos Olivares Rojas.
PARCIAL DE JUNIO DEL 2014 LENGUAJE DE PROGRAMACIÓN UN LENGUAJE SE PUEDE DEFINIR COMO UN CONJUNTO DE PALABRAS Y FORMAS DE EXPRESIÓN POR MEDIO DE.
Elementos básicos del lenguaje
1 Definición y Conversión de datos Agustín J. González ELO-329.
Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad.
Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad.
INTRODUCCIÓN AL LENGUAJE C++
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
PRINCIPIOS DE PROGRAMACIÓN
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
Algoritmo.
CLASE 10. AGENDA 1 Repaso 2 Operadores 3 Directivas 14 Entrada y Salida de Datos.
Desarrollador Profesional de Juegos Programación III Unidad I El manejador universal.
CONSTANTES DENTRO DE UN CÁLCULO O EN LOS PASOS PARA SOLUCIONAR UN PROBLEMA, EXISTIRÁN VALORES QUE NUNCA VAN A CAMBIAR Y SE LOS CONOCE COMO CONSTANTES.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
PARCIAL 2. LENGUAJE DE PROGRAMACIÓN UN LENGUAJE SE PUEDE DEFINIR COMO UN CONJUNTO DE PALABRAS Y FORMAS DE EXPRESIÓN POR MEDIO DE LAS CUALES SE COMUNICAN.
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Desarrollador Profesional de Juegos Programación III Unidad I Capturar Excepciones.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
Lenguaje de Programación II PLAN DE EVALUACIÓN CONTENIDO MODALIDAD DE EVAL. PONDERACIÓN INTRODUCCIÓN BÁSICA AL LENGUAJE DE PROGRAMACIÓN.
Repaso C Ficheros, memoria dinámica, … Pablo San Segundo (C-206)
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
1 Estructuras de Datos Introducción a la Informática Departamento de Sistemas Universidad del Cauca 2006.
Prof. Manuel B. Sánchez. La parte ingenieril de un proceso de desarrollo de software, comprende realizar un diseño del sistema antes de empezar a escribir.
FUNDAMENTOS DE PROGRAMACIÓN VARIABLES, CONSTANTES Y TIPOS DE DATOS EN C.
Manejo de archivos de texto.  Unidad fundamental de almacenamiento dentro del ámbito de la informática. Alberga un conjunto de datos que es posible leer,
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Sobrecarga de operadores Pablo San Segundo (C-206)
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
Funciones y paso de parámetros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 24.
Arreglos en C++ (una y dos dimensiones)
Transcripción de la presentación:

Diferencias sintácticas entre C y C++ Pablo San Segundo (C-206)

Extensión de ficheros fuente  Extensión de ficheros fuente en C:  filename.c  Extensión de ficheros fuente en C++  filename.cpp Linker filename.cppfilename.exe

Algunas palabras reservadas nuevas  algebra booleana  bool, true, false  espacios de nombres  using, namespace, ::  clases, objetos  class, public, private, protected, friend, virtual, this etc.  reserva de memoria  new, delete  funciones  inline, & (argumento referencia)  sobrecarga de operadores  operator  excepciones  catch, throw

Prioridad y asociatividad de operadores OperadorAsociatividad :: ( ) [ ]. -> v++ v-- typeid dynamic_cast  - + ! * & ++v --v sizeof new delete (tipo)  ->*.*  * / %  + -  >  >=  == !=  &&  ||  ? :  = *= /= %= += -= ,  monarios printf(“%d”,3-5-2); printf(“%d”,3*5+2); matemáticos

Declaraciones e inicializaciones  En C++ se pueden inicializar variables en cualquier momento, con visibilidad desde ese punto hasta el final del bloque. void main(){ int a=0;//declaración tipo C for(int i=0; i<10; i++){ int sum=i; } int b=8; }

Operador ámbito (resolución de visibilidad)  :: : permite acceder a una variable global oculta por una variable local int i=30; void main(){ for(int i=0; i<10; i++){ printf("%d",::i); }

Espacios de nombres  namespace  using namespace int suma(int a, int b){ return a+b; } void main(){ printf("la suma es: %d\n",suma(3,5); } namespace a309{ int suma(int a, int b){ return a+b; } void main(){ printf("la suma es: %d\n",a309::suma(3,5); } namespace a309{ int suma(int a, int b){ return a+b; } using namespace a309; void main(){ printf("la suma es: %d\n“,suma(3,5); }

Comentarios // printf(“hola\n”); // printf(“adios\n”); printf(“hola y adios\n”); C++ C /* printf(“hola\n”); printf(“adios\n”);*/ printf(“hola y adios\n”); también /* …*/

Tipos de datos definidos por el usuario (1/2)  struct: simplificación de la sintaxis struct foo_t{ int a; int b; }; void main(){ struct foo_t miFoo={1,3}; } struct foo_t{ int a; int b; }; void main(){ foo_t miFoo={1,3}; } C C++

Tipos de datos definidos por el usuario (2/2)  enum: En C++ es un tipo específico y no se permiten conversiones implícitas de tipo int como en C enum enum_t {UNO=1, DOS, TRES, CUATRO}; void main(){ enum_t numero=(enum_t)1;//conversión obligatoria en C++ int dato=TRES;//permitido en C++ } EJERCICIO I: Implemente un programa que asigne la tirada de un dado a un dato enum con los valores UNO…SEIS #include enum dado_t{UNO=1, DOS, TRES, CUATRO, CINCO, SEIS}; void main(){ srand(time(NULL)); int x= rand()%6+1; dado_t mydado= (dado_t)x; printf(“%d”, mydado); } EJERCICIO II: Coloque una pieza de ajedrez de manera aleatoria en la esquina inferior derecha de un tablero de ajedrez

Modificaciones en funciones (1/5)  inline : Indica al compilador que incorpore el código de la función en cada llamada  Se declara habitualmente en la definición de la función  Una función declarada inline tiene visibilidad de archivo inline int suma(int a, int b){ return a+b; }; void main(){ printf(“suma: %d”, suma(2,3)); } #define SUMA(X,Y)((X)+(Y)) void main(){ printf("suma: %d",SUMA(2,3)); } EJERCICIO: Implemente una MACRO equivalente en C para la función suma

Modificaciones en funciones (2/5)  Sobrecarga de funciones: Diferenciación entre funciones por los tipos de sus argumentos, en tiempo de compilación  Un valor de retorno distinto NO es suficiente double suma(double a, double b){ puts("suma de numeros en coma flotante"); return a+b; }; int suma (int a, int b){ puts("suma de enteros"); return a+b; }; void main(){ printf("sumas: %d",suma(2,3));//enteros printf("sumas: %f",suma(2.0,3.0));//doble precisión } EJERCICIO: Sobrecargue la función suma con la suma de dos puntos 2D

Referencias  Una referencia puede verse como un nombre alternativo (o alias) para una variable.  Sintaxis: operador ‘&’ como l-value  Aplicación: paso por referencia de argumentos a una función void main(){ int n=10; int &p = n;//inicialización del alias printf("%d %d\n",p, n); p=15; printf("%d %d\n",p, n); } CUESTIÓNES ¿Se puede declarar una referencia constante? ¿Qué comportamiento tiene una referencia constante?

Modificaciones en funciones (3/5)  Uso de referencias como argumentos: Indica al compilador el paso por referencia.  El argumento funciona como alias de la variable pasada con visibilidad local  Paso de una referencia constante  Argumentos son sólo de lectura  Permite el paso de constantes como argumentos void suma(double a, double b, double& res){ puts("suma de numeros en coma flotante"); res=a+b; }; void main(){ double r; suma(2.0, 3.0, r); printf("%f \n", r); } void foo(const double& a); EJERCICIO: Implemente una función que simule la tirada de un dato y devuelva el valor por referencia. Compare la sintaxis con una función similar en C.

Modificaciones en funciones (4/5)  Uso de referencias como valor de retorno:  El retorno de una referencia tiene aplicación directa en la sobrecarga de operadores  Es incorrecto devolver una referencia a una variable/objeto automático creado dentro la función int& foo( int &a, int &b){ a+=b; return a; } void main(){ int a=3; int b=5; foo(a,b)+=25; printf(“la suma es: %d”, a); }

Ejercicio int& foo( int &a, int &b){ a+=b; return a; } void main(){ int a=3; int b=5; foo(a,b)+25; printf("la suma es: %d\n",a); foo(a,b)+=25; printf("la suma es: %d\n",a); foo(a,b)+foo(a,b); printf("la suma es: %d\n",a); printf("la suma es: %d\n”, foo(a,b)+foo(a,b)); printf("la suma es: %d\n", foo(3,5)); } a (pre)a (post)salida Err Indique la salida en pantalla del siguiente programa

Modificaciones en funciones (5/5)  Argumentos por omisión: se permiten en C++ siempre que sea en los argumentos finales  Tienen que definirse obligatoriamente en la declaración de la función double suma(double a, double b = 5.0){ puts("suma de numeros en coma flotante"); return a+b; }; void main(){ printf("%f \n", suma(2.0)); }

Cuestiones ¿Son correctos los siguientes prototipos de funciones? double foo(double a, double b = 5.0); double foo(double a, double b = 5.0, int c = 10); double foo(double a, int b = 20, int c = 10); double foo(float a = 10, double b, double c = 5.0); double foo(int a = 10, int b=5); void main(){ double res= foo(20); }

Reserva dinámica de memoria  Palabras clave new y delete  Equiparables a malloc y free en C  REGLA: Tantos delete como new EJERCICIO: Implemente un programa que: 1. Pregunte al usuario por las dimensiones de una matriz (n, m) 2. Reserve memoria 3. Inicialice sus valores a 0 4. Imprima la matriz en pantalla 5. Libere la memoria adecuadamente antes de terminar int* p = new int; delete p; int* vector = new int[10]; delete [] vector;

C++ Standard Library (STL)  ISO/IEC 14882:2003  C++ Standard Library: colección de clases y funciones que están ligadas al lenguaje y forman parte del ISO  Espacio de nombres (std::)  using namespace std; #include using namespace std; void main(){ cout<<“hola mundo”<<endl;//equivale a std::cout<<… }

Flujos (entrada / salida)  Flujo: objeto lógico que representa el canal de comunicación  Flujos en C++ (se crean automáticamente)  cin: flujo de entrada estándar (por defecto teclado)  cout: flujo de salida estándar (por defecto pantalla)  cerr y clog: flujos de errores y mensajería (por def. pantalla)  #include (NO )  Sobrecarga de operadores >> y <<  Predefinido para tipos de datos base  Cada dato sabe la cadena de caracteres que lo representa  Sobrecargables para los tipos de datos de usuario operadores texto

Ejemplo: manejo de flujos con tipos base #include using namespace std; void main(){ cout<<"Introduzca tres sumandos separados por un espacio"<<endl; int a, b, c; cin>>a>>b>>c; cout<<"la suma es:"<<a+b+c<<endl; } EJERCICIO: Modifique el programa anterior relativo a la inicialización de una matriz a 0 para que: 1.Gestione la salida a pantalla mediante el flujo cout 2.Gestione la entrada por teclado de las dimensiones de la matriz mediante el flujo cin

Equivalencias de flujos con C (1/2)  Salida a pantalla  stdout-printf #include  cout: #include  Entrada por teclado  stdin-scanf: #include  cin: #include  Salida a fichero  fprintf#include  [o]fstream#include  Entrada desde fichero  fscanf#include  [i]fstream#include

Equivalencias de flujos con C (2/2)  Salida a cadena de caracteres en memoria con formato  sprintf#include  [o]stringstream#include  Entrada desde cadena de caracteres en memoria con formato  sscanf #include  [i]stringstream #include

Ejemploscon flujos (1/2) #define NUM_NAMES3 #include int main(void){ FILE * pFile; int n; char name [100]; pFile = fopen ("myCfile.txt","w"); for (n=0 ; n<NUM_NAMES ; n++){ puts ("please, enter a name: "); gets (name); fprintf (pFile, "Name %d [%s]\n",n+1,name); } fclose (pFile); return 0; } #define NUM_NAMES3 #include using namespace std; int main(void){ char name [100]; ofstream f("myC++file.txt", ofstream::out); for (int n=0 ; n<NUM_NAMES ; n++){ cout<<"please, enter a name: "<<endl; cin>>name; f<<"Name "<<n+1<<" ["<<name<<"]"<<endl; } f.close(); return 0; }

Ejemploscon flujos (2/2) #define NUM_NAMES 3 #include int main(void){ int n; char name [100]; char formatted_name [100]; for (n=0 ; n<NUM_NAMES ; n++){ puts ("please, enter a name: "); gets (name); sprintf(formatted_name, "Name %d [%s]\n",n+1,name); puts(formatted_name); } return 0; } #define NUM_NAMES 3 #include using namespace std; int main(void){ char name [100]; ostringstream oss(""); for (int n=0 ; n<NUM_NAMES ; n++){ cout<<"please, enter a name: "<<endl; cin>>name; oss<<"Name "<<n+1<<" ["<<name<<"]"<<endl; cout<<oss.str(); oss.str(""); oss.clear(); } return 0; }

Ejercicio  Un alumno tiene asociado los siguientes datos en una asignatura:  Nombre del alumno  Nombre de la asignatura  Número de matricula  Número de grupo  Se pide:  Contruir una cadena de caracteres en memoria de la forma:  Log a fichero de texto “log.txt” de esta información. nombre: Mario Pedraza asignatura: Informatica Industrial matricula_id: grupo: 3

Conversión explícita (forzada)  static_cast (dato)  Convierte el dato al tipo nuevo si posible void main(){ cout<<'A'<<endl; cout ('A')<<endl; //conversión explícita cout<<5.70<<endl; cout (5.70)<<endl; //conversión explícita } void main(){ int a =5.03; //conversión implícita }  dynamic_cast (dato)

Paso de argumentos desde la línea de comandos  int main (int argc, char* [] argv)  argc : número de argumentos pasados en línea de comandos incluyendo el nombre del ejecutable  argv : tabla de argumentos pasados  argv[0] es el nombre del binario EJERCICIO: Implemente un programa que reciba como argumentos un nombre (string) y un identificador (entero) y muestre en pantalla ambos. Nota: Muestre un mensaje de error en caso de que falten algunos de los dos datos.