jueves, 20 de mayo de 2010

Ordenación Topológica



Algoritmo:

La ordenación topológica es un sistema de ordenamiento de un grafo acíclico, es decir, que no tiene ciclos; el cual consiste, en organizar de forma lineal ó en lista ascendente ó descendente, una serie de vértices en desorden, para lo cual primero debe de empezar de un "vértice padre" osea, un vértice sin predecesores, y después visitar a sus vecinos, después de que haya visitado a tos sus vecinos, pasa a analizar otro vértice, y de igual forma identifica todos sus vecinos, y así recursivamente, hasta que haya visitado a todos los vértices. En pocas palabras no se visitara un vértice, hasta que todos sus predecesores hayan sido visitados.
Después de que ya han sido visitados todos los vértices del grafo dirigido, se acomodan en lista ya sea d forma ascendente o descendente, según se requiera, y se acomodan en base a el coste de tiempo de los vértices.
Ejemplo: Este es un ejemplo común aplicado a la vida diaria, tan simple de como vestirse.
  • Arriba de cada vértice se muestra el coste de tiempo.
  • Distancia / Finalizacion

  • El algoritmo nos devuelve una lista enlazada, con los nodos del grafo, en orden decreciente en tiempo de finalizacion.



  • Una vez ya ordenado topologicamente se pueden ver las precedencias de las tareas:
  1. Ponerse la camisa antes que el cinturón y el jersey.
  2. Ponerse el pantalón antes que los zapatos y el cinturón.
  3. Ponerse los calcetines antes que los zapatos.

Pseudocódigo:

  1. Para cada vértice "u" que pertenezca al grafo hacer:
  2. El estado "u" No visitado, por que se comienza el algoritmo.
  3. El padre debe ser nulo, por que no tiene predecesores.
  4. El tiempo inicia de 0, obviamente por que se inicia el algoritmo.
  5. Después, si el estado = No visitado entonces: Se pone en marcha la ordenación topológica.
  6. El estado cambiara a Visitado por que ya fue visitado y analizados su s predecesores.
  7. Por lo tanto se le suma un 1 al tiempo por que es lo que tardo en ese vértice.
  8. Después para cada vértice adyacente hacer:
  9. Si el estado= No visitado entonces:
  10. El padre ahora sera ese vértice, ya que es el siguiente en orden.
  11. Cuando el estado del vértice = Terminado:
  12. Se suman los tiempos y este seria el coste total por el ordenamiento.
  13. Se inserta el resultado de la lista del algoritmo de ordenación topológico.

Análisis Asintótico:

En el análisis asintótico del algoritmo de ordenación topológica es costoso buscar vértice sin predecesores, varias veces.

La solución seria calcular previamente cuantos predecesores tiene cada vértice, almacenar el dato en un vector y actualizarlo siempre que se incorpore un nuevo vértice a la solución.

Coste de Tiempo:

  • Inicializacion:

Primer bucle: O(n) --- Quiere decir que va a depender del numero de vértices que tenga el grafo.

Segundo bucle: Examinacion de todas las aristas.

O(a+n) --- Para listas de adyacencia.

O(n^2) --- Para matriz de adyacencia.

  • Bucle Principal:

O(a+n) --- Para listas de adyacencia.

O(n^2) --- Para matriz de adyacencia.



Estructuras de datos:

  • Listas Enlazadas: Para este algoritmo de ordenación topológica, se usan las listas enlazadas, ya que la ordenación ya finalizada es una lista lineal simple con aristas que conectan de igual forma como se tenia antes.
  • Isomorfismo: Algo tiene que ver con ismorfismo, aunque no son grafos conexos y es acíclico el algoritmo permite alinear los vértices, pero conservando los enlaces entre cada uno de los vértices, es decir, solo se acomoda por prioridad, pero conserva su estructura.
  • Arboles: También se puede decir que esta relacionado con árboles ya que estos contienen nodos también llamados vértices, y los arboles pueden adoptar distintas formas de ordenamiento.
  • Búsqueda de profundidad (DFS): La ordenación topológica necesita del algoritmo de búsqueda DFS ya que necesita aplicarlo para ir explorando nodos, y al final llegar a un ordenamiento lineal.

