213022_373 – Fundamentos de programación-Fase 3 FABERCUCAITA

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 18

213022_373 – Fundamentos de programación

Fase 3

Unidad 2 – Fase 3 – Estructuras repetitivas y arreglos

Presentado al profesor:

María Isabel Andrade Prado

Entregado por:

Faber Manuel Cucaita Morales


Código: 1007590372

Grupo: 213022_373

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA - UNAD


ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
INGENIERÍA DE TELECOMUNICACIONES

29710/2024
Introducción

La presente actividad consta de un conjunto de problemas los cuales


se debe elegir resolver (2) problemas (1 de estructuras repetitivas y otro
de matrices), desarrollar la tabla de requerimientos y aportar carpeta
con los archivos de cada proyecto completo trabajado en C# en Visual
Studio Community 2022.

Objetivos

-
Utilizar estructuras de control (simple, anidado), condicionales, ciclos, y
uso de arreglos en los problemas asignados que permitan la solución
adecuada para cada problema.

-Analizar el problema asignado por medio de la identificación de los


requerimientos, entradas, salidas y resultados que permitan dar solución
mediante software posteriormente

-Codificar y hacer las respectivas pruebas de escritorio, para validar que


el programa este entregando los resultados esperados
Descripción del Paso 3:

A continuación, encontrará indicaciones para el desarrollo del Paso 3 a


través de las siguientes actividades:

Actividad 1:
Del archivo titulado: “Anexo 1 - Banco de Problemas - Paso 3”,
cada estudiante debe seleccionar dos (2) problemas a desarrollar y
deberá publicar en el foro una tabla con la siguiente información, tal y
cómo se describe a continuación:

Estudiante: Faber Manuel Cucaita Morales


1. Se necesita diseñar un algoritmo que
Problema asignado permita mostrar por pantalla una
cantidad de elementos de la serie de
1. Estructuras Fibonacci, para esto se debe capturar
repetitivas un número entero positivo mayor que
1 por el teclado y esa debe ser la
cantidad de elementos a mostrar.

1. La liga de atletismo Corriendo Ligero tiene 6


corredores de 100 metros planos de los cuales
necesita clasificar 2 para las finales del torneo
Problema asignado nacional de atletismo. Los nombres de los 6
corredores son: Juan, Carlos, Pedro, Roberto,
Raúl y David, a los cuales se les tomó el tiempo
1. Problemas de sus últimas 6 carreras.
De acuerdo con la información anterior la liga
Matrices
necesita crear una aplicación que permite
Bidimensionale registrar los tiempos de los 6 atletas para
s determinar cuáles son los 2 que tendrán a cargo
la representación de la liga en los campeonatos
nacionales. Para seleccionarlos tener en cuenta:
El atleta con el mejor registro, pero ninguno de
sus tiempos debe haber excedido el tiempo de
10.4 segundos. El atleta que cuente con el mejor
promedio en sus 6 tiempos establecidos y que
ninguno de ellos exceda los 10.4 segundos. Se
debe capturar, por teclado, para cada atleta los
6 tiempos que deben estar en un rango de 10.1
a 10.5 segundos. Mostrar por pantalla la matriz
generada con la información y los nombres de
los 2 atletas indicando cuál clasifica por
promedio y cuál por el mejor tiempo.

Pantallazo participación en el
foro

Tabla 1. Información situación problema a resolver

Actividad 2:

El estudiante debe diligenciar la tabla de requerimientos con base en los


campos exigidos. La construcción de la tabla de requerimientos forma
parte del análisis del problema. Los requerimientos hacen referencia a
las necesidades de los usuarios, es decir, identifican los aspectos que los
usuarios del programa desean resolver mediante software
posteriormente. Estos requerimientos se denominan funcionales al
sostener una relación directa con la funcionalidad del sistema.

Problema 1. Estructuras repetitivas

Identificación del Descripción Entradas Resultados


requerimiento (salidas)
“Indique la longitud
Variable de la serie Cantidad ingresada Out guarda el valor
BigIntegerTryParse Fibonacci) por el usuario para convertirlo en
número entero number
Captura un número positivo
entero positivo
mayor que 1
Condicional do Convierte y valida Al validar el
while, if y un que la cantidad Número entero resultado muestra
contador ingresada sea >=1 positivo la cantidad de
Counter<number elementos de la
serie
Tabla 2. Tabla de requerimientos – problema

