Author Archives: Oswaldo Uliel

Proyecto final

Proyecto final

Enlace: Proyecto final

1017  

Bonus Point :D

       ¡Curso terminado!

 

link de mi video: Mi asombroso video para el Bonus point

1017

#Mastery01 – Ability to create C++ file and run from command line

 

Crear y correr un archivo de C++

Una línea de comandos es un tipo de interfaz el cual se usa para manipular un programa o sistema operativo mediante instrucciones escritas.

En mi caso, por recomendacion, mi CLI es cygwin. Entonces, para correr un archivo de C++ debemos seguir los siguientes pasos:

Abrir el programa en el cual escribiremos el código ( sublime text 2 ).

Una vez que abrimos el programa empezaremos nuestro codigo con el usual , seguido por nuestro código.

Una vez terminado seleccionaremos la opcion “file” y “save”.

Surgira una ventana donde le asignaremos el nombre y lugar donde lo guardaremos. 

Es importante que al final de nuestro nombre debemos ponerle la extencion “.cpp”.

Ya teniendo el codigo hecho procederemos a ejecutarlo en la linea de codigo para ejecutarlo estos son los pasos:

1- Abriremos el programa cygwin.

2- Una vez que la ventana esta abierta debemos escribir los siguientes comandos:

 

  • cd cygdrive/
  • cd c/
  • cd users/
  • cd (nombre del usuario) /
  • Enseguida comenzaremos a escribir el mismo comando “cd” seguido de la carpeta donde guardamos nuestro archivo, por ejemplo cd desktop/  

 

3- Una vez que nos encontramos en la carpeta donde guardamos el programa debemos escribir g++ seguido del nombre de nuestro programa junto con “.cpp” y presionamos enter.

4- Esperaremos un par de segundos antes de que vuelva a aparecer los comandos que ya habiamos escrito antes. Si no existe ningun error debemos escribir “./a.out” y presionaremos enter.

5- Finalmente el programa comenzara a ejecutar nuestro código.

 

 

01 1017

#Mastery17 – Use of “switch” as a conditional

Uso del switch

En el caso de la sentencia switch, la expresión a evaluar será entera, por lo tanto, el número de opciones es mucho mayor, y en consecuencia, también es mayor el número de diferentes sentencias que se pueden ejecutar.

Sintaxis:

Cuando se usa la sentencia switch el control se transfiere al punto etiquetado con el case cuya expresión constante coincida con el valor de la expresión entera evaluada dentro del switch. A partir de ese punto todas las sentencias serán ejecutadas hasta el final del switch, es decir hasta llegar al “}”.

Esto es así porque las etiquetas sólo marcan los puntos de entrada después de una ruptura de la secuencia de ejecución, pero no marcan los puntos de salida.

Esta estructura está diseñada para ejecutar cierta secuencia de instrucciones, empezando a partir de un punto diferente, en función de un valor entero y dejando sin ejecutar las anteriores a ese punto.

