Вы находитесь на странице: 1из 25

UNAD.

UNIVERSIDAD ABIERTA Y A DISTANCIA


Escuela de ciencias bsicas

Asignatura :
203036_108 Software Ingeniera

CONSTRUCCION DE LA SOLUCION
Propuesta Metodolgica

Presenta :
Jos Eusebio Lpez Junco
Cdigo: 74338899
Docente:
Nelson Humberto Zambrano

Bogot D.C Colombia

Octubre 30 del 2015

INTRODUCCIN

La

siguiente propuesta metodolgica esta fundamenta en la solucin del problema

propuesto; para el desarrollo de esta actividad se vali de las etapas de los trabajos
colaborativos anteriores, como el diagrama de flujo, las lluvias ideas, las propuestas
personales que se subieron al foro colaborativo de los mismos. Para el desarrollo de la
propuesta se vali de videos en You tube, libros pdf, Experiencia laboral en procesos
de automatizacin, Feria de automatizacin donde haba una sala dedicada al manejo de
Matlab como herramienta en el anlisis de procesos, donde ellos nos dieron una gua
bsica en el control de variables. Siguiendo con lo anterior se comenz armando un
diagrama de flujo donde se realizaron las fases a groso modo del proceso, para despus
pasarlo de una manera detallada a un algoritmo, donde se detalla el proceso. Para por
ultimo pasarlo al cdigo fuente donde se utiliz el lenguaje de Matlab ms la interfaz
grfica con el nimo de darle un valor agregado para que la solucin sea realmente lo
que el cliente necesita.

1. PROBLEMA A RESOLVER SOFTWARE PARA INGENIERA

En una industria manufacturera, disponen de una mquina que realiza un proceso en tres fases,
cada una de ellas se desarrolla en un tiempo calculado por un instrumento anexo que devuelve
tres nmeros binario cada uno de 13 bits, dichos nmeros representan el intervalo de tiempo de
duracin de cada fase (el tiempo mnimo de cada fase no era inferior a 5 segundos).
Adicionalmente la mquina dispone de un conjunto de leds dispuestos en forma de matriz de 10
por 5, a partir de ellos se identificaba la fase y a travs de un cdigo visual se daba una
aproximacin del tiempo que restaba para finalizar el proceso (a travs de juego de luces que se
actualizaba cada segundo). En este momento el cdigo de programacin que realizaba dicho
proceso sufri un dao irreparable, por tanto es necesario generar un nuevo cdigo a nivel de
prototipo, que responda a estas condiciones, esto para que sea estudiado y viabilizar su
aplicacin Los datos de entrada y salida se deben dar a partir de los recursos del PC, y usando
Matlab como lenguaje de programacin

1.1.

GUIN DE LA PROPUESTA.

a. Valernos del diagrama de flujo hecho como propuesta de grupo, para comenzar a armar
la hiptesis.
b.

Buscar informacin acorde para solucionar el problema

c.

Armar un algoritmo que pueda relacionar el problema con algn software.

d. Valernos del algoritmo para armar el cdigo fuente

e. Realizar revisiones y pruebas de la solucin

1.2.

ORDEN CRONOLGICO DE LA PROPUESTA.

Actividad
Experimentacin
Individual

Fecha Inicio
24 agosto

Fecha Final
17
septiembre

Construccin de la
solucin

27
Septiembre

15 noviembre

Actividad
Implementacin propuesta
individual, donde se describe
bibliografa para la solucin, con
las ventajas desventajas
Hiptesis, bibliografa para
solucionar el problema,
algoritmo, cdigo fuente en
Matlab o Scilab. Revisin de la
solucin.

Experimentacin
Grupal
2.

BUSCAR INFORMACIN ACORDE PARA SOLUCIN DEL PROBLEMA.

2.1. DISEO DEL ALGORITMO:


http://www.omijal.org/pagina_c/algo.html
Importante

informacin de como elaborar un

algoritmo del cual

se extrae su

importancia en la solucin de cualquier problema aun sea cotidiano.


