martes, 5 de octubre de 2010

CONCON

La academia de computación te da la mas cordial bienvenida a este espacio, las herramientas que pondremos a tu disposición corresponden a los contenidos temáticos de tus planes y programas de estudio, para hacer uso de este espacio es necesario que te integres a una lista de correo electrónico del administrador de este blog





para poder dar seguimiento a las asesorías y actividades de estos cursos.


E n l a c e s

Tutorial de programación en C++
http://www.programacionfacil.com/cpp/start

* esta es una liga para un tutorial de C++ donde podras realizar ejercicios de retroalimentación, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. C++juanperez


Tutorial de VRML
* esta es una liga para un tutorial de VRML donde podras realizar ejercicios de retroalimentación, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. VRMLjuanperez
Tutorial de Algoritmia
*esta es una liga para un tutorial de ALGORITMIA, donde podras realizar ejericicios de retroalimentacion, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. ALGOjuanperez


Tutorial de Programacion C++ orientado a objetos
*esta es una liga para un tutorial de Programacion orientada a objetos en C++, donde podras realizar ejericicios de retroalimentacion, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. CPOOjuanperez

Tambien puedes recurrir al siguiente blog para obtener informacion básica de la POO
http://compuacademiasv3.blogspot.com/2010/08/programacion-orientada-objetos.html


Notas sobre constructores y destructores en C++
* esta es una liga para una pagina que contiene informacion sobre CONSTRUCTORES y DESTRUCTORES en C++, en este apartado no se requiere constestacion via correo electronico.

http://compuacademiasv3.blogspot.com/2010/10/constructores-y-destructores-en-c.html


...:)

Constructores y Destructores en C++

DEFINICIÓN DE CONSTRUCTORES Y DESTRUCTORES DE UNA CLASE.


Definición:

Un constructor es una función especial que sirve para construir o inicializar objetos. En C++ la inicialización de objetos no se puede realizar en el momento en que son declarados; sin embargo, tiene una característica muy importante y es disponer de una función llamada constructor que permite inicializar objetos en el momento en que se crean.

Un constructor es una función que sirve para construir un nuevo objeto y asignar valores a sus miembros dato. Se caracteriza por:

- Tener el mismo nombre de la clase que inicializa

- Puede definirse inline o fuera de la declaración de la clase

- No devuelve valores

- Puede admitir parámetros como cualquier otra función

- Puede existir más de un constructor, e incluso no existir

Si no se define ningún constructor de una clase, el compilador generará un constructor por defecto. El constructor por defecto no tiene argumentos y simplemente sitúa ceros en cada byte de las variables instancia de un objeto. Si se definen constructores para una clase, el constructor por defecto no se genera.

Un constructor del objeto se llama cuando se crea el objeto implícitamente: nunca se llama explícitamente a las funciones constructoras. Esto significa que se llama cuando se ejecuta la declaración del objeto. También, para objetos locales, el constructor se llama cada vez que la declaración del objeto se encuentra. En objetos globales, el constructor se llama cuando se arranca el programa.

El constructor por defecto es un constructor que no acepta argumentos. Se llama cuando se define una instancia pero no se especifica un valor inicial.

Se pueden declarar en una clase constructores múltiples, mientras tomen parte diferentes tipos o número de argumentos. El compilador es entonces capaz de determinar automáticamente a qué constructor llamar en cada caso, examinando los argumentos.

Los argumentos por defecto se pueden especificar en la declaración del constructor. Los miembros dato se inicializarán a esos valores por defecto, si ningún otro se especifica.

C++ ofrece un mecanismo alternativo para pasar valores de parámetros a miembros dato. Este mecanismo consiste en inicializar miembros dato con parámetros.

class prueba

{ tipo1 d1; tipo2 d2; tipo3 d3; public: prueba(tipo1 p1, tipo2 p2, tipo3 p3):d1(p1),d2(p2),d3(p3) { } };

Un constructor que crea un nuevo objeto a partir de uno existente se llama constructor copiador o de copias. El constructor de copias tiene sólo un argumento: una referencia constante a un objeto de la misma clase. Un constructor copiador de una clase complejo es:

