Está en la página 1de 42

Instituto Politécnico Nacional

Escuela Superior de Ingeniería Mecánica y Eléctrica


Unidad Zacatenco

Física Clásica
Carrera:
“ingeniería en Comunicaciones y electrónica”
Zúñiga Diaz Oscar Israel
Tarea
UNIDIMENSIONAL.

Arreglos Unidimensionales
Un arreglo unidimensional es una lista de valores guardados bajo el
mismo nombre y del mismo tipo. Cada valor dentro del arreglo se le
conoce como elemento del arreglo.

Para declarar un arreglo unidimensional en C++ se utiliza la siguiente


línea de código:

Tipo dató identificador [tamaño];

En “tipo de dato” introduciremos que tipo de dato queremos (int, char,


float.. etc) , luego en “identificador” introducimos como llamaremos a
nuestro arreglo para ubicarlo e identificarlo de manera rápida. Y entre
los corchetes colocaremos el tamaño que le demos a nuestro array.
Quedando de esta manera:

Ya que tenemos declarado nuestro arreglo necesitamos declarar cada uno de


los elementos que lo conforman, para esto utilizamos lo siguiente:

Iniciamos con el nombre de nuestro arreglo en el apartado que dice


arreglo, entre los corchetes colocaremos que parte del array
utilizaremos, en C++ los valores se inician en 0, esto quiere decir que si
nuestro arreglo es de tamaño 3, al hacer nuestro índice hay que tomar
el 0 como valor inicial quedando [0] , [1] y [2] completando así
nuestros 3 valores del tamaño antes mencionado.
En la parte “valor” asignaremos el valor que le daremos a ese elemento
quedando de la siguiente manera:

Ejemplo: el siguiente programa carga el arreglo “sqrs” con los cuadrados de los
números del 1 al 10 y luego los visualiza.
¿Qué es un array?

Un arreglo o array es básicamente una estructura de datos almacenada como una


sola variable. Hasta el momento habíamos visto variables y constantes, pero en este
caso es una estructura algo más compleja, ya que se compone de varios elementos
de un mismo tipo.
Por ejemplo, podía ser una lista finita de números o de palabras que se
almacenarían en celdas contiguas de memoria.
Cada uno de esos elementos se distinguen por un índice o subíndice al que se
puede apuntar con un puntero para acceder a dicha posición del array. Además,
también se podría escribir código para acceder de forma aleatoria a estos elementos
de los que se compone el arreglo.

El concepto de array en el lenguaje C coincide con el que se expone en el curso


Bases de la programación nivel I de aprenderaprogramar.com cuando se habla de
pseudocódigo. Veremos ahora cómo declarar arrays estáticos de una dimensión.
La gestión de arrays multidimensionales la veremos más adelante.
Los arrays dinámicos no están permitidos en C, aunque hay formas para
conseguir almacenar información simulando un array dinámico.

Ejemplo: int vectorEnteros [4];

Esto declara que se crea un vector de enteros que contendrá 4 valores de tipo int.
Fíjate que el número en la declaración es 4, pero el elemento vectorEnteros[4] no
existirá. ¿Por qué? Porque en C, al igual que en otros lenguajes de programación,
la numeración de elementos empieza en cero y no en uno. De esta manera al indicar
un 4, los índices de elementos en el array serán 0, 1, 2, 3. Es decir, si indicamos 4
el array tendrá 4 elementos (índices 0 a 3). Si indicamos 10 el array tendrá 10
elementos (índices 0 a 9) y así sucesivamente para cualquier número declarado.

Ejemplos de declaración de arrays serían:

int vectorVez [9]; char vectorAmigo [1000]; double decimalNum


[24];

int vectorInt [23]]; int vectorLong[8];


int personasPorHabitacion[300];

Crea un proyecto y escribe el siguiente código:


El resultado de ejecución puede ser similar a este:

¿Por qué ocurre esto? Realmente no siempre ocurrirá esto, podríamos decir que el
resultado puede cambiar dependiendo del compilador. Lo que es cierto que es
número de coches[0] vale 32 porque así lo hemos declarado.

