Está en la página 1de 22

Software Para Ingeniería (203036a_761

Cead: Jose Acevedo Gomez

Paso 5 – Construcción individual

Grupo

203036_31

Presentado a Tutor(a)

Paola Andrea Buitrago

Presentado por

Deivy Fonseca romero

Código 80 164 621

Bogotá 2020
Introducción

En desarrollo de la fase 5 vamos a tener un marco teórico para poder indagar y realizar la mejor
opción para problema a desarrollar, vamos a trabajar con estructuras repetitiva FOR- WHILE,
Estructuras tipo CASE, Lógica de vectores, adicional contamos con apoyo de videos y paginas a
consultar,

Para poder resolver esta parte del problema Utilizaremos parte del paso 4 practica 2, más la
información contenida en este trabajo, para empezar a organizar el código fuente
Para esta actividad de reconocimiento del curso, se debe desarrollar ÚNICAMENTE el paso
denominado Construcción individual

Problema

La empresa de juegos didácticos en línea TOYs2020, quiere implementar un juego similar a


batalla naval, para sus usuarios, para ello requiere un prototipo que genere una matriz para ubicar
sus barcos de forma aleatorio y le brinde la posibilidad al usuario de derribar los barcos con
disparos consecutivos así:

 Establecer el orden de la matriz donde va a contener los barcos, puede elegir entre 8 a 10
filas y entre 8 a 10 columnas.
 El usuario debe poder indicar la casilla sobre la cual desea verificar si hay un barco o no
(disparar)
 Tener la opción de rendirse en el juego
 Decidir que barcos ubicar, nombrados así: porta-aviones (5 casillas), acorazado (4
casillas) y lancha (3 casillas)
 Leer las reglas de la puntuación con la que se valorará su desarrollo (las define como
programador)

Cuando el usuario termine de hundir los barcos o haya decidido no continuar con el juego, el
aplicativo debe:
 Indicar la cantidad de disparos hechos
 Nombre de los barcos hundidos
 Puntos logrados

El aplicativo, en su funcionamiento debe cumplir con las siguientes características:

 Los barcos que se ubiquen deben estar dentro de la matriz, ya se horizontal o


verticalmente, no es posible ubicar los barcos de forma diagonal
 Los barcos no pueden estar superpuestos dentro de la matriz
 Cuando un disparo de en un barco se indicará con símbolo que acertó en un barco y con
otro símbolo que golpeó el agua.
 Cuando se acierten todas las casillas de un barco se debe indicar el nombre del barco
hundido.
 Hundidos todos los barcos indicar la finalización del juego y su puntuación
 Mostrar solo una matriz en pantalla, ir actualizándola a medida que se van realizando los
disparos, para dar sensación de continuidad en el juego

1. En función del desarrollo de la práctica 2 y del problema planteado en el curso, consulte y lea
información concreta que le permita construir la solución del problema (teorías, conceptos,
manuales, videos, ejercicios resueltos, entre otros)

Realice un resumen de dicha información de manera que logre construir un marco teórico que
soporte posteriormente la solución que plante

Para el desarrollo de la actividad vamos a revisar los temas de la unidad 2 sentencias de control
de flujo
Sentencias de control de flujo que podemos utilizar

El intérprete de scripts procesa las sentencias de forma secuencial, empezando por la primera
sentencia del bloque del programa. Este flujo secuencial se puede controlar mediante sentencias
condicionales que realicen ramificaciones e iteraciones. La ramificación se controla con una
sentencia IF que dirige la ejecución por una vía de acceso determinada. La iteración se controla
mediante sentencias de bucle (loop) que ejecutan una o varias sentencias de forma repetitiva.
Recursión es el proceso de una función que se llama a sí misma de forma directa o indirecta
mediante una segunda función.

Las sentencias de control son

IF/THEN/ELSE, WHILE/BREAK/CONTINUE, RETURN

La sentencia IF permite la ejecución condicional basada en la evaluación de una expresión. Las


sentencias IF se pueden anidar.

La sintaxis de la sentencia IF es la siguiente

Tabla 1. Sentencia If
Parte Descripción
IF Palabra clave que comienza la estructura de control.
Condición Expresión numérica o de cadena de caracteres que se evalúa como
verdadera (uno) o falsa (cero).
Sentencias-verdadero Sentencia o sentencias que se realizan cuando la condición es
verdadera.
ELSE (Opcional) Palabra clave que comienza el flujo de control False.
Sentencias-falso Sentencia o sentencias que se realizan si la condición es falsa.
Ejemplo

If (userid != "") setField(userid,1,5);


If (userid != "") setField (userid,1,5)
else
errMsg("Se debe especificar el ID de usuario");
If ( op == 5 )
{ setField(userid,1,5);
sendKey("Enter");
}
else
if (op == 3)
setField(pswd,2,5);
else
msgBox("operación desconocida:);
if (prompt("entre Nombre") == "") errMsg("Se debe especificar el nombre");
Sentencia For
La sentencia For permite la ejecución iterativa basada en la evaluación de una expresión.
Se puede ejecutar una sentencia de inicializador para establecer condiciones iniciales. Se
utiliza una expresión condicional para controlar el número de veces que se debe ejecutar
el bucle. Se emite una sentencia de actualización en cada iteración del bucle.

La sintaxis de la sentencia For es la siguiente

Parte Descripción
For Palabra clave que comienza la estructura de control del bucle.
Sentencia-inicial Sentencia que hay que ejecutar antes del bucle.
Condición Expresión numérica o de cadena de caracteres que se evalúa como
verdadera (uno) o falsa (cero). Una función que devuelve un resultado
entero. El bucle sigue ejecutándose mientras esta condición es
verdadera.
Sentencia- Una sentencia que se ejecutará al final de cada iteración.
actualización
Sentencias-bucle Sentencia o sentencias que se realizan cuando la condición es
verdadera.

Ejemplo
For ( i=0; i<3; i=I+1) waitforscreen(1000);
For ( i=0; i<3; i=i+1)
{
sendString(userid);
if (waitforstring ("Inicio de sesión finalizado") > 0)

{
success = true;
break;;
}
}

Sentencia Return
Utilice la sentencia Return para realizar una devolución desde una función o para
finalizar el bloque principal del programa. La ejecución del programa se reanuda en la
sentencia a continuación del punto en el que se llamó a una función o sale del script si
está en el bloque principal del programa. Se puede asociar un valor opcional a la sentencia
return.

Una sentencia RETURN que no esté dentro de una definición de función terminará el
script

RETURN [valor-retorno];

Tabla 3. Sentencia Return


Parte Descripción
RETURN La palabra clave que se pasará a las sentencias que realizan la llamada.
valor-retorno Valor opcional que se debe devolver al llamador. Puede ser un valor
constante, un literal o una expresión.
Ejemplo:
.....
return 0;
La sentencia While ejecuta una serie de sentencias en un bucle mientras una condición es
verdadera.
Sintaxis:

WHILE (expresión) sentencias;

Tabla 4. Sentencia While


Parte Descripción
While Palabra clave que comienza la estructura de control.
Condición Expresión numérica o de cadena de caracteres que se evalúa como
verdadera (uno) o falsa (cero).
sentencias Sentencia o sentencias que se realizan mientras la condición es verdadera.
Ejemplo:
cnt = 1;
WHILE (cnt < 3)
{
a = a+1;
cnt = cnt + 1;
}
// esto ejecutará el bucle 3 veces

Estructura repetitiva FOR- WHILE

La estructura do while es otra estructura repetitiva, la cual ejecuta al menos una vez su bloque
repetitivo, a diferencia del while o del for que podían no ejecutar el bloque.
Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una vez se
ejecutará el bloque repetitivo.
La condición de la estructura está abajo del bloque a repetir, a diferencia del while o del for que
está en la parte superior.
Representación gráfica:

https://www.tutorialesprogramacionya.com/javaya/detalleconcepto.php?
punto=12&codigo=85&inicio=0

El bloque de operaciones se repite MIENTRAS que la condición sea Verdadera.


Si la condición retorna Falso el ciclo se detiene. En Java, todos los ciclos repiten por verdadero y
cortan por falso.
Es importante analizar y ver que las operaciones se ejecutan como mínimo una vez

Ejemplo

import java.util.Scanner;
public class EstructuraRepetitivaDoWhile1 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int valor;
do {
System.out.print("Ingrese un valor entre 0 y 999 (0 finaliza):");
valor=teclado.nextInt();
if (valor>=100) {
System.out.println("Tiene 3 dígitos.");
} else {
if (valor>=10) {
System.out.println("Tiene 2 dígitos.");
} else {
System.out.println("Tiene 1 dígito.");
}
}
} while (valor!=0);
}
}
https://www.tutorialesprogramacionya.com/javaya/detalleconcepto.php?
punto=12&codigo=85&inicio=0

