Introducción a C++

1

Todo lo que aprender√°s sobre C++

2

¬ŅQu√© es programar y por qu√© aprender C++?

Conceptos Generales de C++

3

La Historia de C++ y sus diferencias con C

Preparando el entorno de trabajo

4

Instalando Codeblocks

5

Pasos para instalar en mac

6

Ejecutando nuestro primer programa

7

¬ŅQu√© son las librer√≠as STD? - Portada del Proyecto

Manejo de memoria

8

¬ŅQu√© es la memoria y tipos de datos?

9

Alojando variables en memoria

10

¬ŅC√≥mo usar operadores?

11

¬ŅQu√© son los apuntadores?

12

Reto: Escribir un programa que calcule √°reas.

Entrada de datos y funciones

13

¬ŅC√≥mo introducir datos a nuestro programa?

14

¬ŅC√≥mo usar condicionales?

15

Usando condicionales

16

¬ŅC√≥mo encapsular c√≥digo en funciones ?

17

¬ŅQu√© son los par√°metros y como usarlos?

18

Reto: Juego narrativo implementando condicionales y entrada de datos.

Loops y arreglos

19

¬ŅQu√© son los arreglos?

20

¬ŅQu√© son los Loops?

21

Programando Loops

22

Loops , arreglos y arreglos bidimensionales

23

Dibujando el mapa de nuestro juego con arreglos

24

Manipulando mi jugador con inputs en arreglos unidimensionales

25

Arreglos bidimensionales

26

Reto: Moviendo a mi personaje en mi arreglo bidimensional

Lectura de Archivos

27

Creando y leyendo un archivo externo

28

Leyendo archivos externos

29

Reto: En el mapa, crear punto de inicio y salida del jugador

Programación Orientada a Objetos

30

¬ŅQu√© es POO?

31

Definiendo una clase y creando sus instancias

32

Encapsulación

33

Abstracción

34

Herencia

35

Propiedades de clase en herencia

36

Polimorfismo

Finalizando nuestro proyecto

37

Creación de personaje y archivo de encabezado

38

Moviendo mi personaje con entrada de datos

39

Mapa

40

Interacción entre el personaje y el mapa

41

Paredes

42

Optimizando trazado de mapa

43

Colisiones

44

Creando nuestra portada de juego

45

Tesoro y victoria

46

Conclusiones

47

Proyecto final

No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Loops , arreglos y arreglos bidimensionales

22/47
Recursos

Los arreglos bidimensionales nos ayudan a crear listas de filas y columnas. Podemos crearlos as√≠ como los arreglos normales pero debemos a√Īadir un nuevo conjunto de corchetes y la cantidad de elementos en √©l para definir los espacios no solo de las filas sino tambi√©n de las columnas.

Por ejemplo:

int ids[3][5] =
{
    { 0, 1, 2, 3, 4 },
    { 0, 1, 2, 3, 4 },
    { 0, 1, 2, 3, 4 }
};

Recuerda que también podemos crear arreglos tridimensionales o de todas las dimensiones que quieras pero solo acostumbramos a llegar a dos o máximo 3.

Aportes 39

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

En este resultado observamos las posiciones que ocupa cada n√ļmero.
Tal vez esto ayude a entender un poco m√°s c√≥mo funcionan los arreglos bidimensionales. ūüėĄ

using namespace std;

int main()
{
    int ids [5][3] =
    {
      {11,22,23},
      {17,52,53},
      {18,82,38},
      {16,62,83},
      {14,92,93},
    };

    for(int i = 0; i < 5; i++)
    {
       for(int p = 0; p < 3; p++)
       {
         cout << " Fila "<< i <<" Columna "<< p << " = " << ids[i][p]<< ",";
       }
       cout << endl;
    }
    return 0;
}

Mi aporte

Es un codigo para hacer 2 tipos de recorridos de un arreglo

  • Espiral Horizontal
  • Espiral Vertical
    Espero que les ayude ūüėĄ
<code>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
using namespace std;