Sin embargo, es posible que nos aparezcan valores aparentemente aleatorios para
el resto de elementos del array porque no los hemos inicializado. El compilador al
no tener definido un valor específico para la inicialización les ha asignado unos
valores aparentemente aleatorios. Para evitar esta circunstancia tendremos
que inicializar todos los elementos de un array.

De momento lo haremos manualmente como indicamos a continuación, más


adelante veremos cómo hacerlo usando un bucle que nos permitirá inicializar los
elementos de un array de decenas o cientos de elementos a un valor por defecto.
En el caso de enteros lo más normal es inicializar los elementos que no tienen un
valor definido a cero.

En el programa anterior añadiríamos la siguiente línea:


numeroDeCoches[1]=0; numeroDeCoches[2]=0; numeroDeCoches[3]=0;

Con esto quedan inicializados todos los elementos del array y al ejecutar el
programa obtenemos un resultado “seguro”.

Es posible que en un momento dado necesitemos borrar el contenido de los


elementos de un array, digamos que resetear o borrar su contenido.

Para ello en algunos lenguajes existen instrucciones específicas, pero en C


tendremos que volver a asignar los valores por defecto a los elementos del array
realizando lo que podríamos denominar una “Re inicialización”. Más adelante
veremos cómo se puede realizar este proceso de forma cómoda.

¿Cómo elegir los nombres de los arrays? Los nombres de variables deben ser lo
más descriptivos posibles para hacer el programa fácil de leer y de entender. Piensa
que es válido tanto declarar int vectorInt; como int VI.

Sin embargo, es más correcto usar vectorInt que VI porque resulta más descriptivo
de la función y cometido de la variable vectorInt que dos letras cuyo significado no
entenderá una persona que lea el programa (y quizás tú mismo no entenderás
cuando hayan pasado unos días después de haber escrito el programa).

Nota: C no realiza una comprobación de índices de arrays. Por ejemplo si hemos


declarado int numeroCoches[4] e incluimos en nuestro código el uso de
numeroCoches[5] el comportamiento es imprevisible. Es responsabilidad del
programador el controlar y hacer uso exclusivamente de los índices válidos para
cada array.

EJERCICIO RESUELTO

Crea el código de dos programas que cumplan las siguientes premisas:

a) Programa 1: Declara un array de enteros denominado numeroDeCoches que


contenga 24 variables. Declara una variable tipo int que se llame R. Establece el
valor de R en 2 y el valor de numeroDeCoches para un localizador de valor R en
57. Procede a mostrar en pantalla un mensaje que indique cuál es la hora R y el
número de coches para la hora R. Finalmente, modifica únicamente la asignación
de valor a R de modo que en vez de 2 sea 21 y ejecuta de nuevo el programa.

b) Programa 2: Sobre el programa anterior realiza los siguientes cambios. Declara


dos variables A y B de tipo int. Establece A con valor 8, B con valor 4 y R con valor
A dividido entre B. Ejecuta el programa.
SOLUCIÓN

El programa 1 será el siguiente. Si lo ejecutamos obtendremos "La hora R es 2. El


número de coches en la hora 2 fue de 57 coches". Si cambiamos R = 2 por R = 21
obtendremos "La hora R es 21. El número de coches en la hora 21 fue de 57
coches". Es importante prestar atención a que los índices del array comienzan en
cero, de modo que la primera hora es la hora cero y la última hora la hora 23,
existiendo un total de 24 horas. Las horas van de 0 a 23.

El programa 2 será el siguiente. Recuerda que para que el array numeroDeCoches


tenga 24 elementos siendo el primero el de localizador cero, tenemos que
establecerlo como numeroDeCoches[24].

En estos programas estamos usando printf, %d, \n, etc. sin haber dado una
explicación al respecto. No te preocupes por esto pues lo explicaremos más
adelante. Ahora es suficiente con que comprendas la lógica general de estos
programas.
Nota: hay una cosa “formalmente” incorrecta en estos programas. Hemos declarado
un array con 24 elementos, pero dichos elementos no los hemos inicializado. De
hecho, hemos dejado la mayor parte sin inicializar.

