martes, 16 de febrero de 2016

Examen del primer Quimestre



UNIDAD EDUCATIVA FISCOMISIONAL DON BOSCO

EVALUACION PRIMER QUIMESTRE 

NOMBRE DEL/LA ESTUDIANTE:
Eric Alarcón
ASIGNATURA:
Lenguaje de programación
GRADO / CURSO:
2do INF
TEMA:
Recopilación del 1ro, 2do y 3er bloque
FECHA:
17/02/2016
 
 -Realizar el análisis y diseño detallado de aplicaciones informáticas de gestión
 
INDICARES DE EVALUACIÓN.
 
·        Se han resuelto y presentado los ejercicios propuestos valorando la correcta elección y utilización de las estructuras; la calidad del resultado; la eficiencia del resultado; 
·        Se ha justificado la importancia de las estructuras dinámicas.
·        Se ha justificado la importancia de los punteros en la gestión de la memoria. 

1.- Determinar el valor que tendrán las variables después de cada operación de asignación (cada respuesta 0.5 puntos)       
 
struct nodo{
int dia;
int mes;
int anio;
 
}def:
 
class Foo{
    private:
       int bar;
    public:
void imp();
 };

int a=3;
int b=4;
int suma(int a, int b)
{
         int c;
         c = a + b;
         return c;
}
 
 
def.dia= basura
Basura
c= 7
 
 
int A;
int B;
B=12;
A=B-4;
A=B-7;
B=A+2;
         A=A*A;
 
int X;
int Y;
X=2;
Y=X+6;
X=X+X;
Y=X-5;
 
 
int HOLA;
int SE_NO;
int OTRA;
HOLA=-7;
NO_SE=12;
OTRA=HOLA + NO_SE;
NO_SE=HOLA + NO_SE;
         HOLA=NO_SE + OTRA;
 
A=25
 
Y= -1
 
NO_SE= Error 
2.- Identifique los errores del programa y corríjalos al frente de cada línea de código (2 puntos);    
  
 
#include <iostream>
#include <conio.h>
using namespace std;
                      
class empleado{                         class Empleado{ 
                                                   Public:
        int edad,numdep;
        char nomb[10];
public:
        void iniciar(void);
        void entradaDatos(void);
        void salidaDatos(void);
} emp1;
 
int main(void){
 Empleado emp2;
 emp1.iniciar();
 emp2.iniciar();
 emp1.entradaDatos();
 emp2.entradaDatos();
 emp1.salidaDatos();
 emp2.salidaDatos();
 getch();
 return 0;
}
 
int Empleado::iniciar(void) {              Void Empleado::iniciar(void) {     
         
         cout >>"PROGRAMA QUE INGRESA DATOS DE EMPLEADO"<<"\n\n";
         cout <<"PROGRAMA QUE INGRESA DATOS DE EMPLEADO"<<"\n\n";
 
}
void Empleado::entradaDatos(void) {
         cout<<"INTRODUZCA los datos del empleado"<<"\n";
         cout<<"INTRODUZCA nombre:"<<"\n";
         cin>>nomb;
         cout<<"INTRODUZCA edad"<<"\n";
         cin>>edad;
         cout<<"numero de departamento"<<"\n";
         cin>>numde;                            cin>>numdep;    
}
void Empleado::salidaDatos(void) {
         cout<<nomb <<"\n";
         cout<<edad<<"\n";
         cout<<numdep<<"\n";      
 
 
} 
 




 
3.- definir cuál sería la estructura correcta de los siguientes enunciados (0.2 cada ítem)       
 
Crear una clase llamada juguete con 
dos atributos 
y un método imprimir ()
 el cual imprime los atributos.
 
class juguete{
public:
int pelota;
int maxteal;
public:
void imprimir();
};
void juguete::imprimir(){
printf("%d\n",pelota);
printf("%d",maxteal);
}
 
Enumero dos principios de P.O.O
 
 
Encapsulación
Herencia
Polimorfismo
 
 
 
 
 
Escriba la sintaxis de la función principal de c++
 
main()
{
}
 
 
 
 
 
Represente gráficamente que es polimorfismo
 
 

   
   
    
    
    
    
    
    
    
    
 
 
 
 
 
 
Realice una clase con el principio de encapsulamiento.
 
class op{
private: int x;
int y;
public:
void asfa();
}
 
 
 
 
 
 
4.- Encierre la letra de la respuesta correcta de cada pregunta (0,2 cada una)
 
1-      ¿Cuál es la descripción que crees que define mejor el concepto 'clase' en la programación orientada a objetos?
a)      Es un concepto similar al de 'array'
b)      Es un tipo particular de variable
c)      Es un modelo o plantilla a partir de la cual creamos objetos
d)      Es una categoria de datos ordenada secuencialmente

