SlideShare una empresa de Scribd logo
1 de 50
Denis Castillo
Adriana Garcés
Maykol Manosalva
Diogo Lopes
ESTRUCTURA DE LENGUAJE DE PROGRAMACION
Prof. Jenny Ríos
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.
PRINCIPIOS DEL DISEÑO DEL LENGUAJE
Sintaxis:
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.
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
asm*
auto
break
case
catch*
char
class*
const
continue
default
delete*
do
double
else
enurn
extern
float
for
friend*
goto
if
inline*
int
long
new*
operator*
private*
protected*
public*
register
return
short
signed
sizeof
static
struct
switch
template*
this*
throw*
try
typedef
union
unsigned
virtual*
void
volatile
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:
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.
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 ( “%dn” , i);
double j;
for ( j= 1.7547; j< 25.4675; j+=
.001)
printf ( “%lfn” , 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++
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.
Tipo Tamaño Comentario
INT 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.
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).
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.
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
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
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”;
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.
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.
#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.
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.
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.
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:
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.
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.
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:
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.
PROGRAMAS ESCRITOS EN C++
PROGRAMA COMENTARIOS
Microsoft Windows
Microsoft 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 ++.
PROGRAMA COMENTARIOS
Microsoft 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 plugins
Microsoft Visual C ++
uTorrent
Microsoft Windows Media
Player
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
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
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
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.
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.
La siguiente figura muestra los pasos para tener un programa ejecutable
desde el código fuente:
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.
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++
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.
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.
• 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:
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”.
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
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”.
¿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”.
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
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.
¿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.
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.
¿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.
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.
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.
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
INFOGRAFÍA
http://foro.elhacker.net/ejercicios/ejercicios_resueltos_c_programacion_estr
ucturada-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/

Más contenido relacionado

La actualidad más candente

Algoritmos Tiposde datos
Algoritmos Tiposde datos Algoritmos Tiposde datos
Algoritmos Tiposde datos bakura4
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosJosé Antonio Sandoval Acosta
 
Estructura básica de un programa en C++
Estructura básica de un programa en C++Estructura básica de un programa en C++
Estructura básica de un programa en C++Rosbelia Balza
 
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooProgramacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooJosé Antonio Sandoval Acosta
 
CUESTIONARIO 5 PREGUNTAS DE LOS 6 TEMAS
CUESTIONARIO 5 PREGUNTAS  DE LOS 6 TEMASCUESTIONARIO 5 PREGUNTAS  DE LOS 6 TEMAS
CUESTIONARIO 5 PREGUNTAS DE LOS 6 TEMASValeriaBerrones
 
Asignación, Salida y Entrada
Asignación, Salida y EntradaAsignación, Salida y Entrada
Asignación, Salida y EntradaCarlos Pes
 
Fundamentos de Programacion - Unidad 1 conceptos basicos
Fundamentos de Programacion - Unidad 1 conceptos basicosFundamentos de Programacion - Unidad 1 conceptos basicos
Fundamentos de Programacion - Unidad 1 conceptos basicosJosé Antonio Sandoval Acosta
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++GabrielFVilla15
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
Diseño algorítmico
Diseño algorítmicoDiseño algorítmico
Diseño algorítmicooviedospablo
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlLic_Vera
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosJosé Antonio Sandoval Acosta
 
Parcial (estructuras repetitivas"for y while" - herrmanientas case)
Parcial (estructuras repetitivas"for y while" - herrmanientas case)Parcial (estructuras repetitivas"for y while" - herrmanientas case)
Parcial (estructuras repetitivas"for y while" - herrmanientas case)Maria B. Ramos Osorio
 
Mapa conceptual fases en el desarrollo de un programa
Mapa conceptual fases en el desarrollo de un programaMapa conceptual fases en el desarrollo de un programa
Mapa conceptual fases en el desarrollo de un programakparawhore
 

La actualidad más candente (20)

Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Algoritmos Tiposde datos
Algoritmos Tiposde datos Algoritmos Tiposde datos
Algoritmos Tiposde datos
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Estructura básica de un programa en C++
Estructura básica de un programa en C++Estructura básica de un programa en C++
Estructura básica de un programa en C++
 
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooProgramacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma poo
 
CUESTIONARIO 5 PREGUNTAS DE LOS 6 TEMAS
CUESTIONARIO 5 PREGUNTAS  DE LOS 6 TEMASCUESTIONARIO 5 PREGUNTAS  DE LOS 6 TEMAS
CUESTIONARIO 5 PREGUNTAS DE LOS 6 TEMAS
 
Introduccion a python 3
Introduccion a python 3Introduccion a python 3
Introduccion a python 3
 