complejo::complejo(const complejo &fuente)

{ real=fuente.real;imag=fuente.imag; }

Si no se incluye un constructor de copia, el compilador creará un constructor de copia por defecto. Este sistema funciona de un modo perfectamente satisfactorio en la mayoría de los casos, aunque en ocasiones puede producir dificultades. El constructor de copia por defecto inicializa cada elemento de datos del objeto a la izquierda del operador = al valor del elemento dato equivalente del objeto de la derecha del operador =. Cuando no hay punteros invocados, eso funciona bien. Sin embargo, cuando se utilizan punteros, el constructor de copia por defecto inicializará el valor de un elemento puntero de la izquierda del operador = al del elemento equivalente de la derecha del operador; es decir que los dos punteros apuntan en la misma dirección. Si ésta no es la situación que se desea, hay que escribir un constructor de copia

El constructor de una clase es un método estándar para inicializar los objetos de esa clase. Es una función que se ejecuta siempre al crear un objeto. Los constructores de una clase tienen siempre el nombre de la clase y no tiene ningún valor devuelto (ni siquiera void). Si el usuario no declara un constructor el sistema siempre crea un constructor por defecto sin argumentos. En el momento en el que el usuario define un constructor el constructor del sistema se elimina y es sustituido por el, o los, constructores definidos (al tratarse de un método más el constructor puede sobrecargarse).

Para inicializar un objeto basta con llamar a su constructor después de la palabra reservada new y asignarlo a una referencia declarada previamente. Un constructor es un método que se ejecuta cada vez que se crea un objeto, el propósito de este procedimiento es el de inicializar los datos del objeto. El nombre del constructor siempre es igual al nombre de la clase.

Se invoca automáticamente cuando new crea un objeto de esa clase.

• Los constructores se declaran en el momento de definir la clase.

class A {

             int x, y;

             A() { x=0; y=0; } // el constructor

           }



          A a= new A();

          a.Print(); // 0 0



• El constructor puede tener parámetros. En este caso, se deben colocar los argumentos respectivos al crear el objeto:

class A {

             int x, y;

            A(int ix, int iy)

           { x=ix; y=iy; } // el constructor

              …

           }



           A a= new A(1,2);

           a.Print(); // 1 2


           a= new A(); // error, hay que colocar

                              // los argumentos

               a.A(1,2); // error, no se puede

                              // invocar el constructor

• Se pueden colocar varios constructores. Durante la creación de un objeto, se invoca aquel que calza con los argumentos dados:

class A {

              int x, y;

             A() { x=0; y= 0; }

             A(int ix, int iy)

                { x=ix; y=iy; }

            A(A from)

              { x= from.x; y= from.y; }

     }

            A a1= new A();

            a1.Print(); // 0 0

            A a2= new A(1,2);

            a2.Print(); // 1 2

            A a3= new A(a2);

             a3.Print(); // 1 2
              
Definición:

Un destructor es un método que se invoca automáticamente cuando el objeto se destruye. JAVA no posee destructores, porque tiene recolección de basuras. C++ posee destructores. Un destructor es un método que es ejecutado cada vez que se destruye (se elimina de RAM) un objeto, el objetivo de este método es el de eliminar toda la memoria que ocupó un objeto.

Destructores

Siempre que se crea un objeto dentro de un programa, sino que también debe ser destruido. Si una clase tiene constructor para inicializar los miembros, también debe tener un destructor para liberar la memoria utilizada. Un destructor, como su nombre sugiere, destruye los valores del objeto creado por el constructor cuando el objeto sale del ámbito de aplicación.

