Semana 7

Esta semana estuvimos viendo lo que es el patrón observador, y como hacer unas buenas pruebas del sistema.

Ultima semana

Programación orientada a objetos.

Es un paradigma el cual utiliza objetos como principal recurso para construir la solución. Debemos pensar en resolver problemas pequeños para resolver uno mas grande.

Conceptos básicos:

Principalmente se basa en:

Abstracción: Son las características esenciales, las cuales lo hacen diferente de los demás objetos, con relación a la perspectiva del observador.

Encapsulación: Es cuando ocultas la complejidad del problema, es decir, escondemos los detalles de como funciona para que el usuario solo “use” la interfaz.

Jerarquía: Organización de las abstracciones. Organiza la complejidad.

Clase: Es una abstracción que describe un grupo de objetos.

Objeto: representación de una entidad, ya sea de tipo software, física o conceptual.

Un objeto tiene las siguientes características: tangible, un modelo de la realidad, algo hacia lo que se dirige un pensamiento o una acción. Tiene un estado, posibles condiciones; un comportamiento, actúa y reacciona; y una identidad, que lo distinguen de los demás.

Modularidad: Permite dividir una aplicación en partes mas pequeñas, las cuales deben ser independientes tanto como sea posible.

Herencia: Permite que reutilicemos el código de la clase y hagamos una extensión de métodos en otras clases de otras clases.

Polimorfismo: Es la habilidad que adquieren los objetos de responder en forma diferente al mismo mensaje, es decir, es una función compartida que reacciona diferente dependiendo de quien la manda a llamar.

Diagramas UML

diag

Este tipo solo se puede utilizar en sistemas con gran cantidad de software.

Sus objetivos son:

-Imponer un estándar mundial.

-Lo pueden usar todos los modeladores.

-Simplicidad.

-Lenguaje universal.

Sus elementos principales son:

-Bloques principales: elementos, abstracciones; relaciones, ligar elementos entre sí; diagramas, agrupar colecciones de elementos.

-Reglas: dicen como deben combinarse estos bloques.

-Mecanismos comunes.

______________________________________________

Encapsulació en UML

    Símbolo                               Indica
–                                Privado (oculto)

         +                               Público (visible)

                  #                         Protegido (semi-oculto)

_______________________________________________

¡Semana 9!

Esta semana ha sido un poco extraña, pues hemos visto demasiado.

Tipos de pasos de valores en las funciones:

Retomando el tema anterior de funciones, existen dos tipos de «invocar» funciones:

Paso por valor:se efectúa una copia del valor del argumento y se pasa a la función. Estas modificaciones no afectan al valor original de la variable del «llamador».

Paso por referencia: El «llamador» permite que la función modifique el valor original de la variable.

Pero en lo que más nos enfocamos fue en arreglos, los cuales son un grupo de posiciones en la memoria. El arreglo se declara de la siguiente manera: el tipo de dato que ocuparemos, el nombre que llevara este y el espacio en memoria que queremos almacenar (esto último entre corchetes [ ]).

Ejemplo:

int a [5]    <- Donde se guardaran 6 espacios en la memoria, ya que el primer elemento de cualquier arreglo será 0; se guardaran elementos de tipo entero.

Ejemplos utilizando arreglos.

#include <stdio.h>
int main () {
int a[5]; /* Aquí le asignamos un valor directamente
a cada elemento del arreglo llamado a */
a[0]=2;
printf(«%d \n», a[0]);

return 0;

}

 

_______________________________________-

#include <stdio.h>

int main()  {

int i, b[3]; /* Aquí le vamos asignando el valor 

de nuestro contador */
for (i=0; i<=3; i++) {
b[i]=i;
printf(«%d \n», b[i]);
}

return 0;
}

 

 

 

 

Semana 8

Hace mucho que no escribo algo, pues hace dos semanas fue el primer parcial de la materia.

Esta semana hemos visto algo que nos facilitara la resolución a todos los problemas que queramos resolver por medio de la programación: los módulos son piezas pequeñas para resolver problemas grandes.

En el lenguaje C estos módulos se llaman funciones.

