Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccion Logica de Programacion TPS PDF
Introduccion Logica de Programacion TPS PDF
LGICA DE PROGRAMACIN
CAPITULO UNO
CONCEPTOS BSICOS
QU ES UN ALGORITMO?
La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe
alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado
sobre manipulacin de nmeros y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe
seguir, para dar solucin a un problema especfico.
TIPOS DE ALGORITMOS?
Existen dos tipos y son llamados as por su naturaleza:
Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan clculos numricos para
definir los pasos del proceso.
Lenguajes Algortmicos
Un Lenguaje algortmico es una serie de smbolos y reglas que se utilizan para describir
de manera explcita un proceso.
Tipos de Lenguajes Algortmicos
Grficos: Es la representacin grfica de las operaciones que realiza un
algoritmo (diagrama de flujo).
INICIO
Edad: Entero
ESCRIBA cual es tu edad?
Lea Edad
SI Edad >=18 entonces
ESCRIBA Eres mayor de Edad
FINSI
ESCRIBA fin del algoritmo
FIN
Metodologa para la solucin de un problema mediante un computador. Creacin
de un algoritmo.
El computador es una mquina que por s sola no puede hacer nada, necesita ser
programada, es decir, introducirle instrucciones u ordenes que le digan lo que tiene que
hacer. Un programa es la solucin a un problema inicial, as que todo comienza all: en
el Problema. El proceso de programacin es el siguiente: Dado un determinado
problema el programador debe idear una solucin y expresarla usando un algoritmo
(aqu es donde entra a jugar); luego de esto, debe codificarlo en un determinado
lenguaje de programacin y por ltimo ejecutar el programa en el computador el cual
refleja una solucin al problema inicial. Esto es a grandes rasgos lo que hace el
programador de computadores.
La parte que corresponde a este manual es la de: Dado un determinado problema
debemos idear una solucin y expresarla usando un ALGORITMO!.
Metodologa para la solucin de problemas por medio de la computadora
DEFINICIN DEL PROBLEMA
Esta fase est dada por el enunciado del problema, el cual requiere una definicin
clara y precisa. Es importante que se conozca lo que se desea que realice la
computadora; mientras esto no se conozca del todo no tiene mucho caso continuar
con la siguiente etapa.
ANLISIS DEL PROBLEMA
Una vez que se ha comprendido lo que se desea de la computadora, es necesario
definir:
o
Por su contenido
Variables Numricas: Son aquellas en las cuales se almacenan valores
numricos, positivos o negativos, es decir almacenan nmeros del 0 al 9, signos
(+ y -) y el punto decimal.
Ejemplo:
iva = 0.15 pi = 3.1416 costo = 2500
Variables Lgicas: Son aquellas que solo pueden tener dos valores (cierto o
falso) estos representan el resultado de una comparacin entre otros datos.
Variables Alfanumricas: Esta formada por caracteres alfanumricos (letras,
nmeros y caracteres especiales).
Ejemplo:
letra = a apellido = lopez direccion = Av. Libertad #190
Por su uso
Variables de Trabajo: Variables que reciben el resultado de una operacin
matemtica completa y que se usan normalmente dentro de un programa.
Ejemplo:
Suma = a + b /c
Contadores: Se utilizan para llevar el control del numero de ocasiones en que se
realiza una operacin o se cumple una condicin. Con los incrementos
generalmente de uno en uno.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando
progresivamente.
Expresiones
Las expresiones son combinaciones de constantes, variables, smbolos de operacin,
parntesis y nombres de funciones especiales.
Por ejemplo:
a + (b + 3) / c
Cada expresin toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecucin de las operaciones indicadas.
Una expresin consta de operadores y operandos. Segn sea el tipo de datos que
manipulan, se clasifican las expresiones en:
Aritmticas
Relacionales
Lgicas
Qu son los operadores y los operando, sus tipos y las prioridades de ejecucin de
los mismos.
Operadores
Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o
constantes. Es decir, los operadores nos permiten manipular valores.
Operadores Aritmticos
Los operadores aritmticos permiten la realizacin de operaciones matemticas con los
valores (variables y constantes).
Los operadores aritmticos pueden ser utilizados con tipos de datos enteros o reales. Si
ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.
Operadores Aritmticos
+ Suma
- Resta
* Multiplicacin
/ Divisin
mod Modulo (residuo de la divisin entera)
Ejemplos:
Expresin
7/2
12 mod 7
4+2*5
Resultado
3.5
5
14
23 * 2 / 5 = 9.2
2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98
Operadores Relacionales
Se utilizan para establecer una relacin entre dos valores. Luego compara estos valores
entre si y esta comparacin produce un resultado de certeza o falsedad (verdadero o
falso).
Los operadores relacionales comparan valores del mismo tipo (numricos o cadenas).
Estos tienen el mismo nivel de prioridad en su evaluacin.
Los operadores relacinales tiene menor prioridad que los aritmticos.
Tipos de operadores Relacionales
> Mayor que
< Menor que
> = Mayor o igual que
< = Menor o igual que
< > Diferente
= Igual
Ejemplos:
Si a = 10, b = 20, c = 30
a+b>c
Falso
a-b<c
Verdadero
a-b=c
Falso
a*b<>c
Verdadero
Ejemplos no lgicos:
a<b<c
10 < 20 < 30
T > 5 < 30
(no es lgico porque tiene diferentes operandos)
Operadores Lgicos
Estos operadores se utilizan para establecer relaciones entre valores lgicos. Estos
valores pueden ser resultado de una expresin relacional.
Tipos de operadores Lgicos
And Y
Or O
Not Negacin
Ejemplo:
Para los siguientes ejemplos T significa verdadero y F falso.
Resultado
T
F
F
F
Operador Or Operador Or
Operando1
Operador
Operando2
T
Or
T
T
F
F
T
F
F
Resultado
T
T
T
F
Descripcin
Indica el inicio y el final de nuestro diagrama de flujo.
Indica la entrada y salida de datos.
Estructuras Algortmicas
Las estructuras de operacin de programas son un grupo de formas de trabajo, que
permiten, mediante la manipulacin de variables, realizar ciertos procesos especficos
que nos lleven a la solucin de problemas. Estas estructuras se clasifican de acuerdo con
su complejidad en:
a) Descripcin Narrada
b) Pseudocdigo
c) Diagramas de Flujo
d) Diagramas N- S (Nassi-Schneiderman o de Chapin)
1 Descripcin Narrada
Este algoritmo es caracterizado porque sigue un proceso de ejecucin comn y
lgico, describiendo textualmente paso a paso cada una de las actividades a
realizar dentro de una actividad determinada.
Ejemplo 1 Algoritmo para asistir a clases:
1. Levantarse
2. Baarse
3. Vestirse
4. Desayunar
5. Cepillarse los dientes
6. Salir de casa
7. Tomar el autobs
8. Llegar a la Universidad
9. Buscar el aula
10. Ubicarse en un asiento
2. Descripcin en Pseudocdigo
Pseudo = falso. El pseudo cdigo no es realmente un cdigo sino una imitacin
y una versin abreviada de instrucciones reales para las computadoras. Es una
tcnica para diseo de programas que permite definir las estructuras de datos,
las operaciones que se aplicarn a los datos y la lgica que tendr el programa
de computadora para solucionar un determinado problema. Utiliza un
pseudolenguaje muy parecido a nuestro idioma, pero que respeta las
directrices y los elementos de los lenguajes de programacin. Se concibi para
superar las dos principales desventajas de los flujogramas: lento de crear y
difcil de modificar sin un nuevo dibujo.
Ejemplo
1
Disear un algoritmo que lea cuatro variables y calcule e imprima su producto,
suma y media aritmtica.
inicio
leer (a, b, c, d)
producto <-- (a * b * c * d)
suma <-- (a + b + c + d)
media <-- (a + b + c + d) / 4
escribir (producto, suma, media)
fin
3. Diagramas N-S
Son una herramienta que favorece la programacin estructurada y rene
caractersticas grficas propias de diagramas de flujo y lingsticas propias de
pseudocdigos. Constan de una serie de cajas contiguas que se leern
siempre de arriba-abajo y sus estructuras lgicas son las siguientes:
Estructura Secuencial
4. Diagramas de Flujo.
Son la representacin grfica de la solucin algortmica de un problema. Para
disearlos se utilizan determinados smbolos o figuras que representan una
accin dentro del procedimiento. Utilizan unos smbolos normalizados, con los
pasos del algoritmo escritos en el smbolo adecuado y los smbolos unidos con
flechas, denominadas lneas de flujo, que indican el orden en que los pasos
deben ser ejecutados.
Para su elaboracin se siguen ciertas reglas:
Se escribe de arriba hacia abajo y de izquierda a derecha
Siempre se usan flechas verticales u horizontales, jams curvas
Evitar cruce de flujos.
Estructura
Secuencial.
Se caracteriza porque una accin se ejecuta detrs de otra. El flujo del
programa coincide con el orden fsico en el que se han ido poniendo las
instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin,
inicializacin de variables, operaciones de asignacin, clculo, sumatoria, etc.
Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o
programa:
Definicin de variables (Declaracin) Inicializacin de variables.
Lectura de datos
Clculo
Salida
Ejemplo 1.
Se desea encontrar la longitud y el rea de un crculo de radio 5.
Solucin.
El objetivo del ejercicio es encontrar la longitud y el rea de un crculo con un
radio conocido y de valor 5. Las salidas sern entonces la longitud y el rea.
(Fase 5 del algoritmo) Sabemos que la longitud de un crculo viene dada por la
frmula 2 * pi * radio y que el rea viene dada por pi * radio al cuadrado. (Fase
4 del algoritmo) Si definimos las variables como: (fase 1 del algoritmo)
L = Longitud A = rea R = radio pi = 3.1416 hagamos el algoritmo:
Inicio
Pi 3.1416 (definicin de un valor constante)
R 5 (radio constante ya que es conocido su valor)
A pi * R ^ (asignacin del valor del rea)
L 2 * pi * R (asignacin del valor de la longitud)
Escribir (A, L) (salida del algoritmo)
Fin
Representacin en Diagrama de Flujo para el ejemplo:
L 2 * pi * R
Escribir ( A, L ) (fase de salida)
Fin
Note que la instruccin de asignacin fue cambiada por la instruccin leer. En
el flujograma debern cambiarse tambin los smbolos que los representan:
Ejemplo 3.
Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15%
respectivamente. Desplegar el resultado.
Salidas: Sueldos finales
Entradas: Salarios de los empleados
Datos adicionales: aumentos del 10, 12 y 15%
Clculos:
Sueldo final = sueldo inicial + aumento
Aumento = sueldo inicial * porcentaje/100
Definicin de variables:
Sf1, Sf2, Sf3 = los sueldos finales
S1, S2, S3 = salarios de los empleados
Aum1, aum2, aum3 = aumentos
ALGORITMO
Inicio
Leer (S1,S2,S3)
Aum1 S1 * 0.10
Aum2 S2 * 0.12
Aum3 S3 * 0.15
Sf1 S1 + Aum1
Sf2 S2 + Aum2
Sf3 S3 + Aum3
Escribir (SF1,SF2,SF3)
Fin
FLUJOGRAMA
Ingls
If <condicin>
then
<accin Si>
endif
Ejemplo
1.
Construir un algoritmo tal, que dado como dato la calificacin de un alumno en
un examen, escriba "Aprobado" en caso que esa calificacin fuese mayor que
8.
Salidas: mensaje de aprobado si se cumple la condicin.
Entradas: calificacin
Datos adicionales: un alumno aprueba si la calificacin es mayor que 8
Variables:
Cal = calificacin
Algoritmo:
Inicio
Leer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Fin_si
Fin
CAPITULO DOS
Estructuras selectivas compuestas.
Son estructuras lgicas que permiten controlar la ejecucin de varias acciones y se
utilizan cuando se tienen dos opciones de accin, por la naturaleza de estas se debe
ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.
Representacin pseudocodificada.
Espaol
Ingls
Si <condicin> entonces
If <condicin> then
<accin S1>
<accin S1>
sino
else
<accin S2>
<accin S2>
Fin_Si
End_if
Entonces, si una condicin C es verdadera, se ejecuta la accin S1 y si es falsa, se
ejecuta la accin S2.
Ejemplo 1
Dado como dato la calificacin de un alumno en un examen, escriba
"aprobado" si su calificacin es mayor que 8 y "Reprobado" en caso contrario.
Algoritmo:
Inicio
Leer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Sino
Escribir ("reprobado")
Fin_si
Fin
Ejemplo 2.
Dado como dato el sueldo de un trabajador, aplicar un aumento del 15% si su
sueldo es inferior a $1000 y 12% en caso contrario, luego imprimir el nuevo
sueldo del trabajador.
EXPRESIONES LGICAS
Sirven para plantear condiciones o comparaciones y dan como resultado un
valor booleano verdadero o falso, es decir, se cumple o no se cumple la
condicin. Se pueden clasificar en simples y complejas. Las simples son las
que usan operadores relacionales y las complejas las que usan operadores
lgicos.
Ejemplos:
Un ejemplo en el cual usamos el operador lgico AND sera:
Una escuela aplica dos exmenes a sus aspirantes, por lo que cada uno de
ellos obtiene dos calificaciones denotadas como C1 y C2. El aspirante que
obtenga calificaciones mayores que 80 en ambos exmenes es aceptado; en
caso contrario es rechazado.
En este ejemplo se dan las condiciones siguientes:
Si (C1 >= 80) y (C2 >= 80) entonces
Escribir ("aceptado")
Sino
Escribir ("rechazado")
Fin_si
Note que tambin usa operadores relacionales. Por lo general cuando hay
operadores lgicos, stos van acompaados de operadores relacionales. Un
ejemplo usando el operador lgico OR sera:
Una escuela aplica dos exmenes a sus aspirantes, por lo que cada uno de
ellos obtiene dos calificaciones denotadas como C1 y C2. El aspirante que
obtenga una calificacin mayor que 90 en cualquiera de los exmenes es
aceptado; en caso contrario es rechazado.
En este caso se dan las condiciones siguientes:
Si (C1 >=90) or (C2 >=90) entonces
Escribir ("aceptado")
Sino
Escribir ("rechazado")
Fin_si
La instruccin equivale a OR ya que nos dice que puede ser en cualquiera de
los exmenes no necesariamente en los dos. En el ejemplo 1 la palabra ambos
equivala a seleccionar la instruccin AND. Si la instruccin nos dijera que
obtenga una nota en cualquiera de los exmenes pero no en ambos, nos
estara indicando una instruccin XOR que es un tipo de OR pero exclusivo. Es
decir, no puede considerarse el caso en que tenga la misma nota en los dos
exmenes, solo en uno de los dos.
En la solucin de problemas encontramos numerosos casos en los que luego
de tomar una decisin y marcar el camino correspondiente a seguir, es
necesario tomar otra decisin. Dicho proceso puede repetirse numerosas
veces. En aquellos problemas en donde un bloque condicional incluye otro
bloque condicional se dice que un bloque est anidado dentro del otro.
Ejemplo 1.
Determinar la cantidad de dinero que recibir un trabajador por concepto de las
horas extras trabajadas en una empresa, sabiendo que cuando las horas de
trabajo exceden de 40, el resto se consideran horas extras y que stas se
pagan al doble de una hora normal cuando no exceden de 8; si las horas extras
exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora
normal y el resto al triple.
Solucin.
Lo primero que hay que determinar es si el trabajador trabaj horas extras o no.
Encontrar las horas extras de la siguiente forma:
Horas extras = horas trabajadas - 40
En caso que s trabaj horas extras:
Si horas extras > 8 entonces a horas extras excedentes de 8 = horas extras -8
y pago por horas extras = pago por hora normal * 2 * 8 + pago por hora normal
* 3 * horas extras excedentes de 8
De otra forma (solo horas al doble) pago por horas extras = pago por hora
normal * 2 * horas extras.
Finalmente, pago total que recibir el trabajador ser:
Pago = pago * hora normal * 40 + pago por horas extras.
Si no trabaj horas extras tendremos:
Pago = pago por hora normal * horas trabajadas.
Datos de salida: Pago.
Datos de entrada: nmero de horas trabajadas y pago por hora normal.
Definicin de variables:
ht = horas trabajadas
het = horas extras que exceden de 8
ph = pago por hora normal
phe = pago por horas extras
he = horas extras
pt = pago que recibe el trabajador
Algoritmo:
Inicio
Leer (ht, ph)
Si ht >40 entonces
He=ht - 40
Si he > 8 entonces
Het=he - 8
Phe=ph * 2 * 8 + ph * 3 * het
Sino
Phe=ph * 2 * he
Fin_si
Pt=ph * 40 + phe
Sino
Pt=ph * ht
Fin_si
Escribir (pt)
Fin
Ejemplo 2.
Dados los datos A, B y C que representan nmeros enteros diferentes,
construir un algoritmo para escribir estos nmeros en forma descendente. Este
es un ejemplo de los algoritmos conocidos como de Lgica Pura, ya que
poseen muchas decisiones y muchas bifurcaciones.
Salida: A, B y C ordenados descendentemente.
Entradas: A, B y C.
La dinmica del problema es comparar dos nmeros a la vez para conocer cul
es el mayor.
Ejemplo 1:
Disear un algoritmo tal que dados como datos dos variables de tipo entero,
obtenga el resultado de la siguiente funcin:
Ejemplo
2.
Dados como datos la categora y el sueldo de un trabajador, calcule el aumento
correspondiente teniendo en cuenta la siguiente tabla. Imprimir la categora del
trabajador y el nuevo sueldo.
Definicin de variables:
Cate = categora
Sue = sueldo
Nsue = nuevo sueldo
ALGORITMO
Inicio
Leer (cate, sue)
En caso que cate sea
1: hacer nsue = sue * 1.15
2: hacer nsue = sue * 1.10
3: hacer nsue = sue * 1.08
4: hacer nsue = sue * 1.07
Fin_caso_que
Escribir (cate, nsue)
Fin
Son operaciones que se deben ejecutar un nmero repetido de veces. El
conjunto de instrucciones que se ejecuta repetidamente cierto nmero de
veces,
se
llama
Ciclo,
Bucle
o
Lazo.
Iteracin es cada una de las diferentes pasadas o ejecuciones de todas las
instrucciones contenidas en el bucle.
Fases de un Programa Cclico:
1. Entrada de datos e instrucciones previas
2. Lazo o bucle
3. Instrucciones finales o resto del proceso
4. Salida de resultado
Ejemplo de bucle infinito:
En el flujograma anterior, observa que la flecha que se regresa hacia arriba nos
est indicando que hay que volver a evaluar la expresin. En ese caso como el
bucle es infinito, no se tiene una condicin para terminar y se estar haciendo
siempre. En el siguiente ejemplo, ya se agreg una condicin, la cual nos
permitir finalizar la ejecucin del bucle en el caso en que la condicin se
cumpla.
Ejemplo de bucle finito:
Bucles Repetitivos:
A continuacin, te muestro tres diseos de estructuras cclicas: las
independientes son cuando los bucles se realiza uno primero hasta que se
cumple la condicin y solo en ese caso se entra al bucle B.
Representacin pseudocodificada:
Espaol
Ingls
Ejemplo 2.
Elaborar un flujograma para encontrar la suma de los K primeros nmeros enteros.
Ingls
While <condicin> do
Acciones
end_while
EJEMPLO:
Calcular la suma de los cuadrados de los primeros 100 nmeros enteros y
escribir el resultado.
Solucin.
Como recordars, resolvimos este ejercicio en la leccin anterior pero
utilizando la estructura Desde. Hoy lo haremos con la estructura Mientras. Que
tendremos de diferente?
CENTINELAS Y BANDERAS.
Cuando no se conoce a priori el nmero de iteraciones que se van a realizar, el
ciclo puede ser controlado por centinelas.
CENTINELAS.
En un ciclo While controlado por tarea, la condicin de While especifica que el
cuerpo del ciclo debe continuar ejecutndose mientras la tarea no haya sido
completada.
En un ciclo controlado por centinela el usuario puede suspender la introduccin
de datos cuando lo desee, introduciendo una seal adecuada llamada
centinela. Un ciclo Repetir controlado por centinela es cuando el usuario digita
una letra para salir como por ejemplo S o N para indicar si desea continuar o
no. El bucle debe repetirse hasta que la respuesta del usuario sea "n" o "N".
Cuando una decisin toma los valores de -1 o algn posible valor que no est
dentro del rango vlido en un momento determinado, se le denomina centinela
y su funcin primordial es detener el proceso de entrada de datos en una
corrida de programa.
Por ejemplo, si se tienen las calificaciones de un test (comprendida entre 0 y
100); un valor centinela en esta lista puede ser -999, ya que nunca ser una
calificacin vlida y cuando aparezca este valor se terminar de ejecutar el
bucle.
Ejemplo 2.
Obtener suma de los trminos de la serie: 2, 5, 7, 10, 12, 15, 17, .... 1800.
Sumser de tipo entero, es el acumulador de trminos de la serie
Band de tipo carcter, es variable auxiliar que indica si al siguiente trmino de
la serie hay que sumarle 3 2.
Algoritmo:
Inicio
I 2
Sumser 0
Band T"
Mientras (I <= 1800) hacer
Sumser sumser + I
Escribir (I)
Si band = "T" entonces
I I + 3
Band F"
Sino
I I + 2
Band T"
Fin_si
Fin_mientras
Escribir (sumser)
Fin
RESUMEN
Hemos estudiado en esta leccin que la estructura Mientras tiene una pequea
variante a la estructura Desde en cuanto a la representacin algortmica.
Recuerda que la estructura Desde, se inicializa automticamente en su sintaxis
y el incremento tambin es automtico. En cambio, la estructura Mientras usa
un contador que es inicializado antes de entrar al ciclo y dentro del ciclo es
incrementado. Tambin estudiamos que los centinelas son valores que le
damos a la condicin para forzar a que un ciclo pueda terminar. Tambin
decamos que los centinelas solamente los podemos usar en estructuras
Mientras y Repetir, ya que sirven para finalizar el ciclo cuando no sabemos las
veces que lo vamos a realizar, y la estructura Desde es usada cuando ya
conocemos a priori el nmero de veces que se va a realizar el ciclo.
Se llama Repetir a la estructura algortmica que se ejecuta un nmero definido de veces
hasta que la condicin se torna verdadera:
Representacin pseudocodificada :
Espaol
Repetir
Acciones
Hasta que <condicin>
Ingls
Repeat
Acciones
until <condicin>
EJEMPLO:
Calcular la suma de los cuadrados de los primeros 100 nmeros enteros y
escribir el resultado.
Solucin.
Nuevamente resolveremos el ejercicio de las dos lecciones anteriores, ahora
utilizando la estructura Repetir. Podrs decir cul ser ahora la diferencia?
Las reglas para construccin de esta estructura usando Repetir, nos dicen que
debemos declarar una variable contador que debe inicializarse antes del ciclo e
incrementarse dentro del ciclo. A diferencia de la estructura Mientras, la
condicin ahora estar colocada al final del bucle para que primero ejecutemos
la instruccin y luego preguntamos si la condicin se cumple. Esto quiere decir,
que en esta estructura el bucle se realizar por lo menos una vez. Tambin
podrs observar que la condicin est al revs, porque el bucle se repite hasta
que la condicin se cumpla. En el bucle Mientras, la condicin se evaluaba
mientras era cierta.
PROBLEMA.
Suponga que se desea desarrollar un programa para:
1. Leer una lista de calificaciones de un examen
2.Encontrar su media
3.Escribir una lista de las calificaciones mayores que la media
4.Ordenar la lista de las calificaciones en orden ascendente.
Supongamos tambin que hay 100 calificaciones. Debemos utilizar 100
variables diferentes nota1, nota2, ...., nota100, de ese modo son 100
direcciones diferentes de memoria para almacenar las calificaciones del
examen. Se imagina declarar las 100 variables, cuntas instrucciones
involucra?
Var Nota1,nota2,nota3,.........nota100: entero
(En la declaracin real de un programa no pueden usarse puntos suspensivos,
por lo tanto sern 100 veces) . En la fase de lectura de datos, sern tambin
100 veces las instrucciones para ir leyendo cada valor. Leer (nota1,
nota2,nota3,........., nota100)
Para calcular la media:
Media (nota1+nota2+.......+nota100)/100
Para la lista de calificaciones mayores que la media, deber tambin irse
comparando una por una:
Si nota1 > media entonces
escribir (nota1)
Fin_si
Si nota2 > media entonces
escribir (nota2)
Fin_si
Si nota100 > media entonces
escribir (nota100)
Fin_si
Y despus de ms de 450 lneas de cdigo..... Falta ordenar la lista de
calificaciones en orden ascendente!
Despus que aprendas a usar arreglos vers cmo se ahorra instrucciones
porque es fcil recorrer toda la lista de notas con unas pocas instrucciones. En
el caso anterior, cuando el acceso a la informacin es secuencial, slo se
puede acceder a un elemento buscando desde el principio de la lista, y esto es
algo lento. Lo que se necesita es una estructura de acceso directo que permita
almacenar y recuperar los datos directamente especificando su posicin en la
estructura, de esa manera se requerir el mismo tiempo para acceder al
elemento de la posicin 100 que el de la posicin 5.
Tambin preferiremos que esta estructura se almacene en memoria principal
para que su almacenaje y recuperacin sea ms rpida. Es por ello que existen
los arreglos, que estn organizados en una secuencia de elementos, todos del
mismo tipo y se puede acceder a cada elemento directamente especificando su
posicin en esta secuencia.
Arreglos Unidimensionales:
Estn formados por un conjunto de elementos de un mismo tipo de datos que
se almacenan bajo un mismo nombre, y se diferencian por la posicin que tiene
cada elemento dentro del arreglo de datos. Al declarar un arreglo, se debe
inicializar sus elementos antes de utilizarlos. Para declarar un arreglo tiene que
indicar su tipo, un nombre nico y la cantidad de elementos que va a contener.
Por ejemplo, las siguientes instrucciones declaran tres arreglos distintos:
Float costo_partes[50];
Para acceder a valores especficos del arreglo, use un valor de ndice que
apunte al elemento deseado. Por ejemplo, para acceder al primer elemento del
arreglo calificaciones debe utilizar el valor de ndice 0 (calificaciones[0]). Los
programas en C++ siempre indexan el primer elemento de un arreglo con 0 y el
ltimo con un valor menor en una unidad al tamao del arreglo.
Inicializacin y asignacin de valores
Como se deca anteriormente, antes de utilizar un arreglo es necesario
inicializarlo:
Calificaciones[0];
Para inicializar todos los elementos de una vez, se colocan dentro de una
estructura for que va del primer elemento al ltimo que contiene el arreglo. Para
asignar un valor a un elemento del arreglo se hace por ejemplo:
Calificaciones[0] =100;
Cuando se usan arreglos, una operacin comn es usar una variable ndice
para acceder a los elementos de un arreglo. Suponiendo que la variable ndice
I contiene el valor 3, la siguiente instruccin asigna el valor 400 a valores[3]:
valores[I] 400;
Partes de un arreglo:
Los componentes. Hacen referencia a los elementos que forman el arreglo, es
decir, a los valores que se almacenan en cada una de las casillas del mismo.
Los ndices. Permiten hacer referencia a los componentes del arreglo en forma
Definicin de Arreglos:
ident_arreglo = arreglo[liminf .. Limsup] de tipo Operaciones con Vectores:
Las operaciones que se pueden realizar con vectores durante el proceso de resolucin de
un problema son:
Lectura/ escritura
Asignacin
Actualizacin (insercin, eliminacin, modificacin)
Recorrido (acceso secuencial)
Ordenacin
Bsqueda
Ejemplos:
Sea arre un arreglo de 70 elementos enteros con ndices enteros. Su representacin nos
queda:
Ejemplos:
Sea bool un arreglo de 26 elementos booleanos con ndices de tipo carcter.
Su representacin nos queda:
Bool = arreglo["a".."z"] de booleanos
Nmero
total
de
elementos:
NTE= (ord("z")-ord("a")) + 1 = 122-97+1 = 26 elementos
Lectura
El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada
uno de sus elementos. Normalmente se realizan con estructuras repetitivas,
aunque pueden usarse estructuras selectivas. Usamos los ndices para recorrer
los elementos del arreglo:
b) No ordenado
Arreglo Bidimensional:
Es un conjunto de datos homogneo, finito y ordenado, donde se hace
referencia a cada elemento por medio de dos ndices. El primero se utiliza para
los renglones (filas) y el segundo para las columnas. Tambin puede definirse
como un arreglo de arreglos. Internamente en memoria se reservan MxN
posiciones consecutivas para almacenar todos los elementos del arreglo.
Declaracin de una matrz:
El nmero de elementos que contendr una fila viene dado por U1-L1+1 (Valor
mayor - valor menor +1). Igualmente, el nmero de elementos para la columna
es U2-L2+1. As, el nmero total de elementos de la tabla es (U2-L2+1)*(U1L1+1)
Ejemplos.
1) Rellenar una matrz identidad de 4 por 4 elementos.
Una matriz identidad es aquella en la que la diagonal principal est llena de
unos y el resto de los elementos son cero. Para llenar la matriz identidad se
debe verificar que cuando los ndices i y j sean iguales, la posicin vale 1, en
caso contrario se asigna cero al elemento i,j.
Algoritmo
Inicio
Desde i = 1 hasta 4 hacer
Desde j = 1 hasta 4 hacer
Si i=j entonces
Matriz[i,j] =1
Sino
Matriz[i,j] =0
Fin_si
Fin_desde
Fin_desde
Fin
Cadenas de Caracteres.
Una cadena es un conjunto de caracteres incluido el espacio en blanco, que se
almacena en un rea contigua de la memoria central. La longitud de una
cadena es el nmero de caracteres que contiene. Una cadena vaca es la que
no tiene ningn carcter. Una constante de tipo cadena es un conjunto de
caracteres vlidos encerrados entre comillas. Una variable de cadena es
aquella cuyo contenido es una cadena de caracteres. El ltimo carcter de la
cadena marca el fin de la cadena.
Las variables de cadena se dividen en:
Estticas. Su longitud se define antes de ejecutar el programa y no
puede cambiarse a lo largo de este.
Semi estticas. Su longitud puede variar durante la ejecucin del
programa, pero sin sobrepasar un lmite mximo declarado al principio.
Dinmicas. Su longitud puede variar sin limitacin dentro del programa.
Operaciones bsicas con cadenas:
Asignacin.
Nombre "Luis Humberto"
Entrada/ Salida
Leer(nombre, estado_civil)
Escribir(nombre, apellido)
Escribir(nombre, apellido)
Quicksort.
Si bien el mtodo de la burbuja era considerado como el peor mtodo de