Estructuras tipo CASE

Con la estructura de control CASE podemos evaluar una variable y realizar acciones dependiendo
del valor de esta. La diferencia con el IF consiste en que el número de posibilidades de la
evaluación de esta variable no tiene por qué ser sí o no, pudiendo hacer cosas para un número
indeterminado de valores.

Ejemplo
SELECT CASE (variable)
    CASE (valor1):
                   (acción para caso valor1)
    CASE (valor3):
                   (acción para caso valor2)
    CASE (valor3):
                   (acción para caso valor3)
    CASE ELSE:
                   (acción en caso de que no se cumpla ningún anterior caso)
END SELECT

Funciona así, primero se evalúa la variable, si esa variable tiene como valor el valor1 realizamos
las acciones asociadas al valor1. Si tiene el valor2, ejecutamos las acciones relacionadas con este
valor3. Así con cuantos valores deseemos. Por último tenemos un ELSE para realizar acciones en
caso de que no hubiesen sido ninguno de los valores anteriores. Este ELSE es opcional.

Veamos con un ejemplo esta sentencia muy sencillito. Lo primero que hace es solicitar un
número y luego informa del día de la semana con el que corresponde. Si el número no es del uno
al siete informa de ello también.
dim dia
dia = inputbox ("dime un dia de la semana")
SELECT CASE dia
CASE 1:
   msgbox("El dia es LUNES")
