Author Archives: Oswaldo Uliel

#Mastery26 – Creation and use of matrixes in C++

Creación y uso de matrices en C++

La sintaxis de una matriz es C++ es la siguiente:

1
int matrix[rows][cols];

En este ejemplo int es el tipo de dato, matrix es el nombre del todo el conjunto de datos y debo de especificar el numero de filas (rows) y columnas (cols).

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.

Podriamos imaginarnos que una matriz es como un tablero, pero en realidad 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.

Para 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.

Es importante tener en cuenta que tanto filas como columnas se enumeran a partir de 0. Para recorrer una matriz es buena idea hacer uso de un bucle. En este caso usando 2 for:

2
3
4
5
for(int i = 0; i
  for(int j = 0; j
    matrix[i][j] = i % j;
  }
}

 

 

Para mas información acerca de matrices dinamicas pueden consultar el siguiente enlace: https://ronnyml.wordpress.com/2009/07/04/vectores-matrices-y-punteros-en-c/

 

1017 26

#Mastery27 – Validated user input in C++

Validar inputs de usuario en c++

En C++ tenemos la opcion de validar datos alfanumericos o los llamados strings. Estos inputs se comportan como cualquier número, por lo que su uso no es muy dificil. Primero debemos conocer las reglas básicas:

Reglas basicas:

  • No deje pasar los datos no válidos en adelante
  • Validar los datos en el momento de entrada.
  • Siempre dar la retroalimentación significativa usuario
  • Dígale al usuario lo que usted espera de leer como entrada

Ejemplos:

/* example one, a simple continue statement */
  

main()
{
	int     valid_input;    /* when 1, data is valid and loop is exited */
	char    user_input;     /* handles user input, single character menu choice */

	valid_input = 0;
	while( valid_input == 0 ) {
		printf("Continue (Y/N)?n");
		scanf("  %c", &user_input );
		user_input = toupper( user_input );
		if((user_input == 'Y') || (user_input == 'N') )  valid_input = 1;
		else  printf("07Error: Invalid choicen");
	}
}
Salida del programa:
Continuar (Y / N) ?
b
Error: eleccion no válida
Continuar (Y / N) ?
N


 

Aqui otro ejemplo:

/* example two, getting and validating choices */
  

main()
{
	int     exit_flag = 0, valid_choice;
	char    menu_choice;
	
	while( exit_flag == 0 ) {
		valid_choice = 0;
		while( valid_choice == 0 ) {
			printf("nC = Copy FilenE = ExitnM = Move Filen");
			printf("Enter choice:n");
			scanf("   %c", &menu_choice );
			if((menu_choice=='C') || (menu_choice=='E') || (menu_choice=='M'))
				valid_choice = 1;
			else
				printf("07Error. Invalid menu choice selected.n");
		}
		switch( menu_choice ) {
			case 'C' : ....................();    break;
			case 'E' : exit_flag = 1;  break;
			case 'M' : ....................();  break;
			default : printf("Error--- Should not occur.n"); break;
		}
	}
}

Salida del programa 
C = Copiar archivo
E = Salir
M = Mover archivo
Introduzca elección :
x
Error . Opción de menú seleccionada no válida 
C = Copiar archivo
E = Salir
M = Mover archivo
Introduzca elección :
E

 

Referencias: http://ftp.tuwien.ac.at/languages/c/programming-bbrown/c_032.htm

27 1017

#Mastery 28 – Reading and writing of files in C++

Manejo de archivos en c++

Para manejar archivos dentro de c++ tenemos que utilizar el archivo de cabecera fstream.h. Este define las clases ifstream, ostream y fstream para poder realizar operaciones de lectura, escritura y lectura/escritura en archivos respectivamente. Para trabajar con archivos se tienen que crear objetos de éstas clases, según las operaciones que deseamos efectuar. Iniciaremos con las operaciones de escritura, para esto tenemos que declarar un objeto de la clase ofstream, después utilizaremos la función miembro open para abrir el archivo, escribimos en el archivo los datos que sean necesarios utilizando el operador de inserción y por último cerramos el archivo por medio de la función miembro close, como podemos ver en el siguiente ejemplo:

