Category Archives: Varios

12Feb/17

El proceso de enseñanza aprendizaje de la Didáctica de la Informática en entornos virtuales

Autoras: MSc. Lesbia López Alvarez. Profesora Auxiliar.  Email: llopeza@udg.co.cu

Departamento Educación laboral Informática, Universidad de Granma, Cuba

MSc. Wilma Torres Manso. Profesora Auxiliar.  Email: wtorresm@udg.co.cu

                         Departamento Educación laboral Informática, Universidad de Granma, Cuba.

 

 

 

Resumen:

El trabajo es resultado del proyecto de investigación titulado: Perfeccionamiento de la formación inicial de los estudiantes de la carrera de Educación Laboral – Informática. Consiste en la implementación de un curso del currículo propio del plan de estudio vigente de la carrera antes mencionada, perteneciente a la disciplina Didáctica de la Informática. Revela el papel que tienen las Tecnología de la Información y las Comunicaciones (TIC) en el proceso de enseñanza aprendizaje, destacando las etapas que deben seguirse para la utilización de las tecnologías en dicho proceso. Muestra las opciones esenciales de la plataforma MOODLE que permiten implementar cursos y poner la tecnología a favor de las actividades humanas de pensar, resolver problemas y aprender.

Palabras claves:

Tecnología de la Información y las Comunicaciones

Plataforma Moodle

 

Summary:

This work is the result of an investigation project entitled “The initial formation improvement of students from Informatics and Laboral Education career. It consists on the introduction of a course in its curriculums, belonging to the Informatics Didactic Discipline. It develops the technology communication and Information roll in the teaching process standing up the stages to be follows in the technologies process. It shows the main platform options MOODLE that permits to implement courses and to put the technology in favor of thinking human activity, to solve problems and to learn.

Key words:

technology communication and Information

platform MOODLE

 

El desarrollo de la informática ha revolucionado el mundo a  todos los niveles de la sociedad, sobre todo en el ámbito de la educación lo que lleva al uso de métodos, técnicas y recursos que elevan la productividad y flexibilidad del proceso de enseñanza-aprendizaje. La utilización de las Tecnologías de la  Información y las Comunicaciones constituye uno de los puntos claves para el desarrollo de la educación moderna, el aprender a aprender y la enseñanza-aprendizaje personalizada contribuyen a materializar de manera concreta y efectiva una educación continua.

La evolución progresiva de herramientas informáticas posibilita el aprendizaje en línea o  e-learning que contribuye a un aprendizaje desarrollador. El proceso de enseñanza-aprendizaje mediante la virtualidad estimula el desarrollo integral de la personalidad de los estudiantes, potencia la autogestión del aprendizaje y su autonomía en el estudio, promoviendo la capacidad de aprender durante toda la vida. El estudiante se convierte en el centro del proceso. Se da el salto desde el paradigma de la enseñanza tradicional hacia un paradigma de aprendizaje a lo largo de la vida.

El docente deja de ser un mero transmisor de información y los estudiantes pasan a ser considerados como seres activos, capaces de generar conocimientos de forma individual y colectiva apoyándose en la figura del profesor, que actúa como mediador ante el aprendizaje y les dota de recursos para la búsqueda, la selección, la interpretación, la síntesis y el procesamiento de la información.

La Licenciatura en Educación, en la carrera de Educación Laboral e Informática surge a partir de la necesidad de formar un profesional de la educación con un perfil  amplio,  dotado esencialmente de una cultura pedagógica, laboral, económica y tecnológica, que pueda impartir ambas  asignaturas  en los centros de la educación general media y media superior, en respuesta a las exigencias  sociales y del desarrollo científico técnico.

Para cumplir con este propósito el plan del proceso docente está organizado en un Currículo Base que contiene los elementos esenciales que garantizan la formación del profesional con un perfil amplio en todos sus campos de acción, que es de obligatorio cumplimiento para todas las universidades de ciencias pedagógicas; a partir de un Currículo Propio y otro Optativo / electivo, que complementan esta formación, teniendo en cuenta las características de las universidades de ciencias pedagógicas donde existe la carrera, los resultados alcanzados en proyectos de investigaciones, los intereses del territorio, las necesidades de los estudiantes y la experiencia del  claustro de profesores.

