50
Denis Castillo Adriana Garcés Maykol Manosalva Diogo Lopes ESTRUCTURA DE LENGUAJE DE PROGRAMACION Prof. Jenny Ríos

Estructura de Lenguaje C++

Embed Size (px)

Citation preview

Page 1: Estructura de Lenguaje C++

Denis CastilloAdriana GarcésMaykol ManosalvaDiogo Lopes

ESTRUCTURA DE LENGUAJE DE PROGRAMACION

Prof. Jenny Ríos

Page 2: Estructura de Lenguaje C++

INTRODUCCION

C++ es un lenguaje de programación creado por Bjarne Stroustrup en los laboratorios de At&T en 1983. Stroustrup tomó como base el lenguaje de programación más popular en aquella época el cual era C.

La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitieran la manipulación de objetos.

En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido

C++ pretende llevar a C a un nuevo paradigma de clases y objetos con los que se realiza una comprensión más humana basándose en la construcción de objetos, con características propias solo de ellos, agrupados en clases.

Es decir, si yo quisiera hacer un programa sobre animales, crearía una clase llamada animales, en la cual cada animal, por ejemplo un pato, sería un objeto.

Page 3: Estructura de Lenguaje C++

PRINCIPIOS DEL DISEÑO DEL LENGUAJESintaxis:

Es la forma correcta en que se deben escribir las instrucciones para el

computador en un lenguaje de programación específico, o sea su Estructura

Gramatical.

C++ hereda la sintaxis de C estándar, es decir, la mayoría de programas escritos

para el C estándar pueden ser compilados en C++.

Un programa en C++ es una secuencia de caracteres que se agrupan en

componentes léxicos (tokens) que comprenden el vocabulario básico del

lenguaje.

Estos componentes de léxico son: palabras reservadas, identificadores,

constantes, constantes de cadena, operadores y signos de puntuación.

Page 4: Estructura de Lenguaje C++

Comentários:

/* Comentario estilo C*/, se puede extender // Este tipo de comentario termina al final de la línea, sólo es posible una línea de comentario .

La versión /*...*/ se utiliza para comentarios que excedan una línea de longitud, y la versión //... se utiliza sólo para comentarios de una línea.

Identificadores

Los identificadores (nombres de variables, constantes, etc.) deben comenzar con una letra del alfabeto (mayúscula o minúscula) o con un carácter subrayado y pueden tener uno o más caracteres. Los caracteres segundo y posteriores pueden ser letras, dígitos o un subrayado, no permitiéndose caracteres no alfanuméricos ni espacios.

test_prueba //legal X123 //legal multi_palabra //legal var25 //legal 15var //no legal

Page 5: Estructura de Lenguaje C++

asm* auto breakcasecatch*charclass*const

continue default delete* dodoubleelse enurnextern

floatfor friend*gotoifinline*int long

new*operator*private*protected* public*register returnshort

signedsizeof static struct switchtemplate*this*throw*

try typedef unionunsignedvirtual* voidvolatile while

Palabras reservadas de C++

Las palabras reservadas o claves no se deben utilizar como identificadores, debido

a su significado estricto en C++.

Las palabras reservadas de C++ según el ARM (Siglas del libro de BJARNE

STROUSTRUP en el que se definen las reglas de sintaxis del lenguaje C++

estándar) son:

Page 6: Estructura de Lenguaje C++

Declaración de constantes

En C++, los identificadores de variables/constantes se pueden declarar

constantes, significando que su valor se inicializa pero no se puede

modificar. Estas constantes se denominan simbólicas. Esta declaración se

realiza con la palabra reservada const.

const double PI = 3.1416; const char BLANCO = ' '; const double PI_EG = PI; const double DOBLE_PI = 2*PI;

Declaración De Variables:

En C++, las declaraciones de variables se pueden situar en cualquier

parte de un programa. Esta característica hace que el programador

declare sus variables en la proximidad del lugar donde se utilizan las

sentencias de su programa.

Page 7: Estructura de Lenguaje C++

Ejemplo de Error de Sintaxis:

Suceden cuando existe código inválido que el compilador no entiende.

