SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
Trabajo: lenguaje de
programacion c++
Materia: tecnicas de
programacion
Alumno : Ricardo Axel Garcia
Gomez
C++ es un lenguaje imperativo orientado a objetos derivado del C [1]. En realidad
un superconjunto de C, que nació para añadirle cualidades y características de las
que carecía. El resultado es que como su ancestro, sigue muy ligado al hardware
subyacente, manteniendo una considerable potencia para programación a bajo
nivel, pero se la han añadido elementos que le permiten también un estilo de
programación con alto nivel de abstracción.
Respecto a su antecesor, se ha procurando mantener una exquisita compatibilidad
hacia atrás por dos razones: poder reutilizar la enorme cantidad de
código C existente, y facilitar una transición lo más fluida posible a los
programadores de Cclásico, de forma que pudieran pasar sus programas a C++ e
ir modificándolos (haciéndolos más "++") de forma gradual. De hecho, los primeros
compiladores C++ lo que hacían en realidad era traducir (preprocesar) a C y
compilar después (las consecuencias se dejan sentir todavía en el lenguaje
Por lo general puede compilarse un programa C bajo C++, pero no a la inversa si el
programa utiliza alguna de las características especiales de C++. Algunas
situaciones requieren especial cuidado. Por ejemplo, si se declara una función dos
veces con diferente tipo de argumentos, el compilador C invoca un error de "Nombre
duplicado", mientras que en C++ quizás sea interpretado como una sobrecarga de
la primera función (que sea o no legal depende de otras circunstancias).
Como se ha señalado, C++ no es un lenguaje orientado a objetos puro (en el sentido
en que puede serlo Java por ejemplo), además no nació como un ejercicio
académico de diseño. Se trata simplemente del sucesor de un lenguaje de
programación hecho por programadores (de alto nivel) para programadores, lo que
se traduce en un diseño pragmático al que se le han ido añadiendo todos los
elementos que la práctica aconsejaba como necesarios, con independencia de su
belleza o purismo conceptual ("Perfection, in some language theoretical sense, is
not an aim of C++. Utility is" ). Estos condicionantes tienen su cara y su cruz; en
ocasiones son motivo de ciertos "reproches" por parte de sus detractores, en otras,
estas características son precisamente una cualidad. De hecho, en el diseño de
la Librería Estándar C++ se ha usado ampliamente esta dualidad (ser mezcla de un
lenguaje tradicional con elementos de POO), lo que ha permitido un modelo muy
avanzado de programación extraordinariamente flexible
Aunque C++ introduce nuevas palabras clave y operadores para manejo de clases,
algunas de sus extensiones tienen aplicación fuera del contexto de programación
con objetos (fuera del ámbito de las clases), de hecho, muchos aspectos
de C++ que pueden ser usados independientemente de las clases .
Del C se ha dicho: "Por naturaleza, el lenguaje C es permisivo e intenta hacer algo
razonable con lo que se haya escrito. Aunque normalmente esto es una virtud,
también puede hacer que ciertos errores sean difíciles de descubrir" Respecto
alC++ podríamos decir otro tanto, pero hemos de reconocer que su sistema de
detección de errores es mucho más robusto que el de C, por lo que algunos errores
de este serán rápidamente detectados.
Desde luego, C++ es un lenguaje de programación extremadamente largo y
complejo; cuando nos adentramos en él parece no acabar nunca. Justo cuando
aprendemos un significado descubrimos que una mano negra ha añadido otras dos
o tres acepciones para la misma palabra. También descubrimos que prácticamente
no hay una regla sin su correspondiente excepción. Cuando aprendemos que algo
no se puede hacer, hay siempre algún truco escondido para hacerlo, y cuando nos
dicen que es un lenguaje fuertemente tipado ("Strong type checking"), resulta
completamente falso.
A pesar de todo, ha experimentado un extraordinario éxito desde su creación. De
hecho, muchos sistemas operativos compiladores e intérpretes han sido escritos
en C++ (el propio Windows y Java). Una de las razones de su éxito es ser un
lenguaje de propósito general que se adapta a múltiples situaciones. Para
comprobar el éxito e importancia de los desarrollos realizados en C++ puede darse
una vuelta por la página que mantiene el Dr. Stroustrup al respecto:
Tanto sus fervientes defensores como sus acérrimos detractores han hecho correr
ríos de tinta ensalzando sus cualidades o subrayando sus miserias, aunque todo el
mundo parece estar de acuerdo en que es largo y complejo. Ha servido de
justificación para el diseño de otros lenguajes que intentan eliminar sus
inconvenientes al tiempo que mantener sus virtudes y una de sus última
incorporaciones, las plantillas , ha sido origen de un nuevo paradigma de
programación (metaprogramación).
En mi opinión, cualquier lenguaje de propósito general que como C++, permita tocar
ambos mundos, la programación de bajo nivel y altos niveles de abstracción,
resultará siempre e inevitablemente complejo. Ocurre lo mismo con los lenguajes
naturales que son también extraordinariamente complejos (esto lo saben bien los
gramáticos). Cualquier comunicación entre humanos presupone una ingente
cantidad de conocimientos y suposiciones previas entre los interlocutores. A pesar
de lo cual, la comunicación exacta y sin ambigüedades entre dos personas no
resulta fácil.
Lo mismo que en su ancestro, en el diseño del C++ primó sobre todo la velocidad
de ejecución del código Tanto uno como otro representan los ejecutables más
rápidos que se pueden construir para una máquina y circunstancias
determinadas. En este sentido, la única alternativa de mejora es la codificación
manual, el "pulido" de determinadas rutinas (o de todo el código) en
ensamblador, aunque evidentemente esto es impracticable para aplicaciones
medianamente grandes, a no ser que se disponga de todos los recursos y tiempo
del mundo.
Con todo, a pesar de ser un lenguaje intrínsecamente rápido, y de que los
compiladores modernos son bastante "inteligentes" en este sentido (adoptan
automáticamente las decisiones que resultan en el código de ejecución más
eficiente), es mucho lo que puede hacer el programador para favorecer esta rapidez
con solo adoptar algunas sencillas precauciones. Estos son los consejos:
 Use enteros (int) con preferencia sobre cualquier otro tipo de variable
numérica. En especial en los contadores de bucles. Las operaciones con
enteros son del orden de 10 a 20 veces más rápidas que las de números en
coma flotante.
 Use operadores incremento y decremento ++/--
 Use variables de registro, en especial en los bucles críticos, sobre todo si son
anidados
 Use aritmética de punteros frente a subíndices de matrices
 En problemas de computación numérica recuerde que el cálculo de funciones
trascendentes es por lo general muy lento.
 Use referencias para argumentos y valores devueltos en funciones, antes
que objetos "por valor"

Más contenido relacionado

La actualidad más candente

Consulta del lenguaje de programación
Consulta del lenguaje de programaciónConsulta del lenguaje de programación
Consulta del lenguaje de programaciónMarifer Marulanda
 
Fundamentos de programamacion c#
Fundamentos de programamacion c# Fundamentos de programamacion c#
Fundamentos de programamacion c# Robert Rodriguez
 
aplicaciones de Lenguaje C
aplicaciones  de Lenguaje C  aplicaciones  de Lenguaje C
aplicaciones de Lenguaje C zerpa1991
 
Java c visual_basic_fabricio_galarraga
Java c visual_basic_fabricio_galarragaJava c visual_basic_fabricio_galarraga
Java c visual_basic_fabricio_galarragaFabricio Galárraga
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)josegonzalo130
 
LENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION CLENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION Cjavu
 
Zanjai-como-entorno-de-programacion
Zanjai-como-entorno-de-programacionZanjai-como-entorno-de-programacion
Zanjai-como-entorno-de-programacionjuanpi1991
 
historia del lenguaje c++.c
historia del lenguaje c++.chistoria del lenguaje c++.c
historia del lenguaje c++.cRayco Paucar
 
Deber 130912163339-phpapp01
Deber 130912163339-phpapp01Deber 130912163339-phpapp01
Deber 130912163339-phpapp01Rayco Paucar
 
Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.cleiberylobo
 

La actualidad más candente (18)

Consulta del lenguaje de programación
Consulta del lenguaje de programaciónConsulta del lenguaje de programación
Consulta del lenguaje de programación
 
Curso Programacion C#
Curso Programacion C# Curso Programacion C#
Curso Programacion C#
 
aplicacion del lenguaje c
aplicacion del lenguaje caplicacion del lenguaje c
aplicacion del lenguaje c
 
Fundamentos de programamacion c#
Fundamentos de programamacion c# Fundamentos de programamacion c#
Fundamentos de programamacion c#
 
aplicaciones de Lenguaje C
aplicaciones  de Lenguaje C  aplicaciones  de Lenguaje C
aplicaciones de Lenguaje C
 
Java c visual_basic_fabricio_galarraga
Java c visual_basic_fabricio_galarragaJava c visual_basic_fabricio_galarraga
Java c visual_basic_fabricio_galarraga
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)
 