La disciplina Didáctica de la Informática forma parte del Currículo Base e  integra los contenidos adquiridos en la formación básica especializada y la formación pedagógica general, donde se concretan situaciones reales del desarrollo del proceso de enseñanza-aprendizaje de la asignatura Informática en la escuela cubana. Para complementar esta formación, teniendo en cuenta el desarrollo de la Informática y la educación, se diseña para la carrera Educación Laboral – Informática de la Universidad de Granma; el curso “el proceso de enseñanza aprendizaje en entornos virtuales” como currículo propio en dicha disciplina.

Con la introducción de este curso en la carrera no solo se trata de establecer el trabajo  del e-learning de una manera solamente instructiva, concibiendo de nuevo al estudiante como un simple receptor pasivo de contenidos como la educación tradicional. Se trata de poner la tecnología a favor de las actividades humanas de pensar, resolver problemas y aprender. Por lo que el mismo se diseña en la plataforma MOODLE. Los estudiantes tendrán la posibilidad de aprender cómo crear espacios virtuales a través de espacios virtuales.

En el diseño del curso se concibe una primera parte donde los estudiantes aprenden ¿qué es la plataforma Moodle y cuáles son sus características, así como las etapas que el profesor debe tener en cuenta para usar estas herramientas en el proceso de enseñanza – aprendizaje y una segunda parte donde los estudiantes diseñan cursos o actividades docentes en la plataforma relacionadas con los programas de la enseñanza media y media superior.

Moodle de un acrónimo de: Modular Object-Oriented Dynamic Learning Environment (Entorno de Aprendizaje Dinámico Orientado a Objetos y Modular) empleado en más de 100 países y traducido a más de 50 idiomas. Permite crear espacios virtuales de trabajo, formados por recursos de información (en formato textual o tabular, fotografías o diagramas, audio o vídeo, páginas web o documentos acrobat entre muchos otros) así como recursos de formación tipo tareas enviadas por la web, exámenes, encuestas, foros entre otros. Facilita los mecanismos mediante los cuales el material de aprendizaje y las actividades de evaluación son realizadas por el estudiante pero también donde los tutores o profesores pueden introducirse en el diseño y la forma de llevar el conocimiento a los mismos.

Cada vez que un estudiante sube una tarea, o completa una entrada al diario en respuesta a un objetivo planteado, el profesor leerá su envío, lo evaluará y le dará una respuesta para ayudarle a mejorar su trabajo, en caso de que sea necesario. Los profesores y/o tutores también suelen participar en los foros que pueden existir en el curso, así que podrán realizarle preguntas y discutir con ellos cualquier asunto relacionado con el curso. Además, los estudiantes que están inscritos en un mismo espacio, podrán tomar parte en la discusión para que se puedan desarrollar esfuerzos colaborativos.

Para instalar la plataforma virtual es preciso contar con un servidor de alojamiento “web”  (puede ser local o en Internet) que cuente con el servidor Apache y un sistema de bases de datos como MySQL.  Sobre el servidor se instala (puede hacerse a distancia) la plataforma Moodle.

Los profesores pueden editar los contenidos y estructura del curso en todo momento.  Se pueden emplear recursos con formatos PDF, PowerPoint y HotPotatoes. Los ejercicios y actividades pueden ser calificados, pues cada alumno, con su nombre de usuario y su contraseña, puede subir su ejercicio en el formato indicado y en el plazo establecido por el profesor.

Al entrar a la plataforma Moodle se presentan los cursos y tenemos la posibilidad de entrar a cualquiera de ellos con sólo declarar usuario y contraseña. En la parte superior aparece el título del curso en línea y posteriormente cómo usted se ha autentificado. Seguidamente se da la posibilidad de cambiar de rol a estudiante o profesor. Si su rol es de profesor, tiene la posibilidad de  activar edición para realizar cambios al curso.

A continuación aparecen tres paneles: izquierdo, centro y derecho.