Un destructor es también una función miembro cuyo nombre es el mismo nombre que el de una clase, sino que es precedida por tilde ('~ `).

Por ejemplo, el destructor de la clase vendedor se ~ vendedor (). Un destructor no tiene ningún argumento ni devuelve ningún valor. El compilador automáticamente las llamadas cuando los objetos se destruyen.

Los destructores son los métodos complementarios a los constructores. Tienen la misma sintaxis que en C++ y se escriben anteponiendo el carácter "~" al nombre de la clase a la que pertenecen ("~" se consigue manteniendo pulsada la tecla ALT y mientras se pulsan en el teclado numérico de la derecha los números 1, 2 y 6 en este orden).

No obstante, a pesar de su similitud con C++, no tienen el mismo significado que en este lenguaje y pueden inducir a errores con facilidad.

Los destructores son llamados por el recolector de basura cuando un objeto está a punto de ser borrado de memoria. Gracias a esto el objeto puede tomar acciones de finalización como por ejemplo liberar un recurso externo que tenga bloqueado (un fichero, un puerto de comunicaciones, un handle de una ventana Windows, etcétera).

Fíjese en que el recolector de basura no se está ejecutando todo el tiempo, sino que sólo se ejecuta periódicamente si lo configuramos así, cuando se agota la memoria disponible o cuando se lo indicamos explícitamente en nuestro programa, por lo que puede darse el caso de que termine la ejecución de nuestro programa y no se haya ejecutado el recolector de basura aún, con lo que el método finalize de aquellos objetos que no se hayan recolectado no se ejecutará jamás, de aquí la necesidad de hacer un uso muy cuidadoso de los destructores

En resumen es un método de clase que sirve para realizar ciertas operaciones necesarias al dejar de existir un objeto, por ejemplo, cerrar conexiones de una comunicación, cerrar ficheros, etc.

martes, 10 de agosto de 2010

Programacion Orientada a Objetos

Programación orientada a objetos
La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.
Introducción
Los objetos son entidades que combinan estado (atributo), comportamiento (método) e identidad:

•El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).

•El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él.

•La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).

Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.

Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.

La POO difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida.
La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan.

En la programación estructurada sólo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

Origen
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo. En este centro, se trabajaba en simulaciones de naves, que fueron confundidas por la explosión combinatoria de cómo las diversas cualidades de diferentes naves podían afectar unas a las otras. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamientos. Fueron refinados más tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "en marcha" (en tiempo de ejecución) en lugar de tener un sistema basado en programas estáticos.

La programación orientada a objetos tomó posición como el estilo de programación dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de programación C. Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario, para las cuales la programación orientada a objetos está particularmente bien adaptada. En este caso, se habla también de programación dirigida por eventos.

Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La adición de estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del código. Los lenguajes orientados a objetos "puros", por su parte, carecían de las características de las cuales muchos programadores habían venido a depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos, pero permitiendo algunas características imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparición de Internet, y a la implementación de la máquina virtual de Java en la mayoría de navegadores. PHP en su versión 5 se ha modificado, soporta una orientación completa a objetos, cumpliendo todas las características propias de la orientación a objetos.

Conceptos fundamentales
La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:
•Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

•Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables publicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de POO.

•Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.

•Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

•Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

•Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

•Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

•Estado interno: es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.

•Componentes de un objeto: atributos, identidad, relaciones y métodos.

•Identificación de un objeto: un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.
En comparación con un lenguaje imperativo, una "variable", no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.

Características de la POO
Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las características siguientes son las más importantes:

•Abstracción: denota las características esenciales de un objeto, donde se capturan sus comportamientos.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 estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.

•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. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

•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 especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas.

Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.

•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. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

•Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.

•Recolección de basura: la recolección de basura o garbage collector es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente.

Resumen
La programación orientada a objetos es un paradigma que utiliza objetos como elementos fundamentales en la construcción de la solución. Surge en los años 70. Un objeto es una abstracción de algún hecho o ente del mundo real que tiene atributos que representan sus características o propiedades y métodos que representan su comportamiento o acciones que realizan. Todas las propiedades y métodos comunes a los objetos se encapsulan o se agrupan en clases. ¨Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases.

Lenguajes orientados a objetos
Simula (1967) es aceptado como el primer lenguaje que posee las características principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulación, en donde los "objetos" son la representación de la información más importante.

Smalltalk (1972 a 1980) es posiblemente el ejemplo canónico, y con el que gran parte de la teoría de la programación orientada a objetos se ha desarrollado.
Muchos de los lenguajes de programación no son puramente orientados a objetos, sino que son híbridos que combinan la POO con otros paradigmas.
Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de programación clásico.

