1. DIAGNOSTICO
1.¿Qué esPrograma? R: un archivoque algunapersonadiseña
2.¿Qué esun Lenguaje de Programación?R:Una maneraespecíficade programarpara hacer
ciertasfunciones
3.¿Qué esun Programador?R: Una personaque diseñaprogramasoplataformas
4.¿Cuálessonlascaracterísticas de un programador?R: Responsable,estudioso,Disciplinado
5.¿Qué esun Problema?R:Unasituaciónque noestábieny que tenemosque analizarpara
responder
6.¿Cuálessonlosplanteamientosde unproblema?R:Hacer programas
7.¿Qué son losalgoritmos?R:Una funciónque viene al principiode unapáginapara que seamás
fácil movernosporlaplataforma
8.¿Cuálessonlasfasespara la resoluciónde unproblema?R:Identificarel problema,verlas
posiblessolucionese irnosporlamás adecuada
9.¿Qué lenguajesde Programaciónconoces?R:Ninguno
10.¿Has hechoprogramado?¿enqué lenguaje?R:Ninguno
5. Tabla de los tipos de datos
TIPOS DE DATOS EN C++
6. Tipo POD (datos estándar): esta categoría informal de tipos de datos de C++ hace
referencia a los tipos que son escalares o que son clases POD. Una clase POD no tiene
ningún miembro de datos estático que no sea también POD, y no tiene ningún constructor
definido por el usuario, ningún destructor definido por el usuario ni ningún operador de
asignación definido por el usuario. Además, las clases POD no tienen funciones virtuales,
clases base ni ningún miembro de datos no estático privado o protegido. Los tipos POD
suelen utilizarse para el intercambio de datos externos, por ejemplo, con un módulo
escrito en lenguaje C (que solo tiene tipos POD).
Tipos (integrados) fundamentales
A diferencia de algunos lenguajes, C++ no tiene un tipo base universal del que se deriven
todos los demás tipos. La implementación del lenguaje en Visual C++ contiene muchos
tipos fundamentales, también conocidos como tipos integrados. Esto incluye los tipos
numéricos, como int, double, long y bool, además de los tipos char y wchar_t para los
caracteres ASCII y Unicode, respectivamente. La mayoría de los tipos fundamentales
(excepto bool, double, wchar_t y tipos relacionados) tienen versiones sin signo, que
modifican el intervalo de valores que la variable puede almacenar. Por ejemplo, un valor
int, que almacena un entero de 32 bits con signo, puede representar un valor
comprendido entre -2.147.483.648 y 2.147.483.647. Un valor unsigned int, que también
se almacena como 32 bits, puede almacenar un valor comprendido entre 0 y
4.294.967.295. El número total de valores posibles en cada caso es el mismo; solo cambia
el intervalo.
El compilador reconoce los tipos fundamentales y tiene reglas integradas que rigen las
operaciones que se pueden realizar en esos tipos y cómo se pueden convertir en otros
tipos fundamentales.
El tipovoid
El tipo void es un tipo especial. No se puede declarar una variable de tipo void, pero se
puede declarar una variable de tipo void * (puntero a void), lo que a veces resulta
necesario cuando se asigna memoria (sin tipo) sin formato. Sin embargo, los punteros a
void no tienen seguridad de tipos y, por lo general, su uso se desaconseja completamente
en el lenguaje C++ actual. En una declaración de función, un valor devuelto de tipo void
significa que la función no devuelve un valor; se trata de un uso común y aceptable de
void. Aunque el lenguaje C requería que las funciones que no tenían ningún parámetro
declararan void en la lista de parámetros (por ejemplo, fou(void)), esta práctica no es
recomendable en el lenguaje C++ actual, donde debería declararse fou(). Para obtener
más información, vea Conversiones de tipos y seguridad de tipos.
7. Tipos string
En sentido estricto, el lenguaje C++ no tiene un tipo “string” integrado. char y wchar_t
almacenan caracteres individuales: es necesario declarar una matriz de estos tipos para
aproximarse a una cadena y agregar un valor final null (por ejemplo, ‘0’ en ASCII) al
elemento de matriz después del último carácter válido (también denominado “cadena de
estilo C“). En las cadenas de estilo C, era necesario escribir mucho más código o usar
funciones de bibliotecas de utilidades de cadena externas. Sin embargo, en el lenguaje
C++ actual, tenemos los tipos de la biblioteca estándar std::string (para cadenas de
caracteres de tipo char de 8 bits) o std::wstring (para cadenas de caracteres de tipo
wchar_t de 16 bits). Estos contenedores STL se pueden considerar tipos de cadena
nativos, ya que forman parte de las bibliotecas estándar que se incluyen en cualquier
entorno de compilación conforme a C++. Solo tiene que usar la directiva #include <string>
para que estos tipos estén disponibles en el programa. (Si usa MFC o ATL, la clase CString
también está disponible, pero no forma parte del estándar de C++). En el lenguaje C++
actual, se desaconseja completamente usar matrices de caracteres que terminen con un
valor null (las cadenas de estilo C mencionadas previamente).
Tipos de puntero
Desde las primeras versiones del lenguaje C, C++ sigue permitiendo declarar una variable
de un tipo de puntero mediante el declarador especial * (asterisco). Un tipo de puntero
almacena la dirección de la ubicación en memoria donde se almacena el valor de datos
real. En el lenguaje C++ actual, estos punteros se denominan punteros sin formato y se
accede a ellos en el código a través de los operadores especiales * (asterisco) o -> (guion
con el símbolo "mayor que"). Esto se denomina desreferenciar y el operador que se utilice
dependerá de si se va a desreferenciar un puntero a un valor escalar o un puntero a un
miembro de un objeto. Trabajar con tipos de puntero ha sido uno de los aspectos más
difíciles y confusos del desarrollo de programación de C y C++. Todavía resulta útil y
seguro utilizar punteros sin formato para inspeccionar objetos, pero si es necesario
utilizarlos para la propiedad del objeto, debe hacerse con precaución y debe valorarse
cuidadosamente el modo en que los objetos de su propiedad se crean y se destruyen.
Lo primero que debe saber es que, al declarar una variable de puntero sin formato, se
asignará solo la memoria necesaria para almacenar una dirección de la ubicación de
memoria a la que el puntero hará referencia cuando esté desreferenciado. La asignación
8. de memoria para el propio valor de datos (también denominada memoria auxiliar) todavía
no está asignada. Es decir, al declarar una variable de puntero sin formato, se crea una
variable de la dirección de memoria, no una variable real de los datos. Si se desreferencia
una variable de puntero antes de tener la seguridad de que contiene una dirección válida
en una memoria auxiliar, se producirá un comportamiento no definido.
Tipos de datos de Windows
En la programación Win32 clásica de C y C++, la mayoría de las funciones utilizan
definiciones de tipos y macros #define (definidas en windef.h) específicas de Windows
para especificar los tipos de parámetros y los valores devueltos. La mayoría de estos “tipos
de datos de Windows” son solo nombres especiales (alias)especificados en los tipos
integrados de C/C++.Algunas de estas definiciones de tipos, como HRESULT y LCID, son
útiles y significativas. Otras, como INT, no tienen ningún significado especial y son solo
alias para los tipos fundamentales de C++. Otros tipos de datos de Windows tienen
nombres que se provienen de la época de programación de C y de los procesadores de 16
bits, y no tienen ningún propósito o significado en el hardware y sistemas operativos
modernos. Hay también tipos de datos especiales asociados a la biblioteca de Windows en
tiempo de ejecución, que se muestran como Windows Runtime base data types. En el
lenguaje C++ actual, la regla general establece una preferencia por los tipos
fundamentales de C++, a menos que el tipo de Windows comunique un significado
adicional sobre cómo debe interpretarse el valor.