En el izquierdo aparecen los bloques Personas, Actividades, Buscar en los foros, Administración y Mis cursos.

  • Personas: Se visualiza la lista de participantes en el curso.
  • Actividades: Se muestran todas las actividades que están programadas en el curso.
  • Buscar en los foros: Da la posibilidad de realizar búsquedas en los foros una o más palabras en cualquier parte de los textos utilizando motores de búsqueda. Se puede buscar además el texto de un usuario en particular.
  • Administración: El  profesor realizan acciones relacionadas con la administración del curso que sólo puede él puede hacer.
  • Mis cursos: Se muestran los cursos que está en la plataforma.

En el panel derecho se visualizan los bloques: Novedades, Eventos próximos, Actividad reciente.

En el panel del centro se agregan todos los recursos y actividades del curso. Si este ha sido concebido por temas, se va estableciendo para cada tema bibliografías, materiales y actividades. Si su rol es de profesor puede editar el contenido del curso activando la edición como se explicó anteriormente.

La plataforma Moodle proporciona tres tipos de elementos lógicos con los que se puede construir un sistema de ayuda al aprendizaje: los de comunicación, de materiales y de actividades.

Módulos de comunicación: para permitir que los estudiantes puedan hablar con el profesor (hacer preguntas, plantear dudas, etc.) y, mucho más importante, puedan comunicarse entre ellos y construir su propia comunidad de aprendizaje.

Módulos de materiales: los elementos que representan los contenidos materiales de la asignatura, curso o espacio. Son todo tipo de textos, libros, apuntes, presentaciones de diapositivas, enlaces a páginas Web externas etc. pensados para que los estudiantes los lean y estudien sobre ellos.

Módulos de actividades: son la parte activa y colaborativa donde el alumno tiene que hacer algo más allá de meramente leer un texto. Debates y discusiones, resolución de problemas propuestos, redacción de trabajos, creación de imágenes, webquests, talleres, pueden ser ejemplos de actividades realizables en Moodle. Las actividades que encontramos son las siguientes: Base de datos, Chat, Consultas, Cuestionarios, Diario, Encuestas, Foro, Glosario, Hot Popapoes, Taller, Tareas, Wiki.

Moodle soporta un amplio rango de tipos de recursos diferentes que le permiten insertar casi cualquier clase de contenido web en sus cursos. Los recursos que encontramos son los siguientes: Etiquetas, Página de texto, Página Web. Enlazar un archivo o una web, Mostrar un directorio, Desplegar paquetes de contenidos IMS.

La configuración de los bloques es realizada exclusivamente por el profesor o tutor del curso. Los estudiantes del curso no pueden activarlos o moverlos. En el modo de edición los profesores pueden modificar los contenidos del curso, asignatura o espacio, alterando las cajas centrales de contenidos.

A modo de conclusión se puede decir que los entornos virtuales combinan los aspectos positivos de la docencia presencial y la utilización de las TIC. Además permiten:

  • Tener acceso a la docencia y a la comunicación desde cualquier momento.
  • Acceso a los contenidos y a las informaciones relativas a los estudios o bien presencialmente o desde cualquier punto conectado a la red.
  • Posibilidad de combinar distintos modelos de enseñanza: presencial, a distancia.
  • Potencial para un aprendizaje basado en tareas utilizando software rápido de búsquedas y recuperación, o para el trabajo de investigación.
  • Acceso interactivo a recursos didáctico.
  • Mantener una enseñanza continuada.
  • Hacer enlaces con otras webs.
  • Crear grupos de trabajo.
  • Marcar una agenda de trabajo.
  • Realizar test de auto evaluación. O sea crear elementos que permitan una mejor formación para el alumno y descongestionando las clases presénciales.

 

Bibliografía.

Brennan, M. (2004). Blended Learning and Business Change. Chief Learning Officer Magazin. Available: http://www.clomedia.com/content/anmviewer.asp?a=349 [2007, 16 de febrero].

Brodsky, M. W. (2003). Four Blended Learning Blunders and How to Avoid.Them. Learning Circuits. Available: http://www.astd.org/ASTD/Publications/LearningCircuits/2003/nov2003/elearn.htm.

García Aretio L. (2002). La Educación a Distancia. De la teoría a la práctica. Barcelona.

Hernández Schäfer, L. E. (2006). “Estado actual y futuro de las plataformas e-learning” Estándares y Especificaciones IMS. Chile.

Marcelo, C. (2002). E-Learning Teleformación. Diseño, Desarrollo y Evaluación de la Formación a Través de Internet. Barcelona, Editorial Gestión 2000.

