Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ian Cortez
General
Recibir información del usuario: Existen algunas formas para recibir informa-
ción del usuario:
• Usando cin: cin se utiliza para obtener datos de tipo int, float y char. Esto se
debe a que solo considera el valor ingresado hasta encontrar un espacio. Se usa
cin >>.
• Usando (cin.getline): El usuario puede ingresar una serie de caracteres y po-
nerlos en un array de caracteres. Se usa ası́: cin.getline(n, 10, ENTER). n es
la variable donde se guardará la cadena, 10 son los caracteres que se guardarán
y ’\n’ indica hasta donde se leerán los datos.
Tipos de datos
Int: El dato de tipo entero representa número enteros tanto negativos como posi-
tivos. Ocupa alrededor de 32-bits en la memoria. Tı́picamente ocupan valores de
entre (-2147483648) a (2147483647).
Char: El dato de tipo char es un caracter, este dato ocupa 4-bits de memoria.
Float: El dato de tipo float es un dato que utiliza notación de punto flotante y se usa
para almacenar números decimales. Se utilizan 32-bits de memoria para almacenar
este dato. Tiene una precisión en el rango de (1,18 × 1038 ) hasta (3,4 × 1038 ); en los
positivos y negativos.
1
Condicionales
If y else: Los condicionales if y else se utilizan para realizar una acción si se cumple
una acción y realizar otra en los otros casos. Adicionalmente, existe el ”else if” que
funciona como un if diferente del if inicial. La estructura es la siguiente:
if (x > 0){
cout << ”El número es mayor a 0.” << endl;
} else {
cout << ”El número es menor o igual a 0.” << endl;
}
Switch: La función de ”switch” funciona como un ”if - else” pero en el caso del
”switch” este salta directamente al caso que corresponde y ejecuta la acción perte-
neciente al caso.
int x;
cout << ”Ingrese un valor: ”; cin >> x
switch (x){
case 1: cout << ”El número es 1” << endl; break;
case 2: cout << ”El número es 2” << endl; break;
case 3: cout << ”El número es 3” << endl; break;
default: cout << ”El número es mayor a 3” << endl; break;
}
Bucles:
While: Este bucle verifica una condición y luego realiza una acción si se cumple.
int i = 1;
while (i ≤ 10){
cout << i << endl;
i++;
}
Do, While: El bucle realiza una acción y luego verifica una condición para volver
a ejecutarla, si no continua el programa. Se ejecuta al menos una vez.
int i = 0;
do {
cout << i << endl;
i++;
} while(i < 10);
For: Este bucle inicia una variable de iterador, se indica la condición para terminar
el bucle y una expresión que indique el incremento del iterador en cada repetición.
Van en ese orden y separados por punto y coma.
2
for (int i=0; i<10; i++){
cout << i << endl;
}
3
Arrays
int numeros[5];
4
Cadenas
Declarar una cadena: Para declarar una cadena se necesita declarar un array de
caracteres con la cantidad de caracteres que entrarán en el array.
char palabra[10];
Inicializar una cadena: Las cadenas se inicializan de la misma manera que cual-
quier otro array. Se puede asignar un texto y C++ entenderá que se trata de un
arreglo de caracteres y les asignará una posición.
strcpy(): Copia una variable con una cadena de caracteres a otra. Se usa
strcpy(cadena2, cadena1);
Donde cadena2 es la cadena vacı́a y cadena1 tiene el contenido que queremos poner
en la cadena vacı́a.
strcmp(cadena1, cadena2);
strcat(cadena2, cadena1)
strupr(): Convierte todos los caracteres de una variable de tipo cadena a mayúscu-
las y lo guarda en la variable.
strupr(palabra);
strlwr(): Convierte todos los caracteres de una variable de tipo cadena a minúsculas
y lo guarda en la variable.
strlwr(palabra);
5
atoi(): Convierte una cadena de caracteres al valor entero correspondiente. Ejemplo:
int entero;
numero = atoi(palabra);
En este ejemplo, la cadena ”123” se convierte a un entero que se almacena en la
variable entero.
float real;
numero = atof(palabra);
En este ejemplo, la cadena ”12.5” se convierte en un número real y se almacena en
la variable real.
6
Ordenamiento
Búsqueda
i = 0;
while ( (band == ’F’) && (i < ”tamaño de a[]”) ) {
if (a[i] == dato) band = ’V’;
i++;
7
}
if (band == ’V’){
cout << ”El numero a buscar esta en la posición: ” << i - 1 << endl;
} else if {
cout << ”El número no esta en el arreglo.” << endl;
}
inf = 0;
sup = ”tamaño del arreglo” → 5;
while (inf ≤ sup ) {
mitad = (inf + sup)/2;
if (a[mitad] == dato){
band = ’V’;
break;
} else if (numeros[mitad] > dato){
sup = mitad - 1;
} else if (numeros[mitad] < dato){
inf = mitad + 1;
}
}
if (band == ’V’){
cout << ”El numero a buscar esta en la posición: ” << i - 1 << endl;
} else if {
cout << ”El número no esta en el arreglo.” << endl;
}
8
Estructuras
Concepto: Las estructuras son colecciones de uno o más tipos de elementos deno-
minados campos. Se debe especificar el nombre de la estructura además del tipo de
dato y el nombre del campo que pertenece a la estructura.
struct Persona{
char nombre[20];
char apellido[20];
int edad;
};
Declarar variables struct: Para declara una variable de tipo struct existen dos
formas. La primera, donde se pone los nombres de los elementos de tipo struct al
terminar la inicialización del struct. La segunda donde se declaran las variables de
tipo struct en la función principal. Adicionalmente, se puede crear un arreglo donde
se almacenará cada variable que corresponda al struct.
1. struct Persona{
char nombre[20];
char apellido[20];
int edad;
}P1, P2, P3;
2. struct Persona{
char nombre[20];
char apellido[20];
int edad;
};
int main(){
struct Persona P1, P2, P3;
}
3. struct Persona{
char nombre[20];
char apellido[20];
int edad;
}personas[100];
Llenar los campos dentro del struct: El llenado de los campos de un struct
se realiza dependiendo del tipo de campo que se este llenando. Se debe referir al
campo que se quiere llenar con el nombre de la variable del tipo struct y un punto.
Ejemplo:
9
struct Persona{
char nombre[20];
char apellido[20];
int edad;
};
int main(){
struct Persona P1;
P1.nombre = ”Ian”;
P1.apellido = ”Cortez”;
P1.edad = 17;
}
10
Funciones
Concepto: Las funciones se usan para realizar una tarea concreta y puede ser
diseñadas e implementadas de manera independiente del código principal, la función
int main().
Ejemplos:
#include <iostream>
using namespace std;
int main(){
instrucciones;
}
void hacer(){
instrucciones;
}
11
template <class TIPOD>
void funcion (TIPOD var, . . .){
instrucciones;
}
int main(){
instrucciones;
}
#include <iostream>
using namespace std;
int main(){
int num1, num2;
cout << ”Digite 2 numeros: ”; cin >> num1 >> num2;
valNuevo(num1, num2);
cout << ”El valor de num1 nuevo es: ” << num1 << endl;
cout << ”El valor de num2 nuevo es: ” << num2 << endl;
}
En este ejemplo, se ingresan dos valores, num1 y num2. Estos se le pasa a la función
”valNuevo” donde se muestra el valor que se le asigno a la variable por el usuario.
Luego se cambia directamente el valor de las variables num1 y num2 por 89 y 45
respectivamente. Por lo que, los nuevos valores de num1 y num2 que se muestran
en consola serı́an 89 y 45.
12
Retornar más de un valor: Para que una función retorne más de un valor se
necesita usar los parámetros por referencia ya que la función esta limitada a retornar
solo un valor. Adicionalmente se pueden retornar otros tipos de dato que contengan
más valores dentro.
Pasar arrays a funciones: Es posible pasar arrays de todo tipo a una función
como parámetros. Para realizar esto es necesario pasar por valor a la función el
nombre del array y su tamaño. Ejemplo:
Prototipo de función:
void nombreFuncion(tipo nombreArray[], int tamañoArray);
Parámetros de función:
void nombreFuncion(tipo nombreArray[], int tamañoArray){
instrucciones;
}
Llamar función:
nombreFuncion(nombreArray, tamañoArray);
Pasar matrices como parámetros: Al igual que cuando se pasan arrays como
parámetros de una función, se debe ingresar el tipo de la variable de la matriz con
la cantidad de columnas especificada. Además se debe pasar la cantidad de filas y
columnas por separado. Ejemplo:
Prototipo de función:
void nombreFuncion(tipo matriz[][NroColumnas], int NroFilas, int NroColumnas);
Parámetros de función:
void nombreFuncion(tipo matriz[][NroColumnas], int NroFilas, int NroColumnas){
instrucciones;
}
Llamar función:
nombreFuncion(nmatriz, NroFilas, NroColumnas);
Pasar parámetros de tipo struct: Para pasar una variable de tipo struct se debe
dar el nombre de la estructura dentro de los parámetros de la función. Ejemplo:
Estructura:
struct Persona{
char nombre[20];
int edad;
}p1;
Prototipo de función:
13
void nombreFuncion(Persona);
Parámetros de función:
void nombreFuncion(Persona p){
instrucciones;
}
Llamar función:
nombreFuncion(p1);
Recursividad: Una función que se llama ası́ misma para resolverse, en esta debe
incluirse un caso base y una forma de llegar al caso base. Utilizar mucha recursividad
puede aumentar considerablemente la complejidad algorı́tmica. Ejemplo:
14
Punteros
Crear una variable puntero: Para crear una variable puntero se le asigna un
tipo, se coloca un ”*” y se nombra la variable. Esto apunta a cualquier posición de
memoria. Para guardar la posición de memoria de una variable se llama la dirección
de memoria de esa variable. Ejemplo:
Mostrar un valor usando una variable puntero: Para mostrar el valor señalado
por un puntero se usa un ”*”. Se llama del siguiente modo:
Arrays y punteros: Se pueden usar punteros para guardar la posición del valor
dentro de un array. El puntero debe empezar en la posición del primer valor del
array. Luego se puede cambiar el valor al que apunta el puntero a los demás valores
del array.
15
int cantidadElementos, *arreglo;
arreglo = new int[cantidadElementos];
for (int i=0; i<cantidadElementos; i++){
arreglo[i] = i;
}
for (int i=0; i<cantidadElementos; i++){
cout << arreglo[i] << endl;
}
delete[] arreglo;
return 0;
En este ejemplo, se crea un array separando memoria suficiente para todos los
elementos que se van a incluir en el array. Luego, se le asigna a cada espacio del
array un valor y se luego se muestran. Al final, se borra la memoria separada para
el array.
Prototipo:
void nombreFuncion(tipo *, tipo *);
Parámetros de función:
void nombreFuncion(tipo *dirVar1, tipo *dirVar2){
instrucciones;
}
Llamar función:
int main(){
int a = 5, b = 10;
nombreFuncion(&a,&b);
return 0;
}
Prototipo de función:
tipo nombreFuncion(tipo *, int cantidadElementos);
Parámetros de función:
tipo nombreFuncion(tipo *dirArray, int cantidadElementos){
instrucciones;
return tipo;
}
Llamar función:
int main(){
int cantidadElementos = 5;
int numeros[cantidadElementos] = {1, 2, 3, 4, 5};
16
nombreFuncion(numeros, cantidadElementos);
return 0;
}
int main(){
cout << ”Ingrese las filas y columnas: ”;
cin >> nFilas >> nCols;
//Reservar memoria
puntero matriz = new int*[nFilas];
for (int i=0; i<nFilas; i++){
puntero matriz[i] = new int[nCols];
}
LLenado de datos:
cin.getline(puntero persona − >nombre, 30, ’\n’);
cin >> puntero persona − > edad;
Si se quiere hacer esto para un array perteneciente a una estructura se debe realizar
del siguiente modo:
17
Crear variables y asignar al puntero:
struct Persona{
char nombre[30];
int edad;
}persona[3], *puntero persona = persona;
LLenado de datos:
for (int i=0; i<3; ++i){
cin.getline((puntero persona + i) − >nombre, 30, ’\n’);
cin >> (puntero persona + i)− > edad;
}
Consideraciones:
18
Pilas
Concepto de Pilas: Una pila es una estructura de datos que solo se pueden in-
troducir y eliminar por un lado llamado cima. En las pilas, el último en entrar es el
primero en salir, sistema LIFO(Last In First Out).
Operaciones de pila: Las operaciones que se pueden realizar con una pila son
Insertar(push) donde se añade un elemento en la cima de la pila y Quitar(pop)
donde se elimina un elemento de la pila.
19