Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Arreglos Unidimensionales
Justificación
Declaración
Tamaño
Subíndices
4 Búsquedas
5 Ordenamiento
Dividir el
problema en
sub problemas
Hacer el Algoritmo
Ejecutar el que invoca y
programa articula las
soluciones de cada
Verificar el sub problema
Programa
Escribir los
algoritmos para la
solución de cada
sub problema
Escribir las funciones en C++
Escribir el Programa (C++)
Compilar el Programa
system("PAUSE");
return EXIT_SUCCESS;
}
Hasta ahora cada variable tiene asociado un solo valor.
En los problemas tales como: Haga un programa que lea N números y calcule su promedio. Hemos
utilizado la misma variable para leer el valor ingresado por el usuario, de esta manera la variable solo
tiene el último número leído.
¿Será posible almacenar un conjunto de valores y manejarlos como si fuera una sola variable?
¿Para el problema de leer los n números será posible almacenarlos, utilizarlos en el cálculo ?
Numeros[0] -37
Numeros[1] 45
Numeros[2] 62
Numeros[3] 31
Numeros[4] -125
Entonces, ¿Cómo declaro Numeros y uso Numeros en un
programa?
int Numeros[5]; // Se declara la variable Numeros de tipo int y entre corchetes
cuadrados la cantidad de elementos que va a contener
Para asignar los valores a las posiciones del arreglo
Numeros[0] = 37;
Numeros[1] = 45;
Numeros[2] = 62;
Numeros[3] = 31;
Numeros[4] = -125;
Numeros es el nombre del arreglo. Numeros [i] para 0<=i< 5 corresponde a las
posiciones o casillas del arreglo. Numeros[i] es la Notación de subíndice del arreglo
Los arreglos en C++ inician siempre con el subíndice 0
Pensamiento Algorítmico- Luis Carlos Moreno - 315 308 17 17
GESTIÓN DEL CAMBIO TI 5
1 Arreglos Unidimensionales Definición
#include <iostream>
using namespace std;
int main()
{
int Numeros[20] ,i; /* Declaración de Numeros, Arreglo de enteros de 20 posiciones,
i variable entera que va a servir de subindice para recorrer el arreglo */
return 0;
}
return 0;
}
Normalmente se procesa se lee y se escribe elemento por elemento del arreglo para
todos los tipos de datos (int, float, double, etc); excepto para los arreglos de
caracteres. Estos en C se utilizaban para manipular cadenas de caracteres (strings) y
en C++ por compatibilidad existe esta posibilidad
char cad[10] ;
cin>>cad; es posible hacer esta lectura porque los arreglos de caracteres lo permiten
Si se digita ANITALAVALATINA
A N I T A L A V A ‘\0’
Si se digita CASA
C A S A ‘\0’ ? ? ? ? ?
Cuando se manipulan arreglos de caracteres se debe tener en cuenta que las cadenas siempre
terminan con ‘\0’
Pensamiento Algorítmico- Luis Carlos Moreno - 315 308 17 17
GESTIÓN DEL CAMBIO TI 8
0 Contenido
1 Arreglos Unidimensionales
Justificación
Declaración
Tamaño
Subíndices
4 Búsquedas
5 Ordenamiento
int main()
{ const int tam = 10;
int Numeros[tam] ,i; // Declaración del Numeros Arreglo de enteros de tam posiciones
capturar(Numeros,tam);
presentar(Numeros,tam);
return 0;
}
void capturar(int parr[],int ptam)
{
int i;
for (i=0;i<ptam;i++) // inicializa el arreglo
{
cout<<" Número["<<i<<"]=" ;
cin>>parr[i];
}
}
void presentar(int parr[],int ptam)
{
int i;
for (i=0;i<ptam;i++) // Presenta los valores almacenados en el arreglo.
cout<<i<<' '<<parr[i]<<endl;
}
Los arreglos en C++ pasan siempre como parámetros por referencia. Esto es, no se saca una copia de la variable
en la función a la que se llama, sino que se pasa su dirección en memoria (referencia), y tanto la función llamadora
como la llamada están utilizando la misma dirección de memoria para el parámetro parr. Si se modifica parr en la
función el capturar, el cambio se ve reflejado en el main, desde el que se invocó la función.
1 Arreglos Unidimensionales
Justificación
Declaración
Tamaño
Subíndices
4 Búsquedas
5 Ordenamiento
Hasta ahora el alcance de todas las variables que hemos utilizado son locales.
¿Por qué?
Porque solo han tenido como alcance las funciones en las que han sido definidas
i local en
int main()
{ const int tam = 10;
el main
int Numeros[tam] ,i; // Declaración del Numeros Arreglo de enteros de 5 posiciones, i variable entera que va a servir
de subindice para recorrer el arreglo
capturar(Numeros,tam);
presentar(Numeros,tam); i local en
return 0;
}
captura
void capturar(int parr[],int ptam)
{
int i;
for (i=0;i<ptam;i++) // inicializa el arreglo
{
cout<<" Número["<<i<<"]=" ;
cin>>parr[i];
} i local en
}
void presentar(int parr[],int ptam) presenta
{
int i;
for (i=0;i<ptam;i++) // Presenta los valores almacenados en el arreglo.
cout<<i<<' '<<parr[i]<<endl;
}
Pensamiento Algorítmico- Luis Carlos Moreno - 315 308 17 17
GESTIÓN DEL CAMBIO TI 13
3 Ámbito variables globales y locales
Que pasaría si no declaro la variable i en la función captura?
El programa no compilaría porque no encuentra la variable
Para resolver este problema debo declarar i en la función, o declararla como global
i local en
int main()
{ const int tam = 10;
el main
int Numeros[tam] ,i; // Decalaración del Numeros Arreglo de enteros de 5 posiciones, i variable entera que va a servir
de subindice para recorrer el arreglo
capturar(Numeros,tam);
presentar(Numeros,tam); i
return 0;
}
eliminada
void capturar(int parr[],int ptam)
{
int i;
for (i=0;i<ptam;i++) // inicializa el arreglo
{
cout<<" Número["<<i<<"]=" ;
cin>>parr[i];
} i local en
}
void presentar(int parr[],int ptam) presenta
{
int i;
for (i=0;i<ptam;i++) // Presenta los valores almacenados en el arreglo.
cout<<i<<' '<<parr[i]<<endl;
}
Pensamiento Algorítmico- Luis Carlos Moreno - 315 308 17 17
GESTIÓN DEL CAMBIO TI 14
3 Ámbito variables globales y locales
Que pasaría si no declaro la variable i en la función captura?
El programa no compilaría porque no encuentra la variable
Para resolver este problema debo declarar i en la función, o declararla como global
#include <iostream>
using namespace std;
void capturar(int[],int);
void presentar(int[],int);
int i; // variable global de alcance en todo este archivo, alcance Global para main, capturar y presentar
int main()
{ const int tam = 10;
int Numeros[tam] ,i; // Declaración del Numeros Arreglo de enteros de 5 posiciones, i oculta la i global para esta
función
capturar(Numeros,tam);
presentar(Numeros,tam);
return 0;
}
void capturar(int parr[],int ptam)
{
for (i=0;i<ptam;i++) // inicializa el arreglo // se utliza i Global
{
cout<<" Número["<<i<<"]=" ;
cin>>parr[i];
}
}
void presentar(int parr[],int ptam)
{
int i;//oculta la i global a esta función
for (i=0;i<ptam;i++) // Presenta los valores almacenados en el arreglo.
cout<<i<<' '<<parr[i]<<endl;
}
Pensamiento Algorítmico- Luis Carlos Moreno - 315 308 17 17
GESTIÓN DEL CAMBIO TI 15
3 Ámbito variables globales y locales
Las variables globales se usan en sistemas grandes y complejos básicamente para:
• Definir variables de configuración y estado del sistema. Por ejemplo en un manejador de base de
datos se usa una serie de variables globales para definir el estado de cierta características de la
base de datos como por ejemplo formato de fecha vigente día mes año ó mes día año ó año
mes, día, número de decimales usados para cálculos, modo multi usuario o dedicado etc.
• Variables que se inicializan y después no cambian su valor y se utilizan en todos los módulos de un
sistema, por ejemplo el nombre de usuario, la carpeta en la que se buscarán los formatos de
reporte, las carpetas sobre las que se generaran los archivos de reporte guardados,.
Entonces debemos ser cuidadosos al definir variables globales, teniendo en cuenta los criterios
anteriormente mencionados
Las variables locales se usan en funciones y existen únicamente mientras la función es ejecutada. Las
variables locales en una función son las variables declaradas entre .los corchetes de inicio y fin de la
misma, pej:
bool funcion1(bool x, int y)
{
float z, k , q; // locales z k q.
…
}
1 Arreglos Unidimensionales
Justificación
Declaración
Tamaño
Subíndices
4 Búsquedas
5 Ordenamiento
Informar si un elemento está o no presente en el arreglo arr. Si esta presente debe indicar
en que posición en la que se encuentra.
Esta solución recorre todo el arreglo para informar si el elemento se encuentra o no. Si
se tuviera el arreglo ordenado se pudiera optimizar de la siguiente manera.
Búsqueda en arreglos
Informar si un elemento está o no presente en el arreglo arr. Si esta presente debe indicar
en que posición en la que se encuentra.
arr[0] arr[1] arr[2] arr[3] arr[4] arr[5] arr[6] arr[7]
-1500 -99 15 35 49,36 77,5 267 7900
int busquedaO(float parr[], int tam, float buscado)
{
int i;
if (buscado < parr[0] | | buscado > parr[tam-1])
return -1; Si llamamos busqueda con el
arreglo arr, tam = 8 y buscado =
for (i =0 ; i<tam && parr[i]<buscado ; i++) ; 77,5 la función retornará 5.
if (i == tam)
return -1;
if (parr[i]==buscado) Si la llamamos con arr, tam = 8 y
return i; buscado = 18 retornará -1
else indicando que no se encuentra.
return -1;
}
Pensamiento Algorítmico- Luis Carlos Moreno - 315 308 17 17
GESTIÓN DEL CAMBIO TI 19
4 Búsquedas
Esta solución recorre todo el arreglo en el peor de los casos si el elemento buscado está
hacia el final del mismo Podríamos optimizar aún más aprovechándonos del orden del
arreglo. Búsqueda Binaria
1 Arreglos Unidimensionales
Justificación
Declaración
Tamaño
Subíndices
4 Búsquedas
5 Ordenamiento
Ejemplo Variables Globales y Locales – Arreglo Numeros Como parametro y Como variable global
1. Se tiene un arreglo con el valor de las ventas mensuales del año anterior (12) meses
15000 700000 30000 250000 60000 78900 450000 98000 320000 4890
2. Implemente una función en C++ que informe si dos arreglos de tipo float son iguales:
La función recibe como parámetros los dos arreglos y su tamaño.
3. Implemente una función en C++ que informe si una palabra pasada como parámetro
en un arreglo de caracteres es palíndrome. Un palabra es palindrome si se lee de la
misma manera de izquierda a derecha que de derecha a izquierda
Por ejemplo ANITALAVALATINA es palindrome.
.
4. Haga un programa que dado un arreglo de enteros de tamaño 20 y un numero entero
num, informe cuantas veces aparece num en el arreglo
La información se debe dejar en una arreglo de cuatro posiciones (una para cada
posición) llamado rangos.
Se necesita saber cuántas personas calificaron con 1, cuantas con 2 y así sucesivamente, la
gestión del alcalde.
.
8. Haga un programa que presente cuantas veces se repite cada carácter en una frase
almacenada en un arreglo de caracteres.