Moodle.org. (2007). Moodle sites. Available: http://moodle.org/sites/ [2007, 22 de mayo].

 

27Dic/16

Subsistema Casación para el Sistema de Informatización para la Gestión de los Tribunales Populares Cubanos

subsistema-casacion-para-el-sistema-de-informatizacion-para-la-gestion-de-los-tribunales-populares-cubanos

Download the PDF file .

02Dic/16

Conservación de la Información en C++

CONSERVACIÓN DE LA INFORMACIÓN EN C++

 

Autores: MsC. Marcos Antonio León Fonseca.

MsC. Noralys Muñiz Maldonado.

 

Introducción:

 

La conservación permanente de información, requiere de la utilización de archivos de datos ya que el almacenamiento de estos en variables se pierde al terminar la ejecución del programa.

 

En este trabajo se aborda la creación, actualización y procesamiento de los archivos de datos en C++.

 

Desarrollo:

 

En programación un registro es una colección de variables relacionadas bajo un nombre, que puede contener variables de varios tipos diferentes de datos a los cuales se les denomina campo. Por ejemplo, un registro para un Profesor pudiera estar formado por los siguientes campos:

 

  • Número de carné de identidad.
  • Nombres.
  • Especialidad.
  • Asignatura que imparte.
  • Años de experiencia.

 

Al conjunto de registros relacionados, se le denomina archivo.

 

Para facilitar la recuperación de los registros almacenados en un archivo, es necesario que al menos un campo de cada registro sea seleccionado como campo clave, es decir un campo que identifique en particular a cada registro. Por ejemplo, en el registro Profesor pudiera ser el Número del carné de identidad dado que a cada profesor se le asigna un número que lo identifica a él y solo a él.

 

Las formas de organizar los registros dentro de un archivo son variadas. Los tipos de organizaciones más utilizados son:

 

  • Archivo de acceso secuencial.
  • Archivo de acceso directo.

 

Archivos de acceso secuencial.

 

En el archivo de acceso secuencial los registros se almacenan en orden en correspondencia con el campo clave y no necesariamente tienen que ser de la misma longitud. Por ejemplo, en el archivo Profesores, los registros se almacenarían por el número de identidad. El primer registro es el que tenga el menor número de identidad y los siguientes se irán entrando en orden ascendente.

 

El siguiente programa crea el archivo secuencial Profesores:

 

#include <cstdlib>

#include <iostream>

using namespace std;

 

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

{

int Clave;

char Nombres [30];

char Especialidad [30];

char Asignatura [30];

int Experiencia;

FILE *Fichero;

 

if ((Fichero = fopen (“Profesores.dat”, “w”)) == NULL)

cout << “El fichero no puede ser abierto.” << endl;

else {

cout << “Entre el indicador de fin de archivo (<CTRL-Z> <RETURN>) para finalizar” << endl;

cout << “Entre la clave: “;

cin >> Clave;

 

while (!feof (stdin)) {

gets (Nombres);

cout << “Entre el nombre del profesor: “;

gets (Nombres);

cout << “Entre la especialidad: “;

gets (Especialidad);

cout << “Entre la asignatura: “;

gets (Asignatura);

cout << “Entre los a\244os de experiencia: “;

cin >> Experiencia;

fprintf (Fichero, “%d %s %s %s %d\n”, Clave, Nombres, Especialidad, Asignatura, Experiencia);

cout << “Entre la clave: “;

cin >> Clave;

}

fclose (Fichero);

}

}

 

Analicemos el programa:

 

El enunciado: FILE *Fichero declara a Fichero como un puntero a la estructura FILE.

 

En la línea:   if ((Fichero = fopen (“Profesores.dat”, “w”)) == NULL) se utiliza el puntero Fichero para crear el archivo “Profesores.dat”.

 

La función fopen recibe dos argumentos: el nombre del archivo y el modo en que se va a abrir. El modo “w” indica que se va a abrir para escritura.

Otros modos de apertura de un archivo son:

 

“r”        para abrir un archivo existente para lectura.

“a”       para añadir registros al final de un archivo.

“r+” para actualizar registros.

“w+” para crear un archivo para actualizar.

“a+” para agregar, abrir o crear un archivo para actualizar.

 