Idealmente es conveniente inicializar siempre los elementos de los arrays a un valor


por defecto que consideremos adecuado. En este caso resultaría un tanto costoso
escribir todos los términos a inicializar uno por uno. Más adelante veremos cómo
hacer este tipo de inicialización de forma cómoda.

“EJERCICIOS”

Ejercicio 2.1.- P.P Se requiere calcular la Sumatoria de N números


(proporcionados por el Usuario o Cliente):

#include<stdio.h>

int main(){
int N, a[N], S=0;
printf("\nIngrese las veces que desea sumar: ",N);
scanf("%d", &N);

for(int i=0; i<=N; i++){


printf("\nIngrese un numero: ");
scanf("%d", &a[i]);
S=S+a[i];
}
printf("\nLa suma es: %d",S);

return 0;
}
Ejercicio 2.2.- P.P. Se requiere calcular la Sumatoria de i números
calculados:

/*Ejercicio 2.2.- P.P. Se requiere calcular la Sumatoria de i números calculados:*/

#include<stdio.h>

#include<stdlib.h>

int main(){

int N, a[N], S=0;

printf("\nIngrese las veces que desea sumar: ");

scanf("%d", &N);

for(int i=0; i<=N; i++){

printf("\nIngrese un numero: ");

scanf("%d", &a[i]);

S=S+a[i];

printf("\nLa suma es: %d",S);

return 0;

}
Ejercicio 2.3.- P.P. Se requiere calcular la Sumatoria del producto
de N números por una constante:

#include <stdio.h>
#include <conio.h>

int main ()
{
int N, i, c;
int contador = 0;

printf("Ingrese cuantas sumas se van a ejecutar: ");


scanf("%d", &N);
printf("Ingrese el valor (que sea diferente de 0) de la constante por la que quiere
que se multiplique la suma: ");
scanf("%d", &c);

for (i=1;i<=N;i++)
{
contador = contador + c;
printf("\nEl resultado de la suma por la constante es: %d (%d)\n\n", contador,
i);
}
printf("La sumatoria total es %d", contador);

return 0;
}
Ejercicio 2.4.- P.P. Se requiere calcular la Sumatoria de x elevada a la i entre i
números:
#include <stdio.h>
#include <conio.h>

int main ()
{
int S, N, i, c;
int contador = 0;

printf("Ingrese cuantas sumas se van a ejecutar: ");


scanf("%d", &N);

printf("Ingrese el valor (que sea diferente de 0) de la constante por la que quiere


que se multiplique la suma: ");
scanf("%d", &c);

for (i=1;i<=N;i++)
{
S = N * c;
contador = contador + S;
printf("\nEl resultado de la suma por la constante es: %d\n\n", S);
}
printf("La sumatoria total es %d", contador);

return 0;
}
Ejercicio 2.5.- P.P. Se requiere calcular N Ecuaciones Segundo Grado,
considerando que A(N), B(N), C(N) y por consiguiente Disc(N):
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {

int n;
float a, b, c, e1, e2, e3;

do
{
printf("Ingresa el total de veces que quieres hacer ecuaciones de segundo
grado: ");
scanf("%d", &n);
}while(n<2);
{
for(int i = 1;i <= n; i++)
{

printf("Introduzca el valor de \"A\": ");

scanf("%f" , &a );

printf("Introduzca el valor de \"B\": ");

scanf("%f", &b);

printf("Introduzca el valor de \"C\" o del residuo: ");


scanf("%f", &c);

double d = ((b * b) - 4 * (a * c));

d = sqrt(d);

if( d >= 0)
{

e1 = (-1 * b);
e2 = ( e1 + d) / (2 * a);
e3 = (e1 - d) / (2 * a);

printf("\nEl resultado en raiz positiva es: %f \n", e2 );


printf("\nEl resultado en raiz negativa es: %f \n", e3 );

}
else
{

printf("\nLa raiz es imaginaria\n");

}
}
}
return 0;
}
UNIDIMENSIONAL.
Arreglos Unidimensionales
Un arreglo unidimensional es una lista de valores guardados bajo el
mismo nombre y del mismo tipo. Cada valor dentro del arreglo se le
conoce como elemento del arreglo.

Para declarar un arreglo unidimensional en C++ se utiliza la siguiente


línea de código:

Tipo_dató identificador [tamaño];

En “tipo de dato” introduciremos que tipo de dato queremos (int, char,


float.. etc) , luego en “identificador” introducimos como llamaremos a
nuestro arreglo para ubicarlo e identificarlo de manera rápida. Y entre
los corchetes colocaremos el tamaño que le demos a nuestro array.
Quedando de esta manera:

Ya que tenemos declarado nuestro arreglo necesitamos declarar cada uno de


los elementos que lo conforman, para esto utilizamos lo siguiente:

Iniciamos con el nombre de nuestro arreglo en el apartado que dice


arreglo, entre los corchetes colocaremos que parte del array
utilizaremos, en C++ los valores se inician en 0, esto quiere decir que si
nuestro arreglo es de tamaño 3, al hacer nuestro índice hay que tomar
el 0 como valor inicial quedando [0] , [1] y [2] completando así
nuestros 3 valores del tamaño antes mencionado.

En la parte “valor” asignaremos el valor que le daremos a ese elemento


quedando de la siguiente manera:
Ejemplo: el siguiente programa carga el arreglo “sqrs” con los cuadrados de los
números del 1 al 10 y luego los visualiza.

La forma como se almacenan los valores en el arreglo es la siguiente:

sqrs[0] = 1*1

sqrs[1] = 2*2

sqrs[2] = 3*3

sqrs[3] = 4*4

sqrs[4] = 5*5

sqrs[5] = 6*6

sqrs[6] = 7*7

sqrs[7] = 8*8
sqrs[8] = 9*9

sqrs[9] = 10*10

y muestra en pantalla:

Como vimos los arreglos son de mucha utilidad cuando manejamos una
lista de información y así elaborarla de manera rápida y óptima para
nuestros programas.

¿Qué es un array?
Un arreglo o array es básicamente una estructura de datos almacenada como una
sola variable. Hasta el momento habíamos visto variables y constantes, pero en este
caso es una estructura algo más compleja, ya que se compone de varios elementos
de un mismo tipo.
Por ejemplo, podía ser una lista finita de números o de palabras que se
almacenarían en celdas contiguas de memoria.
Cada uno de esos elementos se distinguen por un índice o subíndice al que se
puede apuntar con un puntero para acceder a dicha posición del array. Además,
también se podría escribir código para acceder de forma aleatoria a estos elementos
de los que se compone el arreglo.

El concepto de array en el lenguaje C coincide con el que se expone en el curso


Bases de la programación nivel I de aprenderaprogramar.com cuando se habla de
pseudocódigo. Veremos ahora cómo declarar arrays estáticos de una dimensión.
La gestión de arrays multidimensionales la veremos más adelante.

Los arrays dinámicos no están permitidos en C, aunque hay formas para


conseguir almacenar información simulando un array dinámico.
Ejemplo: int vectorEnteros [4];

Esto declara que se crea un vector de enteros que contendrá 4 valores de tipo int.
Fíjate que el número en la declaración es 4, pero el elemento vectorEnteros[4] no
existirá. ¿Por qué? Porque en C, al igual que en otros lenguajes de programación,
la numeración de elementos empieza en cero y no en uno. De esta manera al indicar
un 4, los índices de elementos en el array serán 0, 1, 2, 3. Es decir, si indicamos 4
el array tendrá 4 elementos (índices 0 a 3). Si indicamos 10 el array tendrá 10
elementos (índices 0 a 9) y así sucesivamente para cualquier número declarado.

Ejemplos de declaración de arrays serían:

int vectorVez [9]; char vectorAmigo [1000]; double decimalNum


[24];

int vectorInt [23]]; int vectorLong[8];


int personasPorHabitacion[300];

Crea un proyecto y escribe el siguiente código:


El resultado de ejecución puede ser similar a este:

¿Por qué ocurre esto? Realmente no siempre ocurrirá esto, podríamos decir que el
resultado puede cambiar dependiendo del compilador. Lo que es cierto que es
número de coches[0] vale 32 porque así lo hemos declarado.

Sin embargo, es posible que nos aparezcan valores aparentemente aleatorios para
el resto de elementos del array porque no los hemos inicializado. El compilador al
no tener definido un valor específico para la inicialización les ha asignado unos
valores aparentemente aleatorios. Para evitar esta circunstancia tendremos
que inicializar todos los elementos de un array.

De momento lo haremos manualmente como indicamos a continuación, más


adelante veremos cómo hacerlo usando un bucle que nos permitirá inicializar los
elementos de un array de decenas o cientos de elementos a un valor por defecto.
En el caso de enteros lo más normal es inicializar los elementos que no tienen un
valor definido a cero.

En el programa anterior añadiríamos la siguiente línea:

numeroDeCoches[1]=0; numeroDeCoches[2]=0; numeroDeCoches[3]=0;

Con esto quedan inicializados todos los elementos del array y al ejecutar el
programa obtenemos un resultado “seguro”.

Es posible que en un momento dado necesitemos borrar el contenido de los


elementos de un array, digamos que resetear o borrar su contenido.

Para ello en algunos lenguajes existen instrucciones específicas, pero en C


tendremos que volver a asignar los valores por defecto a los elementos del array
realizando lo que podríamos denominar una “Re inicialización”. Más adelante
veremos cómo se puede realizar este proceso de forma cómoda.

¿Cómo elegir los nombres de los arrays? Los nombres de variables deben ser lo
más descriptivos posibles para hacer el programa fácil de leer y de entender. Piensa
que es válido tanto declarar int vectorInt; como int VI.
Sin embargo, es más correcto usar vectorInt que VI porque resulta más descriptivo
de la función y cometido de la variable vectorInt que dos letras cuyo significado no
entenderá una persona que lea el programa (y quizás tú mismo no entenderás
cuando hayan pasado unos días después de haber escrito el programa).

Nota: C no realiza una comprobación de índices de arrays. Por ejemplo si hemos


declarado int numeroCoches[4] e incluimos en nuestro código el uso de
numeroCoches[5] el comportamiento es imprevisible. Es responsabilidad del
programador el controlar y hacer uso exclusivamente de los índices válidos para
cada array.

EJERCICIO RESUELTO

Crea el código de dos programas que cumplan las siguientes premisas:

a) Programa 1: Declara un array de enteros denominado numeroDeCoches que


contenga 24 variables. Declara una variable tipo int que se llame R. Establece el
valor de R en 2 y el valor de numeroDeCoches para un localizador de valor R en
57. Procede a mostrar en pantalla un mensaje que indique cuál es la hora R y el
número de coches para la hora R. Finalmente, modifica únicamente la asignación
de valor a R de modo que en vez de 2 sea 21 y ejecuta de nuevo el programa.

b) Programa 2: Sobre el programa anterior realiza los siguientes cambios. Declara


dos variables A y B de tipo int. Establece A con valor 8, B con valor 4 y R con valor
A dividido entre B. Ejecuta el programa.

SOLUCIÓN

El programa 1 será el siguiente. Si lo ejecutamos obtendremos "La hora R es 2. El


número de coches en la hora 2 fue de 57 coches". Si cambiamos R = 2 por R = 21
obtendremos "La hora R es 21. El número de coches en la hora 21 fue de 57
coches". Es importante prestar atención a que los índices del array comienzan en
cero, de modo que la primera hora es la hora cero y la última hora la hora 23,
existiendo un total de 24 horas. Las horas van de 0 a 23.
El programa 2 será el siguiente. Recuerda que para que el array numeroDeCoches
tenga 24 elementos siendo el primero el de localizador cero, tenemos que
establecerlo como numeroDeCoches[24].

En estos programas estamos usando printf, %d, \n, etc. sin haber dado una
explicación al respecto. No te preocupes por esto pues lo explicaremos más
adelante. Ahora es suficiente con que comprendas la lógica general de estos
programas.

Nota: hay una cosa “formalmente” incorrecta en estos programas. Hemos declarado
un array con 24 elementos, pero dichos elementos no los hemos inicializado. De
hecho, hemos dejado la mayor parte sin inicializar.

Idealmente es conveniente inicializar siempre los elementos de los arrays a un valor


por defecto que consideremos adecuado. En este caso resultaría un tanto costoso
escribir todos los términos a inicializar uno por uno. Más adelante veremos cómo
hacer este tipo de inicialización de forma cómoda.

“EJERCICIOS”
Ejercicio 2.1.- P.P Se requiere calcular la Sumatoria de N números
(proporcionados por el Usuario o Cliente):

#include<stdio.h>

int main(){
int N, a[N], S=0;
printf("\nIngrese las veces que desea sumar: ",N);
scanf("%d", &N);

for(int i=0; i<=N; i++){


printf("\nIngrese un numero: ");
scanf("%d", &a[i]);
S=S+a[i];
}
printf("\nLa suma es: %d",S);

return 0;
}
Ejercicio 2.2.- P.P. Se requiere calcular la Sumatoria de i números
calculados:

/*Ejercicio 2.2.- P.P. Se requiere calcular la Sumatoria de i números calculados:*/

#include<stdio.h>

#include<stdlib.h>

int main(){

int N, a[N], S=0;

printf("\nIngrese las veces que desea sumar: ");

scanf("%d", &N);

for(int i=0; i<=N; i++){

printf("\nIngrese un numero: ");

scanf("%d", &a[i]);

S=S+a[i];

printf("\nLa suma es: %d",S);

return 0;

}
Ejercicio 2.3.- P.P. Se requiere calcular la Sumatoria del producto
de N números por una constante:

#include <stdio.h>
#include <conio.h>

int main ()
{
int N, i, c;
int contador = 0;

printf("Ingrese cuantas sumas se van a ejecutar: ");


scanf("%d", &N);
printf("Ingrese el valor (que sea diferente de 0) de la constante por la que quiere
que se multiplique la suma: ");
scanf("%d", &c);

for (i=1;i<=N;i++)
{
contador = contador + c;
printf("\nEl resultado de la suma por la constante es: %d (%d)\n\n", contador,
i);
}
printf("La sumatoria total es %d", contador);

return 0;
}
Ejercicio 2.4.- P.P. Se requiere calcular la Sumatoria de x elevada a la i entre i
números:
#include <stdio.h>
#include <conio.h>

int main ()
{
int S, N, i, c;
int contador = 0;

printf("Ingrese cuantas sumas se van a ejecutar: ");


scanf("%d", &N);

printf("Ingrese el valor (que sea diferente de 0) de la constante por la que quiere


que se multiplique la suma: ");
scanf("%d", &c);

for (i=1;i<=N;i++)
{
S = N * c;
contador = contador + S;
printf("\nEl resultado de la suma por la constante es: %d\n\n", S);
}
printf("La sumatoria total es %d", contador);

return 0;
}
Ejercicio 2.5.- P.P. Se requiere calcular N Ecuaciones Segundo Grado,
considerando que A(N), B(N), C(N) y por consiguiente Disc(N):
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {

int n;
float a, b, c, e1, e2, e3;

do
{
printf("Ingresa el total de veces que quieres hacer ecuaciones de segundo
grado: ");
scanf("%d", &n);
}while(n<2);
{
for(int i = 1;i <= n; i++)
{

printf("Introduzca el valor de \"A\": ");

scanf("%f" , &a );

printf("Introduzca el valor de \"B\": ");

scanf("%f", &b);

printf("Introduzca el valor de \"C\" o del residuo: ");


scanf("%f", &c);

double d = ((b * b) - 4 * (a * c));

d = sqrt(d);

if( d >= 0)
{

e1 = (-1 * b);
e2 = ( e1 + d) / (2 * a);
e3 = (e1 - d) / (2 * a);

printf("\nEl resultado en raiz positiva es: %f \n", e2 );


printf("\nEl resultado en raiz negativa es: %f \n", e3 );

}
else
{

printf("\nLa raiz es imaginaria\n");

}
}
}
return 0;
}

También podría gustarte