En esta ocasión les quiero compartir este trabajo que me toco hacer como requisito en la materia de Sistemas Operativos 1. consiste en desarrollar un simulador o cualquier aplicación que implemente estos algoritmos para funcionamientos. yo lo que hice fue desarrollar un reproductor multimedia que utiliza estos dos algoritmos, claro algo sencillo pero es chevere.
La funcionalidad de estos algoritmos se basa en lo siguiente:
Algoritmo Tiempo mas corto: lo que hace es mirar entre todos los procesos y ver cual tiene menor tiempo de duración entonces ira ejecutando el que tenga menor tiempo de duración. para un reproductor que implementa esta funcionalidad solo consiste en leer el tiempo de duración de la canción que se selecciono (Lista de canciones)cada una de esta representa un proceso luego lo que hago es ordenarlos de menor a mayor y listo voy reproduciendo.
Algoritmo al Azar: este algoritmo es sencillo entre todas las canciones seleccionadas (procesos) va reproduciendo al azar.
Capturas de la aplicación.
En la siguiente pantalla se seleccionan las canciones a reproducir.
las canciones quedaran cargadas en la ventana de configuración (Si alguna no les carga el tiempo. hacer clic en la fila para que capture el tiempo de la canción).
luego hacer clic en el botón inferior simular tiempo mas corto. y el sistema organizara las canciones según el algoritmo de planificación q se halla seleccionado para este caso tiempo mas corto.
Panel izquierdo (Procesos en estado esperando). Panel Central (Procesos en Ejecución y Panel derecho (Procesos Terminados).
A continuación podrán descargar el proyecto, esta desarrollado en Visual Studio 2010 Profesional
Me gusta compartir, y esta vez será algo que ayude a todos aquellos que por falta de tiempo han tenido dificultades para aprender algo de matlab, y no han podido realizar su “simulación” de los diferentes métodos numéricos aprendidos, y pues aquí les traigo una pequeña aplicación que desarrolle con implementación de interfaz grafica que resuelva estos ejercicios y no tengamos que estar haciendo tablas una y otra vez sino que tengamos los resultados de las tablas y todos los datos adicionales necesarios a unos solos clics.
Metodos:
1) bairstow
2) biseccion
3)regresion gaussiana
4) interpolacion
5) metodo de euler
6) minimos cuadrados
7) metodo de newton rapson
8) newton para ecuaciones no lineales
9) runge kutta
10) gauss seidal
Expliquemos un poco de que se trata, cual es la finalidad de esta aplicación. Consiste en un sistema para un parqueadero donde se deben consultar los lugares vacíos y los lugares ocupados, así como estacionar un vehículo o liberar vehículo. Es algo sencillo sob solo ideas qeu se pueden llevar a proyectos ams grande. y cabe destacar q este fue mi primer parcial de pascal :)
Codigo fuente:
1 (*Eduardo luis garcia marrrugo*)
2 (*Felix david hernandez aldana*)
3 4 program parcial;
5 uses crt;
6 7 var estacion: array[1..100] of integer;
8 i,opcion,opcion_siclos:integer;
9 continuar,cont_siclos,parada: string[2];
10 posx,posy,notificador:byte;
11 puesto:byte;
12 13 (*parada: esta variable me simula el readkey pero evita el fujo del enter*)
14 begin
15 16 17 (*incializamos el vecto a posciones vacias las cual leeremos como (0)*)
18for i:=1 to 100do 19 begin
20 estacion[i]:=0;
21 end;
22 repeat (*volber al menu ppal*)
23 24 repeat (*repetir hasta que se selccione una de las operaciones posibles*)
25 clrscr;
26 gotoxy(20,2);writeln('Sistema de estacionamiento');
27 gotoxy(3,5);write('Menu');
28 gotoxy(3,7);write('1) Estacionar');
29 gotoxy(3,9);write('2) Salida de vehiculo');
30 gotoxy(3,11);write('3) Consultar lugares disponibles');
31 gotoxy(3,13);write('4) Consultar lugares ocupados');
32 gotoxy(3,15);write('5) Salir');
33 34 gotoxy(3,18);write('Elija una opcion: ');
35 readln(opcion);
36 until((opcion>=1) and (opcion<=5));
37 38 39 40 41case opcion of
42 431:
44 begin
45 46 repeat
47 repeat (*nos controla que se seleccion el numero indicado*)
48 clrscr;
49 gotoxy(20,2);write('Estacionar vehiculo');
50 gotoxy(3,5);write('1) Consultar lugares disponibles');
51 gotoxy(3,7);write('2) asignar lugar de estacionamiento');
52 53 gotoxy(3,11);write('Escoja una opcion: ');
54 gotoxy(22,11);read(opcion_siclos);
55 56 until((opcion_siclos>=1) and (opcion_siclos<=2));
57 58case opcion_siclos of
591: begin
60 clrscr;
61 gotoxy(20,2);write('Puestos Desocupados:');
62 posx:=3; posy:=5;
63 64for i:=1 to 100do 65 begin
66if estacion[i] =0 then
67 begin
68 gotoxy(posx,posy); write(i);
69 posx:=posx+3;
70if posx>=40 then
71 begin
72 posy:=posy +2;
73 posx:=3;
74 end;
75 76 end;
77 end;(*fin for que reccore el vector estacion*)
78 79 posy:=posy +4;
80 81 gotoxy(3,posy);write('En que puesto estacionara el vehiculo?: ');
82 gotoxy(43,posy);readln(puesto);
83 (*estacion[puesto]:=1;*)(*le asignamos 1 a los puestos ocupados*)
84 85if estacion[puesto]=0 then
86 begin
87 estacion[puesto]:=1;
88 notificador:=1;
89 90 end
91else 92 begin
93 write(15,20);write('Este puesto esta ocupado');
94 (* readkey; --------------*)
95 readln(parada);
96 end;
97 98 99100 end;(*fin caso 1: opcion siclos*)
1011021032: begin
104105 repeat
106 clrscr;
107 notificador:=0;
108 gotoxy(30,2);write('Estacionar vehiculo');
109110111112 gotoxy(3,4);write('En que puesto estacionara el vehiculo?: ');
113 gotoxy(43,4);readln(puesto);
114115if estacion[puesto]=0 then
116 begin
117 estacion[puesto]:=1;
118 notificador:=1;
119120 end
121else122 begin
123 write(15,20);write('Este puesto esta ocupado');
124 (* readkey; --------- *)
125 readln(parada);
126 end;
127 posy:=10;
128129130131 until (notificador=1);
132 end;(*fin caso 2 de opcion siclos*)
133134135 end; (*opcion siclos*)
136137 posy:=posy+2;
138 gotoxy(3,posy);write('Presione cualquier tecla para volver');
139 posy:=posy+1;
140 gotoxy(15,posy);write('Al menu de estacionamiento');
141 posy:=posy+1;
142 gotoxy(15,posy);write('(n) para caso contrario: ');
143144145 gotoxy(42,posy);readln(cont_siclos);
146147 until(cont_siclos='n');
148149 (************ OJO ****)
150151 (* readkey; *)
152 readln(parada);
153 end;(*fin caso 1*)
1541552: begin
156157 clrscr;
158 gotoxy(20,2);write('Salida de vehiculos');
159160 gotoxy(3,5);write('Puesto a desocupar: ');
161 gotoxy(23,5);readln(puesto);
162163 estacion[puesto]:=0; (*no hay que verificar esto no alterara el resultado*)
164165166 end;(*fin caso 2 menu ppal*)
1671681691703: begin
171 clrscr;
172 gotoxy(20,2);write('Puestos Desocupados:');
173 posx:=3; posy:=5;
174175for i:=1 to 100do176 begin
177if estacion[i] =0 then
178 begin
179 gotoxy(posx,posy); write(i);
180 posx:=posx+3;
181if posx>=40 then
182 begin
183 posy:=posy +2;
184 posx:=3;
185 end;
186187 end;
188 end;(*fin for que reccore el vector estacion*)
189 (* readkey; *)
190 readln(parada);
191 end;(*fin caso 3 menu ppal*)
1921931941954:begin
196 clrscr;
197 gotoxy(20,2);write('Puestos Ocupados:');
198 posx:=3; posy:=5;
199200for i:=1 to 100do201 begin
202if estacion[i] =1 then
203 begin
204 gotoxy(posx,posy); write(i);
205 posx:=posx+3;
206if posx>=40 then
207 begin
208 posy:=posy +2;
209 posx:=3;
210 end;
211212 end;
213 end;(*fin for que reccore el vector estacion*)
214 (* readkey; *)
215 readln(parada);
216217 end; (*fin caso 4 menu ppal*)
2182195: begin
220 exit; (*salgo del procedimiento*)
221222 end; (*fin caso 5*)
223224225 end; (*fin del case ppal*)
226227 gotoxy(20,25);write('Presione cualquier tecla para volver al Menu Principal');
228 gotoxy(23,27);write('presione (n) en caso contrario: ');
229 readln(continuar);
230 until(continuar='n'); (*condiciopn colber al menu ppal*)
231232233234 readkey;
235236 end.(*fin del bloque principal*)
mmm esto es algo que hice hace como 1 año fue un reto en una comunidad. y estaba revisando otras paginas y me econtre con el y note que no estaba publicada en este lugar. la verdad ya no me acuerdo de C# aunque me parece lo mejor.
NOTA: la razón de publicarla es por el algoritmo que use. bueno fue lo que se me ocurrió. la forma de trabajar con una operación matemática y detectar sibolos y trabajar en base a ella
Datos basicos: es una calculadora basica lo unico que hace es operaciones por jerarquia como las calculadoras de mano donde primero resuelve las operaciones dentro de los parentesis en su orden de jerarquia */+- y asi va destruyendo parentesis hasta desmenusar todo lo digitado, para mayor funcionalidad lee toda la expresion de una vez.
Nota: un programa de encuestas autopersonalisables consiste en q el usuario encargado de administrar el programa pueda decir q la pregunta1 es respondia por el usuario & q la pregunta 2 es de selección múltiple con única respuesta & asi sucesivamente.
Aplicando la Logica del calculo, la cual aplique tanto para programar el simulador la hare para explicarlo
Vamos
Primero q todo: tengo un amigo q me conto q tenia q hacer un programa para una compañía X, q se encarga de hacer encuetas en las distintas partes de colombia, y me dijo q el programa consistía en generar encuestas en ambiente web para q las personas las pudieras hacer desde internet y una aplicación extra par alos blackberrys para q la pudieras ejecutar en los pueblos donde se cae el internet & muchas cosas mas como se deben imagina, de ahi viene el nombre simulador ya q a mi me causo intriga lo de las "encuestas autopersonalisables" & lo mio esta echo en C#, y además solo es un algoritmo q implemente para generar tales encuestas.
- ahora yo no uso BD ya q solo es un simulador, solo ultilizo vectores & matrices ya verán porq.
Nota: es el primer programa q ago orientado objeto donde aplico las clases, claro no es gran nivel porq ya entre a la u & no me dio tiempo de seguir leyendo msdn pero ami me guta bastante el modo enq trabaje, creo q le saque el jugo alo leido.
Muchos en sus tiempos de ocio habran jugado alguna ves un juego q nos ofrece microsft llamado "Resversi en internet" para los q no pueden entrar a el de la siguiente forma: inicio>todos los programas>juegos>Reversi en internet, ¿porq hice enfasis en eso?, pues porq si no conocen el juego me gustaria q lo vieran funionar en modo grafico para q hagan su comparacion con el modo consola q he creado.
Ahora como La idea esq todos aprendamos, coloco el algoritmo del juego(Quedando claro q no es un algoritmo como tal, si nó, mas bien un modo de pensar para poder desarrollar el juego)
******Algoritmo
El algoritmo solo are una breve explicación de cuáles son los factores a tener en cuenta, para esto tendremos que hacer uso de la teoría de intervalos esto para hacernos una simple idea de cómo funciona.
El algoritmo como es una explicación básica no será hecho en seudocódigo ni diagrama de flujo es llamado algoritmo porque es un análisis de cómo debe funcionar el algoritmo.
ahora para mi es bastante entendible el juego, pues claro yo fui el q lo hice jajaj, pero para los que no, miren les explico, como ven el cuadro de juego esta coordenado en los ejes x,y el programa lo q hace es leer la posicion donde se pondra la ficha q sera la "jugada".. pero al igual q el algoritmo este es solo una brebe explicacion
& pues despues de todo esto, con la explciacion del algoritmo que uso para desarrollarlo les seria facil programarlo pero si aun tienen dudas sobre el codigo o solo quieren ver mi codigo [a ver q tan mal & desordenado programo jejej : ) ]. pues les dejo el proyecto en el siguiente link:
enrealidad no es mi primer programa , pero es uno de los q tengo bueno recuerdos ya no existen links de descarga solo historia en google, y algunas fotografias & pues el link no existe por dos razones lo tenia alojado en 4shared y pues deje de acceder y me eliminaron la cuenta, y donde lo habia codeado ese compu se daño pero gracias a Dios mi papa nos regalo otro q si sirve jeje