Si un archivo es abierto con fopen para escribir y no existe, es creado y si existe el contenido del mismo es borrado sin advertencias.

 

La estructura de control if se utiliza para saber si el archivo no está abierto, es decir si el puntero al archivo es NULL.

 

La línea while (¡feof (stdin)) se utiliza para determinar si se introduce la combinación de teclas de fin de archivo.

 

El siguiente programa lee los registros almacenados en el archivo  de acceso secuencial “Profesores.dat”:

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

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

{

int Clave;

char Nombres [30];

char Especialidad [30];

char Asignatura [30];

int Experiencia;

FILE *Fichero;

 

if ((Fichero = fopen (“Archivo.dat”, “r”)) == NULL)

cout << “El fichero no puede ser abierto.” << endl;

else {

cout << “Clave     Nombres     Especialidad     Asignatura     Experiencia” << endl;

fscanf (Fichero, “%d%s%s%s%d”, &Clave, Nombres, Especialidad, Asignatura, &Experiencia);

 

while (!feof (Fichero)) {

cout << Clave << ” ” << Nombres << ” ” << Especialidad  << ” “<< Asignatura  << ” “<< Experiencia  << ” “<< endl;

fscanf (Fichero, “%d%s%s%s%d”, &Clave, Nombres, Especialidad, Asignatura, &Experiencia);

}

fclose (Fichero);

}

system(“PAUSE”);

}

Cuando se recuperan los datos de un archivo secuencial, se comienza a leer desde el principio del archivo y se leen todos los datos en forma consecutiva hasta que se encuentren los datos deseados. La estructura FILE cuenta con un puntero de posición de archivo que va especificando la posición en el archivo donde ocurrirá la próxima lectura o escritura por lo que si se quiere procesar los datos secuencialmente en un archivo varias veces desde el principio, se debe posicionar el apuntador de posición de archivo al inicio del mismo, esto se logra con el enunciado: rewind (Fichero).

 

En un fichero secuencial la actualización de los datos corre el riesgo de borrar otros datos dentro del archivo ya que, por ejemplo, si el nombre del profesor “Juan” necesita ser modificado por “Juan Antonio”, el nuevo nombre es más largo que el original por lo que los caracteres más allá de la letra “n” sobrescribirían los datos de la Especialidad.

 

Para llevar a cabo la modificación se deberá copiar a un nuevo archivo los registros anteriores a “Juan”, escribir el nuevo registro y copiar los registros existentes después de “Juan” al nuevo archivo, o sea, habría que procesar todos los registros.

 

Archivos de acceso directo.

 

En un archivo de acceso directo, los registros son de longitud fija y se puede tener acceso directamente a ellos sin tener que buscar a través de otros. También es posible insertar, actualizar y borrar registros sin destruir otros datos del archivo.

 

El siguiente programa crea el archivo de  acceso directo Profesores:

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

struct Datos {

int Clave;

char Nombre [30];

char Especialidad [30];

char Asignatura [30];

int Experiencia;

};

 

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

{

FILE *Fichero;

Datos Informacion;

if ((Fichero = fopen (“Profesores.dat”, “w”)) == NULL)

cout << “El fichero no puede ser abierto.” << endl;

else {

cout << “Entre el n\243mero de Clave (1 hasta 100; 0 para finalizar): “;

cin >> Informacion.Clave;

while (Informacion.Clave != 0) {

gets (Informacion.Nombre);

cout << “Entre el Nombre del profesor: “;

gets (Informacion.Nombre);

cout << “Entre la Especialidad: “;

gets (Informacion.Especialidad);

cout << “Entre la Asignatura: “;

gets (Informacion.Asignatura);

cout << “Entre los a\244os de Experiencias: “;

cin >> Informacion.Experiencia;

fseek (Fichero, (Informacion.Clave – 1) * sizeof (struct Datos), SEEK_SET);

fwrite (&Informacion, sizeof (struct Datos), 1, Fichero);

cout << “Entre el n\243mero de Clave (1 hasta 100; 0 para finalizar): “;

cin >> Informacion.Clave;

}

fclose (Fichero);

}

}

 

La combinación fseek y fwite se utiliza para escribir los datos en el archivo. La función fseek ubica el puntero en la posición específica del archivo y fwite escribe los datos en esa posición.

 

