Repaso
Repaso
Repaso
REPASO
Subprogramas, Parámetros,Variables y arreglos
multidimensionles
Bibliografía.
Deitel H.M. “Como Programar en
C/C++”. Ed. Prentice Hall
Joyanes, Luis. “C++ a su alcance: un
enfoque orientado a objetos”. Ed.
McGraw Hill
Diccionario de la Real Academia de la
Lengua Española (RAE). disponible en
www.rae.es
Ejercicio
1. Que son Lenguajes interpretados vs Lenguajes
compilados
2. Como funciona un programa implementado en
C?? Como se comporta el código, Que partes de
la máquina intervienen??
3. Como funciona el paso por valor y el paso por
referencia?? Diferencias??
Tarea
1. Que son Lenguajes interpretados vs
Lenguajes compilados
https://www.youtube.com/watch?v=sKIgTk5NDAI
Tarea
2. Como funciona un programa
implementado en C?? Como se
comporta el código, Que partes de la
máquina intervienen??
Ambiente Típico
de Desarrollo en C
(Tomado de Deittel Pag. 12)
Tarea (otra vez… )
1. Escribir el psuedocódigo y después la implementación
de un programa que pida al usuario 12 números
enteros para ser almacenados en un vector. Después,
el programa deberá escribir dichos números en
pantalla de manera inversa a como fueron ingresados,
indicar cuál es el número menor y el número de veces
que aparece éste, así como el lugar o los lugares que
ocupa dicho número en la lista.
En Dev C++
Motivación
How do you eat an elephant?
TD Escalares Agregados:
◦ Son aquellos que están compuestos por más de un
elemento de información (Dato), a cada uno de estos
elementos se les conoce como miembros o componentes
Ejemplo: Las estructuras y uniones en C/C++.
Veamos…
Estructuras.
Son tipos de datos compuestos formados por
varios datos llamados campos o miembros
Cada uno de estos posee su propio espacio
en memoria
Pueden incluso haber estructuras dentro de
estructuras
struct nombre_de_estructura
{
Campos de la estructura;
};
Tipos de datos Primitivos
Nombre Descripción Tamaño* Rango de valores*
Caracter o entero con signo: -128 to
Char 1byte
pequeño 127sin signo: 0 a 255
con signo: -32768 a
short int (short) Entero corto 2bytes 32767sin signo: 0 a
65535
con signo: -
2147483648 a
int Entero 4bytes
2147483647sin signo:
0 a 4294967295
con signo: -
2147483648 a
long int (long) Entero largo 4bytes
2147483647sin signo:
0 a 4294967295
Valor booleano. Puede
bool tomar dos valores: 1byte true o false
verdadero o falso
Número de punto
float 4bytes 3.4e +/- 38 (7 digitos)
flotante
De punto flotante de 1.7e +/- 308 (15
double 8bytes
doble precisión digitos)
Long de punto
1.7e +/- 308 (15
long double flotante de doble 8bytes
digitos)
precisión
Un ejemplo…
struct estudiante
{
char nombre[20];
char apellido[20];
float nota;
int id;
};
…
struct estudiante pedro; // Vble de tipo estructura
// estudiante
Algo así como…
Otro ejemplo…
struct estudiante
char nombre[20];
char apellido[20];
float nota;
int id;
// 2 vbles
Acceso a los campos de la
estructura.
Para acceder a cada uno de los campos
de la estructura se utiliza:
◦ vbleEstructura.campo
Ej:
◦ juan.nota=4.0;
◦ cin>> juan.nombre;
◦ cout<<juan.nombre<<" "<<juan.nota;
En Dev C++
Tarea
1. Hacer un arreglo de estructuras que
permita recibir 6 estudiantes y después
los despliegue por pantalla con todos sus
detalles.
Arreglos Multidimensionales
(Matrices)
PROYECTOS
Secuencia Nocturna
https://www.youtube.com/watch?v=taKhErZeFbM&feature=youtu.be
Secuencia Diurna
https://www.youtube.com/watch?v=zJ_uPLm2gTg&t=1h10m
CÁMARAS DRON
Secuencia Nocturna
https://www.youtube.com/watch?v=tlJ08qnGf2M&feature=youtu.be
Secuencia Diurna
https://www.youtube.com/watch?v=UQfPGHtr72k&feature=youtu.be
DEMO
El problema de una sola dimensión.
Considerando la problemática, pensemos en
lo siguiente:
◦ Una cadena de almacenes tiene 4 sucursales, y de
cada una desea saber las ventas de “jabón
suavecito” durante los 7 días de la semana
¿Podríamos resolver este problema con
arreglos unidimensionales?
◦ Podría crearse un arreglo por cada almacén y
referenciar el día de la semana solicitado
◦ … o simplemente, creamos una estructura
bidimensional llamada matriz
Sería algo como esto…
9 5 6 2 4 8 3
9 5 6 2 4 8 3
SUCURSALES
9 5 6 2 4 8 3
9 5 6 2 4 8 3
matriz[1][4] = 2;
Sería algo como esto…
Arreglos bidimensionales.
Puede considerarse como la unión de
diversos arreglos unidimensionales
◦ Cumple además una de sus normas: solo se
puede guardar en ellos valores del mismo tipo
Los arreglos bidimensionales se
representan en memoria de la siguiente
manera (para el caso de edad):
edad:array[1..100, 1..100]of int
A los arreglos bidimensionales se les
conoce como “Matrices”
Matrices…
El caso de C++.
La instrucción para declarar un vector bidimensional es:
tipo nombre_matriz[tamañof][tamañoc];
Donde tipo es cualquier tipo de dato nativo o generado
por el usuario; por ejemplo:
int ventas[10][20];
Y su estructura sería similar a la que se puede apreciar
en la siguiente tabla:
Matrices…
El caso de los subíndices.
En este caso, cada posición de la matriz tiene
un identificador
◦ También se denota por medio del uso de
corchetes “[ ]” posterior al nombre de la matriz,
situando en su interior la posición deseada
P.ej., Texto[3][4]=a; Precios[0][0]=500
◦ La posición también puede ser representada por
medio de una variable cuyo valor pueda cambiar
a medida que avanza la ejecución del programa
P.ej., Texto[i][j]=a; Precios[k][l]=500
Estas posiciones normalmente se apoyan en el uso de
ciclos anidados para lograr el recorrido por la
estructura de espacios de la matriz
Pensemos…
Ahora podemos dar solución a los
problemas planteados para este
segmento:
◦ Una cadena de almacenes tiene 4 sucursales, y
de cada una desea saber las ventas de “jabón
suavecito” durante los 7 días de la semana
La idea es entonces crear una estructura
de matriz que maneje la información de
las ventas
Sería algo así
Se genera una matriz de tipo entero con 4
filas por 7 columnas (28 posiciones):
ventas:array[1..4,1..7]of int (notación)
int ventas[4][7]; (C++)
Ahora, se recorre la matriz, pudiendo
realizar operaciones con los números
for (int i=0; i<4; i++){
for (int j=0; j<7; j++){
valor = ventas[i][j];
}
}
Ejercicio
Se requiere escribir un programa que
genere un triangulo equilátero de
asteriscos secuenciales así:
El usuario debe ingresar el numero
* máximo de asteriscos de la base.
Como será el manejo de los
* * índices??
Que se debe tener en cuenta para
* * * el cambio de línea?
* * * *
* * * * *
Actividades.
Además de los arreglos uni/bidimensionales, es
posible trabajar con arreglos de más dimensiones,
denominados arreglos multidimensionales. Como un
ejemplo deben desarrollar el siguiente ejercicio:
Se desea escribir un programa que permita manejar la
información de habitantes de un complejo
habitacional. Este posee 7 torres, cada torre posee 20
pisos y cada piso 6 departamentos.
◦ Haga los algoritmos que permitan:
Llenar la información de cada departamento del complejo
Posteriormente, conocer la cantidad total de habitantes del
complejo
Conocer la cantidad promedio de habitantes por piso de cada
torre
Conocer la cantidad promedio de habitantes por torre
La cantidad de apartamentos que tienen mas y menos habitantes
que el promedio general
Pista…
Es algo como esto:
Actividades.
Desarrollar el Taller 01 (Arreglos y
Matrices) como un refuerzo para la el
quiz, junto con el último ejercicio.