Aplicaciones:

  • Puede ser aplicable a la reprecentacion de las fases de un proyecto , donde los vértices representen tareas, y las aristas relaciones temporales a ellas.
  • Evaluacion en la fase semántica de un compilador.
  • En la vida diaria lo podríamos aplicar en cosas simples por ejemplo, organizar los recibos de los servicios a pagar, ya que estos llegan en diferentes días, y difieren en precio y vencimiento, y al aplicarle este algoritmo, podríamos ordenarlos en orden de prioridad de vencimiento, para irlos pagando ordenadamente, sin que se nos pasen y sin que gastemos el dinero necesario para pagarlos.
  • También nos serviria para encontrar algun ciclo en un grafo e identificarlo.
  • También para encontrar algun problema o defecto de cierto algoritmo que se ordene topologicamente.

Autoevaluación

En lo personal este proyecto y los otros cuatro me han sido de gran ayuda ya que la mayoría de los temas vistos eran nuevos para mi, y me di cuenta que son de gran utilidad aplicarlos a la vida cotidiana; en lo que respecta a este de la ordenación topológica, pues me deja como enseñanza a los casos en los que puedo aplicar este algoritmo. Aprendí que para alguna tarea en particular hay una(s) antes de precedencia y otra(s) como consecuencia de esa tarea, y que al fin y al cabo están vinculadas unas con otras. En conclusión de ahora en adelante las cosas que tenga que hacer a las que se le pueda aplicar este algoritmo, me facilitara la tarea, y por lo tanto tiempo y esfuerzo.

Para cualquier duda ó pregunta que tengan dejen su comentario y yo les responderé los mas pronto posible.





martes, 18 de mayo de 2010

Puntos Extra "Algoritmo Dijkstra"



Algoritmo Dijkstra:

A Este algoritmo, tambien se le llama algoritmo del "Camino Minimo" ya que consiste en encontrar y tomar 1 de los "n" posibles caminos para llegar al objetivo, este camino elegido debe ser, el de menor costo, ya se a de tiempo, esfuerzo, distancia, etc, si s posible estas caracteristicas juntas en un solo camnino, pues el algoritmo seria más optimo aún.

Es común representar este algoritmo con un grafo, como se muestra en el ejemplo:
  • Se enumeran los vertices, para identificar cada punto.
  • Se enumeran las aristas conforme a su peso o coste.
  • Se inicia de un vertice base, o el vertice de salida.
  • Despues se fija un objetivo.
  • Luego el algoritmo empieza a reconocer todos posibles caminos a elegir, para comenzar.
  • Toma el camino de menor coste o más corto.
  • Así sucesivamente hasta llegar al punto final ó meta.
  • La suma de todo el coste total del el algoritmo, es por ende
    , el más optimo, ya que escogio la ruta que le convenia.














De que me sirve???


Si nos damos cuenta, este algoritmo es más común de lo que su nombre aparenta, ya que, lo utilizamos muy a menudo, si refleccionamos, a cualquier lado al que vamos pensamos detenidamente cual es la mejor manera de llegar a ese lugar, ya sea de como llegar mas rapido, o como llegar con menos gastos ó como llegar con el menor esfuerzo y si es posible uno solo que cumpla con todos estos requisitos.
Pero enfocado a mi carrera, este algoritmo es demaciado utlil, ya que hoy en dia podriamos decir que tiempo es dinero, es decir, el tiempo vale y mucho, entonces me es muy util dominar este algoritmo para aplicarlo a mi desarrollo laboral, ya que hay empresas que pagan muy bien por que el trabajo se haga a tiempo y que sea de calidad, y este algoritmo es una muy buena referencia para basarse en este aspecto.







Explicacion:
En el video se mustra un robot, que es una maquina deterministica que primero reconoce el lugar en el que se encuentra, despues, mediante una computadora ligada al robot, se le asignan puntos u objetivos a llegar, y el robot recorre el camino que mas le conviene en este caso el mas optimo.

lunes, 17 de mayo de 2010

Puntos Extra "Quick Sort"



Definición:


El sistema de ordenamiento rápido Quick Sort es un algoritmo que no solo nos sirve para organizar una lista de datos desorganizados, si no también, para optimizar el tiempo que se ocupa en realizar esta labor, ya que permite ordenar "n" elementos en un tiempo proporcional de O(n log n), lo cual es muy eficiente.