int main(){
	
	int mat [100][100];
	int f = 0, c = 0;
	
	cout << "Ingrese los siguientes datos :"<<endl;
	cout << "Numero de filas :"<<endl;
	cin >> f;
	cout << "Numero de columnas :"<<endl;
	cin >> c;
	if (f!=c){
		
	cout << "La matriz no es cuadrada  :"<<endl;
	return 0;
	} 
	else 
		
		cout << "Ingrese los nueve valores "<<endl;
		
	for (int j = 0; j < f ; j++){
	   for (int i = 0; i < c ; i ++ ){
	  
	cout << "Ingrese el valor de la fila No. "<< j + 1 <<" y la columna "<< i + 1 <<  " valores "<<endl;
	cin >> mat [j][i] ;
	
	 }
	 
}
	cout << "La matriz original es:  "<< endl;
for (int j = 0; j < f ; j++){
	for (int i = 0; i < c ; i++ ){
		cout << mat [j][i]<<" ";
		
	}
		cout << " "<< endl;
	
}
	cout << " "<< endl;
		cout << "El recorrido en espiral vertical es: "<< endl;
	 
	 for ( int j = 0 ; j < f ; j++){
	 	
	 	if (j % 2 == 0){
	 		
	 		for (int i = 0; i < c; i++){
	 			
	 			cout << mat[j][i]<<" "; 
			 }
	 		
		 }
		 else {
		 	for (int i = c - 1; i > -1 ; i--){
		 		cout << mat[j][i]<<" ";
		 		
			 }
		 		
		 
		 }
	 	
	 		
	 		
	 }
	
	
	
	cout << " "<< endl;
		cout << "El recorrido en espiral horizontal es: "<< endl;
	 
	 for ( int i = 0 ; i < c ; i++){
	 	
	 	if (i % 2 == 0){
	 		
	 		for (int j = 0; j < f; j++){
	 			
	 			cout << mat[j][i]<<" "; 
			 }
	 		
		 }
		 else {
		 	for (int j = c - 1; j > -1 ; j--){
		 		cout << mat[j][i] <<" ";
		 		
			 }
		 		
		 
		 }
	 	
	 		
	 }
	 

	
	
	return 0;
	
}