Introduccion a Visual C Sharp
Introduccion a Visual C SharpIntroduccion a Visual C Sharp
Introduccion a Visual C Sharp
 
ACTIVIDAD DE INVESTIGACION
ACTIVIDAD DE INVESTIGACIONACTIVIDAD DE INVESTIGACION
ACTIVIDAD DE INVESTIGACION
 
LENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION CLENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION C
 
Zanjai-como-entorno-de-programacion
Zanjai-como-entorno-de-programacionZanjai-como-entorno-de-programacion
Zanjai-como-entorno-de-programacion
 
Introducción c++
Introducción c++Introducción c++
Introducción c++
 
Deber
DeberDeber
Deber
 
historia del lenguaje c++.c
historia del lenguaje c++.chistoria del lenguaje c++.c
historia del lenguaje c++.c
 
Deber 130912163339-phpapp01
Deber 130912163339-phpapp01Deber 130912163339-phpapp01
Deber 130912163339-phpapp01
 
Deber
DeberDeber
Deber
 
Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 

Destacado

2 intcomp gregmarybejarano
2 intcomp gregmarybejarano2 intcomp gregmarybejarano
2 intcomp gregmarybejarano18511572
 
JavaScript para Programadores Java
JavaScript para Programadores JavaJavaScript para Programadores Java
JavaScript para Programadores JavaCarlos A. Iglesias
 