Ejemplo:

 

      main() {

        char ch;

          printf(“Introduzca una vocal: “); 

 

          ch=getchar(); 

 

#Mastery09 – Basic types and their use in C++

Tipos de variables usados en C++

Existen varios tipos de variables, y cada uno corresponde a un tamaño máximo de un número, un carácter o incluso una verdad. Cuanto mayor sea el número que pueda admitir, mas espacio en memoria ocupará.

1. Los tipos de variables

Existen varios tipos de variables, y cada uno corresponde a un tamaño máximo de un número, un carácter o incluso una verdad. Cuanto mayor sea el número que pueda admitir, mas espacio en memoria ocupará. 

Bool:  1 byte de memoria, valores: true o false

Char:  1 byte de memoria, permite almacenar un carácter, valores; 256 caracteres. 

Int: 4 bytes de memoria, valores: de -2 147 483 648 a 2 147 483 647

Double: 8 bytes de memoria, valores: de 2.2e-308 a 3.4e-38

Float: 4 bytes de memoria, valores: de 1.2e-308 a 3.4e-38

String: permite almacenar cadena de caracteres

 

2. Declaración y asignación de variables

Para declarar una variable, basta con indicar su tipo y su nombre. Existen ciertas convenciones en cuanto al nombre de las variables. Algunos prefieren separar las partes de un nombre con ‘_’, otros prefieren escribir una mayúscula para separarlas. Ejemplo: 

int primerNumero;

int primer_numer

 

3. Asignar un valor

Es posible asignar un valor a una variable al momento de declararla: 

int numero =  20; 

También es posible declarar varias variables en una misma línea, pero en este caso, todas las variables de la línea tendrán el mismo tipo. 

int numero_uno = 23, numero_dos = 45;

 

Referencias:  http://es.kioskea.net/faq/3169-las-variables-en-c

09 1017

#Mastery14 – Creating your own and using C++ libraries

Creación y uso de librerias en C++ 

Una de las ventajas de C++ es la facilidad de poder crear tus propias librerias, estas se pueden crear para definir variables con un significado mas especifico.

El ultimo caso que use fue el de la libreria:, esta libreria te permite utilizar el nombre de una variable y darle algun uso segun nuestras necesidades.

Por ejemplo:

GREEN “33[32m” 

PURPLE “33[35m”

BLUE “33[34m” 

 

Para aprender mas acerca de la creación de librerias pueden consultar los siguientes enlaces:

Libreria estatica   Libreria dinamica

 

14 1017

#Mastery13 – Importing and using C++ libraries

Uso de librerias en C++

Una librería es un conjunto de recursos (algoritmos) prefabricados, que pueden ser utilizados por el programador para realizar determinadas operaciones. Las declaraciones de las funciones utilizadas en estas librerías, junto con algunas macros y constantes predefinidas que facilitan su utilización, se agrupan en ficheros de nombres conocidos que suelen encontrarse en sitios predefinidos. 

Los compiladores C++ incluyen un amplio repertorio de clases, funciones y macros que permiten realizar una amplia variedad de tareas, incluyendo entradas/salidas de bajo y alto nivel; manipulación de cadenas alfanuméricas y ficheros; control de procesos (incluyendo multiproceso); manejo de memoria; cálculos matemáticos y un largo etcétera.

Este repertorio de recursos es denominado colectivamente como “Rutinas de librería” o simplemente “librerias”. 
Puede decirse que el lenguaje aislado no tiene prácticamente ninguna utilidad sin la concurrencia de estas utilidades. El Estándar C++ las clasifica según su utilidad:

  • Soporte del lenguaje 
  • Diagnóstico
  • Utilidades generales
  • Cadenas alfanuméricas (“Strings”)
  • Localización
  • Contenedores
  • Iteradores
  • Algoritmos
  • Cálculo numérico
  • Entrada/Salida

El proceso para importarlas es muy fácil solamente se debe seguir lo siguiente:

#nombre_de_la_libreria

Referencias: http://www.zator.com/Cpp/E5.htm

13 1017 

#Mastery21 – Use of recursion for repetitive algorithms

Recursividad 

Una función es recursiva cuando se define en función de si misma, pero no todas la funciones pueden llamarse a si mismas. Deben estar diseñadas especialmente para que sean recursivas, de otro modo podrían conducir a bucles infinitos, o a que el programa termine inadecuadamente.

C++ permite la recursividad. Cada vez que se llama a una función, se crea un juego de variables locales, de este modo, si la función hace una llamada a si misma, se guardan sus variables y parámetros, usando la pila, y la nueva instancia de la función trabajará con su propia copia de las variables locales. Cuando esta segunda instancia de la función retorna, recupera las variables y los parámetros de la pila y continua la ejecución en el punto en que había sido llamada.

Por ejemplo:

Prodríamos crear una función recursiva para calcular el factorial de un número entero.

El factorial se simboliza como n!, se lee como “n factorial”, y la definición es:

Para este ejemplo no es posible calcular el factorial de números negativos, no está definido.

Debemos de tomar en cuenta que el factorial de cero es 1. De modo que una función bien hecha para cálculo de factoriales debería incluir un control para esos casos:

La recursividad consume muchos recursos de memoria y tiempo de ejecución, y se debe aplicar a funciones que realmente le saquen partido.

También existen otras formas de implementar algoritmos recursivos, por lo que no es necesario que una función se invoque a si misma.

Ejemplo: un par de funciones A y B pueden crear un algoritmo recursivo si la función A invoca a la función B, y esta a su vez invoca a la función A.

Veamos un ejemplo. Partamos de la siguiente serie:

Aqui tenemos otro ejemplo aun mas complejo:

using namespace std;

double par(int);

double impar(int);

double suma(int);

int main() {

    cout

    cout

    cout

    cout

    cout

    cout

    return 0;

}

double suma(int n) {

    if(n % 2) return impar(n);

    else return par(n);

}

double par(int n) {

    return impar(n-1)-1/double(n);

}

double impar(int n) {

    if(n == 1) return 1;

    return par(n-1)+1/double(n);

}

 

Referencias: http://c.conclase.net/curso/?cap=024

21 1017

#Mastery23 – Creation and use of vectors in C++

Creación y uso de vectores en C++

Un vector, también llamado array(arreglo) unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno despues de otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se encuentran. La primera posición del array es la posición 0.

Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres, objetos, etc.

Crear un vector en C++ es sencillo, seguimos la siguiente sintaxix: Tipo nombre[tamanyo];

Aqui tenemos varios ejemplos:

inta[5]; // Vector de 5 enteros
floatb[5]; // vector de 5 flotantes
Producto product[5]; // vector de 5 objetos de tipo Producto

Otra manera para inicializar el vector en la declaración es la siguiente:

1
2
3
int a[] = {5, 15, 20, 25, 30};
float b[] = {10.5, 20.5, 30.5, 12.5, 50.5}
Producto product[] = {celular, calculadora, camara, ipod, usb}

Debido a que tenemos 5 elementos en cada array, automáticamente se le asignará 5 espacios de memoria a cada vector, pero si trato de crear el vector de la forma int a[] , el compilador mostrará un error, porque no tiene indicado el tamaño del vector ni tampoco sus elementos.

Tambien podemos asignarle valores a los elementos de un vector indicando su posición:

inta[4] = 30; // le asigno el valor 30 a la posición 4 del vector.
product[2].setPrecio(300) // le asigno un precio de 300 al producto en la posición 2.

Algo muy útil para llenar, recorrer e imprimir un vector es el uso de el bucle for:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using namespace std;
 
int main()
{
  int dim;
  cout "Ingresa la dimension del vector"
  cin >> dim; // Supongamos que ingrese 10
  int vector[dim]; // mi vector es de tamanyo 10
 
  for(int i = 0; i
    vector[i] = i * 10;
    cout
  }
 
  return 0;
}

La salida de este programa nos mostrará: 0 10 20 30 40 50 60 70 80 90.

Enseguida tenemos una función simple para sumar 2 vectores a y b y poner el resultado en un tercer vector c:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using namespace std;
 
void sumar(int a[], int b[], int c[],int dim) {
    for (int i = 0; i
        c[i] = a[i] + b[i];
    }
}
 
void imprimir(int v[], int dim)
{
   for(int i = 0; i
        cout
   }
   cout
}
 
int main()
{
    int dim;
    cout "Ingresa la dimensión"
    cin >> dim;
 
    int a[dim];
    int b[dim];
    int c[dim];
 
    for(int i = 0; i
        a[i] = i * 10;
        b[i] = i * 5;
    }
 
    cout "Vector A "
    imprimir(a, dim);
 
    cout "Vector B "
    imprimir(b, dim);
 
    sumar(a, b, c, dim);
    cout "Vector C "
 
    imprimir(c, dim);
    return 0;
}

En resumen:

  • Todo vector debe tener definido un tipo de dato.
  • Todo vector necesita de una dimensión o tamaño.

 

Referencias: https://ronnyml.wordpress.com/2009/07/04/vectores-matrices-y-punteros-en-c/

23 1017

#Mastery25 – Creation and use of strings in C++

Creación y uso de strings en C++

Una de las utiliidades de C++ es la existencia de “strings” (cadenas de texto) como parte del lenguaje.

A continuación veremos su manejo primero con un ejemplo sencillo:

 

El manejo básico de las cadenas no presenta alguna dificultad:

  • Se declaran como cualquier otra variable( string cadena )
  • Se les asigna valor con el signo = , como se hace con los números enteros.
  • Su valor se muestra en pantalla con “cout”, igual que para las demás variables.

Así que veamos otro ejemplo un poco más complejo: 

La explicación para el código seria la siguiente:

  • Se puede crear una cadena sin valor inicial haciendo string texto1;
  • Se le puede dar una valor inicial a la vez que se declara, haciendo string texto2 = “Hola “; o bien string texto3(“Que tal”);
  • Se puede crear una cadena formada por varias, concateándolas (sumándolas), usando el signo +, así: texto1 = texto2 + texto3 + ” estas? “;
  • Se puede crear una subcadena a partir de un trozo de otra, la vez que se declara, así: string subcadena (texto1, 2, 6);
  • O bien se puede extraer un fragmento posteriormente: texto1.substr(0, 5);
  • Se puede insertar texto en el interior de una cadena: texto1.insert(5, “Juan “);
  • O reemplazar ciertas letras por otras: texto2.replace(1, 2, “ad”);
  • Se puede saber el tamaño (cantidad de letras) de la cadena: texto1.size()
  • Se puede acceder a una posición siguiendo el estándar de C: texto1[2]
  • O bien usando la función “at”: texto1.at(2)
  • Se puede comprobar el valor de una cadena (el texto almacenado) con ==, así: if (texto2 == “Hada “) …

 

Referencias: http://www.aprendeaprogramar.com/mod/resource/view.php?id=172

25 1017