• intentas multiplicar una variable de tipo string (cadena) con una variable de tipo integer (entero). El compilador lo detectará porque no puede compilarlo así.

• Cuando olvidas cerrar algún paréntesis o algún corchete.

#include <stdio.h>int main () { int i ; for ( i= 0; i<100; ++1)

printf ( “%d\n” , i); double j; for ( j= 1.7547; j< 25.4675; j+= .001)

printf ( “%lf\n” , j); }

#include <stdio.h>int main (){ for ( int i= 0; i<100; ++i)

cout<< i <<endl; for ( int j= 1.7547; j<25.4675; j+= .001)

cout<< j<<;}

Ejemplos de Código en C++

Page 8: Estructura de Lenguaje C++

Sistema de tipos

El concepto de tipo es muy importante en C++. Cada variable, argumento de función y valor devuelto por una función debe tener un tipo para compilarse. Asimismo, antes de evaluar cada una de las expresiones, el compilador da implícitamente un tipo a estas expresiones. 

Algunos ejemplos de tipos son int, que almacena valores integrales, double, que almacena valores de punto o la clase std::basic_string de la biblioteca estándar, que almacena texto. 

Puede crear su propio tipo definiendo un objeto class o struct.

 El tipo especifica la cantidad de memoria que se asignará para la variable (o el resultado de la expresión), las clases de valores que se pueden almacenar en esa variable, cómo se interpretan estos valores (como patrones de bits) y las operaciones que se pueden realizar en ella. 

Page 9: Estructura de Lenguaje C++

Tipo Tamaño ComentarioINT 4 bytes Opción predeterminada para los valores enteros.

double 8 bytes Opción predeterminada para los valores de punto flotante.

bool 1 byte Representa valores que pueden ser true o false.

char 1 byte Se utiliza en los caracteres ASCII de cadenas de estilo C antiguas u objetos std::string.

wchar_t 2 bytes Representa valores de caracteres “anchos” . Es el tipo de carácter que se utiliza en las cadenas de tipo std::wstring.

unsigned char

1 byte C++ no tiene un tipo byte integrado. Utilice un carácter sin signo para representar un valor byte.

unsigned int

4 bytes Opción predeterminada para los marcadores de bits.

long long 8 bytes Representa valores enteros muy grandes.

Page 10: Estructura de Lenguaje C++

Semántica

La semántica es considerada una aplicación de la matemática lógica, refleja el significado de programas o funciones.

Los programas pueden separarse en su parte sintáctica (la estructura gramatical) y su parte semántica (el significado).

Ejemplo de Errores semánticos:

el código de programación es válido porque el compilador lo entiende, pero el programa resultante no hace lo que el programador quiere que haga. No hay forma de que el compilador detecte estos errores.

Ejemplos:

1. Sumar uno 1 a la variable X

x -= 1; (En este caso estamos restándole 1 a la variable X).y += 1; (En este caso estamos sumándole 1 a la variable Y).

Page 11: Estructura de Lenguaje C++

2.  Actualizar todos los elementos de A