Presentación de C++
Presentación de C++Presentación de C++
Presentación de C++Sylvert
 
Desarrollo de aplicaciones , programacion en dev ++
Desarrollo de aplicaciones , programacion  en   dev ++Desarrollo de aplicaciones , programacion  en   dev ++
Desarrollo de aplicaciones , programacion en dev ++ernestre
 
Introducción a los algoritmos y programación 1
Introducción a los algoritmos y programación   1Introducción a los algoritmos y programación   1
Introducción a los algoritmos y programación 1Jeckson Loza
 
Introduccion a los algoritmos parte 1
Introduccion a los algoritmos parte    1Introduccion a los algoritmos parte    1
Introduccion a los algoritmos parte 1charnisch
 
Conversiones entre sistemas de numeración
Conversiones entre sistemas de numeraciónConversiones entre sistemas de numeración
Conversiones entre sistemas de numeraciónJohnny Montenegro Molina
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07adrianpro
 

Destacado (18)

2 intcomp gregmarybejarano
2 intcomp gregmarybejarano2 intcomp gregmarybejarano
2 intcomp gregmarybejarano
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
JavaScript para Programadores Java
JavaScript para Programadores JavaJavaScript para Programadores Java
JavaScript para Programadores Java
 
Informatica
InformaticaInformatica
Informatica
 