CASE 2:
   msgbox("El dia es MARTES")
CASE 3:
   msgbox("El dia es MIERCOLES")
CASE 4:
   msgbox("El dia es JUEVES")
CASE 5:
   msgbox("El dia es VIERNES")
CASE 6:
   msgbox("El dia es SABADO")
CASE 7:
   msgbox("El dia es DOMINGO")
CASE ELSE:
   msgbox("Tiene que ser un dia de la semana en número, del 1 al 7")
END SELECT
Lógica de Vectores

En programación, vector es un arreglo unidimensional, es una zona de almacenamiento contiguo,


que contiene una serie de elementos del mismo tipo.

Elementos de un vector. 

http://isaproglog.blogspot.com/2014/10/vectores.html

Acceso a Vectores.
http://isaproglog.blogspot.com/2014/10/vectores.html

Formas de Indexar los Elementos.

Existen tres formas de indexar los elementos de un vector:

Indexación base-cero (0): en este modo el primer elemento del vector será la componente cero
('0') del mismo, es decir, tendrá el índice '0'. En consecuencia, si el vector tiene 'n' componentes
la última tendrá como índice el valor 'n-1'. El lenguaje C es un ejemplo típico que utiliza este
modo de indexación.

Indexación base-uno (1): en esta forma de indexación, el primer elemento de la matriz tiene el
índice '1' y el último tiene el índice 'n' (para una matriz de 'n' componentes).

Indexación base-n (n): este es un modo versátil de indexación en la que el índice del primer
elemento puede ser elegido libremente, en algunos lenguajes de programación se permite que los
índices puedan ser negativos e incluso de cualquier tipo escalar (también cadenas de caracteres).

Operaciones Sobre Vectores


http://isaproglog.blogspot.com/2014/10/vectores.html

 Recorrido

Recorrer un vector significa acceder a todos y a cada uno de sus elementos desde el principio
hasta el final o viceversa.

Se puede acceder a los elementos de un vector para introducir datos (leer) en él o bien para ver su
contenido (escribir).

