CLASE 14-06

Anuncio
Facultad Regional
ALGORITMOS Y ESTRUCTURAS DE DATOS
NIVEL I
San Francisco
TUTORÍAS
Ing. en Sistemas de Información
CONCEPTOS
OBTENCIÓN DE NÚMEROS ALEATORIOS EN C

FUNCIÓN rand()
En C, para obtener números aleatorios, tenemos la función rand(). Esta función, cada vez que la
llamamos, nos devuelve un número entero aleatorio entre 0 y el RAND_MAX (un número enorme,
como de 2 mil millones).
El primer problema que se nos presenta es que no solemos querer un número aleatorio en ese
rango; podemos querer, por ejemplo, un número aleatorio entre 0 y 10. O de forma más general,
entre 0 y N.
El código que debemos emplear en dicho caso es el siguiente:
#include <stdlib.h> -> INCLUÍMOS LA LIBRERÍA
...
numero_aleatorio = rand() % 11; -> N° ALEATORIO ENTRE 0 Y 10
numero_aleatorio = rand() % (N+1); -> N° ALEATORIO ENTRE 0 Y N
¿Y si queremos un rango que no empiece en 0?. Por ejemplo, queremos un rango entre 20 y 30
(de forma más general, entre M y N con N mayor que M). Pues es fácil, obtenemos un número
entre 0 y 10 y le sumamos 20 (un número entre 0 y N-M y le sumamos M).
El código que debemos emplear en dicho caso es el siguiente:
#include <stdlib.h> -> INCLUÍMOS LA LIBRERÍA
...
numero_aleatorio = 20 + rand () % 11; -> NUMERO ENTRE 20 Y 30
numero_aleatorio = M + rand () % (N-M+1); -> NUMERO ENTRE M Y N
Existen otras variantes de la función rand() como:

FUNCIÓN drand(48)
Calcula números aleatorios enteros; luego de una determinada cantidad de cálculos se repiten los
números calculados.

FUNCIÓN srand()
Calcula números aleatorios enteros sin que se repita la serie.

FUNCIÓN srand(48)
Calcula números aleatorios con decimales sin que se repita la serie.
BIANCIOTTI, Andrés Hernán
[email protected]
Facultad Regional
ALGORITMOS Y ESTRUCTURAS DE DATOS
NIVEL I
San Francisco
TUTORÍAS
Ing. en Sistemas de Información

FUNCIÓN random
La función random() es otro de los comandos empleados en C para generar números aleatorios.
Esta función, cada vez que la llamamos, nos devuelve un número entero aleatorio entre 0 y el
N°_LIMITE (un número elegido como límite superior por el programador).
El código para emplear la función es el siguiente:
#include <stdlib.h> -> INCLUÍMOS LA LIBRERÍA
...
randomize();
numero_aleatorio = random(N°_LIMITE); -> N° ALEATORIO ENTRE 0 Y
N°_LÍMITE
VALIDACIÓN DE DATOS
CONCEPTO
La validación de datos se emplea cuando queremos forzar al usuario de nuestro a que ingrese
ciertos valores que consideramos necesarios para el funcionamiento del programa; en el caso de
que el valor ingresado no sea adecuado, se vuelve a solicitar el ingreso.
Situación de ejemplo:
Se debe ingresar el código de supermercado, pudiendo ser este 1,2 o 3…
Esto nos da la pauta de que cualquier otro número distinto de 1,2 o 3 no está contemplado como
código de supermercado dentro de nuestro programa. Por lo tanto si se ingresa un 4 se deberá
pedir nuevamente el ingreso de datos.
ESTRUCTURA ALGORÍTMICA UTILIZADA
Como la cantidad de veces que un usuario puede fallar en la carga de un dato es indefinida, se
emplea una estructura de control repetitiva no fija. Si bien se han visto dos estructuras de este tipo
(WHILE y DO-WHILE) se opta por la utilización de un DO-WHILE a fines de evitar la duplicación de
código.

DIAGRAMA
A continuación se muestra la forma genérica de la estructura de validación empleando un DOWHILE y un ejemplo relacionado a la situación de ejemplo.
BIANCIOTTI, Andrés Hernán
[email protected]
Facultad Regional
ALGORITMOS Y ESTRUCTURAS DE DATOS
NIVEL I
San Francisco
TUTORÍAS
Ing. en Sistemas de Información
FORMA GENÉRICA