Línea de tiempo teoria c++
Línea de tiempo teoria c++Línea de tiempo teoria c++
Línea de tiempo teoria c++
 
Presentación de C++
Presentación de C++Presentación de C++
Presentación de C++
 
Algoritmos parte 2
Algoritmos parte 2Algoritmos parte 2
Algoritmos parte 2
 
Lenguaje objective c
Lenguaje objective cLenguaje objective c
Lenguaje objective c
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
 
IDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizadosIDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizados
 
Desarrollo de aplicaciones , programacion en dev ++
Desarrollo de aplicaciones , programacion  en   dev ++Desarrollo de aplicaciones , programacion  en   dev ++
Desarrollo de aplicaciones , programacion en dev ++
 
Introducción a los algoritmos y programación 1
Introducción a los algoritmos y programación   1Introducción a los algoritmos y programación   1
Introducción a los algoritmos y programación 1
 
Aprendiendo Lenguaje C
Aprendiendo Lenguaje CAprendiendo Lenguaje C
Aprendiendo Lenguaje C
 
Sintaxis del lenguaje c++
Sintaxis del lenguaje c++Sintaxis del lenguaje c++
Sintaxis del lenguaje c++
 
Introduccion a los algoritmos parte 1
Introduccion a los algoritmos parte    1Introduccion a los algoritmos parte    1
Introduccion a los algoritmos parte 1
 
Conversiones entre sistemas de numeración
Conversiones entre sistemas de numeraciónConversiones entre sistemas de numeración
Conversiones entre sistemas de numeración
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 

Similar a C++, lenguaje de programación imperativo y orientado a objetos

Similar a C++, lenguaje de programación imperativo y orientado a objetos (20)

Consulta c++
Consulta c++Consulta c++
Consulta c++
 
Pul123
Pul123Pul123
Pul123
 
historia del lenguaje c++
historia del lenguaje c++historia del lenguaje c++
historia del lenguaje c++
 
Informe lpi
Informe lpiInforme lpi
Informe lpi
 
Mi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaMi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferencia
 
Historia del C++ y JAVA
Historia del C++ y JAVAHistoria del C++ y JAVA
Historia del C++ y JAVA
 
1 introduccionlenguajec
1 introduccionlenguajec1 introduccionlenguajec
1 introduccionlenguajec
 
1 introduccionlenguajec
1 introduccionlenguajec1 introduccionlenguajec
1 introduccionlenguajec
 
C#
C#C#
C#
 
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
C# documento de texto junto con mapa conceptual
C# documento de texto junto con mapa conceptualC# documento de texto junto con mapa conceptual
C# documento de texto junto con mapa conceptual
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
El lenguaje c#
El lenguaje c#El lenguaje c#
El lenguaje c#
 
Introducción al lenguaje c# eidos
Introducción al lenguaje c# eidosIntroducción al lenguaje c# eidos
Introducción al lenguaje c# eidos
 
c++ introduccion
c++ introduccionc++ introduccion
c++ introduccion
 

Más de Ricardo Axel

Cargar un dispositivo
Cargar un dispositivoCargar un dispositivo
Cargar un dispositivoRicardo Axel
 
Elementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivelElementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivelRicardo Axel
 
diagramas de flujo 4 5 6
diagramas de flujo 4 5 6 diagramas de flujo 4 5 6
diagramas de flujo 4 5 6 Ricardo Axel
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled PresentationRicardo Axel
 
simbologia de los diagramas de flujo
simbologia de los diagramas de flujo simbologia de los diagramas de flujo
simbologia de los diagramas de flujo Ricardo Axel
 
simbologia de los diagramas de flujo
simbologia de los diagramas de flujosimbologia de los diagramas de flujo
simbologia de los diagramas de flujoRicardo Axel
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled PresentationRicardo Axel
 