2.       ¿Qué es una pila? (0.3pts)
a)      Una lista en la que sólo se pueden insertar y eliminar nodos en uno de sus extremos.
b)      Un puntero en la que sólo se pueden insertar y eliminar nodos en uno de los extremos.
c)       Un dato int que sólo se pueden insertar y eliminar nodos en uno de los extremos de la lista.
d)      Ninguno de los anteriores.

3.       ¿Qué es una cola? (0.3pts)
a)      Es un puntero, caracterizada por ser una secuencia de elementos FIFO.
b)      es una variable, caracterizada por ser una secuencia de elementos FIFO.
c)      es una estructura, caracterizada por ser una secuencia de elementos FIFO.
d)      Ninguna de las anteriores.

4.       ¿Defina que es una variable? (0.3pts)
a)      Puede ser un puntero.
b)      Puede ser un valor entero.
c)       Es una porción de memoria.
d)      Todas las anteriores

5.       ¿Qué elementos crees que definen a un objeto?
a)      Sus cardinalidad y su tipo
b)      Sus atributos y sus métodos
c)       La forma en que establece comunicación e intercambia mensajes 
d)      Su interfaz y los eventos asociados.

6.       ¿Qué significa instanciar una clase?
a)      Duplicar una clase
b)      Eliminar una clase
c)       Crear un objeto a partir de la clase
d)      Conectar dos clases entre sí

7.       ¿Qué es un puntero? (0.3pts)
a)      Es una matriz que hace referencia a una región de memoria.
b)      Es un valor entero que da referencia a una región de memoria
c)       Ninguna de las anteriores.
d)      Es una variable independiente de memoria que sirve para apuntar a un puntero.


8.       ¿Qué es una estructura dinámica? (0.3pts)
a)      son estructuras que cuya dimensión puede crecer o disminuir durante la creación del programa.
b)      son estructuras que cuya dimensión puede crecer o disminuir durante el diseño del programa
c)       son estructuras que cuya dimensión puede crecer o disminuir durante la ejecución del programa
d)      ninguna de las anteriores.

9.       ¿Por qué dos objetos instanciados de una clase son diferentes?
a)      Porque tienen sus propios atributos y métodos.
b)      Porque los atributos y métodos son iguales en su contenido
c)       No son diferentes son iguales.
d)      Ninguna de las anteriores

10.   ¿Cuál es la diferencia entre objeto y clase?
Ninguna porque son iguales
El objeto se declara en el main y la clase no.

La clase se utiliza para definir qué aspecto tendrán los objetos

El objeto se utiliza para definir qué aspecto tendrán la clase


5.-Realizar el siguiente ejercicio en c++ en el computador (2 Puntos resuelto completamente). El profesor designa el ejercicio a realizar.

Implementar una clase  Jugador que solicite el nombre, edad en un método solidat(), y contenga otro método impdat(), que imprima los datos solicitados con la diferencia que la edad la debe imprimir en días. Declarar un objeto llamado jug1.
Realizar una clase llamada Vehículo que contenga como atributos color, marca, modelo y que contenga un método llamado imprimir() que imprima los datos que no deben ser ingresados por teclado sino puestos dentro del código.




Vicerrector
Dr. Plácido Vaca

Jefe de área
MSc. Diego Caiza
Profesor/a
Ing. Byron Saula.








https://drive.google.com/file/d/0B_IFi7mzrpepTlhVdmJPZEc0d00/view?usp=sharing

viernes, 22 de enero de 2016

Constructores y destructores de una clase