La persona que hace el programa, es decir, el programador se encarga de definir tareas específicas con ayuda de unas funciones  que se utilizan en diferentes puntos de un programa.

Estas funciones se llaman por medio de otras funciones especializadas en eso. Las funciones que llaman trabajan como un jefe que llama a un empleado, ósea a nuestra función llamada.

Las funciones se utilizan escribiendo el nombre de la función seguido de un paréntesis donde pondremos los argumentos separados por comas, cerrando paréntesis. Se debe de regresar un valor de una función ya que si no se hace, puede llevar a errores.

Se tienen que poner las declaraciones que contiene la función, si esta no contiene nada entonces se usa  void, que indica que una función no devolverá un valor.

Ejemplo de uso de la función:

#include <stdio.h>

#include <math.h>

 

int funcion(int num1, int num2, int suma)

{

                suma=num1+num2;

                return suma;

}

int main(void)

{

                int num1=10, num2=5, resultado, suma;

                resultado=funcion(num1, num2, suma);

                printf(«El resultado es: %d \n», resultado);

}

Semana 5

Esta semana aplicamos los conocimientos obtenidos hasta ahora, desde hacer una simple serie de instrucciones, hasta elaborar diagramas de flujo para condicionales.

Un ejemplo seria este ejercicio:

  1. Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobará si su promedio de tres calificaciones es mayor o igual a 7; reprueba en caso contrario.

ALGORITMO:

1)       Definir variables: promedio, calificación1, calificacion2, calificacion3.

2)       Solicitar valores al usuario: calificacion1, calificacion2, calificacion3.

3)       Calcular: promedio=(calificacion1+calificacion2+calificacion3)/3.0

4)       Imprimir “Alumno aprobado” si promedio=>70; sino “Alumno no aprobado”

Aquí observamos que nuestro algoritmo nos indica que pasos debemos seguir para poder realizar nuestro código.

#include <stdio.h>      <-la biblioteca que utilizaremos para nuestro programa

int main () {

int calificacion1, calificacion2, calificacion3;  <- variables que vamos a usar, int-números enteros.

float promedio;  <-variable que contendrá números flotantes (punto decimal)

printf(«Ingresa las 3 calificaciones:/n «); <- los valores que solicitaremos al usuario

scanf(«%d%d%d»,&calificacion1,&calificacion2,&calificacion3);  <-donde guardaremos los valores.

promedio=(calificacion1+calificacion2+calificacion3)/3.0;  <- operación

if(promedio>=70) {                  <-condicional

printf(«Alumno aprobado»);   <- si se cumple la condicional

}

else {

printf(«Alumno no aprobado»);   <- sino se cumple

}

return 0;

}

Y las pruebas de escritorio que se hacen en papel.

Voy a hacerlas en una tabla para que se den una idea de lo que son:

Datos If Else
(70+70+70)/3=210/3=70 “Alumno aprobado.”
(50+40+80)/3=170/3=56.6666.. “Alumno no aprobado.”

Y por último el diagrama de flujo.

Imagen

Semana 4

Esta semana comenzamos con un tema llamado pruebas de escritorio que consiste en determinar si la lógica corresponde al resultado deseado antes de hacerlo en la computadora, osea primero sustituiremos los datos en papel. Por ejemplo:

 

5*(x+y)-4*y/(z+6)  donde x=2, y=3 y z=6.

 

Resolveremos lo siguiente con la jerarquía de operadores, primero los paréntesis desde la izquierda.

 

5*(2+3)-4*y/(6+6) => 5*(5)-4*y/(12). Continuando con la multiplicación comenzando desde la izquierda.

 

25-4*3/12 => 25-12/12. Ahora las divisiones.

 

25-1 => 24.

El diagrama de flujo que es nuestra representación grafica de nuestro algoritmo, utilizando símbolos definidos para representar ciertas acciones.

Flechas/conectores: nos sirven para conectar los demás símbolos y dar seguimiento a nuestro diagrama.

Elipses/óvalos: nos indican donde comienza o termina el diagrama.

Rectángulos: son los procesos u operaciones que realizamos en los algoritmos.

Trapezoide: entrada y salida de datos.

Rombo: toma de decisiones.

 Vimos como pasar/reescribir nuestros algoritmos en un código que la computadora nos pueda entender.