Elaborar un algoritmo es tiempo y dedicacin requiere conocimiento y experiencia,
que se logra con mucho trabajo,

cuando se tiene un problema

y se tiene la idea de

cmo efectuarla se llama periodo de incubacin , lo que sigue es plasmar por medio
de lenguaje normal compensado con alguna reglas de programacin para as llegar
a presentar una solucin ordenada y fcil de entender tanto por la persona como la
computadora.
Ejemplo: 2

Se requiere saber si un nmeros son pares o impares.


a. todo secuencia debe estar ordenada y ser finito.
Inicio
Escribir Ingrese el primer valor
Leer

nmero
Si numero > 0 entonces
Numero mod 2
Si mod = 0
Escribir Es un nmero impar
Sino
Escribir Es un nmero impar
Fin si
Sino
Escribir entrada incorrecta
Fin si

Fin
Si no hubiera hecho este algoritmo no tendra una forma clara de solucionar el
problema., porque podra haber comenzado haciendo el resto de la divisin, luego
decir que el nmero es incorrecto, en si podra decir que estara hecho una cabuya
en un bolsillo.
Elaborar un algoritmo se logra estructurando el pensamiento para llegar una idea que
d solucin al problema planteado.
c. Elaboracin del algoritmo.
Cuando se tiene un problema, cualquiera que sea porque los algoritmos se aplican a
todo hasta para realizar las labores diarias o cotidianas. Para poder resolver una
situacin que implique pensar, a veces es bueno dividir esta situacin en ms pequea
con el nimos de detallar y poder resolverlo de ms fcil.

Seudocdigo: Es un lenguaje para la programacin de algoritmos, est conformada


por un semntica formal parecida como nos expresamos, mas
programacin

sintaxis propia de la

, no sirve para programar en un computador , este tiene palabras

reservadas parecidas al lenguaje de programacin


Un algoritmo esta hecho de un lenguaje normal como el que hablamos a diario mas
un conjunto de instrucciones que combinadas se puede expresar

la idea de una

solucin en una forma ordenada. De ah al programa final es un camino corto porque


ya teniendo una idea ordena muy parecida a la sintaxis propia del programa se puede
elaborar un respuesta ms rpida, concreta, fcil,
2.2. Interface Guide.
http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/garcia_b_s/capitulo3.pdf
Mediante esta interface se puede utilizar el cdigo de Matlab para hacer ms fcil e
interactiva la informacin , ya que la informacin se puede ver fcil,

todo est

presente en la pantalla, se puede manipular las variables de una manera ms


asequible. Un ejemplo es Software DOS en sus principios donde se utilizaba con
comandos a , ahora cuando se accede por medio de ventanas y n o se necesita tener
muchos conocimientos de programacin lo que se hace que se preocupe ms el
proceso.

2.3.

HIPTESIS PARA LA SOLUCIN DEL PROBLEMA.

Segn la propuesta por el grupo, donde se realiza una secuencia de las fases. Pienso
implementarla de la siguiente manera:
Estudiar de manera precisa el uso, manejo de las matrices en Matlab. Como una
manera de controlar la informacin, almacenamiento y manipulacin del bit que nos
informan en el problema.
Segn los ejercicios realizados en las prcticas se pueden utilizar para solucionar
el problema.
En la etapa de mostrar el tiempo de cada fase, me valdr de una matriz de 10*5 donde
mediante ciclos

For

ir transformndola en unos a medida que el tiempo transcurre.

En cada fase se controlara de manera independiente donde se podr introducir el


tiempo. y otra funcin donde se pueda realizar la secuencia de las fases una a una
indicando el tiempo restante, e informando cuando el tiempo haya terminado. Esto lo
hare con funciones que se presentan en Matlab.

Para hacer ms amigable y fcil la visualizacin, se pondrn colores para informar en


qu fase va. Esto se realizara con la herramienta e interface que Guide con la cual me
valdr para hacer ms interactivo el proceso

3. ALGORITMO DE LA SOLUCION DEL PROBLEMA.