Constructores de una clase:
Cuando se construye un objeto es necesario inicializar sus variables con valores coherentes, imaginemos un objeto de la clase llamada Persona cuyo atributo color de pelo al nacer sea verde, un estado incorrecto tras construir el objeto persona. La solución en los lenguajes orientados a objetos es emplear los constructores. Un constructor es un método perteneciente a la clase que posee unas características especiales:
-          Se llama igual que la clase.
-          No devuelve nada, ni siquiera void
-          Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones
-          De entre los que existan, tan sólo uno se ejecutará al crear un objeto de la clase

Para definir los constructores se emplea la siguiente sintaxis:
         [modifVisibilidad] nombreConstructor (listaParámetros) [throws listaExcepciones]
         {
         }

Para modifVisibilidad se aplica las mismas normas que para atributos y métodos:
-          public: indica que es un método accesible a través de una instancia del objeto.
-          private: indica que a través de una instancia no es accesible el método. Al heredar el método se convierte en inaccesible.
-          protected: indica que a través de una instancia no es accesible el método. Al heredar si se puede usar desde la clase derivada.



Destructor de una clase:
Es un método de una clase que se llama justo antes de una instancia de esa clase y se elimina de la memoria. No todos los lenguajes de programación orientados a objetos suelen tener un destructor.
La contrapartida de un destructor es un constructor que se ejecuta cuando se crea el objeto, se instancia y se lo inicializa.

Una clase sólo tiene una función destructor que, no tiene argumentos y no devuelve ningún tipo. Un destructor realiza la operación opuesta de un constructor, limpiando el almacenamiento asignado a los objetos cuando se crean. C++ permite sólo un destructor por clase.

POO (Programación orientada a objetos)


¿En qué consiste la Programación orientada a objetos?
La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Es un paradigma de programación que usa objetos en sus interacciones, para diseñar aplicaciones y programas informáticos.
Características:
Abstracción: Cada objeto en el sistema sirve como modelo de un “agente” abstracto que puede realizar trabajo, informar y cambiar su estado, y “comunicarse” con otros objetos en el sistema sin revelar cómo se implementan esta característica.
Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema.
Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. 
Herencia: La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.
Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase.
¿Qué es un objeto?
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos
Un objeto puede ser creado instanciando una clase
¿Qué es una clase?

Es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje.

 

Cada clase es un modelo que define un conjunto de variables

Ejemplo de Claseen C++
#include <iostream.h>
class Miclase {
public:
Miclase() {} //constructor por defecto
~Miclase() {} //destructor
void yoMismo() { return this }
};

int main()
{
void* pClase;
Miclase unObjeto;
pClase = unObjeto.yoMismo();
cout<< "El puntero pClase es "
<< pClase <<'\n.';
return 0;
}

Programa Validacion de cedula Ecuatoriana

El Programa realiza un validacion de la cedula de identidad Ecuatoriana, mediante un determinado algoritmo podemos verificar si la cedula es correcta o incorrecta.


#include <conio.h>
#include <stdio.h>
char Cadena[10];
int Num[10];
int par;
int impar[10];
int *ptrNum[10];
int resp;
int im[10];

