Resumen Final C++
Resumen Final C++
Resumen Final C++
Algoritmos
Lenguaje de programación: son lenguajes que resumen un conjunto de palabras del inglés con
determinada sintaxis que permiten escribir algoritmos.
ide: entorno integrado de desarrollo (herramienta de programación) Dentro de una IDE, uno trabaja
con proyectos (recursos relacionados)
cin: input
cout: output
//: comentarios
Describe tres estructuras de control y asegura que con ellas se puede resolver cualquier problema
computacional:
Tipos de datos
char – 1 byte
short - 1 byte (en realidad son 2)
int - 2 bytes (en realidad son 4)
long - 4 bytes (en realidad son 8)
float – 4 bytes
double – 8 bytes
bool – 1 byte
Código ASCII: Código que se le da a cada caracter que nosotros conocemos. Se asocia con el tipo de
dato “char”
Funciones:
Si uso &var dentro de la función, el parámetro no toma la copia del valor de “var”, sino que toma
realmente a var y puede modificar directamente a var, usándolo como referencia.
Scope – Variables
Las variables que se declaran dentro de una estructura, solo existen dentro de ella.
Float R = (double) a/b //Agregar el paréntesis antes de un “int a” significa castear la variable
String
Son una sucesión de caracteres. Implícitamente c+ agrega un \0 al final de un string para indicar su
finalización.
TUTORIAL
Switch:
Los caracte
res van entre ‘’, los strings entre “”
Array
int sum = 0;
Array multidimensional
int x[2][3] = {
{2, 3, 4}, // 1st row
{8, 9, 10} // 2nd row
};
INTRODUCCION A PUNTEROS
int score = 5;
cout << &score << endl;
Punteros
Un puntero es una variable, con la dirección de otra variable como su valor. Todos los punteros
comparten el mismo tipo de dato, un numero hexadecimal que representa su dirección en la
memoria. Sirve para cambiar datos en la memoria dinámica
int *p = &x;
es lo mismo que:
int *p;
p = &x;
* is to learn for content
& is to learn for address
example: int x = 9; //decleration
int *p = &x; //decleration
cout << x; // 9
cout << *p; // 9
cout << &x; // address of x
cout << p; // address of x
cout << &p; // address of p
int score = 5;
int *scorePtr;
scorePtr = &score;
p = &var;
TIPO DE MEMORIA
El Stack (Pila) se utiliza para almacenar variables locales, variables de referencia, parámetros y
valores de retorno, resultados parciales. Guarda las variables declaradas en main() y todas las
funciones
FUNCIONES
Las funciones de tipo void no devuelven/retorna ningún valor. Se usa cuando en la funcion hay un
return, sino se usa int (adentro hay un print/cout)
Para llamar a una función, se la escribe con los parámetros entre paréntesis
Si se quiere crear una función luego del main(), hay que crear una función igual (prototipo) antes del
main
ARGUMENTOS Y PARAMETROS
Para que una función use argumentos, debe declararse parámetros formales, que son variables que
aceptan los valores del argumento
void printSomething(int x)
{
cout << x;
}
EJEMPLO
#include <iostream>
return x+ y;
*/
int main(){
int a = 2;
int b = 3;
cout<<sum(a,b)<<endl;
return 0;
FUNCION RAND()
#include <cstdlib>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main () {
srand(time(0));
Se puede hacer siempre que el tipo de dato del parámetro sea distinto
void printNumber(int a)
void printNumber(float a)
RECURSIVIDAD
int factorial(int n) {
if (n==1) {
return 1;
}
else {
return n * factorial(n-1);
}
}
A las funciones se las puede llamar por valor o por referencia. En el primer caso usa una copia
del valor real en el parámetro formal de la funcion, sin afectar a la variable en cuestión.
void myFunc(int x) {
x = 100;
}
int main() {
int var = 20;
myFunc(var);
cout << var;
}
// Outputs 20
int main() {
int var = 20;
myFunc(&var);
cout << var;
}
// Outputs 100
OBJETOS Y CLASES
Un objeto son unidades independientes, y cada una tiene su identidad propia. A las
características particulares que tiene un objeto se las denomina atributos. Un atributo describe
el estado actual de un objeto, y puede tener varios al mismo tiempo. A su vez cada objeto tiene
un comportamiento distinto.
Las tres dimensiones que abarca cualquier objeto en POO son: identidad, atributos y
comportamiento.
CLASES
Los objetos son creados utilizando clases. Las clases describen como será el objeto, pero lo
separa del objeto en sí.
Sintaxis:
EJEMPLO:
class BankAccount {
public:
void sayHi() {
cout << "Hi" << endl;
}
};
int main()
{
BankAccount test;
test.sayHi();
}
“test” es el objeto que creamos y posee todos los atributos de la clase BankAccount.
#include <iostream> (libreria) que permite que nuestro programa tenga entrada y salida de datos
Cout<<”Hola mundo”<<endl;
Cout<<”Hola mundo \n”;
Tipo de datos
Int: entero
float: número con coma
double: igual que el flotante, pero permite guardar números más grandes
char: una sola letra con comillas simples ‘’ Ejemplo: char variable[10] permite 10 caracteres
Entrada/salida
Cout<<
Cin>>
Comentarios
//
o
/* */
Sqrt(num)
Pow(num,potencia)
Switch
Swith(variable) {
Case 1:
Case 2:
Break;
Break;
Default: “…”
Símbolos lógicos
And: &&W
Or: ||
ESTRUCTURAS REPETITIVAS
While
While (condición) {
instrucciones
Do while
Do {} while {}
Permite usar getch() antes del return 0 para que no se cierre el programa cuando se abra el .exe
Permite usar system(“pause”); para que el programa no termine hasta tocar una tecla
For
#include <time.h>
srand(time(NULL));
// del [1 al 100]
num_aleatorio= 1 + rand()%100
int num;
cin>>num;
for(int i=2;num>1;i++) {
while (num%i==0){
cout<<i<<" ";
num/=i;
Definición de vector:
Int números[10];
Char letras[5]
Float reales[15]
Iniciacion
Int numero[] = {1,4,6,7,3} (se rellena el arreglo sin aclarar cuantos elementos tiene)
Definición:
Tipo nombre[nfilas][ncolumnas];
Ejemplo
Programa para crear matriz con número y filas indicadas, rellenarlas y luego imprimirla
CADENAS O STRINGS
char nombre[10];
cin.getline(nombre,20,’\n’);
La funcion gets(variable) ocupa espacio en la memoria que no debería ocupar si supera el límite de
caracteres permitido por el string
Longitud de string
Char palabra[]=”hola”;
Int longitud = 0;
Longitud = strlen(palabra);
Strcmp(string1,string2)
Si strcmp(a,b)==son iguales
EJEMPLO:
If(strcmp(a,b)==0) {
Son iguales
If (strcmp(a,b)>0){
Concaternar cadenas
Strcat(new_string,old_string)
Invertir cadenas
strupr(string)
strlwr(string)
atoi (string_int)
atof (string_float)
ORDENACION
La ordenación de datos (sort) es una operación que consiste en disponer un conjunto de datos en
algún determinado orden
Una colección de datos puede ser almacenada en memoria central (ordenación interna, se guarda en
arrays) o en archivos de datos externos guardados en unidades de almacenamiento (ordenación
externa)
Directos(básicos): burbuja, selección, inserción. Son los mas ineficientes para grandes cantidades de
datos. En el caso de listas pequeñas, los métodos directos son más eficientes y su uso es muy
frecuente.
Indirectos (avanzados): Shell, quick short, merge sort, radix sort. Se usa, por ejemplo, en listas
grandes.
Método burbuja: funciona revisando cada elemento de la lista que va a ser ordenada con el
siguiente, intercambiándolos de posición si están en el orden equivocado.
for (i=0;i<5;i++){
for (j=0;j<5;j++){
aux = numeros[j];
numeros[j]=numeros[j+1];
numeros[j+1]=aux;
Ordenación Shell
Se la denomina también ordenación por inserción con incrementos descendentes. Los
saltos entre las comparaciones son mayores que en el método tradicional, el cual va de uno
en uno
Pasos:
Se divide la lista original entre n/2 grupos de dos, considerando un incremento o salto entre
los elementos de n/2
Se clasifica cada grupo por separado, comparando las parejas elementos y si no están
ordenados, se intercambian.
Se divide ahora la lista en la mitad de grupos (n/4), con un salto entre los elementos tambien
a la mitad (n/4), y luego se clasifica cada grupo por separado.
divide los n elementos de la lista a ordenar en dos partes separadas por un elemento: una
partición izquierda, un elemento central denominado pivote y una partición derecha.
La partición se hace de manera que todos los elementos de la primera partición sean
menores que todos los elementos de la segunda partición. Las sublistas se ordenan
independientemente
Pasos:
1- Seleccionar el elemento central de a[] como pivote
2- Se divide en dos listas de manera que sea izquierda hayas elementos menores que el
pivot y a la derecha mayores
3- Se utiliza el mismo algoritmo en la parte derecha y en la parte izquierda.
BUSQUEDA SECUENCIAL DE UN ARREGLO
BUSQUEDA BINARIA
ESTRUCTURAS
Es la colección de uno a más tipos de elementos denominados campos, cada uno de los cuales
puede ser un tipo de dato diferente.
Ejemplo:
struct coleccion_CD {
char artista[25];
float precio;
struct coleccion_CD {
char artista[25];
float precio;
} CD1,CD2,CD3;
struct Persona {
char nombre[20];
int edad;
int main(){
cout<<persona1.nombre<<endl;
cout<<persona1.edad;
return 0;
En este ejemplo, se crea un arreglo de estructuras (dentro de un arreglo, guardamos dos o más
estructuras)
Vaciar el buffer (cuando no te deja escribir más información en la consola)
fflush(stdin)
EJERCICIO
FUNCIONES
Sintaxis:
Tipo nombre(tipo var1,tipo var2) { //el primer tipo es el tipo de valor que devuelve
Conjunto de instrucciones;
PLANTILLAS
INTERCAMBIAR VALORES
Se usa & en la definición a la función
VECTORES Y FUNCIONES
Llamada:
Funcion(nombreArray, tamañoArray)
RECURSIVIDAD
Funcion que se llama a ella misma, con caso base y caso general.
Factorial de un número
PUNTEROS
Los punteros son variables donde se almacena la dirección de memoria donde se está guardando
otra variable
&n = la dirección de n
PUNTEROS Y ARRAYS
new: Reserva el número de bytes solicitado por la declaración. Se necesita la librería <stdlib.h>
Cin>>numCalif
Calif = new int[numCalif] //crea un arreglo para el número de calificaciones que el usuario indica
Es una estructura de datos ordenadas tales que solo se pueden introducir y eliminar por un extremo,
llamado cima.
Las operaciones más comunas son INSERTAR (push), que añade un elemento encima de la pila y la
operación QUITAR (pop) elimina o saca un elemento de la pila.
Entrada: MAC
Salida: CAM
Un nodo contiene un dato y un puntero (*siguiente) que señala a otro nodo
2- n = aux->dato;
os
1. Cuál de las siguientes sentencias son correctas para la ecuación algebraica y=ax3
+ 7.
a. y = a * x * x * x + 7
b. y = a * x * x * (x + 7)
c. y = (a * x) * x *( x + 7)
d. y = (a * x) * x * x + 7
e. y = a * (x * x * x) + 7
f. y = a * (x * x * x + 7)
2. Escriba un programa que pida al usuario dos números e informe la suma, la resta, el
3. Escriba un programa que imprima los números del 1 al 4 en una misma línea, hágalo de
4. Escriba un programa que reciba tres números por el teclado e imprima la suma, el
dialogo en pantalla.
7. Utilizando solo lo que hemos desarrollado en esta introduccion escriba un programa que
calcule los cuadrados y los cubos de los números de 0 a 10 y los muestre por pantalla.
8. Escriba un programa que reciba un numero entero de 5 digitos, que separe el numero en
sus digitoe y los muestre por pantalla, uno por línea comenzando por elmas significacivo
en la primera línea.
9. Dada una terna de números naturales que representan al día, al mes y al año de una
10. Dado un valor entero ingresado por teclado, se pide informar: a) La quinta parte de dicho
valor b)El resto de la división por 5, c)La séptima parte del resultado del punto a)
11. Dados dos valores enteros y distintos, emitir una leyenda apropiada que informe cuál es
12. Dadas dos fechas representadas por el dia, el mes y el año informar cual es la más
reciente.
13. Dado tres valores L1, L2, L3, determinar si los mismos forman un triangulo.
14. Dado tres valores L1, L2, L3, que representan los lados de un triangulo determinar e
15. Dados dos valores, N y M números naturales, informar su producto por sumas sucesivas.
16. Dados 50 números enteros, informar el promedio de los mayores que 100 y la suma de los
cada infracción se tomó nota de los siguientes datos: a) Tipo de Infracción (1, 2, 3, ó 4), b)
pide informar al final del proceso: 1)Los valores totales de la multa a pagar de acuerdo al
18. Ingresar e informar valores, mientras que el valor ingresado no sea negativo. Informar la
19. Se ingresa un conjunto de valores reales, cada uno de los cuales representan el sueldo de
un empleado, excepto el último valor que es cero e indica el fin del conjunto. Se pide
$1.520. b) Cuántos ganan $1.520 o más pero menos de $2.780. c) Cuántos ganan $2.780
20. Dado un valor M determinar y emitir un listado con los M primeros múltiplos de 3 que no
22. Dados N valores informar el mayor, el menor y en que posición del conjunto fueron
ingresados.
23. Dado un conjunto de Nombres y Fechas de nacimientos (AAAAMMDD), que finaliza con
joven.
24. Dado un conjunto de valores, que finaliza con un valor nulo, determinar e imprimir (si
hubo valores): a) El valor máximo negativo, b) El valor mínimo positivo, c) El valor mínimo
25. Se dispone de un lote de valores enteros positivos que finaliza con un número negativo.El
lote está dividido en sublotes por medio de valores cero. Desarrollar un programa que
posición relativa del mismo dentro del sublote, d) valor mínimo de cada sublote
26. Dada una serie de M pares {color, número} que corresponden a los tiros de una ruleta. Se
pide informar: a) cuántas veces salió el número cero y el número anterior a cada cero, b)
cuántas veces seguidas llegó a repetirse el color negro, c) cuántas veces seguidas llegó a
repetirse el mismo número y cuál fue, d) el mayor número de veces seguidas que salieron
alternados el rojo y el negro, el mayor número de veces seguidas que se negó la segunda
docenas
27. Un buque de carga traslada 100 contenedores a tres diferentes puertos del país. Los
puertos se identifican con los números 1, 2 y 3. De cada contenedor que el buque traslade
se registran los siguientes datos: a) Identificación del contenedor, b) Peso del contenedor
en kg, c) Puerto de arribo(un valor de 1 a 3). Se pide calcular e informar: 1) El peso total
28. En un torneo de fútbol participan K equipos. El torneo se juega con el sistema de todos
contra todos. Por cada partido disputado por un equipo se dispone de la siguiente
información: Nro. de equipo, Código del resultado ('P'= Perdido, 'E'= Empatado, 'G'=
Ganado).Se arma un lote de datos con todos los resultados del torneo, agrupados por
Nro. de equipo. Desarrollar el programa que imprima: a) Por cada equipo, su número y el
puntaje total que obtuvo (suma 3 si gana, y 1 si empata). b) Cantidad de equipos que
obtuvieron el puntaje minimo o cuantos son si hay mas de uno en esa situacion
29. Dada una serie de caracteres que conforman una oración, donde cada palabra está
separada de la siguiente por un carácter blanco y la oración finaliza con un punto. Se pide
informar: a)cantidad de veces que apareció cada vocal, b)cantidad de palabras que
30. Dado un número entero positivo entre 1 y 3999 informar su correspondiente número
Romano
31. Dado un conjunto de valores enteros, calcular e informar a) cuántos valores cero hubo, b)
d. Se dan N valores, pero el proceso deberá finalizar si se procesan todos los valores
33. El gobierno de la Ciudad de Buenos Aires realiza una encuesta en casas de familia. De
integrantes. De cada integrante de la familia se conoce: nombre y apellido, edad, sexo ('F',
'M'), nivel de estudios alcanzados ('N': no posee, 'P': primario, 'S': secundario, 'T':
terciario, 'U': universitario), y un indicador ('I': incompleto, 'C': completo) que se refiere al
ítem anterior. Los datos finalizan cuando la cantidad de integrantes sea igual a cero. Se
a. los datos de los encuestados que hayan completado los estudios primarios
departamento
d. edad promedio de cada familia y de la ciudad
incompletos.