Algoritmo:


La función de este sistema de ordenamiento en una lista de datos desorganizada escoger un pivote, el cual puede ser elegido al azar, pero yo creo mas conveniente, escoger uno que este en medio, después se mandan todos los elementos con valor menor que el pivote al lado izquierdo y a todos los mayores del lado derecho:



elemento < pivote =" Izquierda

elemento > pivote = Derecha



Después empieza a ordenar del lado izquierdo a todos los elementos menores que el pivote de manera recursiva hasta que queden ordenados y lo mismo del lado derecho, hasta el punto en que ambos lados quedan e orden, y por consecuencia toda la lista.



Ejemplo: (Dar clic a la palabra ejemplo para verlo)



  • Es una lista desordenada la cual esta representadas por barras de diferentes tamaños.
  • El algoritmo primeramente escoje un pivote.
  • Después al resto de los elementos los evalúa, así que los que sean menores que el pivote los manda del lado izquierdo y a los mayores del lado derecho.
  • Hace de cada lado lo mismo recursivamnte hasta tenerlos en orden.
  • Y al final como cada lado del pivote esta ordenado entonces nos quedaría una lista en orden.

Para que me sirve???

Bueno a mi en lo personal, este algoritmo es muy útil, ya que me permite organizar datos de manera que puedo enlistar ordenadamente una lista de prioridades a hacer, lo cual me ahorra tiempo y esfuerzo, pero para mi carrera creo que es un algoritmo que me sera muy útil, ya que hay múltiples aplicaciones para este, como hacer programas que me organizen ciertos datos, por que depende de esos datos ordenados para obtener un resultado y si este resultado lo puedo obtener en un mejor tiempo pues me seria muy útil usarlo, un ejemplo seria, que al ingresar ciertos datos (en desorden) tenga que sacar la mediana (Estadística), entonces aquí vendría a aplicar muy bien este algoritmo.


Aplicacion a mi vida diaria:


Yo actualmente trabajo en unas cintas de música, Audio Scream, y aunque no lo creean este algoritmo "Quick Sort" es aplicable ahí, ya el equipo de aparatos con el que contamos difiere unos de otros en peso y tamaño, y los trasladamos por medio de un camión, contamos con aparatos suficientes para atender a 3 eventos al mismo tiempo:


Equipo:

*La lista del equipo esta ordenada con forme a su peso y tamaño*




Entonces, aveces es necesario bajar del camión solo los bajos ó nada mas una estructura o nada mas cable, etc. de manera que si metemos todo al camión desorganizadamente, aparte que no cabria bien, al momento de sacar algo en especifico, nos llevaría mas tiempo primero buscar donde esta y después mover todo lo que hay antes para poder sacarlo; con el algoritmo Quick Sort nos evitariamos todos esos contratiempos, de manera que antes de subir el equipo al camión, podríamos acomodarlo conforme su peso y tamaño, entre más pesado y grande más al fondo y entre entre más ligero y pequeño al frente. De esta manera sabemos que si queremos sacar un Bajo Cerwin-Vega sabríamos que esta al fondo ó si queremos sacar un rac de luces, este estará en medio, y así sabríamos que mover o bajar para poder llegar al objetivo.

Video





Explicacion:

El video muestra la comparacion del metodo Quick Sort vs. Bubble Sort (Ordenamiento Burbuja) que ambos son algoritmios de ordenamiento, pero claramente se muestra que el Quick Sort es mas eficiente, es decir, es más rapido y funcional, ya que el algoritmo Quick Sort hace la misma tarea en menos pasos, por lo que termina antes. En conclucion el Quick Sort es de los algoritmos mas optimos de ordenaminento.

domingo, 25 de abril de 2010

Proyecto #4 "Tablas de Dispersion"


Introducción:

