Está en la página 1de 14

UNIVERSIDAD DE CUNDINAMARCA

FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 1 DE 14

ASIGNATURA: Estructuras de Información CÓDIGO: 612013316


DOCENTE: Pedro G. Meléndez R MAIL: pedromelendezrivera@gmail.com
GUIA No. 01 FECHA: 13 de febrero de 2018

Objetivos:

1. Gestión de arreglos estáticos unidimensionales y bidimensionales en c++ y Java

Analice el comportamiento de los siguiente códigos y conceptualice el uso de las sentencias: using
std:: cout setw

Valide como se inicializa un arreglo y como se accede a cada uno de sus elementos.

Verifique el uso de comentarios dentro del código

Determine como es el uso de números aleatorios

2. Uso de variables estáticas, globales y locales

Ámbito y vida de las variables

Variables estáticas y dinámicas

3. Definición de funciones (métodos)


UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 2 DE 14

// Inicialización de un arreglo.

Especificación del tamaño de un arreglo con una variable constante


y establecimiento de los elementos de un arreglo con cálculos

El calificador const declara una variable constante. Las variables constantes deben inicializarse con una
expresión constante cuando se declaran y no pueden modificarse de ahí en adelante

// Establece el arreglo con los enteros pares del 2 a 20.


UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 3 DE 14

Suma de los elementos de un arreglo

// Calcula la suma de los elementos del arreglo.


UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 4 DE 14

Uso de números aleatorios