main(){
int *ptrNum=&Num[10];
printf("ingrese la cedula\t");
//Se realiza la transformacion de caracteres a numeros enteros
for(int i=0;i<=9;i++)
{
   
scanf("%c",&Cadena);

sscanf(Cadena, "%d", &ptrNum[i]);

}

for(int i=0;i<=9;i++)
{
printf("%d\n",ptrNum[i]);
}
for (int i=0;i<9;i++)
{
Num[i]=ptrNum[i];
}
//se realiza la suma de pocisiones pares
printf("La suma de los pares es:");
par=Num[1]+Num[3]+Num[5]+Num[7];
printf("%i",par);
//Se multiplica pocisiones impares x 2

printf("\nPrimera parte impares:");
for(int i=0;i<9;i++)
{
     
impar[i]=Num[i]*2;
im[i]=impar[i];
printf("\n%i",im[i]);
i++;
}
//Funcion si para determinar si es mayor a 9 restar 9
printf("\n2da parte impares");
if(im[0]>9){

printf("\n%i",impar[0]-9);
im[0]=impar[0]-9;}
else{
printf("\n%i",im[0]);}

if(im[2]>9){
printf("\n%i",impar[2]-9);
im[2]=impar[2]-9;}
else{
printf("\n%i",im[2]);}

if(im[4]>9){
printf("\n%i",impar[4]-9);
im[4]=impar[4]-9;}
else{
printf("\n%i",im[4]);}

if(im[6]>9){
printf("\n%i",impar[6]-9);
im[6]=impar[6]-9;}
else{
printf("\n%i",im[6]);}

if(im[8]>9){
printf("\n%i",impar[8]-9);
im[8]=impar[8]-9;}
else{
printf("\n%i",im[8]);}
//Resultado de la suma de pares e impares
resp=(par)+(im[0]+im[2]+im[4]+im[6]+im[8]);
printf("\nSuma total:\t%i",resp);

//Funcion si para determinar si se resta a la decena superior
if(resp>10&resp<20)
{
resp=20-resp;
printf("\nResultado:%i\t",resp);
}
else
if(resp>20&resp<30)
{
resp=30-resp;
printf("\nResultado: %i\t",resp);
}
else
if(resp>30&resp<40)
{
resp=40-resp;
printf("\nResultado: %i\t",resp);
}
else
if(resp>40&resp<50)
{
resp=50-resp;
printf("\nResultado: %i\t",resp);
}
else
if(resp>50&resp<60)
{
resp=60-resp;
printf("\nResultado: %i\t",resp);
}
//Funcion si para determinar el resultado :D
if(resp==ptrNum[9])
{
printf("\nCedula Correcta :D");
}
else
{
printf("\nCedula Incorrecta :(");
}
getch();

}

Correccion de la prueba bloque 2


https://drive.google.com/file/d/0B_IFi7mzrpepZzlYYW1JM3FSc2M/view?usp=sharing

lunes, 9 de noviembre de 2015

Metodo gráfico en C

La librería winbgim.h a sido creada originalmente por Konstantin Knizhnik's winbgi shareware  y posteriormente modificada por Mark Richardson  y Michael Main, esta librería tiene como objetivo emular la librería graphics.h de Borland C++ y facilitar algunas funciones del Mouse. La ventaja de esta librería es que nos permite crear aplicaciones gráficas con compiladores GNU tales como el ambiente de desarrollo Dev C++ de la misma manera como se crean en el compilador comercial Borland C++.
Originalmente el autor nos ofrecía una colección de archivos que se debían ubicar en carpetas especiales e incluir ciertos comandos al la configuración del linker y del compilador, esta operación tenia cierta  complejidad y para muchos se convirtió en un dolor de cabeza.
Con el fin de facilitar el uso de esta librería me tome la libertad de realizar un instalador para la versión 4.9.9.2 del Dev C++ que realiza todas las configuraciones necesarias.
Ahora cada ves que queramos realizar un programa con soporte para gráficos solo es necesario seguir los siguientes pasos:

Estructuras estaticas en C


Se denominan estáticas las estructuras de datos simples, o complejas, que una vez definidas dentro de un programa, permanecen inalteradas durante la ejecución del mismo, sin poder variar, por tanto, su posición en memoria, ni su longitud en bytes, declarada al especificar el tipo de la misma. En este sentido, y de menor a mayor complejidad, son estructuras estáticas tradicionales de datos:Las variables de carácter las variables numéricas entera, las variables numéricas de punto flotante o reales, las variables de tipo cadena (string)Las matrices (arrays), formadas por elementos contiguos en memoria de los tipos citados anteriormente los registros y archivos Tradicionalmente se han definido como dinámicas las estructuras de cola, pila y árbol por permitir la variación del número de sus elementos, dentro de ciertos límites, durante la ejecución del programa. Por lo complejo que resulta el manejo de todo tipo de estructuras, en este libro se menciona tan solo los tipos de estructuras simples que son los mas manejados para la solución de problemas comunes a las Ingenierías. Un Arreglo Estático Es aquel que siempre permanece del mismo tamaño, es decir siempre contendrá el mismo número de elementos.
 El límite superior no puede exceder el rango de los tipos de datos Long (-2,147,483,648 al 2,147,483,647), ejemplo: Dim a Alumnos(19) As Integer Total de elementos a contener = 20 Tipos dinámicos Dentro de esta categoría entra solamente el tipo puntero. Este tipo te permite tener un mayor control sobre la gestión de memoria en tus programas. Con ellos puedes manejar el tamaño detus variables en tiempo de ejecución, o sea, cuando el programa se está ejecutando.