Una Tabla de Dispersión, en pocas palabras, es aquella que asocia claves o llaves a determinados valores, atraves de una función Hash, también se les llaman Tablas Hash.
Trabajo en Equipo:
¿Que hice yo?
Mi trabajo individual mente dentro del equipo fue como el de los demás, checar información de distintas fuentes acerca del tema, tablas de dispersión, y compartirlo con mis compañeros para estar en el mismo canal y no desviarnos del tema, también cheque previemante todos los demás temas disponibles a exponer para tener una idea superficial de como iba a ser este proyecto 4, también le di estructura a la presentación de las diapositivas que después editamos, también trate de buscar los ejemplos mas entendibles y que creí que los demás compañeros de clase pudieran entender en nuestra clase.
¿Como me salio?
En mi opinión digo que me salio excelente, hay que ser optimista :D pero si creo que hicimos las cosas bien como equipo y cada quien individualmente trato de acoplarse a los demás para mejorar la clase que vamos a dar.
¿En que aspectos estoy bien y en que aspectos puedo mejorar?
Creo que estoy bien tratando de hacer las cosas de la mejor manera posible, ya que quiero obtener todos los puntos completos de los proyectos restantes y obtener la calificación mejor que se pueda, también yo creo que estoy satisfecho conmigo mismo por que no solo me limite en buscar lo que sea para hacer la clase, si no que busque lo que mejor se entendiera para ofrecer una buena clase.
Yo creo que en los aspectos que debería de mejorar seria, el de dedicar un poco mas de tiempo a investigar a cosas que van mas aya de lo que se ve en clase, no solo para que me vaya bien en la materia, si no también para enriquecerme de mas conocimientos que me ayuden con mi formación profesional.
Ayudo a los demás o me apoyo en ellos?
Yo creo que hago de ambos aspectos, ayudo a mis compañeros yo creo que si por que por ejemplo para la clase yo investigue en paginas que se explica sobre el tema pero en ingles y que yo si le entiendo y explicarle a mis compañeros de lo que dice, también les decía como era una mejor forma de explicar lo que ellos iban a dar de clase, osea de su parte de exposición, entre otras; pero también yo me apoyo en ellos para saber si estoy bien en lo que digo o de lo que investigue para la clase, en pocas palabras ambas son necesarias para una retroalimentación entre los cuatro y ayudarnos todos para hacer mejor las cosas, como el dicho "todos para uno y uno para todos" o "4 cabezas piensan mejor que una" jajaja.
¿Quien se encarga de coordinar el trabajo? ¿Que papel tomo yo?
En mi opinión yo soy el que coordina, pero creo que es mejor decir que yo era el medio de comunicacion entre el equipo por que yo me ponía en contacto para ponernos de acuerdo en juntarnos para hacer este proyecto, del cual todos necesitamos la mejor calificación, y por eso también me esfuerzo en que todo salga bien y poder ofrecer una buena presentación, en fin espero obtener 4 en este proyecto y en los que restan.
Presentación:

domingo, 14 de marzo de 2010

Proyecto #3 - Computo de Factoriales

Iteración:



La iteración en pocas palabras es la repetición, y en este caso es la repetición del algoritmo las veces necesarias o que se requiera para la solución del algoritmo.




Recursion:

Esta propiedad consiste en sintetizar un algoritmo que no se sabe su resolucion, a partes mas simples las cuales si se puedan resolver, es decir, partir de un caso base, que es lo que si sabemos resolver y de ahí partir para encontrar la solución a nuestro algoritmo.





















Recomendaciones:


Es muy útil usar la iteración cuando el algoritmo es repetitivo, es recomendable usar las estructuras for y while en la creación del pseudocódigo:

For → Cuando se sabe el numero de veces a repetir el algoritmo.
While → Cuando no se sabe el numero de veces a repetir el algoritmo.

La Recursion es muy útil cuando no se sabe la resolución de un algoritmo y es necesario simplificarlo para poder resolverlo a partir de un caso base.

Si no es necesario usar la recursion en la resolucion de algoritmos es preferible omitirmosm ya que de lo contrario haria un algoritmo que es facil de resolver a uno con un monton de pasos inesesarios para su solucion, lo cual ocuparia mas memoria de la computadora y seria contraproducente.


Trabajo en Grupo:

Lo que en equipo hicimos fue dividirnos el trabajo para no hacerlo tan pesado y que cada integrante investigara bien lo que se iba a exponer y ya después que cada quien explicara y a los demás que fue lo que investigo y que así todos estuviéramos enterados del trabajo de cada quien.




Trabajo Individual:

Lo que yo hice fue investigar como hacer un pseudocodigo iterativo del problema del factorial y después lo pase a un compilador para correrlo y hacerlo funcionar, también investigué de la complejidad del algoritmo, y todo lo respalde con mis compañeros de equipo para editar las diapositivas.





Diapositivas:


Bloggs del Equipo:



jueves, 4 de marzo de 2010

Proyecto #2


Optimización




Problema:


"El alcalde de San Nico va a recibir en nuestro municipio al presidente de México en la plaza municipal, para lo que dicha zona debe estar presentable para ese día, digamos que los días restantes para su llegada son 3, entonces el alcalde quiere encontrar la manera mas óptima para dejar esa zona muy bien presentable para tal fecha"


Supongamos que el alcalde cuenta con un presupuesto de $1,166,666.6 para una semana por lo que a los correspondientes 3 días son $500,000 ; el cual es sacado de los impuestos que pagan los ciudadanos; y los aspectos para arreglar en la zona son:

1. Basura
2. Pintura
3.Mantenimiento


El área del terreno a arreglarse es de 1800m cuadrados:





El alcalde cuenta con 3 compañias que se encargan de realizar el trabajo que se requiere y son las siguientes;


Opción 1:

Ellos se tardan 5 días en realizar este trabajo y cobran un 150% mas por cada día menos que se aplace la fecha. La ponderación de lo que cobran por cada aspecto es:

1. Basura → $25 c/m2
2. Pintura → $100 c/m2
3.Mantenimiento → $80 c/m2

f(x)=((25x+100x+80x)•3)+z

si z=25x+100x+80x


Opción 2

Ellos se acomodan al limite de tiempo que el cliente necesita para el trabajo. La ponderación de lo que cobran por cada aspecto es:

1. Basura → $35 c/m2
2. Pintura → $90 c/m2
3. Mantenimiento → $50 c/m2

f(x)=35x+90x+50x


Opción 3

Ellos tradan 2 dias en hacer su trabaj y hacen un descuento del 5% por cada dia de plazo que se le den de mas.

1. Basura → $60 c/m2
2. Pintura → $110c/m2
3. Mantenimiento → $70 c/m2

f(x)=60x+110x+70x - (z(0.05))

si z=60x+110x+70x



¿Cual sera la manera mas óptima para encargar el trabajo?

Como el área =1800m2 entonces los costos de cada una de las empresas son:



Opción 1

1. Basura → $202,500
2. Pintura → $810,000
3.Mantenimiento → $144,000

=$1,156,500 + 300%
Total =$4,626,000


Opción 2

1. Basura → $63,500
2. Pintura → $162,000
3.Mantenimiento → $90,000

Total=$169,200


Opción 3

1. Basura → $108,000
2. Pintura → $198,000
3.Mantenimiento → $126,000

=$432,000 - 5%
Total=$410,400

Complejidad Asintótica

La manera mas óptima seria encontrar una cota inferior a la del presupuesto, pero entre mas alejada se encuentre de esta sera menos el costo, por lo tanto, mas óptimo.






En este caso como se observa en la gráfica la cota óptima a elegir es la opción 2 de color azul, ya que cumple con los requisitos para optimizar el trabajo, se encuentra debajo de la cota de ingreso (verde) y es también la cota mas baja, por lo tanto la menos costosa.


Este problema de decisión pertenece a la clase "P", ya que la elección no es muy complicada y las ecuaciones de cada opción son lineales, es por eso que no es muy difícil su solución.
Aparte estos algoritmos no pertenecen a un problema NP-difícil, por que para empezar como no es un problema NP por lo tanto no puede ser NP-duro.



Esta es una representación del algoritmo:


*Este no es un diagrama de flujo, solo es una representación del algoritmo en diagrama simple.



Referencias :

http://www.google.com.mx/
http://es.wikipedia.org/wiki/NP-hard
http://es.wikipedia.org/wiki/Clases_de_complejidad_P_y_NP
http://es.wikipedia.org/wiki/Cota_superior_asint%C3%B3tica
http://es.wikipedia.org/wiki/Optimizaci%C3%B3n_de_software
http://maps.google.com.mx/?gclid=CKvjnPWen6ACFSpeagodMlwzag
http://es.wikipedia.org/wiki/Problema_de_decisi%C3%B3n