Imagen

Semana 3

Esta semana hemos visto la jerarquía de operadores, los tipos de operadores, algunas bibliotecas, tipos de datos.

Existen diferentes tipos de datos como los float, string, int, boolean, char. que representan números enteros, caracteres, números reales etc.

Los operadores:

= Aritméticos: + (suma), – (resta), / (división), * (multiplicación), ^ (potencia), MOD (residuo).

=Racionales: == (igual), < (menor que), > (mayor que), =< (menor o igual a), => (mayor o igual a), != (diferente de).

=Lógicos: NOT, AND, OR.

Una biblioteca llamada <iostream.h> que se usa para el flujo de datos al sistema.

Todo esto es en lenguaje C.

 

Semana 2 ·o·!!!

En esta semana ha habido cambios en la materia de Introducción a la Programación, pues se está volviendo, personalmente, un poquitín mas pesada pues nos están enseñando como está compuesto un lenguaje de programación, no hemos hecho cosas tan complejas como que la computadora imprima nuestro nombre, días que hemos vivido, ¡ llegamos hasta sacar un link de un texto!, todo esto gracias a operaciones simples como la suma o multiplicación, conocimos que son las variables y cómo manejarlas, las constantes, como usar el signo «+» (mas) para concatenar, las comillas (simples o dobles), extraer un símbolo, una cadena de texto, como encontrar un texto, palabra o caracter de determinado texto, con todo esto ya podemos extraer links de un código de una página web, esto es realmente interesante.

Esperare con ansias que es lo que me espera la semana que viene, ya que comenzamos con un pequeño vistazo a las funciones.

Investigación UML

¿Qué es?

“El Lenguaje Unificado de Modelado preescribe un conjunto de notaciones y diagramas estándar para modelar sistemas orientados a objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. Mientras que ha habido muchas notaciones y métodos usados para el diseño orientado a objetos, ahora los modeladores sólo tienen que aprender una única notación”

Un lenguaje modelado tiene vistas, símbolos, reglas, diagramas.

Las vistas son las que muestran diferentes aspectos de nuestro sistema, esta no es grafica pero un conjunto de estos diagramas forman una “fotografía” completa del sistema.

Un diagrama son las graficas que describen el contenido de una vista.

Los símbolos son los conceptos utilizados en los diagramas.

Las reglas aportan comentarios extras, información o semántica acerca del elemento de modelo.

Las fases de desarrollo

Análisis de requerimientos: a través del modelado de casos de uso, los actores externos que tienen interés en el sistema son modelados con la funcionalidad que ellos requieren del sistema.

Análisis: abarca las abstracciones (clases y objetos) y mecanismos que están presentes en el dominio del problema.

Diseño: el resultado del análisis es extendido  a una solución técnica. Se agregan clases que proveen de la infraestructura técnica como clases para interfaces de usuario, bases de datos, comunicaciones, etc.

Programación: las clases de diseño son convertidas en un código en un lenguaje de programación orientado a objetos.

Pruebas: Las pruebas de unidades se realizan a clases individuales o a un grupo de clases. Las pruebas de integración integran componentes y clases en orden para verificar que se ejecutan como se especificó. Las pruebas de sistema ven al sistema como una «caja negra»  y validan que el sistema tenga la funcionalidad final que le usuario final espera. Las pruebas de aceptación conducidas por el cliente verifican que el sistema satisface los requerimientos y son similares a las pruebas de sistema.

Caja negra: Aquel elemento que es estudiado desde el punto de vista de las entradas que recibe y las salidas o respuestas que produce, sin tener en cuenta su funcionamiento interno.

Fuente:  http://profesores.fi-b.unam.mx/carlos/aydoo/uml.html

Semana 1

ImagenNo seré una gran escritora, tampoco me daré a entender muy bien pero haré lo mejor que pueda.

Esta semana he confirmado el reto que tengo delante, pues a lo largo de mis estudios universitarios habrá personas que me apoyen y habrá otras que me quieran estancar.

