0% encontró este documento útil (0 votos)
12 vistas23 páginas

Introducción a Programación y Algoritmos

Este documento introduce conceptos básicos de programación como definiciones, herramientas y una práctica informal de problemas. Explica qué es programar, define términos como programación, algoritmos, estados y acciones. También presenta herramientas como lenguaje coloquial, tabla visual de contenidos y diagrama de flujo.

Cargado por

Luciano Contrera
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas23 páginas

Introducción a Programación y Algoritmos

Este documento introduce conceptos básicos de programación como definiciones, herramientas y una práctica informal de problemas. Explica qué es programar, define términos como programación, algoritmos, estados y acciones. También presenta herramientas como lenguaje coloquial, tabla visual de contenidos y diagrama de flujo.

Cargado por

Luciano Contrera
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Clase 1

Definiciones: Programación, Algoritmos, Estados, Acciones.

Herramientas: Lenguaje Coloquial, Tabla Visual de Contenidos, Diagrama


de Flujo.

Practica: Problemas informales.

Desarrollo

Que es programar?

Según el diccionario de la Real Academia

Establecer o planificar el programa de una serie de actividades.


"este año, además de básquetbol, se programarán diversas actividades, haciendo
especial hincapié en la práctica de otros deportes como el voleibol o la natación"

Dar las instrucciones necesarias a una máquina para que realice su función de
manera automática. "Programar la lavadora; programar el video"

En definitiva tenemos un dispositivo o conjunto de dispositivos, capaces de


comprender una orden o una serie de órdenes para efectuar una tarea.

Este dispositivo o conjunto de dispositivos lo llamaremos procesador. El


procesador es capaz de alguna manera de comprender y ejecutar las acciones
que se le solicitan.

Por este motivo diremos que la Programación es el conjunto de instrucciones


reconocibles por una máquina de propósito general que la convierte en una
máquina particular.

En la programación imperativa, estas instrucciones son las acciones que debe


realizar el procesador. Una acción queda definida por su efecto. Es decir ñla
acción provoca que el procesador pase de un estado a otro. Por ejemplo
cuando se le indica a nuestra mascota “sentarse”, esta cambia de parado a
sentado. Es decir, en el momento en que conozco el estado inicial y el estado
final al que quiero llegar, puedo determinar que acción se debe realizar.

Programar en definitiva es poder escribir el conjunto de estas acciones de


modo tal que nuestro procesador a través de sucesivos cambios de estado
llegue al estado final deseado.

Cuando se escribe el conjunto de acciones sin especificar un procesador en


particular y empleamos lenguaje coloquial o algún diagrama decimos que
escribimos un algoritmo. Es decir un algoritmo es un Conjunto ordenado de
operaciones sistemáticas que permite hacer un cálculo y hallar la solución de
un tipo de problemas.

Veamos alguno ejemplo:

Se desea calcular la longitud de cable que se precisa adquirir para


amarrar una antena de 100m. Se sabe que las sujeciones son 3, que se
amarran a 4/5 de la altura total en la antena y a 20 m de la base en el
suelo. Además se debe prever un 10% adicional para las sujeciones.

Tenemos entonces la siguiente situación:

Debemos calcular la hipotenusa de un triángulo rectángulo cuya base es


20m, cuya altura es 4/5 de 100m y este valor incrementarlo en 10%.

Nuestro Estado Inicial es Altura de la antena H=100m

Altura del triángulo h= ¿? Debemos calcularla

Base del triángulo b= 20 m

Largo del cable L=¿? Debemos calcularlo

Podemos pasar a un estado intermedio donde sepamos la Altura del


triángulo. La acción es h= 4*100/5

Nuestro estado actual es Altura de la antena H=100m

Altura del triángulo h= 80m

Base del triángulo b= 20 m

Largo del cable L=¿? Debemos calcularlo

Podemos ahora pasar a un siguiente estado donde podemos conocer el


largo de uno de los tensores sin tener en cuenta el adicional para
sujeciones. La acción es (raíz cuadrada) L = √ b ²+h ².

Nuestro estado actual es Altura de la antena H=100m

Altura del triángulo h= 80m