Algoritmo para solucin propuesta de la matriz de led . Hecho en Matlab
con la interfaz grfica Guide.
Hecho por Jos Eusebio Lpez Junco Cdigo 74338899 Grupo 203036_5
Inicio = FASES
Inicio = software propio de Guide.
Leer Cuadro de texto 1
Leer Cuadro de texto 2
Leer Cuadro de texto 3
Funcin Botn Uno
Escribir Fase 1 en curso
Botn Uno = Amarillo
a = Cuadro de texto 1
M= matriz ceros[10,5]
b = M
b(2, 1:3)=1

b(2:8,3)=1
b(8,:) = 1
Escribir b
Escribir M
retro = a;
hacer para i = 1 : a;
hacer para j= 1:5
si retro = 0 entonces
Salir de ciclo
Fin si
retro = retro -1
M(i,j) = retro
Escribir = Cuadro de texto 5 = (M)
Esperar 1 segundo
M(i,j) = 1;
Escribir = Cuadro de texto 5 =M
Esperar 1 segundo
fin para
Fin para
Fin botn Uno
Funcin= Botn Dos
Escribir Fase 2 en curso
Botn dos = azul
c = Cuadro de texto 2
M = matriz ceros(10,5)
d= M;
d(2,:) = (1)
d(2:6,5) = (1);
d(6,:) = (1);
d(7:9,1) = (1);
d(9,:) = (1)
Escribir = Cuadro de texto 5, d
Esperar 5 segundos
retro2 = c;
Hacer para i = 1 a c
Hacer para j= 1 a 5
si retro2 = 0 entonces
Salir del ciclo
Fin si
retro2 = retro2 -1;
M(i,j) = retro2;
Escribir Cuadro de texto 5,M
Esperar 1 segundo
M(i,j) = 1
Escribir Cuadro de texto 5, M
Esperar 1 segundo
fin para
fin para

fin Botn Dos


Funcin Botn Tres
Escribir Fase 3 en curso
Boton Tres = Naranja
e = Cuadro de texto 3
M = Matriz ceros (10,5)
f = M;
f(2,:) =
f(6, :) =
f(9 ,:) =
f(2:9,5)=

1
1
1
1

Escribir Cuadro de texto 5, f


Esperar 5 segundos
Escribir Cuadro de texto 5 ,M
retro3 = e;
Hacer para i = 1 a e;
Hacer para j= 1 a 5
si retro3 = 0 Entonces
Salir del ciclo
Fin si
retro3 = retro3 -1
M(i,j) = retro3;
Escribir Cuadro de texto 5 , M
Esperar 1 segundo
M(i,j) = 1;
Escribir Cuadro de texto 5 ,M
Esperar 1 segundo
Fin para
Fin para
Fin Botn Tres

Funcin

Botn Cuatro

Hacer para t = 1 a 3
Elegir caso t ;
Caso 1
Escribir Fase 1 en curso
Botn 1 = Amarillo
a = Cuadro de texto 1
M= matriz ceros[10,5]
b = M
b(2, 1:3)=1
b(2:8,3)=1
b(8,:) = 1

Escribir Cuadro de texto 5


Escribir Cuadro de texto 5
retro = a;

, b
, M

hacer para i = 1 : a;
hacer para j= 1:5
si retro = 0 entonces
Salir de ciclo
Fin si
retro = retro -1
M(i,j) = retro
Escribir = Cuadro de texto 5
Esperar 1 segundo
M(i,j) = 1;
Escribir = Cuadro de texto 5
Esperar 1 segundo
fin para
Fin para

= M
=M

Caso 2
Escribir Fase 2 en curso
Boton dos = azul
c = Cuadro de texto 3
M = matriz ceros(10,5)
d= M;
d(2,:) = (1)
d(2:6,5) = (1);
d(6,:) = (1);
d(7:9,1) = (1);
d(9,:) = (1)
Escribir = Cuadro de texto 5
Esperar 5 segundos
retro2 = c;
Hacer

para

fin para

i = 1 a c

, d

