Author Archives: Joshua B. G.

#Final Project-Sudoku #TC1017

Cuando el proyecto fue presentado, mi compañero y yo, empezamos por postergarlo, pero, cuando nos dimos cuenta de que, iba a ser un proyecto un tanto tardado empezamos con el. En un inicio, no supimos como empezarlo, quisimos empezar a declarar variables y librerias, pero nos dimos cuenta que iba a ser inutil si no nos organizabamos y haciamos un esquema de lo que ibamos a hacer, después de unos dias, sin saber que hacer, hicimos el esquema y después de haberlo hecho, empezamos a declarar variables para cada cosa.

Lo mas complicado fue el meter un nuevo número para cada cuadro, para lo cual pedimos ayuda a un amigo de la misma clase, el cual nos ayudo en muchas cosas que no podiamos hacer.

Los colores en parte fueron un problema ya que en donde estabamos programando no corria los comandos, y perdimos mucho tiempo en la investigación de diferentes metodos para poner colores, para esto, decidimos cambiar en donde estabamos haciendo el codigo e igual cambiar a mac y ejecutarlo en la terminal, y afortunadamente corrió y usamos los codigos de colores del link que ken nos habia dado.

El trabajo en equipo fue un poco tedios, ya que muchas veces no encontrabamos tiempo para juntarnos, y no quisimos usar el github ya que sentiamos que no era una manera muy eficiente de trabajar en conjuntos, por que, quiza uno subia una cosa que al otro no le parecia o se hacian cambios los cuales afectaran al correcto funcionamiento del codigo, por lo cual, solo uno tenia el codigo y la unica manera de modificarlo era cuando los dos estabamos juntos trabajandolo, pero de todas maneras, en general, el trabajo en equipo fue algo bueno, se convivió de una buena manera, respetando y ayudandonos mutuamente, y fue una buena experiencia para saber trabajan efectivamente en equipo.

Sudoku: https://github.com/joshuabg96/Poyecto-final–sudoku/blob/master/sudoku.gitignore

#Mastery29 #TC1017

Analisis de datos en c++

Para tener éxito en la creación de un programa o una aplicación informática sólo hace falta que comprendas y apliques lo que te voy a contar en este artículo. Esta actividad que debes de realizar antes de comenzar a escribir código es fundamental para el buen funcionamiento del programa, para que tú mismo sepas que es lo que estas haciendo en cada momento y para que el producto final sea de calidad y resuelva un problema. Te voy a hablar de la parte inicial del proceso de desarrollo, el análisis de una aplicación.
El desarrollo de una aplicación informática completa se debe de realizar por una serie de pasos comunes a todas la metodologías. A estos pasos se le denomina el ciclo de vida de una aplicación. Este ciclo consta de seis pasos fundamentales: análisis, diseño, codificación, ejecución, pruebas y mantenimiento.

El análisis estudia los requisitos que debe de cumplir la aplicación. El resultado del análisis es una hoja de especificaciones en la que aparecen los requerimientos de la aplicación. Esta hoja es redactado por la persona responsable del proceso de creación de la aplicación. Si estás creando algoritmos o programas sencillos, el análisis consistirá en evaluar estos tres pasos fundamentales:

  • Determinar las entradas. Es decir, los datos que posee el programa al comenzar su ejecución. Esos datos permiten obtener el resultado.
  • Determinar las salidas. Es decir, los datos que obtiene el algoritmo como resultado. Lo que el algoritmo devuelve al usuario.
  • Determinar el proceso. Se estudia cuál es el proceso que hay que realizar.

Si realizas estos pasos antes de comenzar a escribir código independientemente del lenguaje que uses, vas a realizar programas de calidad y vas a eliminar muchos errores que te pueden surgir si no analizas el programa y los requisitos que te piden del programa.

#Mastery28 #TC1017

Como leer o escribir en documentos en c++

para escribir en un documento primeramente necesitamos la realización de un archivo de texto, en el cual la base para hacerlo es la siguiente

// writing on a text file
 
usingnamespace std;
 
intmain () {
  ofstream myfile ("Write.txt");
  if(myfile.is_open())  {
    myfile "This is a line.n";
    myfile "Hello world.n";
    myfile.close();
  }
  else{
    cout "Unable to open file";
  }
  return0;
}
 