viernes, 19 de febrero de 2010

Proyecto #1 "Algoritmos Computacionales Simples"

Problema:

5. Elegir entre posibles objetos de valor cuáles llevar a un viaje en una
mochila con capacidad límitada.

Ejemplo#1

Algoritmo:

1. Inicio

2. Se declaran las constantes y variables (c, Ipod=500, Lap=2000, Celular=500, Diccionario=800, Calzado=1000, Ropa=3000, Joyeria=1000, Usb=200, Grabadora=3000, TV=5000, Xbox=3000)

3. Pedir d segun la funcion (d=suma de n articulos)

4. Asiganar d (Xbox, Ipod, Celular)

5. Evaluar condicion (d<=6000)

6. Imprimir (Verdadero)

7. Fin

video

Ejemplo#2

Algoritmo:

1. Inicio

2. Declarar las constantes y variables (c, Ipod=500, Lap=2000, Celular=500, Diccionario=800, Calzado=1000, Ropa=3000, Joyeria=1000, Usb=200, Grabadora=3000, TV=5000, Xbox=3000)

3. Pedir d segun la funcion (d=suma de n articulos)

4. Asiganar d (TV, Xbox, Ropa, Usb, Lap, Calzado)

5. Evaluar condicion (d<=6000)

6. Imprimir (Falso)

7. Asignar d nuevamente (Ropa, Lap)

8. Evaluar condicion (d<=6000)

9. Imprimir (verdadero)

10. Falso

video

*En estos videos vienen explicados paso a paso los diagramas de flujo.

martes, 9 de febrero de 2010

Sistema Binario

El sistema de numeracion binario es el mas simple en la notacion posicional, en el solo se usan dos digitos el 1 y 0; una razon por la que se usa este sistema en la computacion es sencillamente por que el 1 reprecenta el encendido y el 0 apagado.


A la representacion de un numero binario se le llama bit y al conjunto de 8 bits se le llama bytes.


Ejemplo:


111 = Contiene 3 bits
01001 = Contiene 5 bits
10111101 = Contiene 8 bits o 1 byte





Conversion Decimal-Binario

Para expresar un numero decimal a uno binario, depende de la cantidad que tenemos en decimales, y de ahi sabemos cuantas posiciones deve de tener dicho numero en binario y nos tenemos que basar en las potencias de 2, como lo musestra la siguiente tabla:








Ejemplo:


Se divide el numero decimal entre la mayor potencia en la que quepa y asi sucesivamente hasta dejar en 0 el residuo, se representara con el 1 si el numero cabe en la divicion, y con el 0 si no cabe. (El orden de la posicion de los numeros binarios es mayor hacia la izquierda y menor hacia la derecha)



Decimal → 7 Binario → 111 = 2^2 + 2^1 + 2^0 = 4 + 2 + 1 = 7
Decimal → 25 Binario → 11001 = 2^4 + 2^3 + 2^2 + 2^1 + 2^0 = 16 + 8 + 0 + 0 + 1 = 25




Tambien hay otro metodo mas simple para mi gusto para hacer conversiones de decimales a binario:





Fuentes:

http://es.wikipedia.org/wiki/Potencia_de_dos
http://www.fismat.umich.mx/~elizalde/curso/node112.html

Capacidades de Almacenamiento

Que onda raza, les voy a poner una lista de las capacidades de memoria que hay, se van a quedar algunos con la boca abierta, es interesante, chequenlo, ahí les dejo de todos modos, el link de algunas paginas muy buenas de info sobre este tema. A y recuerden que el bit es la unidad mínima de almacenamiento.




1 Bit (es la unidad mínima de almacenamiento, 0/1)
8 Bits = 1 Byte
1024 Bytes = 1 Kilobyte (un archivo de texto plano, 20 kb)
1024 Kilobytes = 1 Megabyte (un mp3, 3 mb) 2^10
1024 Megabytes = 1 Gigabyte (una película en DivX, 1 gb) 2^20
1024 Gigabytes = 1 Terabyte (800 películas, 1 tb) 2^30
1024 Terabytes = 1 Petabyte (toda la información de Google, entre 1 y 2 petabytes) 2^40
1024 Petabytes = 1 Exabyte (Internet ocupa entre 100 y 300 Exabytes) 2^50
1024 Exabytes = 1 Zettabyte (a partir de aqui no existen comparativas reales)
1024 Zettabytes = 1 YottaByte
1024 YottaBytes = 1 Brontobyte
1024 Brontobytes = 1 GeopByte
1024 GeopBytes = 1 Saganbyte
1024 Saganbytes = 1 Jotabyte