Base del triángulo b= 20 m

Largo del cable L= 82,46211251235321


Este es el largo neto de uno de los tensores, pero como son tres para
acercarnos a la soluciones realizar la siguiente acción L=L*3

Nuestro estado actual es Altura de la antena H=100m

Altura del triángulo h= 80m

√ Base del triángulo b= 20 m

Largo del cable L= 247,3863375370596

Ya tenemos el largo del cable para los tres tensores. Aún nos falta
calcular el adicional para las sujeciones. La acción es L=L+L*10/100

Nuestro estado actual es Altura de la antena H=100m

Altura del triángulo h= 80m

Base del triángulo b= 20 m

Largo del cable L = 272,1249712907656

Es seguro que no vamos a comprar esa cantidad sino que compraremos 272
m. Hay formas para que el procesador tenga en cuenta estos detalles, pero eso
es tema para mas adelante.

Este algoritmo en lenguaje matemático sería

h = 4*100/5
L = √ b ²+h ²
L = L*3
L = L+L*10/100

Este algoritmo en lenguaje coloquial sería

Calcular la altura de sujeción


Calcular la Hipotenusa del triángulo
Triplicar el valor de la Hipotenusa
Incrementar 10% el último valor
O
h := 4*100/5
L := Raiz(b**2+h**2)
L = L*3
L = L+L*10/100
También se puede expresar mediante un diagrama conocido como Diagrama
de Flujo.

h = 4*100/5

L =Raiz(b**2+h**2)

L = L*3

L = L+L*10/100

Y una tabla visual de contenidos sería:

Calcular Longitud

Calcular h Calcular Hipotenusa Triplicar Hipotenusa Agregar 10%

La tabla visual de contenidos siempre indica que hay que hacer, pero no cómo.
Se emplea en problemas complejos para ir subdividiendo el problema en
problemas mas paqueños.
Ejercitación Clase 1

1. Especificar la accion principal y los estados iniciales y finales. Determinar


los estados intermedios y las acciones que componen la acción principal.

Llamar a un amigo por teléfono público.

2. Especificar la accion principal y los estados iniciales y finales. Determinar


los estados intermedios y las acciones que componen la acción principal.

Venir a la Facultad

3. Especificar la accion principal y los estados iniciales y finales. Determinar


los estados intermedios y las acciones que componen la acción principal.

Preparación de mate amargo

4. Especificar la accion principal y los estados iniciales y finales. Determinar


los estados intermedios y las acciones que componen la acción principal.

Cambiar una lámpara quemada

5. Indique los estados de las variables antes y después de cada operación

X:= 1
Y:= 2
Z:= ((X*Y) + 4) / Y
X:= Z ** Y

6. Indique los estados de las variables antes y después de cada operación

A:= 1
B:= 5
C:= 6
X:= A
A:= B
B:= C
C:= X
Clase 2

Constantes y Variables. La acción de Asignación.

Composición de Acciones. Secuencia.

Practica: Problemas de Composición Secuencial y Asignación.

Desarrollo

En el desarrollo anterior hemos usado letras para identificar elemento cuyo


valor incluso era desconocido. Estas letras representan una variable.

Una variable puede identificarse por un letra o mas por ej. ALTURA. Cuando
hacemos referencia a la variable ALTURA en una operación, hacemos
referencia al contenido de la variable. Asi si escribimos Maximo = ALTURA -1,
si ALTURA contiene el valor 6, Maximo pasa a valer 5.

En el lenguaje aritmético no tenemos mayores dificultades. Los nombres


expresan variables y los números constantes. Pero cuando trabajamos en un
campo mas extendidos debemos contemplar el hecho que “ALTURA” exprese
la cadena de caracteres y no el nombre de una variable. Este simple hecho de
que las cadenas se indiquen entre comillas permite al procesador distinguir
ALTURA de “ALTURA”. El primero es el nombre de una variable y el segundo
la cadena de caracteres.

Queda claro que una variable puede contener diferentes tipos de valores, de
allí que cada variable debe ser definida de que tipo es. Es decir que rango o
conjunto de valores puede almacenar.

Algunos tipos de variables son