Hacer para j= 1 a 5
si retro2 = 0 entonces
Salir del ciclo
Fin si
retro2 = retro2 -1;
M(i,j) = retro2;
Escribir Cuadro de texto 5 ,M
Esperar 1 segundo
M(i,j) = 1
Escribir Cuadro de texto 5 , M
Esperar 1 segundo
fin para

Caso 3
Escribir Fase 3 en curso

Boton Tres

= Naranja

e = Cuadro de texto 3
M = Matriz ceros (10,5)
f = M;
f(2,:) =
f(6, :) =
f(9 ,:) =
f(2:9,5)=

1
1
1
1

Escribir Cuadro de texto 5


Esperar 5 segundos
Escribir Cuadro de texto 5

, f
,M

retro3 = e;
Hacer para i = 1 a e;
Hacer para j= 1 a 5
si retro3 = 0 Entonces
Salir del ciclo
Fin si
retro3 = retro3 -1
M(i,j) = retro3;
Escribir Cuadro de texto 5
Esperar 1 segundo
M(i,j) = 1;
Escribir Cuadro de texto 5
Esperar 1 segundo
Fin para

, M

Fin para

,M

Fin Botn Tres


Fin
Fin
Fin
Fin

elegir Caso
hacer para
Botn Cuatro
Fase

4. CODIGO FUENTE EN MATLAB Y GUIDE.


function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% Cuadro de texto editable donde se coloca el tiempo para la segunda


% Fase 2.**************************************************************
function edit2_Callback(hObject, eventdata, handles)
function edit2_CreateFcn(hObject, eventdata, handles)
% Se cambia el color de fonde del cuadro de texto.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% Cuadro de texto editable donde se coloca el tiempo para la tercera
% Fase.**************************************************************
function edit3_CreateFcn(hObject, eventdata, handles)
% Se cambia el color de fonde del cuadro de texto.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% ***********************************************************************
% Funcin del boton de arranque de la primera fase.
%************************************************************************
function pushbutton1_Callback(hObject, eventdata, handles)
% Se al pulsar se cambia de color a amarillo cambia de nombre el
% el boton
set(handles. pushbutton1,'String','Fase 1 en curso ')
set(handles.edit5,'BackGroundColor','yellow')

% se

transforma el dato texto en nmero Double ejemplo = 5.2

a = str2double(get(handles.edit2,'String'));
% Se realiza la validacin de los
% 50

datos para que esten entre 5

if a <=5
set(handles. text3,'String','Ingrese un numero mayor 5 ')
return
esperar 2 segundos;
end
if a > 50
set(handles. text3,'String','Ingrese un numero mayor 5 ')
return
esperar 2 segundos;
end

% Se crea una matriz de vacia


M = zeros(10,5);
b = M;
% Se cambian los valores

de

10*5

en las filas o columnas

por unos en la matriz

b(2, 1:3)=(1);
b(2:8,3)=(1);
b(8,:) = (1)
%
%

Se da salidad por medio del cuadro de texto edit 5


la variable numerica double a tipo String.

se transforma

set(handles.edit5,'String',num2str(b));
pause (5)% Se espera 5 segundos
set(handles.edit5,'String',num2str(M));
retro = a;
%
%
%
%

Se comienza los ciclos for donde se realiza la cuenta regresiva


del tiempo tomado en edit 1. y se muestra en edit 5 por medio de la
matriz vacia cambiando la posicin por el tiempo restante, luego lo
pasa a " 1" asi hasta cumplir el tiempo.

for i = 1 : a;
for j= 1:5
if retro == 0
return
end
retro = retro -1
M(i,j) = retro;
set(handles.edit5,'String',num2str(M));
pause(1)
M(i,j) = 1;
set(handles.edit5,'String',num2str(M));
pause(1)
end
% Aqui se aplica un reset para dejar todo como estaba
set(handles. pushbutton1,'String','Star Fase 1 ')
set(handles. text3,'String','Termino fase 1 ')
pause(1)
set(handles. text3,'String',' ')
end
% ***********************************************************************
% Funcin del boton de arranque de la Segunda fase.
%************************************************************************