Fuentes:



http://gonzo.teoriza.com/kilobyte-megabyte-gigabyte-terabyte-petabyte-exabyte-zettabyte-zottabyte-brontobyte

http://www.t1shopper.com/tools/calculate/

http://www.taringa.net/posts/info/1260430/Bytes,-KiloBytes,-Megabytes,-GigaBytes,-TeraBytes-y-mas!.html

Codificacion y Diagrama de flujo

Codificacion:




Todo algoritmo si se quiere hacer funcionar como herramienta, como por ejemplo un programa se necesita expresar en forma de un código independiente a la del lenguaje de programacion, para que no sea dependiente de uno solo; ejemplo:




#include
#include
int main()
{

float pre, pag, cam;
printf("Introdusca el precio del producto desaeado:$");
scanf("%f", &pre);
printf("Introdusca la cantidad con la que pagara el cliente:$");
scanf("%f", &pag);
cam= pag - pre;
printf("Al cliente le sobran:$%.2f",cam);
getche();
}




Diagrama de Flujo:



Esta misma codificacion se puede representar en forma de diagrama, y permite una mejor lectura de la codificacion; ejemplo:

pre = precio del producto
pag = pago del cliente
cam = cambio


* El material usado en esta entrada fue creado totalmente por mi, basando me en lo que aprendí en el libro de "Fundamentos de programacion: Piensa en C"

Algoritmos

Le llamamos Algoritmo a todo aquello que requiera ejecutar una serie de pasos para llegar a determinado resultado o fin. Para todo usamos algoritmos desde simples cosas como hacernos de desayunar, hasta otras mas complejas como resolver un problema de calculo integral, todo lleva su metodología, es decir, la forma en que se hacen las cosas.
Aquí les dejo un ejemplo de un algoritmo cotidiano:
Problema: Hacerme de desayunar Hot-Cakes.
Algoritmo:
1. Conseguir los ingredientes. (Harina, leche, huevos, mantequilla, mermelada y miel)
2. Mezclar 1 huevo, 3/4 de taza de leche, 1 taza de harina y 1 cucharada de mantequilla en un recipiente hondo.
3. Batir esos ingredientes hasta obtener una mezcla algo espesa.
4. Poner a calentar un sartén con un poco de mantequilla.
5. Una ves caliente, agregar algo del batido en el sartén.
6. Cuando la mezcla empiece a tomar forma de las orillas dar vuelta rápidamente.
7. Esperar a que el segundo lado quede igual de firme que el primero.
8. Ya terminados servirlos en un plato y agregarle miel, mantequilla y/o mermelada al gusto.
9. Listo para desayunar.

sábado, 6 de febrero de 2010

Presentación

Presentación

Que onda! Soy Ricardo Tovar Briones y quiero empezar mi blogg contándoles algo de mi vida personal







•Nombre: Ricardo Tovar Briones;
•Cumple: 07-Sep;
•Vivo: San Nicolás de los Garza, N.L.
•Naci: En Monterrey en 1992;
•Equipo: Rayados
•Carrera: IAS en FIME (2º) e Ingles en el Centro de Idiomas, FyL (5º);
*Si a alguien tiene alguna duda en Ingles, pues nada mas es de coordinarnos y les puedo echar una mano en algunas dudas*
•Clase: Algoritmos Computacionales (v1 - v3)
•Profesor (a): Elisa Schaeffer
•Prepa: #7 ote.
•Trabajo: Audio Scream, son unas cintas de música y luces;
info: 8332-5080 o 8330-2175
•Hobbies: Me gusta hacer carne asada o discada, jugar fútbol, video juegos, un rato en la compu, salir con la raza...
•Numero: 7
•Color: Azul




Bueno eso es algo breve nada mas para que se den una idea, comoquiera soy muy social ahí por si quieren cotorrear luego. saludos bye
















....................................................atte. \\RiCkY//