Asignación, Salida y Entrada
Asignación, Salida y EntradaAsignación, Salida y Entrada
Asignación, Salida y Entrada
 
Fundamentos de Programacion - Unidad 1 conceptos basicos
Fundamentos de Programacion - Unidad 1 conceptos basicosFundamentos de Programacion - Unidad 1 conceptos basicos
Fundamentos de Programacion - Unidad 1 conceptos basicos
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Diseño algorítmico
Diseño algorítmicoDiseño algorítmico
Diseño algorítmico
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
Parcial (estructuras repetitivas"for y while" - herrmanientas case)
Parcial (estructuras repetitivas"for y while" - herrmanientas case)Parcial (estructuras repetitivas"for y while" - herrmanientas case)
Parcial (estructuras repetitivas"for y while" - herrmanientas case)
 
Mapa conceptual fases en el desarrollo de un programa
Mapa conceptual fases en el desarrollo de un programaMapa conceptual fases en el desarrollo de un programa
Mapa conceptual fases en el desarrollo de un programa
 

Similar a Estructura de Lenguaje C++

Instituto tecnológico particular
Instituto tecnológico particularInstituto tecnológico particular
Instituto tecnológico particularCarlota Guzman
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Jennybeatriz1
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacionrotflol
 
Mynor Alexander Hernandez Canuz
Mynor Alexander Hernandez CanuzMynor Alexander Hernandez Canuz
Mynor Alexander Hernandez Canuzguest79d55c9
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xdJorgitop15
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xdJorgitop15
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xdJorgitop15
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivasstarduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Lenguajecviviana
LenguajecvivianaLenguajecviviana
Lenguajecvivianavivicamba
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivastacubomx
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1logan1725
 

Similar a Estructura de Lenguaje C++ (20)

Investigacion 1
Investigacion 1Investigacion 1
Investigacion 1
 
Lenguaje c
Lenguaje c Lenguaje c
Lenguaje c
 
C sharp intro0
C sharp intro0C sharp intro0
C sharp intro0
 
Instituto tecnológico particular
Instituto tecnológico particularInstituto tecnológico particular
Instituto tecnológico particular
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
 
Mynor Alexander Hernandez Canuz
Mynor Alexander Hernandez CanuzMynor Alexander Hernandez Canuz
Mynor Alexander Hernandez Canuz
 
Clase 1 Programación II
Clase 1 Programación IIClase 1 Programación II
Clase 1 Programación II
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xd
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xd
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xd
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Pb1
Pb1Pb1
Pb1
 
Lenguajecviviana
LenguajecvivianaLenguajecviviana
Lenguajecviviana
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 

Estructura de Lenguaje C++

  • 1. Denis Castillo Adriana Garcés Maykol Manosalva Diogo Lopes ESTRUCTURA DE LENGUAJE DE PROGRAMACION Prof. Jenny Ríos
  • 2. 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.
  • 3. PRINCIPIOS DEL DISEÑO DEL LENGUAJE Sintaxis: 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.
  • 4. 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
  • 5. asm* auto break case catch* char class* const continue default delete* do double else enurn extern float for friend* goto if inline* int long new* operator* private* protected* public* register return short signed sizeof static struct switch template* this* throw* try typedef union unsigned virtual* void volatile 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:
  • 6. 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.
  • 7. 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 ( “%dn” , i); double j; for ( j= 1.7547; j< 25.4675; j+= .001) printf ( “%lfn” , 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++
  • 8. 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.
  • 9. Tipo Tamaño Comentario INT 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.
  • 10. 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).
  • 11. 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.
  • 12. 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
  • 13. 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
  • 14. 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”;
  • 15. 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.
  • 16. 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.
  • 17. #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.
  • 18. 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.
  • 19. 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.
  • 20. 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:
  • 21. 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.
  • 22. 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.
  • 23. 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:
  • 24. 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.
  • 25. PROGRAMAS ESCRITOS EN C++ PROGRAMA COMENTARIOS Microsoft Windows Microsoft 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 ++.
  • 26. PROGRAMA COMENTARIOS Microsoft 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 plugins Microsoft Visual C ++ uTorrent Microsoft Windows Media Player
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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.
  • 31. 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.
  • 32. La siguiente figura muestra los pasos para tener un programa ejecutable desde el código fuente:
  • 33. 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.
  • 34. 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++
  • 35. 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.
  • 36. 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.
  • 37. • 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:
  • 38. 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”.
  • 39. 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
  • 40. 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”.
  • 41. ¿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”.
  • 42. 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
  • 43. 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.
  • 44. ¿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.
  • 45. 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.
  • 46. ¿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.
  • 47. 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.
  • 48. 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.