int main()
{
    string bio[5][6] =
    {
        { "P","L","A","T","Z","I",} ,
         { "P","L","A","T","Z","I",} ,
          { "P","L","A","T","Z","I",} ,
           { "P","L","A","T","Z","I",} ,
            { "P","L","A","T","Z","I",}

    };

    for(int i = 0; i < 5; i++)
      {
         for(int j = 0; j < 6; j++)
            {
                cout << bio[i][j]<< ",";
            }
            cout << endl;

      }

    return 0;```

No hay un ciclo mejor que otro pero SI acostumbramos a usar ciclos diferentes en casos diferentes para aprovechar mejor su sintaxis.

Por ejemplo, el ciclo for resulta más cómodo cuando sabemos la cantidad de información sobre la cual que queremos iterar. En cambio, el ciclo while lo usamos en casos donde una condición más específica debe cambiar (como un game over).

#include <iostream>

using namespace std;

int main()
{

    int tridimensional[2][2][2]=
    {
        {{1,2},{3,4}},
        {{5,6},{7,8}}
    };


    for(int i = 0; i < 2; i++)
    {
        for(int j = 0; j < 2; j++)
        {
            cout << "[ ";
            for(int k = 0; k < 2; k++)
            {
                cout << tridimensional[i][j][k];
                cout << " ";
            }
            cout << "]";
        }
        cout << endl;
    }

    return 0;
}

Excelente clase

siempre hay que inicializar a cero los indices de las matrices o asignarles un valor? porque intent√© mostrar con for una matriz vac√≠a y me imprimi√≥ una andanada de cifras extra√Īas.

*Mis apuntes sobre: ‚ÄúLoops, arreglos y arreglos bidimensionales‚ÄĚ:

Les comparto el primer código, donde se recorrió con un for un arreglo unidimensional.

Ejemplo 1:

#include <iostream>

using namespace std;

int main()
{
    string names[5]={"Asterix","Obelix","Idiafix","Panoramix","Asurenceturix"};

    for(int i=0;i<5;i++)
    {
        cout<<names[i]<<endl;
    }
    cout<<endl<<endl;
    int index=0;
    while(index<5)
    {
        cout<<names[index]<<endl;
        index++;
    }
    return 0;
}

Ejemplo 2:

#include <iostream>

using namespace std;

int main()
{
    int ids[5][5]=
    {
        {0,0,0,0,0},
        {0,0,0,0,0},
        {0,0,0,0,0},
        {0,0,0,0,0},
        {0,0,0,0,0},
    };
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            cout<<ids[i][j];
        }
        cout<<endl;
    }
    return 0;
}
#include <iostream>
using namespace std;

int main()
{
	int id[5][3] =
	{
		{0,1,2},
		{0,1,2},
		{0,1,2},
		{0,1,2},
		{0,1,2}
	};

	for (int i = 0; i < 5; i++)
	{
		for (int f = 0; f < 3; f++)
		{
			cout << id[i][f] << " ";
		}
		cout << endl;
	}
}

Para los arreglos o arrays de dos dimensiones hay que recordar que primero se establece el n√ļmero de filas y luego el de las columnas.
arreglo[filas][columnas]

<#include <iostream>

using namespace std;

int main()
{
    cout << "Bidimensionales" << endl;

    //string Names[5] = {"Asterix","Obelix","Idiafix","Panoramix","Asurenceturix");
    /*for(int i = 0; i < 5; i++)
    {
        cout << Names [i] << endl;
    }*/
    /*int i = 0;
    while(i < 5)
    {
        cout << Names[i] << endl;
        i++;
    }*/
    int ids[5][5] =
    {
        {0,0,0,0,0},
        {0,0,0,0,0},
        {0,0,0,0,0},
        {0,0,0,0,0},
        {0,0,0,0,0}
    };
    for(int i = 0; i < 5; i++)
    {
        for(int y = 0; y < 5; y++)
        {
            cout << ids[i][y];
        }
        cout << endl;
    }

    return 0;
}>
#include <iostream>
using namespace std;


int main()
{
    int index = 5;

    string nombres[index] = {"Asterix","Obelix","Ideafix","Panoramix","Asunrenceturix"};

    for (int i = 0; i < index ; i++)
    {
        cout << i+1 << " " << nombres[i] << endl;
    }
}

int ids[5][3];
5 indica la cantidad de filas, 3 indica la cantidad de columnas.

interesante

este es mi aporte, así podemos agregar datos en la consola a los arreglos bidimensionales

int main(int argc, char const *argv[])
{


   
    int ids[3][5];



    int index = 0;

    do
    {

        cout << "ingresa los numero que quieras. quedan: " << 15 - index << endl;
        cin >> ids[0][index];
        index++;

    } while (index != 15);

    cout << "estos son los numeros:" << endl;

    index = 0;

    do
    {
        cout << "los numeros son: " << ids[0][index] << endl;

        index++;

    } while (index != 15);


    
    return 0;
}
#include <iostream>

using namespace std;

int main()
{
    int direccion [5][5] =
    {
       {0,0,0,0,0},
       {0,0,0,0,0},
       {0,0,0,0,0},
       {0,0,0,0,0},
       {0,0,0,0,0}
    };

    for (int i=0; i<5;i++)
    {
        for(int p=0;p<5;p++)
        {
           cout<<direccion [p][i];
        }
           cout<<endl;
    }

    return 0;
}

#include <iostream>

using namespace std;

int main()
{   /*Arreglo bidimensional
    Multiples arreglos de 1 dimension
    en este caso, 5 arreglos de 3 posiciones*/
    int ids[5][3] = {
        {0,3,5},
        {5,7,6},
        {8,1,3},
        {4,1,9},
        {7,3,5}
    };

    for(int i = 0; i < 5; i++)
    {   
        cout << "\n";
        for(int j = 0; j < 3; j++)
        {
            cout << ids[i][j] << " ";
        }
    }
}```
#include <iostream>

using namespace std;

int main() {

    int ids[5][5] = {
        { 0, 1, 2, 3, 4 },
        { 0, 1, 2, 3, 4 },
        { 0, 1, 2, 3, 4 },
        { 0, 1, 2, 3, 4 },
        { 0, 1, 2, 3, 4 },
    };

    for ( int i = 0; i < 5; i++ ) {
        for ( int j = 0; j < 5; j++ ) {
            cout <<ids[i][j] << ", ";
        }
        cout << endl;
    }

    return 0;
}
#include <iostream>

using namespace std;

int main()
{
    int ids[5][5]=
    {
        {0,1,2,3,4},
        {0,1,2,3,4},
        {0,1,2,3,4},
        {0,1,2,3,4},
        {0,1,2,3,4}
    };

    for (int i=0;i<5;i++)
    {
       for (int y=0;y<5;y++)
       {
        cout<<  ids[i][y];
       }
       cout<< endl;
    }
    return 0;
}
#include <iostream>

using namespace std;

int main()
{
int ids[5][5] =
{
    {0,0,0,0,0},
    {0,0,0,0,0},
    {0,0,0,0,0},
    {0,0,0,0,0},
    {0,0,0,0,0}

};
for(int i = 0; i < 5; i++)
{
    for(int p = 0; p < 5; p++)
    {
        cout << ids[i][p];
    }
    cout << endl;

}```

    return 0;
}

#include <iostream>

using namespace std;

int main()
{

    int diArreglo[4][4]=
    {
        (0, 0, 0, 0),
        (0, 0, 0, 0),
        (0, 0, 0, 0),
        (0, 0, 0, 0),
    };

    for(int i=0;i<4;i++){

        for(int j=0;j<4;j++){
            cout<<diArreglo[i][j];
        }
        cout<<endl;
    }
    return 0;
}

Arreglo bidimensional: Es lo mismo que una matriz, vamos a crear filas y columnas, al momento de tener que interactuar con alguna de sus posiciones tendremos que hacerlo deacuerdo a su coordenada, como por ejemplo:
lo que esta resaltado de amarillo en el arreglo bidimensional

Estos bucles con 2 arrays son mas difíciles de entender y manejar

Gracias

No es muy claro en la clase, pero el primer n√ļmero al declarar la matriz corresponde a las filas, y el segundo a las columnas.

Matriz Identidad

#include <iostream>

using namespace std;

int main()
{
    int ids[3][3] =
    {
        { 1,0,0},
        { 0,1,0},
        { 0,0,1},
    };

    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            cout << ids[i][j];
        }
        cout << endl;
    }

    return 0;
}

algo que escribi para simular candy crush jaja

#include <iostream>
#include <time.h>
using namespace std;

int main() {
	srand(time(NULL));
	int matriz[10][10];
	char objects[14] = {'~','`','@','!','#','$','%','^','&','*','(','|','+','='};
	char gameObjects[10][10];
	for(int i = 0; i < 10; i++){
		for(int j = 0; j < 10; j++){
			gameObjects[i][j] = objects[1+(rand()% + 14)];
		}
	}
	cout<<endl<<endl;
	for(int i = 0; i < 10; i++){
		for(int j = 0; j < 10; j++){
			cout<<gameObjects[i][j]<<"   ";
		}
		cout<<endl<<endl;
	}
	return 0;
}

Me fue un poco complejo entenderlo al principio, pero hacere este ejemplo me ayudo.

#include <iostream>

using namespace std;

int main()
{
int Examples[3][2] =
{
    {1,2},
    {3,4},
    {5,6}
};

 cout << Examples[1][0] << endl;
}```

Me encanto esta clase, por que no hay m√°s cursos con este profesor?

Se logra el mismo resultado, al poner dentro del parametro del arreglo la suma de index con index++ pero al poner index = index + 1 el IDE me manda a un pedazo de código completamente diferente.
Alguien sab√© ¬ŅPor qu√©?

#include <iostream>
using namespace std;

int main()
{
	string Names[5] = {"Asterrix", "Obelix", "Panoramix", "Asurenceturix", "Idiafix" };

	int index = 0;
	while (index < 5)
	{
		cout << Names[index++] << endl;
	}
}

gran p√°gina para entender c++

Para encontrar el length de un array puedes usar uno de los siguientes dos metodos:

# include <iostream>

using namespace std; // Esto sirve para utilizar cout y cin


int main()
{
    string Names[5] = {"Asterix","Obelix","Idiafix","Panoramix","Asurenceturix"};

    // Method 1
    int len1 = sizeof(Names)/sizeof(Names[0]);
    cout << "The length of the array is: " << len1 << endl;

    // Method 2
    int len2 = *(&Names + 1) - Names;
    cout << "The length of the array is: " << len2 << endl;

    for (int i = 0; i < len1; i++)
    {
        cout << Names[i] << endl;
    }
    
    return 0;
}

https://www.tutorialspoint.com/how-do-i-find-the-length-of-an-array-in-c-cplusplus

Amigos, les dejo en el siguiente enlace mi ejemplo de arreglos bidimensionales interactivos
https://platzi.com/tutoriales/1545-c-plus-plus/9173-arreglo-bidimensional-interactivo/

Código para imprimir arreglos bidimensionales

#include <iostream>

using namespace std;

int main(){
        int i, j;

        int ids[5][3] = {
                {0,1,2},
                {3,4,5},
                {6,7,8},
                {9,10,11},
                {12,13,14}
        };

        for(i = 0; i < 5; i++){
                for(j = 0; j < 3; j++){
                        cout << ids[i][j] << endl;
                }
        }

        return 0;

}
#include<iostream>
#include<conio.h>
#include <cmath>

using namespace std;




int main() {
    
    cout << "Bienvenido" << endl;

    int direccion[3][5] =
    {
        { 3, 3, 3, 3, 3},
        { 3, 3, 3, 3, 3},
        { 3, 3, 3, 3, 3}
    };

    for (int f = 0; f < 3; f++)
    {
        for (int c = 0; c < 5; c++)
        {
            cout << direccion[f][c];
        }
        cout << endl;
    }





    getch();
    return 0;
}

Gran clase!