en lo cual ahi tenemos el documento en el cual ingresaremos los datos usamos la libreria fstream, se abre el archivo y se ingresa lo que se quiere escribir en el documento
 
 
en cambio para la lectura de los documentos contamos con un procedimiento parecido, que es el siguiente:
// reading a text file
usingnamespace std;
 
intmain () {
  string line;
  ifstream myfile ("CNC.txt");
  if(myfile.is_open()){
    while( getline (myfile,line) ){
      cout 'n';
    }
    myfile.close();
  }
  else{
    cout "Unable to open file";
  }
 
  return0;
}
 
en este, tenemos que abre el archivo y este es leido linea por linea y convertida en strings, para esto tenemos que usar la libreria fstream y string, abril archivo con el comando ifstream y leer cada linea con el get line y este guardara cada linea.

#Mastery23 #Mastery26 #TC1017

Vectores y matrices

los vectores y matrices son casi lo mismo, solo el plano en el que trabajan es diferente en cada uno de los casos, dependiendo de cual uses

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];

Ejm:

 
 
 
int a[5]; // Vector de 5 enteros
float b[5]; // vector de 5 flotantes
Producto product[5]; // vector de 5 objetos de tipo Producto

Podríamos también inicializar el vector en la declaración:

 
 
 
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}

Como hay 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 indiqué el tamaño del vector ni tampoco inicializé sus elementos.

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

Tambien estos incluyen las matrices.

las cuales funcionan:

bidimensional. La manera de declarar una matriz es C++ es similar a un vector:

1
int matrix[rows][cols];

int es el tipo de dato, matrix es el nombre del todo el conjunto de datos y debo de especificar el numero de filas y columnas.

Las matrices también pueden ser de distintos tipos de datos como char, float, double, etc. Las matrices en C++ se almacenan al igual que los vectores en posiciones consecutivas de memoria.

Usualmente uno se hace la idea que una matriz es como un tablero, pero internamente el manejo es como su definición lo indica, un vector de vectores, es decir, los vectores están uno detrás del otro juntos.

La forma de acceder a los elementos de la matriz es utilizando su nombre e indicando los 2 subíndices que van en los corchetes.

Si coloco int matriz[2][3] = 10; estoy asignando al cuarto elemento de la tercera fila el valor 10.

#Mastery27 #TC1017

validar input de usuarios en c++

c++ nos da la opcion de poder validad datos alfanumericos o lo que comunmente le podemos llamar strings, esto es util cuando nuestras opciones dependen de una palabra, como por ejemplo, en caso de que se pida al usuario el hacer o no hacer una accion, el mismo puede responder con un si o un no.

Principalmente, estos inputs se comportan como cualquier número, dando como resultado, que el manejo de los mismos no sea dificil. a continuación podremos ver un ejemplo de su uso.

#Mastery17 #TC1017

Uso de los switch

Solo se puede usar como variable de condición una variable entera o variable char ya que el programa capta casos especificos sin decimales

Las constantes que estamos buscando y comparando son de tipo char, por eso se deben encerrar entre apóstrofes ( ‘).

Si se quiere resolver el problema de mayúsculas o minúsculas en el teclado, observar que se usan dos case, pero con un solo break;

Los pasos para la realización del switch es la siguiente

  • poner switch seguido del nombre de la variable a swichear dentro de ( )
  • poner dependiendo el tipo de casos, uno para cada uno.
  • para poner casos es poniendo “case” seguido del número que se piensa evaluar y dos puntos
  • al terminar lo que debes de hacer es poner break seguido por punto y coma.
  • e incluir un default para cuando no se incerte una opcion adecuada

un ejemplo de como se usa es este:

 

#Mastery30 #TC1017

Visualización de datos con herramientas

Este es un intento majestuoso por tratar de explicar los sitemas de datos, ya que son demasiado complejos y ademas son algo que no hemos visto el semestre que acaba de pasar.

el sistema de datos por herramientas es un software libre, libremente disponible para la realización de gráficos 3D por computadora, procesamiento de imagen y visualización. VTK consiste en una biblioteca de clases de C++ y varias capas de interfaz interpretadas como Tcl/Tk, Java, y Python.

 