int main()
{
    
ofstream archivo;  

    archivo.open();

    archivo endl;
    
archivo endl;
    
archivo endl;

    archivo.close();
    return 
0;

En el programa se ha creado un objeto de la clase ofstream llamado archivo, posteriormente se utiliza la función miembro open para abrir el arcivo especificado en la cadena de texto que se encuentra dentro del paréntesis de la función. Podemos invocar a la función constructora de clase de tal manera que el archivo también se puede abrir utilizando la siguiente instrucción:

 



Al utilizar la función constructora no es necesario utilizar la función miembro open. De la misma forma que se utilizan manipuladores de salida para modificar la presentación en pantalla de los datos del programa,es posible utilizar éstos manipuladores al escribir datos en un archivo como lo demuestra el programa archiv02.cpp, observe que se utiliza un constructor para crear y abrir el archivo llamado Datos.txt:

int main()
{
    
ofstream archivo();  int numero;
    
    
cout endl;
    
cin >> numero;
    
archivo numero endl;
    
    
archivo resetiosflags(ios::dec);
    
archivo setiosflags(ios::oct);
    
archivo numero endl;
    
    
archivo resetiosflags(ios::oct);
    
archivo setiosflags(ios::hex);
    
archivo numero endl;
    
archivo setiosflags(ios::uppercase|ios::showbase);
    
archivo 
numero endl;
    
    
archivo resetiosflags(ios::uppercase|ios::showbase);
    
archivo resetiosflags(ios::hex);
    
archivo setiosflags(ios::showpos|ios::showpoint|ios::fixed);
    
archivo numero endl;
    
    
archivo resetiosflags(ios::showpos|ios::showpoint|ios::fixed);
    
archivo numero endl;
    
    
archivo.close();

    return 0;

 

Operaciones de lectura de archivos 
Para abrir un archivo y realizar operaciones de lectura se crea un objeto de la clase ifstream y se procede prácticamente de la misma forma que lo expuesto en el apartado anterior. Después de abrir el archivo se puede leer su contenido utilizando las funciones miembro de la clase ifstream o bién el operador de extracción. Cuando se lee un archivo, por lo general se empieza al principio del mismo y se leerá su contenido hasta que se encuentre el final del archivo. Para determinar si se ha llegado al final del archivo se puede utilizar la función miembro eof como condición de un bucle while. Además se puede utilizar la función miembro fail para detectar un error al abrir el archivo, esto se demuestra en el siguiente programa, archiv03.cpp:

int main()
{
    
ifstream archivo(ios::noreplace);
    
char linea[128];
    
long contador 0L;

    if(archivo.fail())
    
cerr endl;
    else
    while(!
archivo.eof())
    {
        
archivo.getline(lineasizeof(linea));
        
cout linea endl;
        if((++
contador 24)==0)
        {
            
cout ;
            
cin.get();
        }
    }
    
archivo.close();
    return 
0;

El programa crea un objeto de la clase ifstream para abrir el archivo llamado Pruebas.txt utilizando el constructor de clase y especificando la bandera ios::noreplace que evita que el archivo sea sobreescrito. Si por algún motivo ocurre un error al abrir el archivo se genera el mensaje de error especificado en la línea 16. En ausencia de errores el programa entra en un bucle while el cual está evaluado por efecto de la función miembro eof( ) de tal manera que el bucle se ejecuta hasta encontrar el final del archivo. Utlizando la función miembro getline( ) se obtiene una línea de texto y se exhibe en pantalla, línea 21, luego utilizamos una instrucción condicional if con el operador de módulo (%) para determinar si se han leído 24 líneas de texto. Cada vez que el contador de líneas dividido entre 24 dé como resultado un resíduo de cero el programa se detiene permitiendo leer las 24 líneas de texto previas. Para continuar se debe presionar la tecla enter y entonces el programa leerá y mostrará en pantalla las siguientes 24 líneas de texto, líneas 22 a la 26.

 

 

Referencias:

http://www.programacionenc.net/index.php?option=com_content&view=article&id=69:manejo-de-archivos-en-c&catid=37:programacion-cc&Itemid=55

1017 28

#Mastery 29 – Data analysis with tools (to be determined which tool)

Programación en c++ : Análisis 

Para lograr el éxito con un programa y/o aplicación infórmatica debemos comprender y aplicar los siguientes consejos. Antes de comenzar a escribir un código, debemos saber que es lo que estamos haciendo, para que el resultado final sea bueno y podamos resolver algun problema. Esto nos ayudara para que nuestro programa tenga un buen funcionamiento. El inicio del desarrollo de un codigo es el análisis de nuestra aplicación.

Para crear una aplicacion informatica completa debemos seguir una serie de pasos, a los cuales denominamos el ciclio de vida de una aplicacion. Dicho ciclio está formado de seis pasos: análisis, diseño, cofdificacion, ejecucion, pruebas y mantenimiento.

La parte del analisis se dedica a estudiar los requisitos que debe cumplir nuestra aplicacion. El resultado de este es una hoja de especificaciones en la que aparecen las necesidades de la aplicacion. Esta hoja debe ser redactada por la persona responsable del proceso de creación de la aplicación.

Pero para nuestro curso, donde estamos creando programas más sencillos, el análisis se reducirá a solo 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.

 

 

 

Siguiendo estos pasos antes de comenzar programar (sin importar el lenguaje), tendremos como resultado programas de calidad y nos evitaremos muchas complicaciones que usualmente surgen por no analizar el programa y las necesidades de este.

Referencias: http://aprendecpp.com/blog/programacion-en-c-el-analisis.html

29 1017

#Quiz 11

#Quiz10

#WSQ17 – Scilab

Para este WSQ primero lei el tutorial para conocer mas acerca de scilab:
http://www.scilab.org/content/download/849/7901/file/Scilab_beginners.pdf

 

Después descargue scilab del siguiente enlace: https://www.scilab.org/

Scilab es util para calculos numericos, pero tambien podemos usarlo para las derivadas de funciones polinomiales. Además de que ya cuenta con funciones matemáticas y se puede integrar programas de los lenguajes de programacion mas comunes ( java, c++ ).

Por lo que leí Scilab puede ser una herramienta muy util, espero y me ayude en un futuro.

1017  17

#WSQ13 – Babylonian Method

#WSQ15 – Final Dash

#WSQ15 – Final Dash

-Abril-

Jueves 30: Quiz 10, wsq10 y bonus quiz

-Mayo-

Viernes 1: WSQ16

Sabado 2: Revisar ultimos detalles del proyecto final

Domingo 3:Realizar masteries 25-30

Lunes 4:  Hacer de nuevo los masterys con un punto

Martes 5: Agregar el color al sudoku y hacer wsq17

Miercoles 6: Subir ultima version del proyecto final

 

1017 15

#WSQ14 – Estimating e