Un nuevo paso en la abstracción de paradigmas de programación es la Programación Orientada a Aspectos (POA). Aunque es todavía una metodología en estado de maduración, cada vez atrae a más investigadores e incluso proyectos comerciales en todo el mundo.

viernes, 26 de marzo de 2010

El Blog de Algoritmia

Hola!

Este espacio lo hemos dedicado al estuidio de Algoritmia, donde encontraras material que podra servirte como apoyo para el desarrollo de esta materia.

Es importante que si deseas que tu profesor tenga un seguimiento de los temas que vayas cubriendo, te inscribas en la lista de correos

para que tu profesor registre tus avances y seas tomado en cuenta para tus evaluaciones.


ETAPA I
Ejercicios con Acciones Elementales

Para cada uno de los siguientes enunciados, construye algoritmos que resuelvan el problema mediante el proceso secuencial de acciones elementales:

1. Calcula e informa el monto del IVA a pagar por un producto y su precio final.

2. Escribe un algoritmo que sume, reste, multiplique y divida dos números cualesquiera.

3. Escribe algoritmo que calcule el área de un rectángulo, considerando:
Área Rectángulo = lado1 * lado2 Área triángulo = (base * altura) / 2

4. Traduce la siguiente expresión matemática a una expresión algorítmica y utiliza la tabla de prioridad de operadores para calcular y mostrar el resultado de:





5. Escribe un algoritmo que calcule la velocidad de un proyectil, considerando:
Velocidad = espacio/tiempo Expresa el resultado en metros/segundo

6. Escribe un algoritmo que calcule el área y el volumen de un cilindro:
A = 2 PI r2 + (( 2 PI r ) * h) V = (PI r2) * h

regresa tus ejercicios a la dirección de correo para que sean considerados tus algoritmos.


ETAPA II
Ejercicios con Condicionales: Si y Selección


Para cada uno de los siguientes enunciados, construye algoritmos en pseudocódigo que resuelvan el problema mediante el secuenciamiento de acciones, el uso de condicionales y la validación de datos:

1. Solicita dos números enteros al usuario e indica si el primer número es divisible por el segundo.

2. Solicita dos números reales, verifica e informa si el mayor de los dos números es múltiplo del menor. Utiliza en tu respuesta la conversión explícita de datos (explicado en las guías de la materia).

3. Determina si un triángulo es equilátero, isósceles o escaleno, conociendo el tamaño sus tres lados a, b y c.

4. Pide una distancia en centímetros y escribe su equivalente en kilómetros, metros y centímetros. Debes escribir sólo las unidades necesarias, ejemplos:
- para 152 cm, la respuesta es: 1 metro con 52 centímetros
- para 1453 cm, la respuesta es: 1 kilómetro, 400 metros y 53 centímetros
- para 92 cm, la respuesta es: 92 centímetros

5. Escribe un algoritmo que describe las acciones que el conductor realiza ante el estado verde, amarillo o rojo de un semáforo. Toma en cuenta que ante una luz amarilla, el conductor acelerará si es imprudente, o desacelerará si es que es prudente. El usuario te suministrará como datos de entrada valores para las variables esImprudente, luzSemaforo, estaDetenido para que puedas saber cual es el comportamiento del conductor y cual es el estado del semáforo.

regresa tus ejercicios a la dirección de correo para que sean considerados tus algoritmos.

ETAPA III
Ejercicios con Ciclos: Para, Mientras y Repetir


Para cada uno de los siguientes enunciados, construye algoritmos en pseudocódigo que resuelvan el problema mediante el uso de estructuras iterativas como el Para, el Mientras o el Repetir, recuerda que también debes considerar las validaciones de datos que sean necesarias:

1. Escribir un algoritmo que solicite parejas de números (x,y), hasta que al menos un número de la pareja sea cero. El algoritmo debe contar la cantidad de parejas procesadas y calcular para cada una la media armónica, donde Media Armónica = 2,0 * x * y / (x + y)

2. Escribir un programa que pida un número al usuario y muestre la sumatoria de sus dígitos

