Académique Documents
Professionnel Documents
Culture Documents
Jorge Daz
Universidad de Oriente, Departamento de Computacin, Santiago de Cuba 90500, Cuba
jdiaz@csd.uo.edu.cu
Resumen: Se hace un anlisis crtico acerca de las caractersticas del lenguaje C++ con vistas a su utilizacin como
lenguaje en una primera asignatura de programacin de alto nivel orientada a objetos y se expone una metodologa
para impartir tal asignatura, la cual incluye una seleccin y secuencia de los contenidos que hacen ms viable el uso
del lenguaje en la enseanza de la programacin y que ha arrojado resultados superiores en cuanto al aprendizaje de
los estudiantes.
Palabras clave: lenguajes de programacin, orientacin a objetos, enseanza de la programacin
Abstract: A critical analysis about the characteristics of the programming language C++, regarding its use in a first
course of high level programming, is made. It is exposed a methodology for teaching this course using of a fruitful
way this language.
Key words: programming languages, object oriented, programming teaching.
1. Introduccin
Siempre ha resultado un dilema la seleccin de cul
debe ser el lenguaje que de entrada usaremos para
ensear a los estudiantes sus primeros conceptos de
programacin, mxime cuando el proceso evolutivo
de la rama es extremadamente rico y rpido.
Diferentes lenguajes se han usado en un primer
curso de programacin, podemos citar Pascal, Ada,
Modula, C, C++, C#, Java.
Los criterios de seleccin no se desligan de las
necesidades de programacin del sector industrial,
cientfico y empresarial, los cuales, en muchos
casos, gravitan en aplicaciones que usan el C/C++
como lenguaje de trabajo, lo cual tiene su influencia
a la hora de decidir cul ser el lenguaje bsico de
__________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
12
___________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
13
___________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
14
2.
___________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
15
3.
___________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
16
6.
class Valor
{ private:
float elem[100];
int cant;
..............
};
Deben estudiarse las cadenas de caracteres,
tanto al estilo de C como de C++ (objetos
string).
7.
A
continuacin
se
introducen
tipos
enumerativos y fundamentalmente tipos de
arreglos. Una vez explicados los principales
conceptos sobre arreglos, se introducen las
formas en que los arreglos se operan o
transforman (lecturas, escrituras, clculos,
bsquedas, etc) construyendo clases en que sus
atributos sean la cantidad real de elementos que
tiene el arreglo y la definicin de los elementos
del arreglo, usando el constructor por defecto
de un arreglo, por ejemplo:
8.
___________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
17
Dar
herramientas
didcticas
de
programacin para evitar la aparicin de
referencias nulas o basura.
___________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
18
double g(double x)
{ return 1.0 / x;
}
void main()
{ double a, b;
a = SumaCuadrado(g, 1, 5);
b = SumaCuadrado(sin, 0, 4);
cout <<"a= " <<a <<" b= " <<b <<endl;
}
}
donde se muestra un arreglo de objetos polimrficos
con diferentes figuras de la jerarqua.
Por ltimo se les muestra un ejemplo en que puedan
aprender cmo usar la herencia privada para una
clase derivada pueda obviar mtodos de su clase
base.
Hasta aqu se han relacionado conceptos bsicos de
programacin que se pueden encarar en la primera
asignatura destinada a la enseanza de la
programacin. En dependencia del tiempo
disponible para su imparticin y de la profundidad
conceptual a la que se quiera llegar en la asignatura,
proponemos seleccionar algunas de las siguientes
temticas en el orden que se especifica:
a)
c)
aritmtica de punteros,
Coercin (casting).
#include <iostream.h>
#include <math.h>
Sobrecarga de operadores.
Como sabemos, la sobrecarga de
operadores es un recurso muy cmodo, que
hace permite a los programadores construir
tipos de datos de una forma similar a los
tipos simples predefinidos (int, long, etc.),
dando una interpretacin para el tipo de los
operadores predefinidos del lenguaje. Esto
conlleva el estudio de las funciones
operadoras (operator) y el concepto de
funcin amiga de una clase (friend), uso y
peligros.
Se debe desarrollar alguna clase
previamente estudiada, como la clase de
manipulacin de nmeros fraccionarios o
de nmeros complejos u otra afn, usando
las funciones operadoras, mostrando el uso
o necesidad de usar funciones amigas
dentro de clases que implementan
funciones operadoras.
Por otra parte debe reconocerse las
diferencias entre implementar funciones
miembros de una clase y funciones no
miembros amigas de la clase, desarrollando
___________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
19
4. Conclusiones
Programar es un desafo. La programacin requiere
el uso de habilidades de pensamiento abstracto y
muchos estudiantes no han recibido asignaturas que
requieran o les hayan ayudado a desarrollar estas
habilidades en niveles precedentes de enseanza,
considerando que la asignatura de Programacin
debe ser una de las primeras que enfrente un
estudiante de carreras de perfil afn a la
computacin. Muchos estudiantes entran a la clase
de programacin con escasas habilidades
conceptuales para programar.
En el presente trabajo se ha hecho un anlisis
detallado de algunas deficiencias que presenta el
lenguaje C++ al ser considerado como el primer
lenguaje en que los estudiantes que comienzan a
familiarizarse con la programacin orientada a
objetos. A partir de tales deficiencias, pero tambin
considerando algunas de sus bondades, como la
riqueza de elementos conceptuales, presencia de
Bibliografa
Arnold, K., Gosting, J. (1996) The Java
Programming Language, Addison-Wesley.
Ben-Ari, M. (1998). Constructivism in Computer
Science Education, SIGSCE 98 Atlanta, GA., p.257261, 1998.
Deitel, H., Deitel, P. (2002). C++, How to Program,
4th edition.
Deitel, H., Deitel, P. (2005). C++, How to Program,
5th edition.
Daz, J. (2002): Introduccin a la programacin
usando C++. Universidad de Oriente, Cuba.
___________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
20
___________________________________________________________________________________________________________________
Revista de Informtica Educativa y Medios Audiovisuales Vol. 3(7), pgs. 12-21. 2006
ISSN 1667-8338 LIE-FI-UBA. liema@fi.uba.ar
21