Ahora voy a redactar lo que he visto de una materia de la cual casi no conozco: programación. Para mi fortuna me han dado una breve introducción en el tema. De primera estancia fue una presentación de cada persona que estaba en el salón; seguida de una serie de «instrucciones» que se llaman «pasos para la resolución de un problema» para poder resolver un problema lo más acertado posible, los cuales consisten en:

  • saber cual es el problema a resolver.
  • el conocimiento que tienes sobre el problema.
  • opciones; ya sea investigando y evaluando lo fiables que podrían ser.
  • descartar ideas. Esto puede hacerse con puntos a favor y en contra de cada respuesta, esto se hace para llegar a una mejor solución del problema.
  • elaborar una lista que mencione paso a paso lo que hay que hacer para llegar a dicha solución, en base al conocimiento, y la idea debe ser clara.
  • comprobar si nuestro resultado fue satisfactorio y correcto.

Tenemos distintos tipos de problemas, como los problemas heurísticos que se resuelven con los conocimientos y experiencias obtenidos a lo largo del tiempo; los problemas con soluciones algorítmicas que se resuelven con acciones generales que contienen subacciones.

Algunos ejemplos de la vida cotidiana que los podemos resolver de una manera algorítmica seria cada vez que hacemos un pastel pues si una no sabe sobre cocina debe seguir leyendo para saber como se prepara cada cosa, ya sea cosas simples como incorporar ingredientes, batir a punto de turrón o cosas por el estilo; otro seria el simple hecho de salir a una fiesta, siguiendo un rumbo, cada cosa que hacemos lleva un proceso el cual no le prestamos atención pues es tan cotidiano cada movimiento que haces que ya no lo percibimos de manera especial.

En cuanto a la heurística que, como ya dije, es basada en conocimientos y experiencias, estas podrían ser representadas como una toma de decisiones que es en prueba y error, como seria inscribirse  en algún curso, ya que inviertes en algo extra para que puedas obtener algo a cambio pero eso depende de una institución; otro ejemplo seria descansar ya k si no tienes un buen descanso tu cerebro no realizara sus funciones óptimamente.

algunos problemas con los que nos encontramos en las empresas y microempresas, las facturas salen mas fácil realizar las operaciones en Excel que hacerlas manualmente con calculadora, ya que reducimos el tiempo y tiene una plantilla; el e-mail es mas rápido para comunicarse con parientes lejanos sin salir de la casa, es mas practico y mas rápido, este seria de forma algorítmica pues necesitas ingresar a tu cuenta escribiendo el usuario y contraseña, ya estando dentro puedes ir a redactar, escribir, etc.; para el trabajo de los DJ o grupos de sonido, ya usar su lista de reproducción en una computadora en lugar de ir cambiando discos, esto es algo heurístico pues puede que se adapten a la nueva forma de hacerlo y si lo hacen seria cosa de actualizar la lista de música.

En conclusión para este tema que, en lo personal, puede ser uno de los más importantes a llevar en práctica  desde ahora son  estos pasos porque reducen el margen de error y ayudan a que el programa sea más rápido y más eficiente. Son importantes todos y cada uno de los pasos pues identificando el problema es lo mas importante ya que si no sabes que buscas no sabes el procedimiento a seguir; entender el problema a base de comentarios, describir lo que conoces del problema mismo, lo que quieres obtener con la solución del problema; soluciones alternativas, no solo irnos por una solución, ser de una mente mas abierta y creativa para ir descubriendo la opción mas adecuada a lo que buscamos para tener un resultado mas cercano a lo que esperamos por medio de los pros y contras; ya que tienes tu solución debes de responder el porque la escogiste para afirmar tu elección; debes hacer la lista porque (como he dicho antes) como son acciones muy cotidianas ya no te das cuenta de cuantos pasos debes realizar antes que llevarlo acabo, no siempre es una tarea sencilla; al final tenemos la solución, si es la que esperabas muy bien, pero si no lo fue, ¿cómo puedes cambiar esa solución para mejorarla?.

Muy aparte de esto es una pequeña introducción a lo que nos espera en un futuro no tan lejano; la gramática que llevaremos al paso del tiempo para poder comunicarnos con una computadora al darle ordenes que quisiéramos que hiciera.

Esto fue lo que vi en una semana.

By: Fanny Garrido