Más de Ricardo Axel (11)

Programas
ProgramasProgramas
Programas
 
Cargar un dispositivo
Cargar un dispositivoCargar un dispositivo
Cargar un dispositivo
 
noticia de abril
noticia de abrilnoticia de abril
noticia de abril
 
Elementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivelElementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivel
 
NOTICIA DE MARZO
NOTICIA DE MARZO NOTICIA DE MARZO
NOTICIA DE MARZO
 
Ploblema 4
Ploblema 4Ploblema 4
Ploblema 4
 
diagramas de flujo 4 5 6
diagramas de flujo 4 5 6 diagramas de flujo 4 5 6
diagramas de flujo 4 5 6
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
simbologia de los diagramas de flujo
simbologia de los diagramas de flujo simbologia de los diagramas de flujo
simbologia de los diagramas de flujo
 
simbologia de los diagramas de flujo
simbologia de los diagramas de flujosimbologia de los diagramas de flujo
simbologia de los diagramas de flujo
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 

Último

Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
Marketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETPMarketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETPANEP - DETP
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 

Último (20)

Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
Marketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETPMarketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETP
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 

C++, lenguaje de programación imperativo y orientado a objetos

  • 1. Trabajo: lenguaje de programacion c++ Materia: tecnicas de programacion Alumno : Ricardo Axel Garcia Gomez
  • 2. C++ es un lenguaje imperativo orientado a objetos derivado del C [1]. En realidad un superconjunto de C, que nació para añadirle cualidades y características de las que carecía. El resultado es que como su ancestro, sigue muy ligado al hardware subyacente, manteniendo una considerable potencia para programación a bajo nivel, pero se la han añadido elementos que le permiten también un estilo de programación con alto nivel de abstracción. Respecto a su antecesor, se ha procurando mantener una exquisita compatibilidad hacia atrás por dos razones: poder reutilizar la enorme cantidad de código C existente, y facilitar una transición lo más fluida posible a los programadores de Cclásico, de forma que pudieran pasar sus programas a C++ e ir modificándolos (haciéndolos más "++") de forma gradual. De hecho, los primeros compiladores C++ lo que hacían en realidad era traducir (preprocesar) a C y compilar después (las consecuencias se dejan sentir todavía en el lenguaje Por lo general puede compilarse un programa C bajo C++, pero no a la inversa si el programa utiliza alguna de las características especiales de C++. Algunas situaciones requieren especial cuidado. Por ejemplo, si se declara una función dos veces con diferente tipo de argumentos, el compilador C invoca un error de "Nombre duplicado", mientras que en C++ quizás sea interpretado como una sobrecarga de la primera función (que sea o no legal depende de otras circunstancias). Como se ha señalado, C++ no es un lenguaje orientado a objetos puro (en el sentido en que puede serlo Java por ejemplo), además no nació como un ejercicio académico de diseño. Se trata simplemente del sucesor de un lenguaje de programación hecho por programadores (de alto nivel) para programadores, lo que se traduce en un diseño pragmático al que se le han ido añadiendo todos los elementos que la práctica aconsejaba como necesarios, con independencia de su belleza o purismo conceptual ("Perfection, in some language theoretical sense, is not an aim of C++. Utility is" ). Estos condicionantes tienen su cara y su cruz; en ocasiones son motivo de ciertos "reproches" por parte de sus detractores, en otras, estas características son precisamente una cualidad. De hecho, en el diseño de
  • 3. la Librería Estándar C++ se ha usado ampliamente esta dualidad (ser mezcla de un lenguaje tradicional con elementos de POO), lo que ha permitido un modelo muy avanzado de programación extraordinariamente flexible Aunque C++ introduce nuevas palabras clave y operadores para manejo de clases, algunas de sus extensiones tienen aplicación fuera del contexto de programación con objetos (fuera del ámbito de las clases), de hecho, muchos aspectos de C++ que pueden ser usados independientemente de las clases . Del C se ha dicho: "Por naturaleza, el lenguaje C es permisivo e intenta hacer algo razonable con lo que se haya escrito. Aunque normalmente esto es una virtud, también puede hacer que ciertos errores sean difíciles de descubrir" Respecto alC++ podríamos decir otro tanto, pero hemos de reconocer que su sistema de detección de errores es mucho más robusto que el de C, por lo que algunos errores de este serán rápidamente detectados. Desde luego, C++ es un lenguaje de programación extremadamente largo y complejo; cuando nos adentramos en él parece no acabar nunca. Justo cuando aprendemos un significado descubrimos que una mano negra ha añadido otras dos o tres acepciones para la misma palabra. También descubrimos que prácticamente no hay una regla sin su correspondiente excepción. Cuando aprendemos que algo no se puede hacer, hay siempre algún truco escondido para hacerlo, y cuando nos dicen que es un lenguaje fuertemente tipado ("Strong type checking"), resulta completamente falso. A pesar de todo, ha experimentado un extraordinario éxito desde su creación. De hecho, muchos sistemas operativos compiladores e intérpretes han sido escritos en C++ (el propio Windows y Java). Una de las razones de su éxito es ser un lenguaje de propósito general que se adapta a múltiples situaciones. Para comprobar el éxito e importancia de los desarrollos realizados en C++ puede darse una vuelta por la página que mantiene el Dr. Stroustrup al respecto:
  • 4. Tanto sus fervientes defensores como sus acérrimos detractores han hecho correr ríos de tinta ensalzando sus cualidades o subrayando sus miserias, aunque todo el mundo parece estar de acuerdo en que es largo y complejo. Ha servido de justificación para el diseño de otros lenguajes que intentan eliminar sus inconvenientes al tiempo que mantener sus virtudes y una de sus última incorporaciones, las plantillas , ha sido origen de un nuevo paradigma de programación (metaprogramación). En mi opinión, cualquier lenguaje de propósito general que como C++, permita tocar ambos mundos, la programación de bajo nivel y altos niveles de abstracción, resultará siempre e inevitablemente complejo. Ocurre lo mismo con los lenguajes naturales que son también extraordinariamente complejos (esto lo saben bien los gramáticos). Cualquier comunicación entre humanos presupone una ingente cantidad de conocimientos y suposiciones previas entre los interlocutores. A pesar de lo cual, la comunicación exacta y sin ambigüedades entre dos personas no resulta fácil. Lo mismo que en su ancestro, en el diseño del C++ primó sobre todo la velocidad de ejecución del código Tanto uno como otro representan los ejecutables más rápidos que se pueden construir para una máquina y circunstancias determinadas. En este sentido, la única alternativa de mejora es la codificación manual, el "pulido" de determinadas rutinas (o de todo el código) en ensamblador, aunque evidentemente esto es impracticable para aplicaciones medianamente grandes, a no ser que se disponga de todos los recursos y tiempo del mundo. Con todo, a pesar de ser un lenguaje intrínsecamente rápido, y de que los compiladores modernos son bastante "inteligentes" en este sentido (adoptan automáticamente las decisiones que resultan en el código de ejecución más eficiente), es mucho lo que puede hacer el programador para favorecer esta rapidez con solo adoptar algunas sencillas precauciones. Estos son los consejos:
  • 5.  Use enteros (int) con preferencia sobre cualquier otro tipo de variable numérica. En especial en los contadores de bucles. Las operaciones con enteros son del orden de 10 a 20 veces más rápidas que las de números en coma flotante.  Use operadores incremento y decremento ++/--  Use variables de registro, en especial en los bucles críticos, sobre todo si son anidados  Use aritmética de punteros frente a subíndices de matrices  En problemas de computación numérica recuerde que el cálculo de funciones trascendentes es por lo general muy lento.  Use referencias para argumentos y valores devueltos en funciones, antes que objetos "por valor"