for (size_t i=1; i  update(A[i]);

En este caso nos estamos olvidando de actualizar al arreglo A en su posición 0, es decir A[0], por lo que se trata de un error semántico.

3. Calcular el área de un rectángulo.

int CalcularArea( int ancho, int largo ){return ancho + largo;}

En la función anterior, la sintaxis es correcta, pero hay un error semántico.

En realidad para calcular el área del rectángulo se debería multiplicar en lugar de sumar. 

Page 12: Estructura de Lenguaje C++

Gestión de Memoria:

El lenguaje de programación C++ nos ofrece una gestión de memoria

muy cercana a la RAM, para realizar un uso eficiente de la memoria es

preciso conocer más de cerca cómo se organiza la memoria de un

programa.

Los tipos de memoria de un programa en C++

• Memoria global

• La pila (stack)

• Head (mónton) y Memoria Dinámica

Memoria global

La pila (stack)

Head

Page 13: Estructura de Lenguaje C++

Gestión de Memoria:

C++ permite poder reservar memoria según se va necesitando, es decir, en

tiempo de ejecución.

Ventaja de utilizar memoria dinámica:

Los programas aprovecharán mejor la memoria del ordenador en el que se

ejecuten, usando sólo lo necesario.

C++ proporciona dos operadores para la gestión de memoria:

• new() permite reservar memoria del almacén libre.

• delete() permite liberar la memoria cuándo no se necesita

Page 14: Estructura de Lenguaje C++

El Operador NEW

Permite reserva un bloque de memoria y devuelve la dirección de comienzo de

dicho bloque. Esta dirección se almacena en un puntero.

<variable_puntero> = new <tipo_dato> ;<variable_puntero> = new <tipo_dato> [num_componentes]; (array)

Cuando se invoca al operador new, el compilador realiza una comprobación de

tipos.

char *p = NULL ;p = new char ;

Si la operación falla, el operador new, devuelve el puntero nulo NULL.

int *p = NULL ; p = new int [100]; if (p == NULL)Cout <<“No hay suficiente memoria en el almacén”;

Page 15: Estructura de Lenguaje C++

El Operador DELETE

Cuando ya no necesitemos más el espacio reservado debemos liberarlo, es

decir, indicar al ordenador que puede destinarlo a otros fines. Para ello

utilizamos el operador delete.

delete <variable_puntero>;

delete [ ] <variable_puntero>; (libera memoria para arrays)

Si no liberamos el espacio que ya no necesitamos, corremos el peligro de

agotar la memoria del ordenador.

Page 16: Estructura de Lenguaje C++

Manipulación de Excepciones:

C++ proporciona un mecanismo para detectar errores de ejecución: las

excepciones. Para ello disponemos de tres palabras reservadas extra: try, catch y

throw, ejemplo:

int main() { int *x; int y = 100000000;

try { x = new int[y]; x[0] = 10; cout << "Puntero: " << (void *) x << endl; delete[] x; } catch(std::bad_alloc&) { cout << "Memoria insuficiente« << endl; } return 0;}

La manipulación de excepciones

consiste en transferir la ejecución

del programa desde el punto donde

se produce la excepción a un

manipulador que coincida con el

motivo de la excepción.

Como vemos en este ejemplo, un

manipulador consiste en un bloque

try, donde se incluye el código que

puede producir la excepción.

Page 17: Estructura de Lenguaje C++

#include <iostream>using namespace std; int main() { try { throw 'x'; // valor de tipo char } catch(char c) { cout << "El valor de c es: " << c << endl; } catch(int n) { cout << "El valor de n es: " << n << endl; } return 0;}

A continuación encontraremos uno o varios manipuladores asociados al bloque try, cada uno de esos manipuladores empiezan con la palabra catch, y entre paréntesis un objeto.

También debe existir una expresión throw, dentro del bloque try. En nuestro caso es implícita, ya que se trata de una excepción estándar.

Lo que sucede es lo siguiente:

el valor devuelto por el throw

se asigna al objeto del catch

adecuado.

En este ejemplo, al tratarse de

un carácter, se asigna a la

variable 'c', en el catch que

contiene un parámetro de tipo

char.

Page 18: Estructura de Lenguaje C++

Las excepciones se prefieren en C++ por las razones siguientes:

• Una excepción fuerza el código de llamada para reconocer una condición de error y para controlarla.  

• Las excepciones no controladas detienen la ejecución del programa.  

• Una excepción omite el punto en la pila de llamadas que puede controlar el error.  

• Las funciones intermedias pueden dejar la propagación de excepciones.  

• No tienen que coordinar con otros niveles.  

• El mecanismo de "desenredo" de la pila de excepción destruye todos los objetos en el ámbito según reglas bien definidas después de que se produzca una excepción.

• Una excepción permite una separación limpia entre el código que detecta el error y el código que controla el error.

• Las excepciones son un medio apropiado para lidiar con los errores producidos por las funciones de bibliotecas.

Page 19: Estructura de Lenguaje C++

PARADIGMAS DE LA PROGRAMACION

Un paradigma es una forma de representar y manipular el conocimiento,

representa un enfoque particular o filosofía para la construcción del software.

Diferentes paradigmas dan lugar a diferentes técnicas de programación, lo cual

no implica que ellos sean contradictorios, sino que más bien unos tienden a

complementar otros, por lo que la programación actual tiende a ser

multiparadigma.

C++ es un lenguaje de programación multiparadigma, ya que combina la

programación imperativa con la orientación a objetos; además con la

implementación de plantillas dio origen a un nuevo multiparadigma de

programación llamado Metaprogramacion.

Page 20: Estructura de Lenguaje C++

PARADIGMA DE PROGRAMACIÓN IMPERATIVA

Es un paradigma que describe la programación en términos del estado del

programa y sentencias que cambian dicho estado. Los programas imperativos

son un conjunto de instrucciones que le indican al computador cómo realizar una

tarea.

Asociados al paradigma imperativo se encuentran los paradigmas procedural,

modular, y la programación estructurada.

Ejemplo:

Page 21: Estructura de Lenguaje C++

PARADIGMA ORIENTADO A OBJETOS

La programación orientada a objetos es un paradigma de programación que

viene a innovar la forma de obtener resultados. Los objetos manipulan los datos

de entrada para la obtención de datos de salida específicos, donde cada objeto

ofrece una funcionalidad especial.

Muchos de los objetos pre-diseñados de los lenguajes de programación actuales

permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos

lenguajes permiten al usuario la creación de sus propias bibliotecas.

Esta basada en varias técnicas, incluyendo herencia, cohesión, abstracción,

polimorfismo, acoplamiento y encapsulamiento.

Su principal ventaja es la reutilización de códigos y su facilidad para pensar

soluciones a determinados problemas.

Page 22: Estructura de Lenguaje C++

PARADIGMA DE LA METAPROGRAMACIÓN

Es la programación sobre la programación, o también se puede ver como

programas que construyen programas.

Uno de los principales objetivos de esta técnica es llevar a tiempo de

compilación cálculos que habitualmente se hacen en tiempo de ejecución.

Si bien es cierto que mecanismos como estos tienen algunos inconvenientes

como que por ejemplo hacen el código mas complicado de entender, desde el

punto de vista del programador entrañan un bonito reto a acometer, cuyo

principal objetivo puede ser la optimización.

Page 23: Estructura de Lenguaje C++

Ejemplo:

El precompilador resolverá de manera estática, es decir no en ejecución, el valor de Factorial<4>::VALOR por un 24 calculado del modo siguiente:

Page 24: Estructura de Lenguaje C++

DOMINIOS DE C++

El área de la aplicación informática de C++, es la comunidad de Sistemas, ya

que es el preferido para los entornos de escritorio, navegadores, aplicaciones

multimedia, entre otros.

C++ es un lenguaje de programación de propósito general. Todo puede

programarse con el, desde sistemas operativos y compiladores hasta

aplicaciones de bases de datos y procesadores de texto, pasando

por juegos, aplicaciones a medida, etc.

Las máquinas virtuales de Java y .NET, también son desarrolladas en C++; y

los compiladores e intérpretes en los lenguajes .NET y en el GCC.

Page 25: Estructura de Lenguaje C++

PROGRAMAS ESCRITOS EN C++

PROGRAMA COMENTARIOS

Microsoft WindowsMicrosoft publico hace años que Windows XP esta hecho de 27 millones de líneas de código en C++ 

OSV Sistema Operativo para la nube.

apple iOS IPod.

4.x RIM BlackBerry OS El propio sistema operativo BlackBerry se desarrolla utilizando C ++.

La interfaz de usuario de Microsoft Windows

Apple MacOS interfaz de usuario (Aqua)

Nombre comercial de la interfaz grafica de Mac OS.

Microsoft Office Fue desarrollado utilizando ensamblador, se trasladó a C y luego se hizo utilizando C ++. 

Corel WordPerfect Office Desarrollado en Java para la portabilidad en 1996, y abandonado 1997 porque era demasiado lento. El código fue reconstruida en C ++.

Page 26: Estructura de Lenguaje C++

PROGRAMA COMENTARIOSMicrosoft Edge  Internet Explorer

Mozilla Firefox

Safari Su fundamento es WebKit , un marco de C ++ .

Google Chrome Una de sus propuestas clave es el ultra rápido motor JavaScript V8 , escrita básicamente en C ++.

Microsoft Outlook

Microsoft Visual Studio

Nero Burning ROM

Java Virtual Machine (JVM)Adobe Photoshop

Facebook Sólo Facebook, no sus pluginsMicrosoft Visual C ++

uTorrent

Microsoft Windows Media Player

Page 27: Estructura de Lenguaje C++

CONSIDERACIONES PRAGMÁTICAS

Son aquellas restricciones o características dadas por la computadora o la

implementación del lenguaje, es decir que afectan el programa de

codificación.

A continuación detallaremos las siguientes consideraciones pragmáticas

de nuestro lenguaje C++ .

1. Restricciones de arquitectura

2. Restricciones contextuales

3. Interpretes y equipos virtuales

4. Normalizaciones ANSI / ISO

5. Sistemas Heredados

Page 28: Estructura de Lenguaje C++

Son aquellas limitaciones derivadas de las tecnologías disponibles

para implementar sistemas de información. Unas arquitecturas son

más recomendables de implementar con ciertas tecnologías,

mientras que otras tecnologías no son aptas para determinadas

arquitecturas.

Podemos encontrar bastantes requerimentos para la instalacion de

compliadores de las multiples plataformas que existen en el

mercado en la actualidad, pero nos centraremos en la que

estamos usando:

Dev-C ++.

RESTRICCIONES DE ARQUITECTURA

Page 29: Estructura de Lenguaje C++

Los requerimientos mínimos para ejecutar Dev-C++ son:

• Microsoft Windows 95, 98, NT 4, 2000, XP, o superior

• 32 MB RAM

• 100 Mhz Intel compatible CPU

• 30 MB de espacio libre de disco

Los requerimientos aconsejados para Dev-C++ son:

• Microsoft Windows 2000, XP, o superior

• 64 MB RAM

• 400 Mhz Intel compatible CPU

• 200 MB de espacio libre de disco

Page 30: Estructura de Lenguaje C++

RESTRICCIONES CONTEXTUALES

Se basa en la parte de los compiladores, es decir como ocurre el

proceso de compilación.

Un compilador es un programa que lee el código escrito en un lenguaje

(lenguaje origen), y lo traduce o traduce en un programa equivalente

escrito en otro lenguaje (lenguaje objetivo).

Como una parte fundamental de este proceso de traducción, el

compilador le hace notar al usuario la presencia de errores en el código

fuente del programa.

Page 31: Estructura de Lenguaje C++

El C++ es un lenguaje que utiliza un compilador y su trabajo es el de llevar

el código fuente escrito en C++ a un programa escrito en lenguaje

máquina.

Entrando en más detalle un programa en código fuente es compilado

obteniendo un archivo parcial (un objeto), luego  el compilador invoca al

linker que convierte al archivo objeto en un ejecutable, que es un archivo

que esta en formato binario (ceros y unos) y que puede funcionar por si

solo.

Además el compilador de C++ realiza una comprobación de errores en el

programa, es decir, revisa que todo este en orden, por ejemplo variables y

funciones bien definidas, esta fuera del alcance del compilador que por

ejemplo el algoritmo utilizado en el problema funcione bien.

Page 32: Estructura de Lenguaje C++

La siguiente figura muestra los pasos para tener un programa ejecutable

desde el código fuente:

Page 33: Estructura de Lenguaje C++

INTERPRETES Y EQUIPOS VIRTUALES

C++ en un lenguaje compilado, y no interpretado. Esta diferencia es

muy importante, ya que afecta mucho a varios aspectos relacionados

con la ejecución del programa.

En los lenguajes compilados el proceso de traducción sólo se hace una

vez. El programa compilador toma como entrada el código fuente del

programa, y da como salida un fichero que puede ser ejecutado por el

ordenador directamente.

Una vez compilado, el programa ejecutable es autónomo, y ya no es

necesario disponer del programa original ni del compilador para

ejecutarlo.

Page 34: Estructura de Lenguaje C++

Existen numerosos equipos portables de C++ en el mercado, desde

ediciones gratuitas y descargables a través de internet, hasta

profesionales (de pago), a continuación una lista de algunos de ellos:

Bajo Microsoft Windows:

• Code::Blocks• Dev-C++• Visual C++• CodeLite

Compiladores gratuitos

• Appe C++• Bloodshed Dev-C++• Borland C++• Digital Mars C++• Intel C++ para Linux• DJ Delories´s C++

Bajo MacOS:

• Xcode• Zinjai• CodeLite

Compiladores pagados

• Borland C++• Comeau C++ • Compaq C++• Green Hills• IBM C++• Intel C++

Page 35: Estructura de Lenguaje C++

NORMALIZACIONES ANSI / ISO

El Instituto Nacional Americano de Estándares (ANSI, por sus siglas en

inglés: American National Standards Institute) es una organización sin

fines de lucro que supervisa el desarrollo de estándares para

productos, servicios, procesos y sistemas en los Estados Unidos.

ANSI es miembro de la Organización Internacional para la

Estandarización (ISO).

La Organización Internacional de Normalización (ISO) es una

organización para la creación de estándares internacionales

compuestos por diversas organizaciones nacionales de

estandarización.

Page 36: Estructura de Lenguaje C++

C ++ ha sido estandarizado por ISO mediante un grupo de trabajo

conocido como el JTC 1 / SC22 / WG21. Hasta el momento, se han

publicado cuatro revisiones del estándar C ++ .

• En 1998, C ++ es estandarizado por primera vez como ISO / IEC 14882: 1998,

que se conoce informalmente como C ++ 98.

• En 2003, se publicó una nueva versión del estándar C ++ denominado ISO / IEC

14882: 2003.

• En 2011 se publico C ++ 11(14882: 2011) incluyó muchas adiciones al núcleo

del lenguaje y la biblioteca estándar.

• En 2014, C ++ 14 fue lanzado como una pequeña extensión de C ++11, que

ofrece principalmente correcciones de errores y pequeñas mejoras.

Una importante revisión, informalmente conocido como, C ++ 17, está

prevista para el año 2017, que es casi en su totalidad de funciones.

Page 37: Estructura de Lenguaje C++

• ISO / IEC TR 18015: 2006 sobre el uso de C ++ en sistemas integrados y en

implicaciones de rendimiento del lenguaje C ++ y características de la

biblioteca.

• ISO / IEC TR 19768: 2007 también conocido como el Informe Técnico C ++,

• ISO / IEC TR 29124: 2010 en las funciones matemáticas especiales,

• ISO / IEC TR 24733: 2011 en decimal de coma flotante aritmética,

• ISO / IEC TS 18822: 2015 en la biblioteca de sistema de archivos estándar,

• ISO / IEC TS 19570: 2015 en paralelo versiones de los algoritmos de la

biblioteca estándar,

• ISO / IEC TS 19841: 2015 en el software de memoria transaccional,

• ISO / IEC TS 19568: 2015 en un nuevo conjunto de extensiones de

biblioteca, algunos de los cuales ya están integrados en C ++ 17,

• ISO / IEC TS 19217: 2015 en los Conceptos de C++

Como parte del proceso de normalización, ISO también publica informes

técnicos y especificaciones:

Page 38: Estructura de Lenguaje C++

SISTEMAS HEREDADOS

C++ nació como una extensión del lenguaje C, para conseguir aunar la

eficiencia del lenguaje C con las ventajas del modelo orientado a objetos.

El primer paso hacia C++ se produjo en 1980, cuando se presentó un

primer lenguaje llamado C with classes.

En 1983/84 se rediseñó este lenguaje, pasando a llamarse C++.

Tras pequeños refinamientos, en 1985 se puso a disposición de todo el

mundo y se documentó en el libro de Bjarne Stroustrup, “The C++

Programming Language”.

Page 39: Estructura de Lenguaje C++

CUALIDADES DE UN LENGUAJE DE PROGRAMACIÓN

Para saber cuando un lenguaje es eficiente, existen determinados

criterios o características que nos ayudan, cabe mencionar que no existen

lenguajes buenos o malos sino apropiados e inapropiados para una

determinada situación o problema.

A continuación analizaremos los siguientes criterios:

Basándonos en una serie de preguntas, que nos ayudaran a entender de

una mejor manera en que consiste cada uno de ellos

Simplicidad y Claridad

Uniones

Ortogonalidad

Fiabilidad de los Programas

Aplicabilidad

Abstracción

Implementación Eficiente

Page 40: Estructura de Lenguaje C++

SIMPLICIDAD Y CLARIDAD:

Se refiere al grado de dificultad para el programador de escribir y leer

programas de otros, aprender y enseñar el lenguaje.

¿Es fácil para un programador escribir un programa en C++?

Esto depende del tipo de programador, llegar a ser un programador eficiente es

producto de un proceso de aprendizaje que tarda años, si en algún punto de ese

proceso el programador aprendió a utilizar C, le será mucho mas fácil escribir un

programa en C++, que a un programador que solo tenga conocimientos en

prolog por ejemplo.

Hay lenguajes como C++ que sacrifican la simplicidad y claridad a cambio de la

velocidad y eficiencia. Por eso se dice que “C++ es un lenguaje para

programadores expertos”.

Page 41: Estructura de Lenguaje C++

¿Hasta que punto es inteligible C++ para un lector medio?

Nuevamente depende del tipo de lector, definitivamente debe ser

alguien con conocimientos básicos en programación, para que al menos

logre entender que hace, para que sirve cada línea de código.

¿Es fácil aprender y enseñar C++?

Aprender programación definitivamente no es algo que pueda hacerse

de un día para otro, y requiere de una gran cantidad de trabajo duro y

dedicación, C++ es un lenguaje con cierta complejidad, sin embargo, es

relativamente fácil de aprender o enseñar, si se tiene la actitud correcta.

“El que quiere, puede” pero no hay que olvidar que La programación es

un arte que se aprende en modo “prueba y error”.

Page 42: Estructura de Lenguaje C++

UNIONES

Se refiere al momento en que se define el tipo de dato de las variables.

Es decir, en un lenguaje fuertemente tipado, la definición del tipo de una

variable se puede hacer en tiempo de compilación.

¿Cómo maneja la parte de uniones C++?

En C++, las uniones son expresados casi igual que las estructuras. Los

elementos, no necesitan ser valores simples.

Las uniones pueden referenciarse completas, usando su nombre, como

hacíamos con las estructuras, y también se puede acceder a los

elementos en el interior de la unión usando el operador de selección (.),

un punto. También pueden declararse más objetos del tipo de la unión

en cualquier parte del programa

Page 43: Estructura de Lenguaje C++

ORTOGONALIDAD

Se refiere al significado de las palabras reservadas o símbolos

¿Un símbolo o una palabra reservada tiene siempre el mismo significado,

independientemente del contexto que utilicemos?

Si una palabra reservada siempre tiene el mismo significado

independientemente del contexto en que se use el lenguaje tiene mayor

Ortogonalidad que en otro donde no sucede eso.

Un ejemplo es el significado de “+” si siempre representa la suma

aritmética como en C++, es ortogonal, por el contrario si representa a la

suma para variables numéricas y concatenación para variables de tipo

cadena, entonces es menos ortogonal.

Page 44: Estructura de Lenguaje C++

¿Tiene C++ un pequeño número de características básicas que

interactúan de forma predecible, sin importar como las combinemos en

un programa?

Si cuenta con características que se comportan igual siempre, es decir

siempre van a cumplir con la misma función independiente de donde las

ubiques, como por ejemplo:

• {} Las llaves sirven para definir el principio y el final de un bloque de

instrucciones.

• ; El punto y coma se utiliza para dar fin a una línea.

• - El operador menos siempre va a ser la resta aritmetica.

Entre otras.

Page 45: Estructura de Lenguaje C++

FIABILIDAD DE LOS PROGRAMAS:

Se refiere al comportamiento del programa, al momento de ejecutarlo

más de una vez con el mismo conjunto de datos de entrada.

¿El programa se comporta igual cada vez que lo ejecutamos con los

mismos datos de entrada?

Si siempre se comportara de la misma manera, ya que que C++ es un

lenguaje fuertemente tipado y tiene una sintaxis y semántica bien

definida.

¿Se comporta igual cuando lo ejecutamos en plataformas distintas?

Si esto gracias a su portabilidad, que hace que pueda ser usado en

diferentes tipos de S.O y por tanto se adapta a la infraestructura donde

vaya a ejecutarse el software.

Page 46: Estructura de Lenguaje C++

¿El lenguaje proporciona un soporte adecuado para las aplicaciones del

dominio en el que lo estamos utilizando?

APLICABILIDAD

Si, por esta razón C++, es muy usado en aplicaciones científicas (para

experimentos informáticos, físicos, químicos, matemáticos), industriales

(industria robótica, cibernética, sistemas de información y base de

datos para la industria petrolera y petroquímica, la simulación de

maquinas de manufactura), simulaciones de vuelo, etc.

 El lenguaje debe facilitar la creación de programas que funcionen en

el mayor número de entornos computacionales.

Page 47: Estructura de Lenguaje C++

ABSTRACCIÓN:

Se refiere al nivel de complejidad de las funciones o clases

incorporadas que le ahorran al programador tiempo de desarrollo al

proporcionarle algoritmos ya implementados. 

¿Cuántas veces hemos reinventado un algoritmo de ordenación o

estructura de datos de listas enlazadas que probablemente haya sido

complementado ya miles de veces?

Probablemente muchas y esto debido a que C++ cuenta con librerías

que son cierto tipo de archivos que podemos importar y estos archivos

contienen las especificaciones de diferentes funcionalidades ya

construidas y utilizables, como por ejemplo leer del teclado o mostrar

algo por pantalla entre muchas otras más.

Page 48: Estructura de Lenguaje C++

IMPLEMENTACION EFICIENTE

Es la facilidad o dificultad que se tiene para implementar prácticamente

un lenguaje de programación.

¿Nos permite las construcciones y las características de C++, su

implementación práctica y eficiente en las plataformas coetáneas?

C++ Es un lenguaje de nivel intermedio, permitiendo beneficiarse de las

ventajas de ambos tipos de lenguajes, y así obteniendo características

de ambos como por ejemplo; la Sencillez, uniformidad y Portabilidad. 

Es un lenguaje de propósito general. Se ha utilizado para el desarrollo

de muy diversas aplicaciones y los programas escritos en C++ son

fácilmente trasportables a otros sistemas.

Page 49: Estructura de Lenguaje C++

INFOGRAFÍA

http://www.conocimientosweb.net/dcmt/ficha13499.html

http://aldairjaimes.blogspot.com/2011/04/historia-y-aplicabilidad-de-la.html

https://www.programarya.com/Cursos/C++/Bibliotecas-O-Librerias

https://alanchavez.com/lenguajes-de-programacion-faciles-de-aprender/

https://aprendiendoarduino.wordpress.com/2015/03/26/lenguaje-de-

programacion-c/

https://es.wikipedia.org/wiki/Arquitectura_de_software

http://metodos.fam.cie.uva.es/~imartin/noticias/varios/ML33/adjuntos/

index.html

https://www.google.com.co/#q=historia+de+c%2B%2B

https://en.wikipedia.org/wiki/C%2B%2B

http://www.zator.com/Cpp/E5.htm

Page 50: Estructura de Lenguaje C++

INFOGRAFÍA

http://foro.elhacker.net/ejercicios/

ejercicios_resueltos_c_programacion_estructurada-t201980.0.html

http://www.infor.uva.es/~cvaca/asigs/docpar/intro.pdf

https://ociotec.com/metaprogramacion-con-plantillas-en-cpp/

https://zbutton.wordpress.com/2009/10/12/%C2%BFque-es-la-

metaprogramacion/

http://www.zator.com/Cpp/E1_2.htm

http://tony-valderrama.blogspot.com/2008/08/paradigmas-de-programacin-

y-muchos.html

http://www.genbetadev.com/cc/los-grandes-proyectos-informaticos-se-

programan-en-c-y-c

https://kevinldp.wordpress.com/dominios-de-la-programacion/