function pushbutton2_Callback(hObject, eventdata, handles)


% Se al pulsar se cambia de color a amarillo cambia de nombre el
% el boton
set(handles. pushbutton2,'String','Fase 2 en curso ')
set(handles.edit5,'BackGroundColor','blue')
c = str2double(get(handles.edit3,'String'));
% Se realiza la validacin de los
% 50

datos para que esten entre 5

if c <=5
set(handles. text3,'String','Ingrese un numero mayor 5 ')
return
esperar 2 segundos;
end
if c > 50
set(handles. text3,'String','Ingrese un numero mayor 50 ')
return
esperar 2 segundos;
end

% Se crea una matriz de vacia


M = zeros(10,5);
d= M;

de

10*5

% Se cambian los valores en las filas o columnas


d(2,:) = (1);
d(2:6,5) = (1);
d(6,:) = (1);
d(7:9,1) = (1);
d(9,:) = (1)
set(handles.edit5,'String',num2str(d))

por unos en la matriz

pause (5);
set(handles.edit5,'String',num2str(d));
retro2 = c;
% Se comienza los ciclos for donde se realiza la cuenta regresiva
% del tiempo tomado en edit 1. y se muestra en edit 5 por medio de la
% matriz vacia cambiando la posicin por el tiempo restante, luego lo
% pasa a " 1" asi hasta cumplir el tiempo.
for i = 1 : c;
for j= 1:5
if retro2 == 0

return
end
retro2 = retro2 -1;
M(i,j) = retro2;
set(handles.edit5,'String',num2str(M));
pause(1)
M(i,j) = 1;
set(handles.edit5,'String',num2str(M));
pause(1)
home
end
% Aqui se aplica un reset para dejar todo como estaba
% Fase 3 en curso a Star Fase 2
set(handles. pushbutton1,'String','Star Fase 2 ')
set(handles. text3,'String','Termino fase 2 ')
pause(1)
set(handles. text3,'String',' ')
end
% ***********************************************************************
% Funcin del boton de arranque de la Tercera fase.
%************************************************************************
function pushbutton3_Callback(hObject, eventdata, handles)
e = str2double(get(handles.edit4,'String'));
% Se realiza la validacin de los
% 50

datos para que esten entre 5

if e <=5
set(handles. text3,'String','Ingrese un numero mayor 5 ')
return
esperar 2 segundos;
end
if e > 50
set(handles. text3,'String','Ingrese un numero mayor 5 ')
return
esperar 2 segundos;
end
% Se

crea una matriz de vacia

M = zeros(10,5);
f = M;
% Se cambian los valores
f(2,:) = (1);
f(6, :) = (1);
f(9 ,:) = (1);
f(2:9,5) = (1)

de

10*5

en las filas o columnas

por unos en la matriz

set(handles.edit5,'String',num2str(f));
pause (5)
set(handles.edit5,'String',num2str(M));
retro3 = e;
% Se comienza los ciclos for donde se realiza la cuenta regresiva
% del tiempo tomado en edit 1. y se muestra en edit 5 por medio de la
% matriz vacia cambiando la posicin por el tiempo restante, luego lo
% pasa a " 1" asi hasta cumplir el tiempo.
for i = 1 : e;
for j= 1:5
if retro3 == 0
return
end
retro3 = retro3 -1;
M(i,j) = retro3;
set(handles.edit5,'String',num2str(M));
pause(1)
M(i,j) = 1;
set(handles.edit5,'String',num2str(M));
pause(1)
end
% Aqui se aplica un reset para dejar todo como estaba
% Fase 3 en curso a Star Fase 3
set(handles. pushbutton1,'String','Star Fase 3 ')
set(handles. text3,'String','Termino fase 3 ')
pause(1)
set(handles. text3,'String',' ')
end