EJEMPLO
OPCIÓN
COD
CONDICIÓN
COD <1
||
COD >3
CÓDIGO
A continuación se muestra la forma genérica del código en C++ para la estructura de validación
empleando un DO-WHILE y un ejemplo relacionado a la situación de ejemplo.
FORMA GENÉRICA
...
int opción;
do
{
printf(“INGRESO DE OPCIÓN:”);
scanf(“%d”,&opcion);
}
while(opción!=condicion);
...
EJEMPLO
...
int cod;
do
{
printf(“INGRESE EL CÓDIGO DEL SUPERMERCADO:”);
scanf(“%d”,&cod);
}
while(cod<1||cod>3);
...
BIANCIOTTI, Andrés Hernán
[email protected]
Facultad Regional
ALGORITMOS Y ESTRUCTURAS DE DATOS
NIVEL I
San Francisco
TUTORÍAS
Ing. en Sistemas de Información
MODULARIDAD (FUNCIONES)
VENTAJAS DE LA MODULARIDAD







Divide y minimiza la complejidad
Aísla operaciones complejas
Los módulos se codifican una sola vez y pueden ser reutilizados
Programación en paralelo (en el mismo instante) de los diferentes módulos que ahorra
tiempo
Mayor organización y claridad en el código del programa
Creación de puntos de control centralizados que permite detectar las fallas rápidamente y
optimizar el mantenimiento
Aprovechamiento de tiempos de proceso
FUNCIONES O MÓDULOS
Son subprogramas que se encargan de una tarea específica del problema general.
PROBLEMA
MÓDULO 1
MÓDULO 2
MÓDULO 3
MÓDULO 4
MÓDULO n
Cada módulo resolverá una parte del problema general y dentro de él se producirá:
ENTRADA
(DATOS)

SALIDA
PROCESO
(INFORMACIÓN)
REPRESENTACIÓN GRÁFICA
PROGRAMA
PRINCIPAL
MÓDULO 1
CONJUNTO DE
ACCIONES A
EJECUTARSE
DENTRO DEL
MÓDULO
RETORNO AL
PROGRAMA
BIANCIOTTI, Andrés Hernán
BIFURCACIÓN
DEL PROGRAMA
AL MÓDULO
MÓDULO 1

LLAMADA A MÓDULO
MÓDULO 2
MÓDULO 2
FIN DEL
PROGRAMA
CONJUNTO DE
ACCIONES A
EJECUTARSE
DENTRO DEL
MÓDULO
RETORNO AL
PROGRAMA
[email protected]
Facultad Regional
ALGORITMOS Y ESTRUCTURAS DE DATOS
NIVEL I
San Francisco
TUTORÍAS
Ing. en Sistemas de Información
EJERCICIOS DE APLICACIÓN DE CONCEPTOS
Antes de comenzar a resolver un ejercicio:
 Identificar los datos que brinda el enunciado
 Identificar la información que se debe obtener con esos datos
Si realizamos la identificación de estos componentes será muy fácil darse cuenta que debe hacer
nuestro sistema para transformar los datos que ingresan en la información que debe salir.
EJERCICIO DE EJEMPLO MODULARIDAD
Ingresar 10 importes de ventas. Mostrar la cantidad de ventas cuyos importes sean mayores a
$1000; la suma de las 5 primeras ventas y la cantidad de ventas cuyos importes sean inferiores a
$50. Realizar el diagrama de lógica utilizando modularidad.
EJERCICIO PROPUESTO N° 6 – TRABAJO PRÁCTICO N° 2
Escriba un programa que permita jugar “Doble o Nada”. El jugador apuesta una cantidad de dinero
y tira la moneda. Si sale cara (1) obtiene el doble de la cantidad apostada. Si sale cruz (0) pierde lo
apostado.
Permitir al jugador realizar jugadas hasta que decida abandonar el juego. El programa debe sacar
por pantalla el número de jugadas y el total ganado por el jugador (si ha perdido dinero debe
mostrarse como número negativo).
BIANCIOTTI, Andrés Hernán
[email protected]
Descargar