C++

C++:
El comité para el estándar ANSI C fue formado en 1983 con el objetivo de crear un lenguaje uniforme a partir del C original, desarrollado por Kernighan y Ritchie en 1972, en la ATT. Hasta entonces el estándar lo marcaba el libro escrito en 1978 por estos dos autores.
El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue B. Stroustrup, también de la ATT. Al comienzo era una extensión del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenzó a ser utilizado fuera de la ATT en 1983. El nombre C++ es también de ese año, y hace referencia al carácter del operador incremento de C (++). Ante la gran difusión y éxito que iba obteniendo en el mundo de los programadores, la ATT comenzó a estandarizarlo internamente en 1987. En 1989 se formó un comité ANSI (seguido algún tiempo después por un comité ISO) para estandarizarlo a nivel americano e internacional.
En la actualidad, el C++ es un lenguaje versátil, potente y general. Su éxito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisión y eficiencia. Además, ha eliminado algunas de las dificultades y limitaciones del C original. La evolución de C++ ha continuado con la aparición de Java, un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se utiliza para realizar aplicaciones en Internet.
Hay que señalar que el C++ ha influido en algunos puntos muy importantes del ANSI C, como por ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y algunas de las mejoras de éste fueron tomadas del C++.
De igual forma hay que indicar que C++ mantiene compatibilidad casi completa con C, de forma que el viejo estilo de hacer las cosas en C es también permitido en C++, aunque éste disponga de una mejor forma de realizar esas tareas.
Sin embargo un punto importante que tiene que conocer cualquier programador es que los ficheros fuente de C++ tienen la extensión *.cpp (de C plus plus, que es la forma oral de llamar al lenguaje en inglés), en lugar de *.c. Esta distinción es muy importante, pues determina ni más ni menos el que se utilice el compilador de C o el de C++. La utilización de nombres incorrectos en los ficheros puede dar lugar a errores durante el proceso de compilación
Fases para la Resolución de Problemas:.
Las fases o etapas constituyen el ciclo de vida del software, ayudarán en el proceso de resolución de un problema, estas consisten en:
1. Análisis del problema.
2. Diseño del algoritmo.
3. Codificación (Implementación).
4. Compilación y ejecución.
5. Verificación
6. Depuración.
7. Mantenimiento.
8. Documentación.
Las dos primeras etapas conducen a un diseño detallado escrito de forma de algoritmo. Durante la tercera etapa (Codificación) se implementa el algoritmo en un código escrito en un lenguaje de programación reflejando las  ideas desarrolladas en las fases de análisis y diseño (Joyanes, 2003).
La Compilación, Ejecución y Verificación realiza la traducción y ejecución del programa, se comprueba  rigurosamente y se eliminan todos los errores que pueda tener. Si existen errores es necesario modificarlo y actualizarlo de manera que cumplan todas las necesidades de cambio de sus usuarios, para ello se usan las etapas de  Verificación y Depuración.
Finalmente se debe usar la fase de Documentación, es decir, es la escritura de las diferentes fases del ciclo de vida del software, esencialmente el análisis, diseño y codificación, unidos a manuales de usuario y de referencia, así como  normas para el mantenimiento.
En este pequeño apartado se pondrán a prueba las cuatro primeras fases, aunque se recomienda realizar las fases faltantes para terminar con el ciclo de vida del software.
Análisis del Problema:
En esta fase se requiere una clara definición del problema, para poder hacer esto es conveniente realizar las siguientes preguntas:
1. ¿Qué entradas se requieren? (tipo y cantidad)
2. ¿Cuál es la salida deseada? (tipo y cantidad)
3. ¿Qué método produce la salida deseada?
Con dichas preguntas se determina qué necesita el programa para resolver el problema. La solución puede llevarse a cabo mediante varios algoritmos (Joyanes, 2004). Un algoritmo dado correctamente resuelve un problema definido y determinado.
El algoritmo debe cumplir diferentes propiedades:
1. Especificación precisa de la entrada. Se debe dejar claro el número y tipo de valores de la entrada y las condiciones iniciales que deben cumplir dichos valores.
2. Especificación precisa de la instrucción. No debe haber ambigüedad sobre las acciones que se deben ejecutar en cada momento.
3. Exactitud, corrección. Se debe mostrar que el algoritmo resuelva el problema.
4. Etapas bien definidas y concretas. Concreto quiere decir que la acción descrita por esa etapa está totalmente comprendida por la persona o máquina que debe ejecutar el algoritmo. Cada etapa debe ser ejecutable en una cantidad finita de tiempo.
5. Numero finitos de pasos. Un algoritmo se debe componer de un número finitos de pasos.
6. Un algoritmo debe terminar. En otras palabras, no debe entrar en un ciclo infinito.
7. Descripción del resultado o efecto. Debe estar claro cuál es la tarea que el algoritmo debe ejecutar. La mayoría de las veces, esta condición se expresa con la producción de un valor como resultado que tenga ciertas propiedades.
Ejemplo 1:
¿Es un algoritmo la siguiente instrucción?
Problema: Escribir una lista de todos los enteros positivos
Solución: Es imposible ejecutar la instrucción anterior dado que hay infinitos enteros positivos.
Ejemplo 2:
Problema: Calcular la paga neta de un trabajador conociendo el número de horas trabajadas, la tarifa horaria y la tasa de impuestos.
Solución: Debemos definir el problema.
1. ¿Qué datos de entrada se requieren?
Número de horas trabajadas
Tarifa
Impuestos
2. ¿Cuál es la salida deseada?
Paga Neta
3. ¿Cuál es el método a usar? (Algoritmo)
Inicio
Leer Número de horas trabajadas
Leer Tarifa
Leer Impuestos
Calcular Paga Bruta = Número de horas trabajadas * Tarifa
Calcular Impuestos = Paga Bruta * Tasa
Calcular Pago Neta = Paga Bruta – Impuestos
Visualizar Paga Bruta
Visualizar Impuestos
Visualizar Pago Neta
Fin
Diseño del Algoritmo:
En esta fase, como se ha mencionado anteriormente, se determina cómo hace el programa la tarea solicitada.
Los métodos más eficaces para el proceso de diseño se basan en el conocido divide y vencerás, esto es dividiendo el  problema en subproblemas y a continuación dividir estos subproblemas en otros de nivel más bajo hasta que pueda ser implementada la solución.
Existen diferentes herramientas de programación, las más utilizadas para diseñar algoritmos son:
1. Diagramas de flujo: Es una representación gráfica de un algoritmo. Los símbolos normalizados por el Instituto Norteamericano de Normalización (ANSI) y los más frecuentes empleados se muestran a continuación.
2. Pseudocódigo: Es una herramienta de programación en la que las instrucciones se escriben en palabras similares en inglés o español, que facilitan tanto la escritura como la lectura de programas.
Comentarios:
En C los comentarios empiezan por los caracteres /* y terminan con los caracteres */. Pueden comprender varias líneas y estar distribuidos de cualquier forma, pero todo aquello que está entre el /* (inicio del comentario) y el */ (fin del comentario) es simplemente ignorado por el compilador. Algunos ejemplos de formato de comentarios son los siguientes:
En C++ se admite el mismo tipo de comentarios que en C, pero además se considera que son comentarios todo aquel texto que está desde dos barras consecutivas (//) hasta el fin de la línea. Las dos barras marcan el comienzo del comentario y el fin de la línea, el final. Si se desea poner comentarios de varias líneas, hay que colocar la doble barra al comienzo de cada línea. Los ejemplos anteriores se podrían escribir del siguiente modo:
La ventaja de este nuevo método es que no se pueden comentar inadvertidamente varias líneas de un programa abriendo un indicador de comentario que no se cierre en el lugar adecuado.
Los componentes de un Programa:
La función main():
El único componente que es obligatorio en cada programa en C++ es la función main(). En su forma más simple la función main() consiste en el nombre main, seguido por un par de paréntesis vacios (()) y un par de llaves ({}). Dentro de las llaves se encuentran enunciados que forman el cuerpo principal del programa. Bajo circunstancias normales de la ejecución del programa comienza con el primer enunciado main() y termina con el ultimo enunciado de main().
La directiva #include:
La directiva #include da instrucciones al compilador C++ para que añada el contenido de un archivo de inclusión al programa durante la compilación. Un archivo de inclusión es un archivo de disco separado que contiene información necesaria para el compilador. Varios de estos archivos (algunas veces llamados archivos de encabezado) se proporcionan con el compilador. Nunca se necesita modificar la información de estos archivos y esta es la razón por la cual se mantienen separados del código fuente.
Se usa la directiva #include para darle instrucciones al compilador que añada un archivo de inclusión especifico al programa durante la compilación. La mayoría de los programas en C++ requieren uno o más archivos de inclusión. Todos los archivos de inclusión deben tener la extensión .h (por ejemplo, stdio.h).
Definición de variables:
Una variable es un nombre asignado a una posición de almacenamiento de datos. El programa utiliza variables para guardar varios tipos de datos durante la ejecución del programa. La definición de variable la informa al compilador el nombre de la variable y el tipo de datos que va a guardar.
Estructuras de Control Selectivas e Iterativas:
En sección se tratarán con las Estructuras de Control Selectivas e Iterativas, a continuación se describe brevemente cada una de dichas estructuras.
Estructuras de control Selectivas:
Las estructuras selectivas se utilizan para tomar decisiones lógicas y existen en dos “formas”: la sentencia ifthen-else y la sentencia switch. La primera (if-then-else)  se considera de alternativa doble (si se cumple cierta condición, entonces…, en caso contrario…), y tuene la siguiente estructura:
Nota: No se agrega ninguna llave “{” de apertura y cierre “}” cuando sólo es una instrucción.
También se puede dar el caso en que se tiene más instrucciones, esa opción deberá llevar una llave de apertura “{” y otra de cierre “}”, por ejemplo:
Nota: También puede darse el caso de que exista selecciones anidadas como se muestra a continuación.
Existe otra sentencia para la selección múltiple, esta es la sentencia switch, actúa como una función de bifurcación múltiple que sustituye con ventaja a if-else-if cuando el número de opciones que se puede presentar son numerosas. El mandato switch(variable) se utiliza para bifurcar las diferentes opciones presentadas según el valor ingresado para la variable en cada caso. Por ejemplo:
Nota: Un ejemplo es donde evaluamos nota (tipo entero) y se imprime la calificación correspondiente al valor de nota, al final si se nota tiene 6 al 0, imprimirá en pantalla Reprobado.
La sentencia switch se considera de selección múltiple, ya que el flujo de ejecución puede continuar por una cantidad N de alternativas posibles, según el valor de la expresión que se evalúa al principio.
Estructuras de control Interativas:
También conocidas como estructuras de repetición (bucles o ciclos) se utilizan para realizar varias veces el mismo conjunto de operaciones. Entre ellas se encuentran aquellas donde la cantidad de repeticiones se conoce a priori y  aquellas en las que las repeticiones se realizan hasta que se cumple una condición lógica dada. En esta sección se verán las estructuras iterativas: for, while, do-while.
El primero es la estructura for, permite definir un bucle controlado por un contador, denominado variable de control o de inducción, la sintaxis es:
Como se puede observar entre el paréntesis lleva “;”, en la primera se inicializa la variable de control y sólo se ejecuta una vez. La segunda es la condición lógica que debe cumplirse, la tercera es la actualización de la variable de control.
La estructura while, por su parte, evalua la condición lógica antes de comenzar cada iteración. Si esta es verdadera, entonces se ejecuta el cuerpo de la estructura while, en caso contrario, el bucle termina.
Como se puede observar en el siguiente código, la variable de control “i” se inicializa antes, posteriormente es la que se compara en la condición, por ello se debe actualizar dentro del bucle (i=i+1 puede sustituirse por una forma abreviada i++;).
Por último, el bucle do-while, se utiliza cuando se requiere asegurar que el ciclo se ejecuta al menos una vez, puesto que la evaluación de la condición lógica se hace al final de este.
En este ejemplo se ejecuta primero (sólo una vez) y posteriormente verifica la condición si es verdadera, en caso contrario se sale del bucle.

SOFTWARE
Descarga este compilador de C++ para que puedas practicar lo aprendido anteriormente de este lenguaje.

CompiladorC++ (Software)

No hay comentarios:

Publicar un comentario