El enunciado fseek (Fichero, (Información.Clave – 1) * sizeof (struct Datos), SEEK_SET) coloca el puntero en la posición que se obtiene de multiplicar (Información.Clave – 1) por sizeof (struct Datos).

 

La constante simbólica SEEK_SET indica que el puntero se coloca en relación con el principio del archivo.

 

El enunciado fwrite (&Información, sizeof (struct Datos), 1, Fichero) hace que la estructura datos de tamaño sizeof (Struct datos) se escriba al archivo al cual apunta Fichero.

 

El siguiente programa lee los registros almacenados en el archivo de acceso directo “Profesores.dat”:

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

struct Datos {

int Clave;

char Nombre [30];

char Especialidad [30];

char Asignatura [30];

int Experiencia;

};

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

{

FILE *Fichero;

Datos Informacion;

if ((Fichero = fopen (“Profesores.dat”, “r”)) == NULL)

cout << “El fichero no puede ser abierto.” << endl;

else {

cout << “Clave     Nombre     Especialidad     Asignatura     Experiencia” << endl;

fread (&Informacion, sizeof (struct Datos), 1, Fichero);

while (!feof (Fichero)) {

cout <<Informacion.Clave << Informacion.Nombre << Informacion.Especialidad << Informacion.Asignatura << Informacion.Experiencia << endl;

fread (&Informacion, sizeof (struct Datos), 1, Fichero);

}

fclose (Fichero);

}

system(“PAUSE”);

}

 

El siguiente programa actualiza los años de experiencias de los registros almacenados en el archivo de acceso directo “Profesores.dat”:

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

struct Datos {

int Clave;

char Nombre [30];

char Especialidad [30];

char Asignatura [30];

int Experiencia;

};

 

int Registro;

int Actualizacion;

 

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

{

FILE *Fichero;

struct Datos Informacion;

if ((Fichero = fopen (“Archivo.dat”, “r+”)) == NULL)

cout << “El fichero no puede ser abierto.” << endl;

else {

cout << “Entre el n\243mero de Clave del registro a actualizar: “;

cin >> Registro;

fseek (Fichero, (Registro – 1) * sizeof (struct Datos), SEEK_SET);

fread (&Informacion, sizeof (struct Datos), 1, Fichero);

if (Informacion.Clave == 0)

cout << “Ese registro no existe.” << endl;

else {

cout << Informacion.Clave << ” ” << Informacion.Nombre << ” ” << Informacion.Especialidad << ” ” << Informacion.Asignatura << ” ” << Informacion.Experiencia << endl;

cout << “Entre los a\244os de Experiencias Actualizados: “;

cin >> Actualizacion;

Informacion.Experiencia = Actualizacion;

cout << Informacion.Clave << ” ” << Informacion.Nombre << ” ” << Informacion.Especialidad << ” ” << Informacion.Asignatura << ” ” << Informacion.Experiencia << endl;

fseek (Fichero, (Informacion.Clave – 1) * sizeof (struct Datos), SEEK_SET);

fwrite (&Informacion, sizeof (struct Datos), 1, Fichero);

}

fclose (Fichero);

}

system(“PAUSE”);

}

 

El siguiente programa borra registros almacenados en el archivo de acceso directo “Profesores.dat”:

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

struct Datos {

int Clave;

char Nombre [30];

char Especialidad [30];

char Asignatura [30];

int Experiencia;

};

 

int Registro;

 

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

{

FILE *Fichero;

struct Datos Informacion;

struct Datos BlankInformacion = {0, “”, “”, “”, 0};

if ((Fichero = fopen (“Archivo.dat”, “r+”)) == NULL)

cout << “El fichero no puede ser abierto.” << endl;

else {

cout << “Entre el n\243mero de Clave del registro a borar: “;

cin >> Registro;

fseek (Fichero, (Registro – 1) * sizeof (struct Datos), SEEK_SET);

fread (&Informacion, sizeof (struct Datos), 1, Fichero);

if (Informacion.Clave == 0)

cout << “Ese registro no existe.” << endl;

else {

fseek (Fichero, (Registro – 1) * sizeof (struct Datos), SEEK_SET);

fwrite (&BlankInformacion, sizeof (struct Datos), 1, Fichero);

}

fclose (Fichero);

}

system(“PAUSE”);

}

 