Byte permite almacenar valores enteros de 0 a 255

Corto permite almacenar valores enteros de 0 a 65.535

Largo permite almacenar valores enteros de 0 a [Link]

Real permite almacenar el conjunto de los numero reales

Decimal permite almacenar números con decimales. Se debe indicar la


cantidad total de dígitos y cuantos son decimales.

Booleano permite solo dos valores Verdadero o Falso

Cadena permite almacenar caracteres. Se debe indicar el largo.


Cada lenguaje de programación especifica los tipos de variables
aceptados y el comportamiento de las mismas. Algunos lenguajes no aceptan
“mezclar” tipos y otros lo permiten pero producen truncamientos.

Es claro que el tipo de cada variable determina las operaciones que


pueden efectuarse con ellos. Así en el caso de las variables numéricas se
pueden efectuar todas las operaciones aritméticas. En el caso de las cadenas
es posible efectuar la operación de concatenación (&) que consiste en crear
una cadena mas larga donde la primera parte de la cadena es la
correspondiente al primer operador y la segunda al segundo operador. Por
ejemplo

Nombre := “Juan”

Apellido := “Perez”

Apeynom := Apellido&”, “&Nombre

El Contenido de Apeynom será “Perez, Juan”

Otro ejemplo

Nombre := “Juan”

Apellido := “Perez”

Nomyape := Nombre&” “&Apellido

El Contenido de Nomyape será “Juan Perez”

Asignación

En general cuando se opera con variables, es preciso distinguir la


operación de comparación de la operación de asignación. La asignación es una
acción que resuelve las operaciones de la derecha del símbolo de asignación y
el resultado lo almacena en la variable a la izquierda del símbolo de asignación.

Asi en el caso de A:= B+C, la acción calcula la suma de los contenidos


de B y C y lo almacena en A.

Téngase en cuenta que el resultado almacenado dependerá del tipo de


la variable receptora. Asi es que si B es un decimal y C un real y A un entero, el
resultado almacenado en A será el resultado de la operación pero solo su parte
entera, truncándose la parte decimal.

Ejemplo B:= 2,90 C:= 0,23

La operación da como resultado 3,13 pero si A es un entero contendrá


el valor 3
Composición de Acciones.

Es importante comprender de que manera el procesador ejecutará las


acciones. En los casos estudiados hasta el momento, cuando uno establece
una sucesión de acciones estas se ejecuta en el orden en que fueron
secuenciadas. Es decir de la primera a la última.

Una estructura como la que sigue

Acción 1

Acción 2

Acción 3

O también

Acción1 ; Acción2; Acción3

Harán que el procesador ejecute primero la Acción1, luego la Acción2 y


finalmente la Acción3. En otras palabras, el estado inicial de la Acción2 será el
estado final de la Acción1 y el estado inicial de la Acción3 será el estado final
de la Acción2.

Este tipo de estructura se denomina composición de acciones en


secuencia o estructura en secuencia.

Ejemplo

Ei B=?, C=? A=?

B:= 5

E2 B=5 C=? A=?

C:= B*2

E3 B=5 C=10 A=?

A:= C + B

Ef B=5 C=10 A=15


Ejercitación Clase 2

1. Indique los estados de las variables antes y después de cada operación

H:= 3,14
D:= 5
R:= H*D
R:= redondear(R)

2. Dado los estados iniciales y finales, escribir las acciones.

a. Ei: a=10 b=3 P=?


b. Ef: a=7 b=10 P=21
No existe ninguna otra variable. Se debe tener en cuenta que
asignaciones del tipo a:=a+b, primero evalúan la expresión de la
izquierda y después efectúan la asignación.

3. Dado los estados iniciales y finales, escribir las acciones.

a. Ei: a=6 b=15 P=?


b. Ef: a=9 b=6 P=27
No existe ninguna otra variable. Se debe tener en cuenta que
asignaciones del tipo a:=a+b, primero evalúan la expresión de la
izquierda y después efectúan la asignación.

4. Suponga que se define la variable TOTAL, como de tipo entero y las