A la operación de acceder a todos los elementos para efectuar una acción determinada se
denomina recorrido del vector.
Esta operación se realiza usando estructuras repetitivas, cuya variable de control I, se utiliza
como subíndice del vector (por ejemplo V(i). El incremento del contador del bucle producirá el
tratamiento sucesivo de los elementos del vector

Asignación

No es posible asignar directamente un valor a todo el arreglo

Se debe asignar el valor deseado a cada componente usando la instrucción de asignación,


recordando que la asignación coloca el nuevo contenido en la variable destruyendo el valor
anterior.

Si se quiere asignar valores a todos los componentes del vector, se debe recurrir a las estructuras
repetitivas.

http://isaproglog.blogspot.com/2014/10/vectores.html
 Operación de Lectura

Implica acceder a los elementos de un vector para introducir datos.

Ejemplo:

http://isaproglog.blogspot.com/2014/10/vectores.html

 Escritura

Implica acceder a los elementos de un vector para ver su contenido.

http://isaproglog.blogspot.com/2014/10/vectores.html
videos apoyo

https://youtu.be/VcKrCJFGvkk

https://youtu.be/aEyEcH7SEmE

https://youtu.be/FZ0R-ubCLu4

https://youtu.be/1RBZOdF0hik

https://youtu.be/khV_CqgfF14

https://youtu.be/B5qV0ItFkLQ

Seleccione por lo menos tres elementos del código que desarrollo para la práctica 2, cópielos y
describa como los usaría en la construcción de la solución del problema

Paso a paso

Esta estructura la podemos utilizar para desarollar estas entradas en el juego

Nombre del juego


Batalla naval toiS 2020

Seleccionar equipo A o B
Ejecutar el juego
Organizar los barcos horizontalmente y verticalmente

1.

m=input('Ingrese el tamaño de la matriz cuadrada \n* m= '); %solicita y almacena tamaño de la


matriz que se genera.
n=input('Ingrese el limite inferior del la matriz de numeros \n a= ');%solicita y almacena limite
inferior.
s=input('Ingrese el limite superior del la matriz de numeros \n b= ');%solicita y almacena limite
superior.
R=randi([n,s],m,m);%genera matriz aleatoriamente, limite inferior y superior.

disp('matriz generada ') % muestra mensaje.


disp(R)%muestra la matriz.
Este código lo podríamos utilizar para la generación de la matriz para dar inicio al juego,a un que
podría tener un cambio,para generar dos matrices una A y B para que se an dos jugadores

Mostrar los barcos hundidos


Mostrar tiros en el mar o en barcos
Mostras disparos y puntuación almacenar datos

2.dat_busc = input('ingrese el valor del dato que desea buscar;');%solicita y almacenar dato que
se quiere buscar.
[pf,pc]=find(R==dat_busc);%determina cordenadas del dato.
[v_rep,cont_v] = size(pf);%determine numero de veces que se repite

Esta estructura la podemos utilizar para desarollar estas entradas en el juego

Mostrar los barcos hundidos


Mostrar tiros en el mar o en barcos
Sin

3.

Mostar en pantalla las jugadas


La puntuación
Mostrar disparos acertados en
barcos
mostrar puntos por aciertos en barcos
De acuerdo a l clase de barco se necesitara de uno o mas disparos para hundirlos
mostrar rendirse
Terminar el juego con el ganador y cantidad de disparos hechos

for n = 1:v_rep % ciclo muestra cordenadas del dato


disp("("+pf(n)+","+pc(n)+")");%muestra mensaje con cordenadas.
end
for o = 1:v_rep % ciclo para recorrer las cordenadas,consulte y cambio de dato.
disp("desea modificar las cordenadas("+ pf(o) +","+ pc(o) + ") s | n");%muestra mensaje.
%consulta desea modificar el valor de esa cordenada.
modifc = input('RTA//:','s'); %solicita y almacena la opcion seleccionada

Este código lo podemos ejecutar para hacer repetitivo los disparos hasta que halla un ganador
Conclusiones

En desarrollo del paso 5 aporte individual nos apoyamos con estructuras para utilizar en matlab
para el desarrollo del problema a resolver

Aportamos ideas para poder construir el algoritmo para desarrollo del problema apoyados en paso
4 practica 2

Investigamos sobre estructuras FOR- WHILE, Estructuras tipo CASE, Lógica de vectores,
Bibliografía

https://www.ibm.com/support/knowledgecenter/es/SSDKXQ_6.3.0/com.ibm.itm.doc_6.2.2/termi
nal_scriptflowcontrol_r.htm

https://www.tutorialesprogramacionya.com/javaya/detalleconcepto.php?
punto=12&codigo=85&inicio=0

http://isaproglog.blogspot.com/2014/10/vectores.html

https://www.sqlshack.com/es/sentencia-case-en-sql/

También podría gustarte