Académique Documents
Professionnel Documents
Culture Documents
1. ARREGLOS UNIDIMENSIONALES
Un arreglo unidimensional o vector es un conjunto finito y ordenado de elementos homogneos. La
propiedad ordenado se refiere a que los elementos primer, segundo, tercero y n- esimo pueden ser
identificados. Adems los elementos de un arreglo son homogneos, es decir todos son del mismo
tipo de datos.
La forma general para definir un arreglo de slo una dimensin es la siguiente:
tipo_de_dato nombre_variable[tamao]
0
1
2
3
4
5
6
7
8
9
vector
13
24
35
12
78
53
71
29
30
83
Ejemplo
x[5]=53
x[9]=83
Recuerdequeelarreglo
almacenadesdelacasilla
0.Portanto,enunarreglo
de10casillas,stasestn
numeradasdel0al9
TEMPERATURA[0]
TEMPERATURA[1]
TEMPERATURA[2]
TEMPERATURA[3]
TEMPERATURA[4]
TEMPERATURA[5]
TEMPERATURA[6]
TEMPERATURA[23]
7
7,5
12
13
13,5
20
15,4
10,3
MEMORIA
TEMPERATURA[0] Direccin x
TEMPERATURA[1] Direccin x+1
TEMPERATURA[2] Direccin x+2
TEMPERATURA[3] Direccin x+3
Acciones
Escribir (TEMPERATURA[0])
TEMPERATURA[4]40
Resultados
visualiza el valor de TEMPERATURA[0] o 7
Almacena el valor 40 en TEMPERATURA[4]
SUMA
=
TEMPERATURA[1]+ Almacena en suma TEMPERATURA[1]+
EMPERATURA[3]
EMPERATURA[3] o es decir 20,5
SUMA = SUMA + TEMPERATURA[4]
Incrementa la variable suma con el valor de
TEMPERATURA[4]
TEMPERATURA[5]= EMPERATURA[5] Suma
4,5
a
TEMPERATURA[5],
+ 4,5
TEMPERATURA[5] tendr como valor 24,5
TEMPERATURA[6]=EMPERATURA[1] Almacena la suma de TEMPERATURA[1] +
TEMPERATURA[2]
EMPERATURA[2] en TEMPERATURA [6] el
nuevo valor de TEMPERATURA[6] ser 14,5
Adems cabe mencionar la importancia que debe tener la utilizacin de los ndices y es necesario,
mostrar cierta notacin.
Supongamos un vector V de 6 elementos.
V[0]
V[1]
V[2]
V[3]
V[4]
V[5]
7
-5
12
13
8
20
Para la introduccin de valores a todos los elementos de un vector, la mejor opcin es utilizando
estructuras repetitivas como para (for ), mientras ( while) y repetir hasta (repeat until).
1.2.2 Lectura / escritura de datos
Las instrucciones simples de lectura y escritura se representan como:
a) Lectura
Primera Forma
I 0, 9,1
Leer
Num
V[I] Num
Segunda Forma
I 0, 9,1
Leer
V[I]
b) Escritura
I 0, 9,1
Estas instrucciones permitirn
mostrar (descargar) del vector V,
diez
elementos
(nmeros)
cualesquiera
Mostrar
V[I]
Ejemplos
0
100 5
20
230
487
1. El siguiente ejemplo permite mostrar los elementos que estn almacenados en posiciones
pares.
Solucin 1
Inicio
Leer
N
I 0, N-1,1
Leer
V[I]
I 0, N-1,2
Mostrar
V[I]
Solucin 2
Inicio
Leer
N
I 0, N-1,1
Leer
V[I]
I 0, N-1,1
I mod
2=0
Mostrar
V[I]
Fin
Fin
Ambos diagramas de flujo hacen posible mostrar los elementos de las pociones pares del vector
V, la diferencia est en que la solucin 1, el segundo bucle (For), la variable I recorre las
posiciones pares, con un incremento de 2, la solucin 2 recorre todas las posiciones pero solo
muestra los elementos de las posiciones pares, observa que dentro del segundo bucle de la
solucin 2 existe una condicin que permite verificar qu posicin se esta visitando, es decir
solo cuando I tome los valores 0,2,4,6, se imprimir el contenido del vector en esas
posiciones.
Realiza los siguientes ejercicios de ambas formas
1. Dado el vector M de dimensin N se pide mostrar los elementos que
estas almacenados en las posiciones mltiplos de 3 empezando
desde la posicin 3
2. Dado el vector Q de dimensin N se pide mostrar los elementos que
estas almacenados en las posiciones mltiplos de 4 empezando
desde la posicin 4
3. Dado el vector Z de dimensin N se pide mostrar los elementos que
estas almacenados en las posiciones mltiplos de 5 empezando desde la posicin 5
Voy a ayudarte en la solucin del primer ejercicio, dispondr los diagramas de flujo, de
dos tipos de soluciones, te toca colocar las instrucciones.
Te aconsejo realizar las respectivas pruebas de escritorio.
Inicio
Inicio
Fin
Fin
No olvides que!
A (por ejemplo)
34
56 66 77 77 88
44 66
11 22 44
Elementos
Continuemos con otros ejemplos
10
11
7
2. Se pide sumar los elementos pares y los elementos impares de un vector Z de dimensin N
12
0
61
45
100
66
101
5
47
6
...
500
N
Ahora hablamos de los elementos, es decir debemos sumar los elementos pares del anterior
vector es decir 12+100+..+500 y la suma de los elementos impares es 61+45+101+47+
Solucin
Inicio
Leer
N
SPAR0
SIMPAR0
I0,N-1,1
Z[I]
K0,N-1,1
Z[K] mod 2
=0
SPARSPAR+Z[K]
SIMPARSIMPAR+Z[K]
SIMPAR
SPAR
Fin
Realiza los siguientes ejercicios
1. Dado el vector M de dimensin N se pide sumar los elementos
mltiplos de 3
2. Dado el vector Q de dimensin N se pide sumar los elementos
mltiplos de 10
3. Dado el vector Z de dimensin N se pide sumar los elementos
positivos y negativos
Leer
N
I0
Inicializamos I en 0 porque 0 es
nuestra primera posicin
I<=N-1
V
Z[I]
II+1
I=0
I<=N-1
V
Z[I]
II+1
Fin
Nota Observa que utilizamos en ambos bucles el WHILE (mientras), pero si deseas puedes
utilizar un bucle FOR y un bucle WHILE, es decir puedes utilizar diferentes tipos de bucle
segn veas conveniente
102
100
20
10
Donde N=14
10
125
Donde
25
12
45 78
4
225
45
22
75
45
...
15
4
17 78
5
60 95
4
82 485
9
+
14
10
15
...
112
18
9
=
96
89
55
10
T
R
A
S
L
MA =
D
O
97 485
9
10
125
11
21
12
T
R
A
S
L
A
D
O
...
10
125
11
13
21
12
13
La dimensin del vector resultado en este caso es 14 es decir N, dimensin del vector A, pero puede
haber ocurrido que B tenga mayor dimensin, por lo que la dimensin de C sera M, esto nos
conduce a afirmar que para averiguar la dimensin de C es necesario realizar una pregunta
(condicin).
Cul sera esa condicin?
Observa tambin que, el recorrido de uno de los vectores finaliza primero, dando lugar al traspaso
de los elementos del vector de dimensin mayor al vector resultante.
Empecemos a construir la solucin, como es de suponer, el primer paso a realizar es
cargar los elementos a los vectores, como las dimensiones no son iguales
necesitamos de dos bucles de lectura, uno para el vector A y el otro para B.
Inicio
Leer
N,M
I0,N-1,1
A[I]
I0,M-1,1
B[I]
10
Ahora nos toca realizar la suma para ello debemos recorrer ambos vectores de manera paralela,
notars que el recorrido de unos de ellos finalizar primero.
102 100 20
10
45 78
18
75
45
82 485 125 1
21
0
10
11
12
13
...
10
125
25
2
12
15
17 78
5
14
10
8
15
9
Observa que mientras haya elementos en ambos vectores, recorremos los subndices de manera
paralela, es decir el elemento de la posicin 0 (102) del vector A ms el elemento de la posicin 0
(10) del vector B, este resultado debe ser almacenado en el vector C, as sucesivamente hasta la
posicin 9, debido a que el vector B es de dimensin menor, los elementos restantes del vector A
deben ser trasladados al vector C directamente.
La siguiente instruccin, por lo tanto es averiguar, cul de las dimensiones es mayor.
F
N>M
K0,M-1,1
K0,N-1,1
Si la dimensin N es mayor
M, se har un recorrido
paralelo hasta la dimensin
menor en el caso M
C[K]A[K]+B[K]
C[K]A[K]+B[K]
JK+1,M-1,1
JK+1,N-1,1
C[J]B[J]
C[J]A[J]
K0,M-1,1
K0,N-1,1
C[K]
C[K]
Fin
Luego
trasladamos
los
elementos restantes del vector
A al vector C.
Por qu empezamos desde
K+1 y vamos hasta N-1?
Une
las
dos
partes y tendrs
el diagrama de
flujo completo,
Codifcalo!!!
11
2
1
3
4
Dejo en tus manos el proceso de lectura de datos en el vector A, eso no implica
que dejes de realizarlo N O O L V I D E S H A C E R L O!
Teniendo el vector A con elementos cualesquiera y adems repetidos, la idea
principal consiste en llevar estos elementos a C pero sin repetirlos, la solucin
propuesta consiste en lo siguiente.
Es obvio que tomaremos todos los elementos de A, por lo cual usaremos este
bucle e iremos obteniendo cada uno de los elementos de A
I0,N-1,1
2
0
1
1
2
2
3
3
2
4
1
5
4
6
2
7
2
0
I0,N-1,1
C
V
I=0
C[k] = A[I]
k k +1
Bien, esto suceder solo cuando I = 0, qu haremos cuando I sea diferente a 0?
Es evidente que el siguiente elemento a obtener, en el ejemplo es el 1, antes de llevar este
elemento al vector C, debemos verificar su existencia en el mismo. Cmo?
Tomamos el elemento y verificamos su existencia en el vector
1
2
C
C, si no existe colocamos este elemento en el vector, en este
0
1
2
3
4
ejemplo queda de la siguiente forma.
2
0
1
1
El siguiente elemento es 2 (el tercero en A) pero este elemento no debemos almacenarlo en C pues
ya existe un elemento igual.
2
Comenzamos la verificacin desde el primer elemento del
2
1
vector C, si alguno de los elementos de C es igual al elemento
0
1
2
3
4
obtenido, cesamos la verificacin, para ello utilizaremos una
bandera o SWICHT, es decir si existe el elemento asignamos
a sw (swicht o bandera) en 1 caso contrario mantenemos sw
en 0. En el caso sw = 1 y paramos la verificacin, el
diagrama queda de la siguiente forma
12
k0
I0,N-1,1
I=0
sw = 0
J=0
J <= k-1
Y
sw = 0
C[k] = A[I]
k k +1
Mientras exista elementos en C, y el sw este apagado
es decir sw = 0, esto permitir
realizar la
comparacin entre el elemento actual de A con todos
los elementos de C
Encendemos sw = 1 si
encontramos un elemento
igual, este valor tambin
permite salir del bucle
A[I] =
C[J]
J J +1
sw = 1
Si no se ha encontrado un
valor igual en C, se almacena
este elemento en la casilla
correspondiente de C, y
recorremos una posicin en C,
por ello incrementamos k en
uno
sw = 0
C[k] A[I]
k k +1
FIN
13
2. Dado el vector R, llevar todos los elementos primos del vector R al vector P
21
13
2
13
44
2
3
3
13
13
11
20
11
3. Dado un vector A de dimensin N (N es par) dividir el vector en dos partes, mostrar el mayor
y el menor de los elementos de la primera parte ms las posiciones donde se encuentran y
hallar la suma de todos los nmeros no primos que se encuentran en la segunda parte.
A
21
0
130
1
2
2
23
3
45
4
23
3
45
4
6
5
8
6
90
7
44
8
3
9
13
10
11
11
N = 12
21
0
130
1
2
2
6
5
8
0
90
1
44
2
3
3
13
4
11
5
2
1
10
2
20
3
3
4
7
5
k=0
C[k] = A[I]
k k +1
I=0
14
3
1
5
2
7
3
11
4
13
5
17
6
Sabemos que, un nmero es primo, cuando tiene dos divisores, para generar los N
primeros trminos primos, en primera instancia generaremos una serie de trminos
correlativos: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,16... la cantidad de estos
trminos depender de la cantidad de trminos primos solicitados. En el ejemplo si
N = 7, se generar la siguiente serie, cada vez que se genere un trmino debemos
verificar si es primo, si esto ocurre se contabiliza y se almacena el elemento en el
vector.
1
Es primo?Es primo?
...
10
Es primo?
11
12
13
...
Es primo?
Primo 5
Primo 1
14
15
16
17
Es primo?
Primo 7
Es divisor de 7 ?
Es divisor de 7 ?
Cada vez que se encuentre un divisor se contabiliza utilizando un contador, esto debe realizarse
para cada trmino.
1
Es divisor de 8 ?
Es divisor de 8 ?
Es divisor de 8 ?
Bien, como te dars cuenta precisamos un bucle, que permita generar la serie correlativa, sabemos
cual es valor inicial, pero el valor final est condicionado a la cantidad de trminos primos
solicitados, es conveniente utilizar el bucle WHILE ya que el lmite esta condicionado. Una solucin
es la siguiente:
15
INICIO
num 1
cp 0
J0
cp <
N
cd 0
K1, num,
1
num mod K =
0
cd cd +1
cd = 2
P[J] num
cp cp+1
JJ+1
num num +1
Cul es el objetivo de
esta instruccin?
I0,cp1,1
P[I]
FIN
Si el contador de
divisores
es
dos
almacenamos el trmino
en el vector P
16
Este es otro ejemplo de generacin de serie en un vector. Generar los N primeros trminos de la
serie de fibonacci.
La serie de fibonacci esta conformada por los siguientes trminos:
0,1,1,2,3,5,8,13,21,34,55,89,.
Esta serie se genera a partir de los dos anteriores trminos, por ejemplo el tercer trmino es la suma
de los dos anteriores.
0 + 1 = 1 (suma del primer ms el segundo trmino)
Los trminos posteriores siguen la misma regla
1 + 1 = 2 (suma del segundo ms el tercer trmino)
1 + 2 = 3 (suma del tercer ms es el cuarto trmino) As sucesivamente.
Como los trminos son generados a partir de los dos anteriores, utilizaremos dos variables iniciales
A = 0 (primer trmino) y B = 1 (segundo trmino), y C ser la variable para obtener el resultado, es
decir, tendremos:
A+B=C 0+1=1
0
A
1
B
1
C
13
21
34
55
89
144
233
.. .
1
A
1
B
2
C
13
21
34
55
89
144
233
.. .
13
21
34
55
89
144
233
.. .
1
A
2
B
1
2
3
5
8
13 21 34 55 89 144 233 .. .
A B
C
Nota, la variable A toma el valor de B, la variable B toma el valor de C y esta se obtiene a partir de la
suma de A ms B.
Y
X
INICIO
K0, N-1,
1
A 0
B 1
J0
V[0]A
CA+B
AB
BC
I0,cp1,1
P[I]
FIN
17
- 21
7
24
8
- 27
9
30
10
- 33
11
36
12
................... X
N-1
3
1
6
-9
12
15
18
- 21 24
27
30
- 33 36
2
3
4
5
6
7
8
9
10
11
12
X Es mltiplo de 3 adems ser positivo o negativo segn corresponda
................... X
N-1
0
1
0
1
1
2
4
8
2
3
4
5
6
7
X Es el ltimo nmero de la serie.
15
8
29
9
56
10
108
11
208
12
................... X
N-1
10
8
20
9
19
10
18
11
28
12
................... X
N-1
5
8
6
9
3
10
4
11
5
12
................... X
N-1
1
1
0
6
5
4
12
11
2
3
4
5
6
7
X Es el ltimo nmero de la serie.
2
1
3
2
4
3
5
4
2
5
3
6
4
7
18
METODOS DE ORDENACIN
Mtodo Por Obtencin Sucesiva De Menores
Si se pretendiese ordenar una tabla en orden creciente, este mtodo obligara a recorrer la tabla
tantas veces como elementos tenga menos uno. As, para ordenar una tabla de 100 elementos
habra que recorrerla 99 veces.
En el primer recorrido se averigua cul es el elemento menor de la tabla. Dicho elemento se
intercambia con el que est en la primera posicin de la misma.
En el segundo recorrido, se averigua cul es el elemento menor de entre los restantes,
exceptuando el primero. Dicho elemento se intercambia con el que se encuentra en la segunda
posicin.
En el resto de los recorridos la lgica utilizada sera la misma.
Por ejemplo, si suponemos cargada en memoria una tabla numrica de cuatro elementos, los pasos
necesarios para su ordenacin, segn este mtodo, quedaran reflejados en el siguiente esquema.
Primer recorrido
9
El menor de los cuatro elementos se intercambiara con el que est en la primera posicin.
1
3
9
2
Segundo recorrido
1
El menor de los tres ltimos elementos se intercambiara con el que est en la segunda posicin.
1
2
9
3
Tercer recorrido
1
El menor de los dos ltimos elementos se intercambiara con el que est en la tercera posicin
1
2
3
9
15
40
10
17
23
27
19
15
40
10
17
23
27
15
40
10
17
23
27
15
40
10
17
23
27
Intercambio
7
15
10
40
17
23
27
Intercambio
17
40
23
27
15
10
15
10
17
Intercambio
23
40
27
Intercambio
Al finalizar el recorrido la tabla quedara:
7
15
10
17
23
27
40
En el primer recorrido se han realizado intercambios, se vuelve a repetir el proceso, pero ahora con
la tabla resultado de la pasada anterior.
Segundo recorrido
7
15
10
17
23
27
40
15
10
17
23
27
40
Intercambio
7
10
15
17
23
27
40
10
15
17
23
27
40
10
15
17
23
27
40
10
15
17
23
27
40
20
10
15
17
23
27
40
Note que la tabla ya esta ordenada, sin embargo si ese no fuese el resultado se vuelve a realizar
comparaciones de pares efectuando los intercambios correspondientes y de esa manera existir n-1
recorridos.
Realiza los diagramas de flujo de los dos anteriores mtodos de ordenacin.
1. Mtodo Por Obtencin Sucesiva De Menores
2. Mtodo De La Burbuja O Del Intercambio
Bien comenzaremos por leer dos nmeros A y B, nota que es un nmero mayor a 100 y B
tiene solo un dgito es decir menor a 10 y para estar ms seguros delimitaremos B entre 1 y
9. Luego A debe ser descompuesto en sus correspondientes dgitos uno tras uno