variables CANTIDAD e IMPORTE como de tipo real.
Indique el valor contenido por TOTAL luego de los siguientes pasos de un
programa.

CANTIDAD := 2
IMPORTE := 0,98
TOTAL := CANTIDAD * IMPORTE

5. Suponga que se define la variable TOTAL, como de tipo entero y las


variables CANTIDAD e IMPORTE como de tipo real.
Indique el valor contenido por TOTAL luego de los siguientes pasos de un
programa.

CANTIDAD := 2
IMPORTE := 1,02
TOTAL := CANTIDAD * IMPORTE
6. Suponga que se define la variable VALOR, como de tipo entero y las
variables DIVISOR y DIVIDENDO como de tipo real.
Indique el valor contenido por VALOR luego de los siguientes pasos de un
programa.

DIVISOR := 2,25
DIVIDENDO := 2
VALOR := DIVIDENDO/DIVISOR

7. Supongamos una máquina de calcular donde solo se pueden hacer


operaciones de una a la vez. Escriba un algoritmo que realice la siguiente
operación:

a. (10 x 4 + 5)/2

b. (√[(A+B)*C-D)/[a*(c-a)]ⁿ donde n=2


Clase 3

Composición de Acciones: Acciones condicionadas. Estructura de


Decisión. Decisión Múltiple.

Practica: Problemas con Acciones Condicionadas.

Desarrollo

La estructura de acciones en secuencia es una estructura que permite


solucionar un cierto número de problemas. Pero hay situaciones en las que una
acción solo debe ejecutarse bajo determinadas condiciones. Otras donde se
debe elegir una acción u otra acción en función de estas condiciones.

No es algo distinto a lo que habitualmente hacemos en nuestra vida


cotidiana, permanentemente elegimos hacer determinadas cosas en función de
prioridades y condiciones. Elegimos caminar o tomar un colectivo, tomar té o
café. Si tenemos sed bebemos agua, si tenemos hambre elegimos comer una
fruta o un yogur. Estas decisiones las tomamos en función de condiciones que
nos impulsan en uno u otro sentido.

En el armado de un algoritmo también se presentan situaciones en que


se debe decidir si se ejecuta una u otra acción. Para ello se emplean las
estructuras de decisión.

Una estructura de decisión parte de una pregunta por el estado de


algunas variables, en función de ello se ejecuta (o no) una determinada
acción.

Por ejemplo supongamos que tenemos dos variables A y B, y que


dependiendo que A sea mayo que B se realiza la resta A-B y en caso contrario
se efectúa la resta B-A, resulta:

En lenguaje coloquial: En diagrama de flujo

Si A>B
C=A-B V A>B F
Sino
C=B-A
Fsi
C=A-B C=B-A
Debe prestarse mucha atención a la tabla de verdad de la expresión
booleana de la condición. En el ejemplo sencillo que hemos presentado el
hecho que sea falso el resultado de A>B, no significa que B sea mayor que A,
pueden ser iguales!.

Las expresiones pueden ser complejas mediante el empleo de


conjunciones (˄) o disyunciones (˅). Por ejemplo A>B ˄ B>C en este caso para
que la condición sea verdadera ambos términos deben ser verdaderos y en la
expresión A>B ˅ B>C para que sea falsa ambos términos deben ser falso.

Asi recordemos

A>B A>B A>B ˄ B>C


V V V
V F F
F V F
F F F

A>B A>B A>B ˅ B>C


V V V
V F V
F V V
F F F

Muchas veces es preferible en lugar de una expresión muy compleja efectuar


una estructura de decisión anidada. Así tenemos

Si A>B ˄ B>C
Acción 1
Sino
Acción 2
Fsi

Podemos escribir

Si A>B
Si B>C
Acción 1
Sino
Acción 2
Fsi
Sino
Acción 2
Fsi

Observamos que la Acción 1 sólo se ejecuta cuando ambas condiciones son


verdaderas.
De otro modo

Si A>B ˅ B>C
Acción 1
Sino
Acción 2
Fsi

Podemos escribir

Si A>B
Acción 1
Sino
Si B>C
Acción 1
Sino
Acción 2
Fsi
Fsi

Observamos que la Acción 2 sólo se ejecuta cuando ambas condiciones son


verdaderas.

Una variante de la estructura de decisión, es la estructura de decisión múltiple.


Esta estructura permite que en función del resultado de una operación o del
valor de una variable, permite ejecutar una serie de acciones dependiendo de
este valor.

Asi la estructura de decisión múltiple sería:

Según A
1: Acción1
2: Acción2
…………..
n: Acción n
sino
Acción
Ejercitación Clase 3

1. Elaborar un algoritmo para determinar el tipo de un triángulo dado el


tamaño de sus lados.

2. Elaborar un algoritmo para representar la salida de su casa por la mañana.

3. Elaborar un algoritmo para determinar el mayor de cuatro valores.

4. Elabore un algoritmo para representar la acción de servir la merienda. El


comensal puede tomar té, café, café con leche, té con leche y puede o no
ponerle azúcar, si le pone puede ponerle una, dos o tres cucharadas.

5. El sistema de registración de IVA debe asignar la letra a un comprobante de


venta. Para ello se debe tener en cuenta que la empresa emisora del
comprobante emite comprobantes ´C´ en el caso que la misma revista el
carácter de Responsable No Inscripto (RNI), Monotributista (M) o Exento
(E), cualquiera sea el carácter fiscal del comprador. Si la empresa emisora
es Responsable Inscripto (RI), emitirá un comprobante ´A´ si el comprador
es RI o es RNI, pero emitirá un comprobante ´B´ si el comprador es M o E.

6. Escriba un algoritmo que acepte tres números y luego los devuelva


ordenados decrecientemente.

7. Se desea calcular el promedio de votos a obtener por cinco partidos


políticos. Se realiza una encuesta acumulándose los votos obtenidos por
cada partido y el número de votos indecisos. Realizar un algoritmo que
determine el porcentaje de votos de cada partido y el de indecisos, respecto
del total de encuestados.

8. La nota final en la escuela de informática se obtiene en función de 3 notas.


La nota final del primer examen, la nota del segundo examen y una nota de
concepto del profesor. La nota del primer examen se pondera como 30% de
la nota final, la del segundo examen como el 50% y la de concepto como el
20% de la nota final. Elabore un algoritmo que en base a esas tres notas
calcule la nota final.

9. La Mutual del personal del Banco, a pedido de un socio canjea un plazo


fijo, pagándole el capital inicial. Luego, al cobrarse el plazo fijo, le paga los
intereses descontando los días correspondientes y $ 0,50 por gastos.
Efectúe un algoritmo que liquide el pago de la diferencia entre el capital
inicial y capital con intereses (el interés es de 1,5% a 30 días). Se cuenta
con los datos: Capital inicial, Capital con interés, Cantidad de días de
anticipo.
10. El valor de la sección (S) de un conductor se determina en función de la
corriente eléctrica (I) y de la conductibilidad (C) del material. Además a la
sección es obtenida se le incrementa un 25% por razones de seguridad.
Tenga en cuenta que (C=I/S). Realizar un algoritmo que calcule la sección.

11. Escriba un algoritmo que determine el precio del peaje a abonar por el
pasajero en función de los km que va a recorrer, sabiendo que hasta 10 km
el precio es $2.00, hasta 20 km, el precio es $3.00, hasta 40 km, el precio
es $4.00 y hasta 80 km el precio es $5.00, si supera los 80 Km el costo es
de $6.00.

12. En una empresa el valor del pasaje se cobra en función de los destinos. El
destino 1 paga $2.00 y a partir de allí existen 7 destinos más. Cada destino
tiene un costo de 15% más que el anterior. Escriba un algoritmo que
devuelva el valor a pagar en función del número de destino elegido.

13. Escriba un algoritmo que acepte una fecha como día, mes y año (en
números) y me devuelva la fecha en formato “largo”. Por ejemplo se ingresa
25 (día), 10 (mes) y 2003 (año) y devuelve el texto: “25 de Octubre de
2003”. Tenga en cuenta que deberá controlar que la fecha sea válida.

14. Escriba un algoritmo que solicite la fecha de nacimiento de una persona y


la fecha de hoy y me devuelva la edad de la persona. Tenga en cuenta que
deberá controlar que la fecha sea válida.

15. En el ejercicio anterior tenga en cuenta que la edad se expresa en años


salvo el caso de menores de un año que se expresa en meses y en el caso
que tenga menos de un mes que se expresa en días.
Clase 4

Composición de Acciones: Acciones que se repiten. Estructura de


Iteración. Iteración con condición de continuación. Iteración con
condición de terminación.

Practica: Problemas con Iteración.

Desarrollo

En la solución de problemas (como en la vida cotidiana) muchas veces


es necesario repetir una acción un cierto número de veces, donde cada vez
que se ejecuta se produce una aproximación al resultado esperado. Es decir
cada vez que se ejecuta la acción se llega a un nuevo estado que al arribar a
las condiciones apropiadas será el estado final deseado.

Tomemos el caso de la multiplicación. Podemos interpretar que AxB


consiste en sumar B veces el valor de A. Es decir que M:= M+A debe ser
ejecutado B veces partiendo con M=0.

Debemos entonces contar con alguna estructura que le indique al


procesador esta actividad. Nótese que podemos razón así: La primera vez
tenemos M=0 que es el resultado de A*0, para conseguir el resultado de A*1
debo hacer M=M+A. Ahora tengo el reultado para A*1, y para conseguir el valor
de A*2, debo nuevamente hacer M=M+A. Y así sucesivamente hasta que
lleguemos al resultado A*B.

Está claro que para un valor de i cualquiera, conocemos el valor de A*(i-


1), efectuamos M:=M+A y ahora tenemos el valor de A*i. Si hacemos i:=1+1,
estamos en el mismo estado en el que empezamos para un i mayor.

La estructura de este tipo se conoce como iteración. Y el algoritmo para


calcular AxB sería:

M:=0

i:=1

Mientras i<= B hacer

M:=M+A

i:=i+1

Fmientras
Obsérvese que siempre antes de ejecutar la acción conozco M para i-1 y
luego de las acciones regreso a ese estado. Cuando i=B+1, entonces conozco
M para i-1, es decir para B. En esas condiciones i>B y termina la iteración.

En diagrama de flujos sería:


M:=0

I:=0

Falso
I<=B
Verdadero

M:=M+A

I:=I+1

La mayoría de los lenguajes poseen varias estructuras de iteración.


Aparte de la que hemos visto, que se denomina de repetición con condición al
inicio (o con condición de terminación), muchos tienen una estructura de
repetición con condición al final (o con condición de continuación).

Esta estructura sería:

Acción1
Repetir
Accion2
Hasta que Condición
En un diagrama de flujos sería

Accion1

Accion2

Verdadero

Falso I<=B
Nótese que en esta estructura la Acción 2 se realiza por lo menos una
vez, en el caso de la estructura con condición al inicio puede no ejecutarse
nunca.

Por último, una estructura muy difundida es aquella en que las


repeticiones están establecidas, como seria el siguiente caso:

Para i=1 a N de 1 en 1

Acción1

Fpara

Está claro que la estructura permite ir de 1 en 1 o de 2 en 2 o en general


de n en n. El valor inicial de i también puede ser cualquier entero. Es muy
práctica para aquellos casos donde es posible determinar el número de
repeticiones necesarias, pero no es posible de usar cuando la condición de
terminación o continuación es aleatoria. Por ejemplo en el caso de tratamiento
de secuencias de datos donde el fin de archivo no está a priori establecido en
un número cierto de pasos.
Ejercitación Clase 4

Escriba un algoritmo que pida la base y el exponente de una potencia y


calcule el valor resultante, bajo la premisa que el resultado es la
multiplicación de la base por si misma tantas veces como indica el
exponente. Tenga en cuenta que si el exponente es 0 el valor de la
potencia es 1 cualquiera sea la base.

Si en el ejercicio anterior no contempló exponentes negativos, replantee el


ejercicio para contemplar este caso.

Elaborar un algoritmo para ordenar de mayor a menor cuatro valores.

Describa y especifique en que se diferencia la estructura de Selección de la


de Selección Múltiple.

Describa y especifique en que se diferencia la iteración con condición al


inicio y con condición al final.

Se dispone de una lista de personas con número de documento, apellido y


nombre y número de teléfono. Dicha lista se encuentra ordenada por el
número de documento. Cree un algoritmo que efectúe una búsqueda de un
número dado.

Escriba un algoritmo para calcular el factorial de un número dado.

Escriba un algoritmo que dado un número muestre y cuente los numeros


pares desde 1 hasta el número dado.

Escriba un algoritmo que dado un número muestre y cuente los números


pares desde 51 hasta el número dado.

Un palíndromo (del griego palin dromein, volver a ir hacia atrás) es una


palabra, número o frase que se lee igual hacia adelante que hacia atrás. Si
se trata de un número, se llama capicúa. Habitualmente, las frases
palindrómicas se resienten en su significado cuanto más largas son.
Genere un algoritmo que permita introducir letra por letra un texto de hasta
20 caracteres y determine si es un palíndromo.
Clase 5

Tratamiento de secuencias. Secuencias subindicadas. La máquina de


caracteres.

Desarrollo

secuencia

Serie de elementos que se suceden unos a otros y guardan relación entre sí.
"el concepto que tenemos en nuestra mente se llama significado, y la
secuencia de sonidos que lo expresan significante; las computadoras, cuando
almacenan y procesan información, la codifican en secuencias de ceros y unos"
sinónimos: sucesión
.
Orden o disposición de una serie de elementos que se suceden unos a otros.
"al conocer la secuencia de los hechos, la policía descubrió al asesino"
sinónimos: sucesión

Uno de los métodos más primarios de almacenamiento y recuperación


de la información es la secuencia. Desde el médico que asienta en fichas los
tratamientos de sus pacientes y almacena esta en secuencia alfabética,
pasando por el reguardo de información en cintas magnéticas.

El estudio y tratamiento de la secuencia es uno de los pilares del


resguardo y tratamiento de la información. Hay diferentes implementaciones de
secuencias.

Imaginemos un texto, una secuencia de caracteres. Imaginemos además


que la acción ARR (arrancar) tiene el efecto de dejarnos disponible el primer
carácter del texto en una variable llamada CC (carácter corriente) y que la
acción AV (avanzar) tiene como consecuencia de colocar en CC el siguiente
carácter. Esta claro que con sucesivos AV veremos pasar por CC todos y cada
uno de los caracteres del texto. Ahora bien podremos avanzar hasta un
carácter especial que indica que el texto ha terminado. Vamos a llamar a este
carácter (Θ) marca de fin de texto.

Así si queremos “leer” todo el texto podemos hacer:

ARR

Mientras CC <> ‘Θ’

AV

Fmientras
De la misma manera podríamos saber la longitud del texto (es decir la
cantidad de caracteres que lo componen).

ARR

Longitud = 0

Mientras CC <> ‘Θ’

Longitud = Longitud + 1

AV

FMientras

En la guía a continuación se plantean una serie de ejercicios al efecto.


Pero podemos concluir que el tratamiento de secuencia siempre puede
efectuarse con el esquema:

Tratamiento inicial

Mientras No Fin de Secuencia

Tratar elemento corriente

Obtener siguiente elemento

FMientras

Otra implementación de secuencia es el denominado ARREGLO. Un


arreglo es un espacio de memoria donde se aloja un conjunto predeterminado
de valores del mismo tipo a los cuales se accede con un nombre único
subindicado por su posición dentro del conjunto.

Asi tendríamos NUM arreglo(30) de cortos.

Este sería un conjunto de 20 elementos numéricos del tipo corto.

El primer elemento sería NUM(1), el 9no NUM(9) y el último NUM(30)

Esta secuencia puede ser recorrida de la siguiente manera:

I=1
Mientras I <= 30
NUM (I)
I:= I+1
FMientras
Una de las interesantes aplicaciones de las secuencias es que si la
secuencia tiene un determinado orden se puede optimizar la búsqueda de un
elemento en particular.

De allí que sea un tema de estudio los métodos para ordenar los
elementos de una secuencia y los métodos de búsqueda.

Una secuencia puede ordenarse al momento de su carga o una vez


cargada pasar a ordenar.

La secuencia ordenada permite optimizar la búsqueda. Supongamos que


tenemos un ARREGLO de números de legajo y quisiéramos encontrar un
legajo en particular, podríamos hacer:

LEG: arreglo(1000) de largo


I: corto
Buscado: largo

I=1
Leer(Buscado)
Mientras I <= 1000 ˄ LEG(I) <> Buscado
SI LEG(I) <> Buscado
I:= I+1
Fsi
FMientras
SI LEG(I) <> Buscado
Escribir(‘Legajo inexistente’)
Fsi

Esta solución implica que si el legajo no existe deberá hacer 1000


iteraciones. (Imagínese si fueran 10.000.000)

Pero si el arreglo esta ordenado se puede efectuar una búsqueda


llamada binaria. Este método implica comparar el legajo buscado con el
elemento del medio del arreglo. Si el buscado es mayor que ese elemento la
búsqueda continúa en el subconjunto desde el elemento 501 al último. Si es
menor en el subconjunto del elemento 1 al 499.

De esta manera en cada iteración se reduce el rango de búsqueda a la


mitad. Así con en el peor de los casos, si el legajo no existe, la cantidad de
iteraciones se reduce a 10!!!
Ejercitación Clase 4
Se dispone de una lista de personas con número de documento, apellido y
nombre y número de teléfono. Dicha lista se encuentra ordenada por el
número de documento. Cree un algoritmo que efectúe una búsqueda
binaria de un número dado.

Se dispone de una lista de personas con número de documento, apellido y


nombre y número de teléfono. Cree un algoritmo que ordene las personas
por número de documento.

En la asignatura Programación I de la extensión aúlica de Villa Ángela, los


alumnos rinden 2 parciales. Los alumnos que aprueban los dos parciales
regularizan la materia. Aquellos que sacan 8 o más en ambos parciales
además promocionan la materia. Los alumnos que no aprueban los
parciales tienen una segunda oportunidad para cada uno que se llaman
recuperatorios. Si aprueban el recuperatorio se considera aprobado el
parcial. Elabore un programa donde se pueda cargar los alumnos (apellido
y nombre con su número de DNI). Elabore otro programa que mediante el
número de documento, le asigne la nota de cada parcial. Por último elabore
un programa que liste los alumnos, con las notas obtenidas y si
corresponde el texto “regularizó” o “promocionó”. Este último deberá
además indicar cual es el mejor alumno.

En el torneo de básquet de la provincia, se lleva una estadística por jugador


donde se indican tres indicadores: Puntos, Faltas y Rebotes. Estos datos se
cargan para cada una de las 4 fechas. Elabore un programa donde se
pueda cargar los jugadores (apellido y nombre con su número de DNI y club
al que pertenece). Elabore otro programa que mediante el número de
documento, le asigne los indicadores de cada fecha. Por último elabore un
programa que liste los alumnos, con los indicadores acumulados y si
corresponde el texto “mejor anotador” o “mejor rebotero”.

En la Pizzería Don TITO, se lleva un registro de los clientes que efectúan


pedidos telefónicos. Cuando suena el teléfono se precisa saber si esta
registrado y a quien pertenece. Elabore un programa donde se pueda
cargar los Clientes (apellido y nombre con su número de TE y domicilio).
Elabore otro programa que mediante el número de Teléfono, muestre si
existe y en ese caso el nombre y dirección y permita sumarle el importe del
pedido a un campo de monto de pedidos realizados. Por último elabore un
programa que liste los clientes ordenados por el monto acumulado.

La Dirección de Estadísticas lleva un registro de población donde se cargan


por localidad la cantidad de hombres y mujeres y en cada caso el % de
Universitarios, Secundarios, Primarios o No Instruidos. Elabore un
programa donde se pueda cargar las Localidades con sus indicadores.
Elabore otro programa que mediante el número de Localidad se recuperen
los datos correspondientes y que puedan ser modificados. Por último
elabore un programa que liste las localidades ordenados por la cantidad de
NO Instruidos.

También podría gustarte