El siguiente programa agrega registros al archivo de acceso directo “Profesores.dat”:

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

struct Datos {

int Clave;

char Nombre [30];

char Especialidad [30];

char Asignatura [30];

int Experiencia;

};

 

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

{

int Registro;

FILE *Fichero;

Datos Informacion;

if ((Fichero = fopen (“Archivo.dat”, “r+”)) == NULL)

cout << “El fichero no puede ser abierto.” << endl;

else {

cout << “Entre el n\243mero de Clave (1 hasta 100): “;

cin >> Registro;

fseek (Fichero, (Registro – 1) * sizeof (struct Datos), SEEK_SET);

fread (&Informacion, sizeof (struct Datos), 1, Fichero);

if (Informacion.Clave != 0)

cout << “Ese registro existe.” << endl;

else {

Informacion.Clave = Registro;

gets (Informacion.Nombre);

cout << “Entre el Nombre del profesor: “;

gets (Informacion.Nombre);

cout << “Entre la Especialidad: “;

gets (Informacion.Especialidad);

cout << “Entre la Asignatura: “;

gets (Informacion.Asignatura);

cout << “Entre los a\244os de Experiencias: “;

cin >> Informacion.Experiencia;

fseek (Fichero, (Informacion.Clave – 1) * sizeof (struct Datos), SEEK_SET);

fwrite (&Informacion, sizeof (struct Datos), 1, Fichero);

}

fclose (Fichero);

}

system(“PAUSE”);

}

 

Conclusiones:

 

El conocimiento y la utilización de los archivos de datos en nuestros programas, permite la conservación permanente de la información procesada por estos.

 

Bibliografía:

 

Deitel, H. M. y Deitel., P. J. (2005). Cómo Programar en C/C++. Santiago de Cuba., PROGRAF.

Katrib Mora, M. (1986). Lenguajes de programación y Técnicas de compilación. Ciudad de la Habana., Editorial Pueblo y Educación.

Lipschutz, S. (1989). Estructura de datos. Ciudad de la Habana., Edición Revolucionaria.

 

 

02Dic/16

Aprendizaje de matemáticas por medio de la programación

 

 

APRENDIZAJE DE MATEMÁTICAS POR MEDIO DE LA PROGRAMACIÓN

 

Autores: MsC. Marcos Antonio León Fonseca.

MsC. Noralys Muñiz Maldonado.

 

Introducción:

 

En el mundo informático es un criterio generalizado que el aprendizaje de la programación ejerce una influencia positiva en el desarrollo del pensamiento y en la capacidad para la solución de problemas transferibles a otros dominios del conocimiento.

 

Aprender a programar, es aprender a solucionar problemas, pero a su vez, la solución de problemas obliga a la reflexión acerca de los aspectos esenciales del fenómeno en cuestión por lo que la contribución que la programación puede aportar al entendimiento de otros temas, las matemáticas en especial, es significativo.

 

El propósito de este artículo consiste en demostrar, a través de ejemplos, que la programación favorece el aprendizaje de las matemáticas.

 

Desarrollo:

 

Ejemplos:

 

Los lenguajes de programación tienen implementada una estructura de control de extraordinario valor, llamada recursividad, la cual permite que un procedimiento se llame a sí mismo como un subprocedimiento. Utilizando los recursos que brinda el lenguaje de programación C++, elabore funciones recursiva que permitan:

 

  1. a) Hallar el factorial de un número.

 

Matemáticamente se define como factorial de un número n al producto de los enteros positivos desde 1 hasta n y se denota por n!

 

n! = 1 . 2 . 3 . 4 . 5 . . . (n – 2) (n – 1) n

 

también se define 0! = 1, de forma que la función está definida para todos los enteros no negativos. Así tenemos que:

 

0! = 1     1! = 1     2! = 1 . 2 = 2     3! = 1 . 2 . 3 = 6

4! = 1 . 2 . 3 . 4 = 24     5! = 1 . 2 . 4 . 5 = 120

 

y así sucesivamente.

 

 

Observe que:

 

5! = 5 . 4! = 5 . 24 = 120    6! = 6 . 5! = 6 . 120 = 720

 