Kitware, cuyo equipo creó y sigue ampliando el Kit de herramientas, ofrece apoyo profesional y servicios de consultoría para VTK. VTK soporta una amplia variedad de algoritmos de visualización como: escalar vector Euclides, tensor, textura y métodos volumétricos; y avanzadas técnicas de modelado como: modelado implícito, reducción de polígonos, suavizado de malla (mesh smoothing), corte, contorneado y triangulación de Delaunay. VTK tiene un amplio marco de visualización de la información, cuenta con un conjunto de widgets de interacción 3D, soporta el procesamiento en paralelo y se integra con diversas bases de datos de herramientas GUI como Qt y Tk. VTK es multiplataforma y se ejecuta en plataformas Linux, Windows, Mac y Unix. VTK también incluye soporte auxiliar de widgets de interacción 3D, anotación bi y tridimensional y computación paralela. En su núcleo VTK es implementado como un conjunto de herramientas de C++, exigiedo a los usuarios crear aplicaciones combinado varios objetos en una aplicación. El sistema también soporta ajuste automatizado del núcleo de C++ en Python, Java y Tcl, para que también se puedan escribir aplicaciones VTK utilizando estos lenguajes de programación interpretados.

#Mastery14 #TC1017

Creación y uso de librerias creadas por uno mismo.

Una de las herramientas que te deja usar los programas de programación es la facilidad de poder usar tus propias librerias estas librerias se pueden crear para definir variables con un significado mas especifico.

uno de los casos mas usados en la declaracion de librerias es el  una libreria que te permite utilizar el nombre de una variable y darle usos especificos ya sean de sistema, secuenciales y condicionales.

Un ejemplo que muchos usaron para la realización de su sudoku es la implementación de colores, para esto, muchos definieron cada color, para así, poder ponerlos mas facilmente

 
  GREEN “33[32m”
  PURPLE “33[35m”
  BLUE “33[34m”
  WHITE “33[37m”
  BLU “33[36m”
  YELLOW “33[33m”

#Mastery25 #TC1017

Creación y uso de los strings en c++

Una de las características recientes que se ha añadido al estándar de C++ es la existencia de “strings” (cadenas de texto) como parte del lenguaje, con un manejo tan sencillo como lo es en otros lenguajes como Pascal o Basic. 

En general, los compiladores del año 2000 o posteriores deberían permitir el manejo de cadenas, y la mayoría de los anteriores no lo harán. Eso sí, es posible que algún otro incluya alguna clase “string” no totalmente estándar, como las “AnsiString” de Borland C++ Builder. 

 La primera diferencia es la existencia de “named spaces” (espacios con nombre) dentro del nuevo estándar de C++. Se trata de una nueva forma de organizar los fichero de cabecera (ficheros “.h”), con la intención de que no sea un auténtico caos cuando tenemos muchos. Así, los ficheros de cabecera estándar están en el espacio llamado “std”.


Se sigue pudiendo utilizar los fichero de cabecera de la forma clásica: podríamos escribir

aunque la forma recomendada (y que quiere decir lo mismo) es

 
using namespace std; 

El manejo básico de las cadenas no reviste mayor dificultad: 


  • Se declaran como cualquier otra variable en C y C++,: string cadena;
  • Se les asigna valor con el signo = , como se hace con los números enteros o reales (o como las cadenas en otros lenguajes).
  • Su valor se muestra en pantalla con “cout”, igual que para las demás variables.
  • 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 ==

#Mastery21 #TC1017

Uso de recursion en algoritmos repetitivos

Se dice que una función es recursiva cuando se define en función de si misma.

No todas la funciones pueden llamarse a si mismas, sino que 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.

Tampoco todos los lenguajes de programación permiten usar recursividad.

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.

Un ejemplo muy clasico de la recursividad es cuando se quiere crear un programa de gdc (greatest commun divisor), en lo cual se puede llamar a si mismo para volver a hacer el mismo procedimiento una y otra vez hasta que una condición sea rota y pueda salir de la recursividad, así, te puede dar los resultados de manera que corresponda a lo que uno quiere como podemos ver en la foto.

En este ejemplo como podemos ver la funcion “gcd” puede claramente ser llamada en dos situaciones diferentes, tanto cuando a es mayor que b como en el caso de que a es menor que b haciendo dos recursiones, y rompiendola en caso de que a y b sean iguales.