3. Algoritmo que procese números enteros positivos y determine para cada número si es primo. El algoritmo procesará números hasta que identifique los primeros 12 números primos o procese 100 números, la condición que ocurra primero.

4. Construya un algoritmo en donde se calcule el interes. Una persona invierte $1,000.00 en una cuenta de ahorros, que reditua un interes del 5%. suponiendo que todo el interes se queda en deposito dentro de la cuenta, calcule e imprima la cantidad de dinero en la cuenta al final de cada año, durante 10 años. Para la determinación de estas cantidades utilice la formula siguiente: donde p = cantidad original invertida
r = es la tasa anual de interes
n = es el numero de años
a = es la cantidad en deposito al final del año n

5. Construya un algoritmo que imprima una tabla de los equivalentes binarios, octal y hexadecimal de los numeros decimales en el rango 1 hasta 256.

regresa tus ejercicios a la dirección de correo para que sean considerados tus algoritmos.
ETAPA IV
Ejercicios con Estructuras de Datos: Arreglos, Registros y Archivos


Para cada uno de los siguientes enunciados, construye procedimientos que a través de acciones o funciones resuelvan los problemas planteados. Recuerda que también debes considerar las validaciones de datos que sean necesarias y utilizar todas las herramientas algorítmicas vistas hasta el momento, incluyendo estructuras de datos que almacenen eficientemente la información de cada ejercicio. NO SE PUEDEN USAR VARIABLES GLOBALES.

1. Inicializar un arreglo con los montos en PESOS de las ventas mensuales para 2008 de 5 productos. Calcular e informar luego el promedio de ventas por mes y por producto.
2. Modificar la función Buscar_Lineal para que trabaje con una matriz de 3 x 2, busque y muestre todos los valores menores a un entero elem suministrado por el usuario. La función deberá retornar un string (o cadena) con todos los elementos encontrados separados por ‘–‘ o una cadena vacía en caso de que no se encuentre ningún elemento menor a elem en el arreglo.
3. Dado un arreglo con 1000 números enteros con valores entre -100 y 100, crea un algoritmo que indique cuál es el número (o los números) que más se repite(n). Utilice un su solución un arreglo auxiliar de contadores. Por ejemplo, si el arreglo contiene: -2, 4, 1, -2, 3, 1, la salida sería: -2 1.
4. Almacenar en un arreglo de registros el nombre, cédula, ingreso mensual durante un año y fecha de ingreso a la empresa de 10 empleados. A partir de esta información calcular y almacenar los años de antigüedad de cada empleado y el monto total que cobró en el año.
5. Dado un arreglo de registros con información de N compradores, se debe crear un archivo de salida llamado “Result” en donde se identifique a todos los clientes que hicieron compras por un valor en PESOS mayor al promedio general del arreglo. Del archivo Result deben mostrase luego los clientes que hicieron las compras de mayor monto en PESOS.
6. Dado un archivo con información de estudiantes y la nota definitiva obtenida en una materia, recorrerlo para indicar cuántos estudiantes cursaron la materia, cuántos aprobaron, cuántos reprobaron y quiénes se retiraron.
regresa tus ejercicios a la dirección de correo para que sean considerados tus algoritmos.

martes, 23 de marzo de 2010

Bienvenida

La academia de computación te da la mas cordial bienvenida a este espacio, las herramientas que pondremos a tu disposición corresponden a los contenidos temáticos de tus planes y programas de estudio, para hacer uso de este espacio es necesario que te integres a una lista de correo electrónico del administrador de este blog



para poder dar seguimiento a las asesorías y actividades de estos cursos.


E n l a c e s

Tutorial de programación en C++

http://www.programacionfacil.com/cpp/start

* esta es una liga para un tutorial de C++ donde podras realizar ejercicios de retroalimentación, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. C++juanperez

Tutorial de VRML
* esta es una liga para un tutorial de VRML donde podras realizar ejercicios de retroalimentación, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. VRMLjuanperez
cursocomputacionv3@gmail.com
Tutorial de Algoritmia
*esta es una liga para un tutorial de ALGORITMIA, donde podras realizar ejericicios de retroalimentacion, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. ALGOjuanperez