esto se cumple para cualquier entero n positivo; o sea,

 

n! = n (n – 1)!

 

de acuerdo con esto, la función factorial se puede definir también como :

 

Si n < 2 entonces n! = 1

Si n ≥ 2 entonces n! = n (n – 1)!

 

Por ejemplo, 4! sería:

 

4! = 4 . 3!

3! = 3 . 2!

2! = 2 . 1!

1! = 1 . 0!

0! = 1

1! = 1 . 1 = 1

2! = 2 . 1 = 2

3! =  3 . 2 = 6

4! = 4 . 6 = 24

 

Esta definición de n! es recursiva  ya que se refiere a sí misma cuando invoca (n – 1) !

 

Luego nuestra función podría ser:

 

int Factorial (int n) {

if (n < 2)

return 1;

else

return n * Factorial (n – 1);

}

 

  1. b) Encontrar el término n-ésimo Fn de la secuencia de Fibonacci.

 

La celebre secuencia de Fibonacci designada por F0, F1, F2, …, es:

 

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

O sea:

 

F0 = 0 y F1 = 1 y cada término sucesivo es la suma de los dos términos precedentes, por ejemplo, los dos términos que siguen a la secuencia anterior son:

34 + 55 = 59      y      55 + 89 = 144

por lo que una definición formal de esta función es la siguiente:

 

Si n = 0 o n = 1, entonces Fn = n

Si n > 1, entonces Fn = Fn-2 + Fn-1

 

Este es otro ejemplo de definición recursiva, ya que la definición se refiere a sí misma en Fn-2  y  Fn-1

 

Nuestra función podría ser:

 

int Fibonacci (int n) {

if (n == 0 || n == 1)

return n;

else

return Fibonacci (n – 2) + Fibonacci (n – 1);

}

 

  1. c) Encontrar un valor determinado para la función de Ackermann.

 

La función de Ackermann es una función con dos argumentos a los cuales se le pueden asignar cualquier número entero no negativo: 0,1, 2, 3, 4, …

 

Esta función se define como:

 

Si m = 0, entonces A (m, n) = n + 1

Si m ≠ 0, pero n = 0, entonces A (m, n) = A (m – 1, 1)

Si m ≠ 0 y n  ≠ 0, entonces A (m, n) = A (m – 1, A (M, n – 1))

 

Por ejemplo, el valor de A (1, 3) sería:

 

A (1, 3) = A (0, A (1, 2))

A ( 1, 2) = A (0, A (1, 1))

A (1, 1) = A (0, A (1, 0))

A (1, 0) =  A (0, 1)

A (0, 1) = 1 + 1 = 2

A (1, 1)  = A (0, 2)

A (0, 2) = 2 + 1 = 3

A (1, 1) = 3

A (1, 2) = A (0, 3)

A (0, 3) = 3 + 1 = 4

A (1, 2) = 4

A (1, 3) = A (0, 4)

A (0, 4) = 4 + 1 = 5

A (1, 3) = 5

 

Una vez más tenemos una definición recursiva, ya que se refiere a sí misma en  A (m – 1, 1) y A (m – 1, A (M, n – 1)).

 

 

Por lo que nuestra función podría ser:

 

int Ackermann (int m, int n) {

if (m == 0)

return n + 1;

else

if (m != 0 && n == 0)

return Ackermann (m – 1, 1);

else

if (m != 0 && n != 0)

return Ackermann (m – 1, Ackermann (m, n – 1));

}

 

Como se puede notar la implementación de las funciones en el lenguaje de programación requiere del análisis de los aspectos esenciales de los contenidos matemáticos que se abordan favoreciéndose con ello su aprendizaje.

 

Conclusiones:

 

La contribución que la programación puede aportar al aprendizaje de contenidos  matemáticos, es significativo.

 

Bibliografía:

Deitel, H. M. y Deitel., P. J. (2005). Cómo Programar en C/C++. Santiago de Cuba., PROGRAF.

Katrib Mora, M. (1986). Lenguajes de programación y Técnicas de compilación. Ciudad de la Habana., Editorial Pueblo y Educación.

Lipschutz, S. (1989). Estructura de datos. Ciudad de la Habana., Edición Revolucionaria.