% ***********************************************************************
% Funcin del boton de arranque de la primera fase hasta la fase tres
%************************************************************************
function pushbutton4_Callback(~, ~, handles)
% ******EL CODIGO ES EL MISMO QUE EN LAS FASES INDIVIDUALES***********
% Por medio de un ciclo for y mediante un selector de caso se
% se realiza el proceso de las tres fases
for t = 1 : 3 ;

switch t ;
case 1

% *****COMIENZA LA FASE 1 ********************

a = str2double(get(handles.edit2,'String'));
M = zeros(10,5);
b = M;
b(2, 1:3)=(1);
b(2:8,3)=(1);
b(8,:) = (1)
set(handles.edit5,'String',num2str(b));
pause (5)
set(handles.edit5,'String',num2str(M));
retro = a;

for i = 1 : a;
for j= 1:5
if retro == 0
break
end
retro = retro -1
M(i,j) = retro;
set(handles.edit5,'String',num2str(M));
pause(1)
M(i,j) = 1;
set(handles.edit5,'String',num2str(M));
pause(1)
home
end
end

set(handles.edit5,'String',' hola 1');


pause (2)
case 2

% *****COMIENZA LA FASE 2 ********************

c = str2double(get(handles.edit3,'String'));
M = zeros(10,5);
d= M;
d(2,:) = (1);
d(2:6,5) = (1);
d(6,:) = (1);
d(7:9,1) = (1);
d(9,:) = (1)
set(handles.edit5,'String',num2str(d))
pause (5);
set(handles.edit5,'String',num2str(d));

retro = c;

for i = 1 : c;
for j= 1:5
if retro == 0
break
end
retro = retro -1
M(i,j) = retro;
set(handles.edit5,'String',num2str(M));
pause(1)
M(i,j) = 1;
set(handles.edit5,'String',num2str(M));
pause(1)
home
end
end

set(handles.edit5,'String',' hola 22');


pause(2)
case 3

% *****COMIENZA LA FASE 3 ********************

e = str2double(get(handles.edit4,'String'));
M = zeros(10,5);
f = M;
f(2,:) = (1);
f(6, :) = (1);
f(9 ,:) = (1);
f(2:9,5) = (1)
set(handles.edit5,'String',num2str(f));
pause (5)
set(handles.edit5,'String',num2str(M));
retro = e;

for i = 1 : e;
for j= 1:5
if retro == 0
break
end
retro = retro -1
M(i,j) = retro;
set(handles.edit5,'String',num2str(M));
pause(1)
M(i,j) = 1;
set(handles.edit5,'String',num2str(M));

pause(1)
home
end
end
set(handles.edit5,'String',' hola 33');
pause(2)
end

end
% ********

TERMINA EL

PROGRAMA ***********************************

CONCLUSION

1. Se puede decir que el proceso que se sigui, sirvi para llegar a una solucin,
es decir que sin la ayuda del profesor , la gua de actividades, de tener la forma
como solucionar un problema hacen sacar a flote las ideas y sobretodo dar
solucin a un

problema que alguien puede tener.

Como estudiantes de

ingeniera debemos estar en capacidad de dar solucin a cualquier vicisitud.

2. Los pasos realizados como elaborar un diagrama de flujo, lluvias de ideas,


propuestas, algoritmos son fundamentales para llegar a dar una solucin y
sobretodo sin esas tcnicas no se podra armar un proyecto.

BIBLIOGRAFIA
Lpez, C. P. (2002). Matlab y sus aplicaciones en las ciencias y la Ingeniera. En C. P.
Lpez, lgebra lineal numrica (pgs. 179-192). Madrid: Pearson Educacin S.A.
Lpez, C. P. (2002). Matlab y sus aplicaciones en las ciencias y la Ingeniera. En C. P.
Lpez, Programacin y mtodos de anlisis numrico (pgs. 301-330). Madrid:
Pearson Educacin S.A.
Omijal. (s.f.). Recuperado el 15 de 10 de 15, de Algoritmos:
http://www.omijal.org/pagina_c/algo.html
Tutorial de Matlab. (s.f.). Recuperado el 20 de 10 de 15, de Usando Guide:
http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/garcia_b_s/capitulo3.pdf