Objetivos El alumno conocerá y aplicará los conceptos de arreglo y

Anuncio
PRÁCTICA
ARREGLOS Y ESTRUCTURAS
Objetivos
El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de
programas que resuelvan problemas de tipo numérico.
Al final de esta práctica el alumno podrá:
1. Manejar arreglos de varias dimensiones.
2. Manipular estructuras.
3. Realizar correctamente programas que utilicen arreglos y estructuras.
Antecedentes
1. Manejar sentencias de control de flujo.
2. Entender el concepto de arreglo y estructura en la programación estructurada.
Introducción
Arreglo
Un arreglo es un conjunto de datos del mismo tipo, que están organizados secuencialmente
en memoria principal, y que dichos datos se acceden a través del nombre del arreglo. Cada
uno de los componentes del arreglo es llamado elemento, y cada elemento ocupa una
dirección contigua en memoria.
Los arreglos pueden ser de una, dos o más dimensiones. La complejidad de su uso aumenta
de acuerdo al número de dimensiones en que se haya definido el arreglo. Así un arreglo de
una dimensión se puede ver como una lista lineal de datos, uno de dos dimensiones como
una tabla, y uno de tres dimensiones como un conjunto de tablas.
Ejemplo un arreglo de una dimensión o unidimensional:
int arr1[5];
En esta declaración se indica que a la variable arr1 le asigne un espacio en memoria, de tal
forma que se puedan almacenar 5 elementos de tipo int. Por ejemplo, si en un cierto equipo,
el tipo int tiene un tamaño de 2 bytes, quiere decir que la dirección de cada elemento,
suponiendo que empieza en FF00, sería:
arr1[0]
arr1[1]
arr1[2]
arr1[3]
arr1[4]
FF00
FF02
FF04
FF06
FF08
Con esto se puede observar que las direcciones son contiguas y dejan 2 bytes para
almacenar correctamente a un int.
Elaborada por:
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
Programación Avanzada y Métodos Numéricos
PRÁCTICA
ARREGLOS Y ESTRUCTURAS
Cabe hacer notar que el arreglo emplea subíndices para hacer referencia a cada elemento de
éste. Así, el primer elemento del arreglo está asociado con el subíndice 0, el segundo con el
1 y así sucesivamente hasta el subíndice n-1, donde n es el número de elementos del arreglo.
Ejemplo de un arreglo de 2 dimensiones:
int arr2[3][2];
La dirección de cada elemento, suponiendo que empieza en FF0A, sería:
arr2[0][0]
arr2[0][1]
arr2[1][0]
arr2[1][1]
arr2[2][0]
arr2[2][1]
FF0A
FF0C
FF0E
FF10
FF12
FF14
Se puede observar que las localidades de memoria se asignan por renglones, es decir, se
colocan los 2 elementos del renglón 0 de manera consecutiva, después los 2 elementos del
renglón 1 y así sucesivamente.
Ejemplo utilizando arreglos
Ejemplo 1. Leer los elementos de una matriz cuadrada de orden 4 y desplegarlos en pantalla.
Elaborada por:
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
Programación Avanzada y Métodos Numéricos
PRÁCTICA
ARREGLOS Y ESTRUCTURAS
-Explicación de las variables
i: Variable de tipo entero, utilizada como variable de control de ciclos y como índice del
arreglo.
j: Variable de tipo entero, utilizada como variable de control de ciclos y como índice del
arreglo.
M: Arreglo bidimensional de tipo entero.
-Código
/* Ejemplo1: Programa que lee y despliega en pantalla una matriz
de 4 x 4 */
#include<stdio.h>
void main(){
int M[4][4];
int i,j;
/* Ciclo para la lectura por
for(i=0;i<4;i++)
for(j=0;j<4;j++){
printf(“Dame el elemento
scanf(“%d”,&M[i][j]);
}
printf(“\n”);
/*Ciclo para la escritura de
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf(“%d\t”,M[i][j]);
printf(“\n”);/*nueva línea
}
}
renglón*/
%d,%d: “,i,j);
la matriz en pantalla*/
para imprimir el siguiente renglón*/
Estructuras
Una estructura es un conjunto de datos a los que se hace referencia a través de un mismo
nombre. A diferencia de un arreglo, una estructura puede tener elementos de distintos tipos,
por ejemplo de tipo int, float, double, char, etc.
Declaración de una estructura
struct{
tipo1 nom_var11, nom_var12,…;
tipo2 nom_var21, nom_var22,…;
.
.
tipon nom_varn1, nom_varn2,…;
}nombre_variable_estructura ;
Elaborada por:
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
Programación Avanzada y Métodos Numéricos
PRÁCTICA
ARREGLOS Y ESTRUCTURAS
Ejemplo de declaración de una estructura
struct {
int i,j;
float x,y;
}var_estructura;
En la sentencia anterior se define una variable de tipo estruct nombrada var_estructura
compuesta de dos elementos de tipo int y dos elementos de tipo float.
Ejemplo utilizando estructuras
Ejemplo 2. Leer el nombre y edad de un alumno y almacenarlo en una estructura.
-Explicación de variables
alumno: Variable de tipo estructura con 2 variables.
nombre: Arreglo unidimensional de tipo carácter.
edad: Variable de tipo entero.
-Código
/* Ejemplo 2: Programa que lee el nombre y la edad del alumno y
los guarda en una estructura */
#include<stdio.h>
void main(){
/*Declaración de la estructura con el nombre alumno*/
struct{
char nombre[50];
int edad;
}alumno;
printf(“\n Introduce el nombre: “);
/*Lee la cadena introducida utilizando el formato %s, y es
almacenada en la variable nombre de la estructura alumno*/
scanf(“%s”,alumno.nombre);
printf(“\n Introduce la edad: “);
scanf(“%i”,&alumno.edad);
printf(“\n\nEl nombre tecleado es %s”,alumno.nombre);
printf(“\nLa edad es %i”,alumno.edad);
}
En este ejemplo se observa que para referirse a un elemento de la estructura se hace uso del
operador punto (.), separando el nombre de la variable de tipo estructura y el nombre del
elemento: alumno.nombre y alumno.edad.
Elaborada por:
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
Programación Avanzada y Métodos Numéricos
PRÁCTICA
ARREGLOS Y ESTRUCTURAS
Problemas Propuestos
1. Hacer el algoritmo y programa que almacene números en una matriz de 5 x 6.
Imprimir la matriz, así como la suma de todos sus elementos.
2. Hacer el algoritmo y programa que lea una matriz de 5 x 5 y determine la posición
[renglón, columna] del valor máximo en la matriz. En caso de que el valor máximo
se repita, determinar todas las posiciones en las que se encuentra.
3. Hacer el algoritmo y programa que lea una matriz de 6 x 4. Calcular la suma de
cada renglón y almacenarla en un vector; la suma de cada columna y almacenarla en
otro vector; e imprimir ambos vectores.
4. Hacer el algoritmo y programa que lea una matriz de 3 x 5. Sumar las columnas e
imprimir la columna que tuvo la máxima suma, así como ese resultado.
5. Hacer el algoritmo y programa que lea una matriz de 5 x 5 y que almacene la
diagonal principal en un vector. Imprimir el vector resultante.
6. Hacer el algoritmo y programa que llene automáticamente una matriz de 20 x 20
con valores de cero, excepto en la diagonal principal, que deberán ser unos.
Imprimir en pantalla.
7. Hacer el algoritmo y programa que almacene en un arreglo de 3 dimensiones, dos
matrices cuadradas de 3 x 3, hacer la suma, y guardar la nueva matriz, dentro del
mismo arreglo. Imprimir las tres matrices.
8. Hacer el algoritmo y programa que lea una matriz de 5 x 5, y que imprima la matriz
transpuesta.
9. Hacer el algoritmo y programa que lea una matriz de 5 x 6 y que imprima cuántos de los
números almacenados son ceros, cuántos son positivos y cuántos son negativos.
10. Hacer el algoritmo y programa que realice la multiplicación de dos matrices de 3 x 3 e
imprima el resultado en pantalla.
11. Hacer el algoritmo y programa que pregunte por el orden de dos matrices y determine si se
puede realizar la suma de la primera con la segunda, en caso de ser cierto, que obtenga los
valores de dichas matrices, realice la suma e imprima el resultado en pantalla.
12. Hacer el algoritmo y programa que almacene en una estructura, un número
complejo, y que obtenga su forma polar.
13. Hacer el algoritmo y programa que almacene en un arreglo de estructuras, dos
números complejos, y que obtenga la multiplicación.
14. Hacer el algoritmo y programa que almacene en un arreglo de estructuras, los
puntos extremos de dos rectas, y que determine la longitud de las mismas; además
indicar si son perpendiculares.
15. Hacer el algoritmo y programa que almacene en un arreglo de estructuras, el
nombre y calificación de varios alumnos, que obtenga el promedio de las
calificaciones, y que diga el nombre del alumno con la calificación más alta. Si se
repiten las calificaciones altas, deberá indicar todos los alumnos con esa
calificación.
(OSURIHVRUSRGUiGLVHxDUVXVSURSLRVHMHUFLFLRVVLHPSUH\FXDQGRFXEUDSRUFRPSOHWRHOREMHWLYRGH
ODSUiFWLFD
Elaborada por:
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
Programación Avanzada y Métodos Numéricos
Descargar