Actividad 3:

Utilizando el lenguaje de programación C#, el estudiante codifica y hace


las respectivas pruebas de escritorio para validar que el programa esté
entregando los resultados esperados. Para ello, es importante que
consulte los recursos educativos que están dispuestos en el Entorno de
Conocimiento, allí se explican paso a paso la forma de codificar la
solución básica. Importante que en el código fuente sea incluido al
comienzo unas líneas de comentarios donde se escriba los siguientes
datos:

• Nombre del estudiante


• Grupo
• Número y Texto del programa
• Código Fuente: autoría propia
Como respaldo a la carpeta del código se debe copiar en el informe el
código completo, donde se evidencie el resultado de las operaciones
realizadas por el programa creado.

Código de programación empleado en visual studio Community 2022

//Ejercicio 1 - Estructuras repetitivas


// Faber Manuel Cucaita Morales
//Fundamentos de programacion
//

using System.ComponentModel.Design;
using System.Numerics;

namespace SerieFibonacci
{
class Program
{
static void Main(string[] args)
{
Console.Write("Ingrese la longitud de la serie Fibonacci: ");
BigInteger number = 0;

do
{
if (BigInteger.TryParse(Console.ReadLine(), out number) && number > 0)
{
break;
}
else
{
Console.Write("El numero no es valido, Ingreselo de nuevo: ");
}

} while (true);

Fibonacciserie(0, 1, 1, number);

}
public static void Fibonacciserie (BigInteger firstnumber, BigInteger secondnumber,
int counter, BigInteger number)
{
Console.Write(firstnumber + " ");

if (counter < number)


{
Fibonacciserie(secondnumber, firstnumber + secondnumber, counter + 1,
number);
}
}
}
}

Pruebas de escritorio en el software Visual Studio Community 2022


Figura 1. Serie Fibonacci longitud de serie 15

-Como se observa en la figura 1 podemos ver como al ejecutar el código nos indica la
longitud de la serie, esto bajo la condición de ser un número entero positivo mayor a 1

Figura 2. Validación número positivo mayor a 1

-Al no cumplirse tal condición ej:1 el programa validará los datos ingresados si son
correctos o no y arrojará un cero y cerrará el programa
Figura 3. Validación de número no válido

-Como se observa al indicar un número negativo este validará los datos si es correcto o
no y enviará un mensaje diciendo: El numero no es válido inténtalo de nuevo

Actividad 2:

El estudiante debe diligenciar la tabla de requerimientos con base en los


campos exigidos. La construcción de la tabla de requerimientos forma
parte del análisis del problema. Los requerimientos hacen referencia a
las necesidades de los usuarios, es decir, identifican los aspectos que los
usuarios del programa desean resolver mediante software
posteriormente. Estos requerimientos se denominan funcionales al
sostener una relación directa con la funcionalidad del sistema.

Problema 2. Problema de matrices bidimensionales

Identificación del Descripción Entradas Resultados


requerimiento (salidas)
Muestra por Indica el valor que
Console.Write y un pantalla un mensaje Ejecución del ingresa el usuario
arreglo string explicativo al programa por el
usuario junto con el usuario
nombre de los
atletas
Bucle for Captura 6 tiempos Un condicional
ingresados por el 6 tiempos While if, Registrará
usuario en un rango ingresados por y validará que los
entre 10.1 y 10.5 teclado de cada datos ingresados
atleta sean correctos
Convertirá los datos
Bucle for int Opera los datos Tiempos ingresados en una matriz
ingresados por teclado
Bucle for int, Toma las variables
arreglos mejor tiempo Indicará el mejor
bidimensionales corredor, y mejor Tiempos ingresados tiempo y el mejor
string promedio para por teclado promedio de los dos
Condicional if operar los datos y atletas
validar que sean
Variables: correctos
mejorTiempoIndex
mejorcorredorIndex
Tabla 3. Tabla de requerimientos – problema

Actividad 3:

Utilizando el lenguaje de programación C#, el estudiante codifica y hace


las respectivas pruebas de escritorio para validar que el programa esté
entregando los resultados esperados. Para ello, es importante que
consulte los recursos educativos que están dispuestos en el Entorno de
Conocimiento, allí se explican paso a paso la forma de codificar la
solución básica. Importante que en el código fuente sea incluido al
comienzo unas líneas de comentarios donde se escriba los siguientes
datos:

• Nombre del estudiante


• Grupo
• Número y Texto del programa
• Código Fuente: autoría propia
Como respaldo a la carpeta del código se debe copiar en el informe el
código completo, donde se evidencie el resultado de las operaciones
realizadas por el programa creado.

Código de programación empleado en Visual Studio Community


2022

//Ejercicio 1 - Matrices bidimensionales


//Faber Manuel Cucaita Morales c.c 1007590372
//Fundamentos de programacion

class Program
{
static void Main(string[] args)
{
//Mensaje explicativo

Console.WriteLine("Este programa registra los tiempos de 6


corredores de 100 metros planos y determina los " + "2 que
representan a la liga en los campeonatos nacionales. Se consideran el
mejor tiempo y el mejor " + "promedio, siempre que alguno de los
tiempos exceda 10.4 segundos ");

string[] corredores = { "Juan", "Carlos", "Pedro", "Roberto", "Raul",


"David" };
double[,] tiempos = new double[6, 6]; //Matriz para almacenar los
tiempos de los corredores

//Capturar tiempos para cada corredor


for (int i = 0; i < corredores.Length; i++)
{
Console.WriteLine($"Ingrese los tiempos de {corredores[i]} (en
segundos, entre 10.1 y 10.5:");
for (int j = 0; j < 6; j++)
{

double tiempo;
while (true)
{
Console.Write($"Tiempo {j + i}: ");
if (double.TryParse(Console.ReadLine(), out tiempo))
{
if (tiempo >= 10.1 && tiempo <= 10.5)
{
tiempos[i, j] = tiempo;
break;
}
else
{
Console.WriteLine("El tiempo debe estar entre 10.1 y
10.5 segundos. Intentelo de nuevo.");
}
}
else
{
Console.WriteLine("Entrada invalida. intentelo de nuevo.
");
}
}
}
}

//Mostrar la matriz con los tiempos de los corredores ------ Juan:


10.1 10.4 ....
Console.WriteLine("\nMatriz de los tiempos: ");
Console.WriteLine("corredor\tTiempos");
for (int i = 0; i < corredores.Length; i++)
{
Console.Write($"{corredores[i]};\t");
for (int j = 0; j < 6; j++)
{
Console.Write($"{tiempos[i, j]}");
}
Console.WriteLine();
}

//Calcular el mejor tiempo y el mejor promedio


int mejorTiempoIndex = -1;
double mejorTiempo = double.MaxValue;
int mejorPromedioIndex = -1;
double mejorPromedio = double.MinValue;

for (int i = 0; i < corredores.Length; i++)


{
double sumaTiempos = 0;
bool excedelimite = false;

for (int j = 0; j < 6; j++)


{
sumaTiempos += tiempos[i, j];
if (tiempos[i, j] > 10.4)
{
excedelimite = true;
break;
}
}

double Promedio = sumaTiempos / 6;


if (excedelimite)
{
double mejorTiempocorredor = tiempos[i, 0];
for (int j = 1; j < 6; j++)
{
if (tiempos[i, j] < mejorTiempocorredor)
{
mejorTiempocorredor = tiempos[i, j];
}
}

if (mejorTiempoIndex == -1 || mejorTiempocorredor <


mejorTiempo)
{
mejorTiempoIndex = i;
mejorTiempo = mejorTiempocorredor;
}

if (mejorPromedioIndex == -1 || Promedio < mejorPromedio)


{
mejorPromedioIndex = i;
mejorPromedio = Promedio;
}
}

//Mostrar resultados
Console.WriteLine("\n Resultados:");
Console.WriteLine("corredor\t Mejor Tiempo\t\tPromedio");
for (int i = 0; i < corredores.Length; i++)
{
double mejorTiempocorredor = tiempos[i, 0];
for (int j = 1; j < 6; j++)
{
if (tiempos[i, j] < mejorTiempocorredor)
{
mejorTiempocorredor = tiempos[i, j];
}
}

Console.Write($"{corredores[i]}: \t\t{mejorTiempocorredor}\t\t\
t");
double sumaTiempos = 0;
for (int j = 0; j < 6; j++)
{
sumaTiempos += tiempos[i, j];
}
Console.WriteLine($"{sumaTiempos / 6}");
}

if (mejorTiempoIndex != -1)
{
Console.WriteLine($"El corredor con el mejor tiempo es:
{corredores[mejorTiempoIndex]}");
}
else
{
Console.WriteLine("Ningun corredor cumple con los criterios para
el mejor tiempo.");
}

if (mejorPromedioIndex != -1)
{
Console.WriteLine($"El corredor con el mejor promedio es:
{corredores[mejorPromedioIndex]}");
}
else
{
Console.WriteLine("Ningun corredor cumple con los criterios para
el mejor promedio.");
}

Console.ReadKey();

}
}

Pruebas de escritorio en el software Visual Studio Community


2022
Figura 4. Ejecución del programa y mensaje explicativo

-Como se puede observar el programa muestra al usuario por pantalla


un mensaje explicativo acerca de los tiempos que debe ingresar para 6
atletas bajo la condición de tiempo entre 10.1 y 10.5 segundos.

Nota: Importante indicar el tiempo separado por coma

Figura 5. Ingreso de tiempos de cada atleta


Como se puede observar se indica el nombre del atleta junto con el
tiempo ingresado por teclado esté bajo la condición indicada
anteriormente

Figura 6. Generación de la matriz y resultados de tiempos

-Como se observa en la figura 6 el usuario al ingresar los datos correctos


en el programa este los validara y seguidamente creará una matriz
como se indicó en el código de 6*6 operando matemáticamente e
indicando el resultado para cada atleta.
Figura 7. Resultados finales - mejor tiempo-promedio

-Como se observa en la figura 7 el programa tomará los datos


ingresados y a partir de allí validará y realizará el cálculo matemático
tanto para buscar el mejor promedio entre los 6 corredores como para el
mejor tiempo y promedio

-Como se observa los 2 atletas que representarán a la liga de atletismo


en los campeonatos nacionales serán Juan, Carlos

Conclusiones

-Se logró diseñar un algoritmo que permite mostrar por pantalla al


usuario e indicar la longitud de la serie de Fibonacci, para esto se debe
ingresar un número entero positivo mayor que 1 por el teclado y esa
debe ser la cantidad de elementos a mostrar, de lo contrario el
programa enviará un mensaje indicando que ingrese otro numero, o
saldrá del programa si este no es mayor a 1.
- Se logró diseñar una aplicación que permite capturar los tiempos de 6
atletas por teclado en un rango entre 10.1 y 10.5 segundos, mostrando
por pantalla la matriz generada con los nombres de los atletas indicando
finalmente los resultados y dando a conocer cuáles son los 2 atletas que
clasificaron a partir del mejor tiempo y mejor tiempo-promedio. Esto
bajo la condición de estar por debajo de 10.4 segundos su promedio y
tiempo de los 6 registros.

-Gracias al material estudiado y ejercicios practicos de programacion se


logro poner en practica la elaboracion de algoritmos y programas que
permitieron solucionar problemas básicos de la vida real a través del
lenguaje C# en Visual Studio Community 2022.

Referencias

Serie. (2024, March 12). 1 - Estructuras Repetitivas - Serie

Fibonacci. YouTube. https://www.youtube.com/watch?

v=2C2uEO8KQfE

Liga. (2024, April 16). 1 - Matrices bidimensionales - Liga de

atletismo Corriendo Lijero. YouTube.

https://www.youtube.com/watch?v=q3EviFXP2rk&t=10s

de, E. (2020, June 26). Estructura de Control Repetitiva While y

Ejemplos en C# (C-Sharp). YouTube.

https://www.youtube.com/watch?v=jjIar0TjoKA

for, C. (2022, November 5). Ciclo for en C# - Bien explicado.

YouTube. https://www.youtube.com/watch?v=mxCWF9QH-54
son. (2024, February 18). 💻MATRICES en PROGRAMACIÓN ¿Qué son

y cómo funcionan? 💻 | Cómo funciona un ARRAY

Multidimensional. YouTube. https://www.youtube.com/watch?

v=twRXsDm2FUo

Cero. (2020, October 31). 28. Arreglos bidimensionales (Matrices)

(Parte I) - Curso C# desde Cero. YouTube.

https://www.youtube.com/watch?v=wXsckHlb1NI

También podría gustarte