La función rand genera un entero sin signo entre 0 y RAND_MAX (una constante simbólica definida en el
archivo de encabezado <cstdlib>. El valor de RAND_MAX debe ser por lo menos de 32767: el máximo valor
positivo para un entero de dos bytes (16 bits). Para GNU C++, el valor de RAND_MAX es 2147483647; para
Visual Studio, el valor de RAND_MAX es 32767. Si rand produce verdaderamente enteros al azar, cada
número entre 0 y RAND_MAX tiene una oportunidad (o probabilidad) igual de ser elegido cada vez que se
llame a rand

La función rand genera números seudoaleatorios. Si se llama repetidas veces a rand, se produce una
secuencia de números que parecen ser aleatorios. No obstante, la secuencia se repite a sí misma cada vez
que se ejecuta el programa. Una vez que un programa se ha depurado extensivamente, puede condicionarse
para producir una secuencia diferente de números aleatorios para cada ejecución. A esto se le conoce como
randomización, y se logra mediante la función srand de la Biblioteca estándar de C++. La función srand
recibe un argumento entero unsigned y siembra la función rand para que produzca una secuencia distinta
de números aleatorios para cada ejecución del programa.

Para randomizar sin tener que introducir una semilla cada vez, podemos usar una instrucción como la
siguiente:

srand( time( 0 ) );

Esto hace que la computadora lea su reloj para obtener el valor para la semilla. La función time (con el
argumento 0, como se escribe en la instrucción anterior) devuelve la hora actual como el número de
segundos transcurridos desde enero 1, 1970, a media noche en Tiempo del Meridiano de Greenwich (GMT).
Este valor se convierte en un entero unsigned y se utiliza como semilla para el generador de números
aleatorios. El prototipo de la función time está en <ctime>.

// Tira un dado de seis lados 3,000,000 veces.


UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 5 DE 14

Ejercicio 1
Escriba un algoritmo para simular el tiro de dos dados. El programa debe utilizar rand para tirar el primer
dado, y de nuevo para tirar el segundo dado. Después debe calcularse la suma de los dos valores. [Nota:
cada dado puede mostrar un valor entero del 1 al 6, por lo que la suma de los valores variará del 2 al 12,
siendo 7 la suma más frecuente, mientras que 2 y 12 serán las sumas menos frecuentes]. En la figura se
muestran las 36 posibles combinaciones de los dos dados. Su programa debe tirar los dados 36,000 veces.
Utilice un arreglo unidimensional para registrar el número de veces que aparezca cada una de las
posibles sumas. Imprima los resultados en formato tabular. Determine además si los totales son razonables
(es decir, hay seis formas de tirar un 7, por lo que aproximadamente una sexta parte de los tiros deben ser
7). (validar el algoritmo en C++ )

Ejercicio 2
UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 6 DE 14

Con el ejercicio anterior crear una matriz (n x n) que tabule la frecuencia del valor generado en cada tirada
de los lados. Considere el primer dado a la fila y el segundo dado a la columna. (implementar el algoritmo en
C++ )

Ejercicio 3
Complemente el ejercicio anterior calculando la suma por fila y la suma por columna y muestre el resultado .
(implementar el algoritmo en C++ )

Ámbito y Vida de las variables.

Entendemos por ámbito de una variable el lugar, dentro de un programa, en el que esta variable tiene
significado. Hasta el momento todas nuestras variables han tenido como ámbito todo el programa, y quizá
ahora no es sencillo hacerse una idea intuitiva de este concepto; pero realmente, no todas las variables
están “en activo” a lo largo de todo el programa.

Variables Locales y Variables Globales

Una variable puede definirse fuera de la función principal: en el programa, pero no en una función. Esas
variables se llaman globales, y son válidas en todo el código que se escriba en ese programa. Su espacio
de memoria queda reservado mientras el programa esté en ejecución. Diremos que son variables globales,
que su ámbito es todo el programa y que su vida perdura mientras el programa esté en ejecución.

Analice el comportamiento de los siguientes programas:


UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 7 DE 14

FUNCIONES
Desde un punto de vista académico, se entiende por procedimiento el conjunto de sentencias a las que se
asocia un identificador (un nombre), y que realiza una tarea que se conoce por los cambios que ejerce sobre
el conjunto de variables. Y entendemos por función el conjunto de sentencias a las que se asocia un
identificador (un nombre) y que genera un valor nuevo, calculado a partir de los argumentos que recibe.

Los elementos que componen un procedimiento o función son:

1. Un identificador, que es el nombre que sirve para invocar a esa función o a ese procedimiento.

2. Una lista de parámetros, que es el conjunto de variables que se facilitan al procedimiento o función
para que realice su tarea modularizada. Al hacer la abstracción del sistema, y modularlo en partes más
accesibles, hay que especificar los parámetros formales que permiten la comunicación y definen el dominio
(tipo de dato) de los datos de entrada. Esa lista de parámetros define el modo en que podrán comunicarse
el programa que utiliza a la función y la función usada.

3. Un cuerpo o conjunto de sentencias. Las necesarias para poder realizar la tarea para la que ha sido
definida la función o el procedimiento.

4. Un entorno. Entendemos por entorno el conjunto de variables globales, y externas por tanto al
procedimiento o función, que pueden ser usadas y modificadas dentro del ámbito de la función.

Esas variables, por ser globales y por tanto definidas en un ámbito más amplio al ámbito local de la función,
no necesitan ser explicitadas en la lista de parámetros de la función.

Es una práctica desaconsejable trabajar con el entorno de la función desde el ámbito local de la función.
Hacerlo lleva consigo que esa función deja de ser independiente de ese entorno y, por tanto, deja de ser
UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 8 DE 14

exportable. Perderíamos entonces el valor de la independencia funcional, que es una de las propiedades de
la programación por módulos.

Podemos pues concluir que el uso de variables globales dentro del cuerpo de un procedimiento o función es
altamente desaconsejable.

Definición de la función
tipo_funcion nombre_funcion([tipo1 var1][,… tipoN varN])
{
[declaración de variables locales]
[cuerpo de la función: grupo de sentencias]
[return(parámetro);]
}

FUNCIONES CON LISTAS DE PARAMETROS VACIOS


//funcion (método) sin parámetros y no retorna nada

// Funciones que no reciben argumentos.


UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 9 DE 14

//funcion (método) que recibe parámetros y no retorna nada


UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 10 DE 14

// Funcion (método) sin parámetros y retorno de un valor

//funcion (metodo) con parametros y retorno de un valor


UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 11 DE 14

Variables estáticas y dinámicas.


Con respecto a la extensión o tiempo de vida, las variables pueden ser estáticas o dinámicas. Será estática
aquella variable que una vez definida, persiste hasta el final de la ejecución del programa. Y será dinámica
aquella variable que puede ser creada y destruida durante la ejecución del programa.

No se requiere ninguna palabra clave para indicar al compilador que una variable creada es dinámica. Sí es
en cambio necesario indicar al compilador, mediante la palabra clave static, cuando queremos que una
variable sea creada estática.

Esa variable puede ser local, y en tal caso su ámbito será local, y sólo podrá ser usada cuando se estén
ejecutando sentencias de su ámbito; pero su extensión será la misma que la del programa, y siempre que
se vuelvan a las sentencias de su ámbito allí estará la variable, ya creada, lista para ser usada. Cuando
terminen de ejecutarse las sentencias de su ámbito esas posiciones de memoria no serán accesibles, porque
estaremos fuera de ámbito, pero tampoco podrá hacerse uso de esa memoria para otras variables, porque
la variable estática seguirá “viva” y esa posición de memoria sigue almacenando el valor que quedó de la
última vez que se ejecutaron las sentencias de su ámbito.

Si se quiere que el valor permanezca durante la ejecución del programa entero, y no sólo cada vez que se
entra de nuevo en el ámbito de esa variable, entonces tenemos dos posibilidades: La primera consiste en
crear esa variable como global, extendiendo su ámbito al ámbito de todo el programa (en este caso la
variable no queda bajo control del bloque donde queríamos ubicarla, o bajo control único de la función que
la necesita, sino que es accesible (se puede leer y se puede variar su valor) desde cualquier sentencia del
programa); La segunda consiste en crear una variable static dentro del bloque o función.

Verificar:
UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 12 DE 14

// Un ejemplo sobre el alcance de las variables


UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 13 DE 14

Ejercicio 4
Para el siguiente programa, indique el alcance de cada uno de los siguientes elementos:

a) la variable x en main.
b) la variable y en cubo.
c) la función cubo.
d) la función main.
e) el prototipo de función para cubo.
f) El identificador y en el prototipo de función para cubo.
UNIVERSIDAD DE CUNDINAMARCA
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS

GUÍA – ACTIVIDAD DE APRENDIZAJE PAGINA 14 DE 14

ENTREGABLE

Implemente en Java los ejemplos propuestos en la actividad:

Guia1Ejemplo2

Guia1Ejemplo3

Guia1Ejemplo4

Guia1Ejemplo5

Guia1Ejemplo6

Guia1Ejemplo7

Guia1Ejemplo8

Guia1Ejemplo9

Guia1Ejemplo10

Comprimirlos en un archivo rar y subirlos al aula virtual. Fecha máxima de entrega 19 de febrero.

Cibergrafía de apoyo:
http://ocw.upm.es/lenguajes-y-sistemas-informaticos/programacion-en-java-i/lectura-obligatoria

https://sites.google.com/site/imformesjava/home/7-estructuras-de-almacenamiento

También podría gustarte