Algoritmos y Estructuras de Datos
Práctica Sábados
Año 2023
Profesores
● Axel Robles
● Valentina Sosa
● María José Ojeda
● Celina González
● Florencia Galarza
● Renzo Urturi
● Santiago Scacciaferro Wyss
Evaluación
• 3 Parciales (TP antes de cada parcial)
• 2 Laboratorios de Lenguaje (Pascal y C)
• 20 Cuestionarios en Campus
APROBACIÓN DIRECTA
Se aprueba la asignatura sin examen final
APROBACIÓN DE CURSADA
Para aprobar la materia se debe rendir examen final
LIBRE
Se debe recursar la asignatura
APROBACIÓN DIRECTA
1. Aprobar los 3 parciales con 6 o más
2. Aprobar el Laboratorio de Pascal
3. Aprobar el Laboratorio de C
4. Promediar 6 o más en los cuestionarios del aula
5. Asistencia mínima de 75%
Se podrá hacer uso de un recuperatorio para parciales.
APROBACIÓN DE CURSADA
1. Mismas condiciones que Aprobación Directa
2. Se pueden recuperar ambos laboratorios
3. Se pueden recuperar los 3 parciales
Qué les pedimos
• Revisar y actualizar mail en SysAcad y en Campus.
• Repasar antes de la clase.
• Comienzo de clases a horario.
• PRACTICAR, PRACTICAR y… PRACTICAR!
Link útil
biolink.website/AEDSABADOS
Comenzando con
Pseudocódigo
Tipos de Datos
Elementales
Tipos de Datos elementales
Entero: También podemos usar este tipo de datos, diciendo
la cantidad de dígitos que va a poseer:
Todos los números sin coma Ejemplo:
(ej: 4, 434, 565546….)
Numérico(5) o N(5) ← es un entero con 5 dígitos.
Numérico(20,2) o N(20,2) ← un Real que posee 20
dígitos para la parte entera y 2 para la decimal.
Real:
Numérico(70,80) o N(70,80) ← un Real que posee
Todos los números con coma 70 dígitos para la parte entera y 80 para la decimal.
(ej: 3,14, 12838,49586….)
Tipos de Datos elementales
Carácter: Booleano (o Lógico):
Todas las letras del abecedario, números Verdadero o Falso.
y símbolos, pero solo uno.
(ejemplo: “1”, “a”, “B”, “&”...)
También podemos definir un conjunto de caracteres, especificando la longitud.
Alfanumérico(20) o AN(20) ← Son 20 caracteres.
Variables y
Constantes
Variables
Una variable es una porción de memoria que posee un identificador único y es de un solo
tipo de dato. La variable posee una cantidad de información llamada: Valor (lo veremos
más adelante).
Definición:
a : Entero
a es el nombre de la variable.
: sirve para definir las variables.
Entero es el tipo de datos asociada a la variable.
Variables
Consideraciones para los nombres de las variables:
• Las variables deben tener un nombre representativo para poder entender fácilmente
cuál es su razón de existir:
• a: Entero (Qué hace a? Para qué sirve?)
• contpalabras: Entero
• Usar una forma de abreviar palabras lo suficientemente clara:
• contpalpar: Entero
• contpalimpar: Entero
IMPORTANTE: Siempre se deben definir las variables que se van a ocupar.
Variables
Consideraciones para los nombres de las variables:
• No pueden iniciar con números. (Ej: 123var).
• No se distingue entre mayúsculas y minúsculas. (ej: var y VAR).
• No tener espacios. (Ej: esto es un nombre incorrecto: Entero).
• No tener “símbolos raros” (símbolos permitidos: “-” o “_”).
• No tiene que ser una palabra reservada (Ej: leer, escribir).
Constantes
Su contenido no se modifica dentro de la ejecución del programa (o sea su VALOR es
siempre el mismo).
Poseen las mismas consideraciones con respecto al nombre que las variables.
Se definen:
pi = 3,14
pi es el nombre de la constante.
= es la forma de definir que este espacio de memoria va a ser una constante.
3,14 valor real que permanece inalterable durante la ejecución del programa.
Ejemplo de uso de Variables I
Función a(b, c, d, e: entero): booleano
f := g(b, c, d)
si f >= 6 entonces
si ((e / h * 100) >= 75) entonces
a := Verdadero
sino
a := Falso
fin si
sino
a := Falso
fin si
fin función
Ejemplo de uso de Variables II
Funcion aprueba(notaPar1, notaPar2, notaPar3, asistencias: entero): booleano
notaPromedio := promediar(notaPar1, notaPar2, notaPar3)
si notaPromedio >= 6 entonces
si ((asistencias / DIAS_DE_CLASES * 100) >= 75) entonces
aprueba := Verdadero
sino
aprueba := Falso
fin si
sino
aprueba := Falso
fin si
fin función
Acciones Simples
Asignación
La asignación es la acción por el cual se le da un valor a una variable.
a := 5
Esto significa que a la variable a le estamos asignando el valor 5.
El símbolo utilizado es el :=
Entrada de datos
Para la entrada de datos ocupamos la palabra reservada:
Leer( [variable] )
Esto asigna un valor ingresado por teclado a la variable que se nombró entre paréntesis.
Ejemplo:
Leer(a)
Leer(una_variable)
Salida de datos
Para la salida de datos ocupamos la palabra reservada:
Escribir( [un texto] )
Esto muestra al usuario por pantalla el texto que se encuentra entre paréntesis.
También podemos escribir por pantalla algunas variables:
Escribir(“lo siguiente es una variable: ”, var_1)
Escribir(“lo siguiente es un resultado: ”, var_1 + var_2)
Usos de Leer() y Escribir()
IMPORTANTE: Siempre antes de ocupar un Leer() debemos ocupar un Escribir() con
un mensaje detallando que queremos que el usuario ingrese por pantalla.
Ejemplo:
Escribir(“Ingrese la fecha de forma de Dia, Mes y Año:”)
Leer(Dia)
Leer(Mes)
O también Leer(Dia, Mes, Año)
Leer(Año)
Operadores
Aritméticos
• Suma
a := b + 5
• Resta La precedencia de los operadores son igual
a := b - 5 que en matemáticas:
• Multiplicación • Primero: ( )
a := b * 5 • Segundo: / * **
• División • Tercero: + -
a := b / 5
• Potencia
a := b ** 5
Aritméticos
División Entera: Módulo de división entera:
El resultado es la división sin decimales: Es el módulo (o resto) de lo que queda de
la división entera:
13 div 4
13 mod 4
13 4
1 3
Conociendo esto podemos indicar si un número es o no divisible por otro número.
Cómo sabemos si un número es par? O que es divisible por 5?
Lógicos
Ao B Ay B No(a)
A B Resultado A B Resultado a Resultado
f f f f f f f v
f v v f v f v f
v f v v f f
v v v v v v
Relacionales
Igualdad: A = B
Menor a: A < B o Menor o igual a: A <= B
Mayor a: A > B o Mayor o igual a: A >= B
Distinto a: A <> B CUIDADO: NO EXISTE el operador: A ≠ B
Estructura de un
Algoritmo
Estructura de un Algoritmo en pseudocódigo
Accion Un_ejemplo es
Ambiente
var_1:entero
const=435
...
Subaccion nombre_subaccion(parámetros):
//Cuerpo de la subaccion
fin subaccion
Algoritmo
//donde ocurre la magia...
fin accion
Sangrías
(Indentación)
Sangría (Indentación)
Es importante destacar que no es necesario para el lenguaje ocupar el indentado, pero hace
quedar al código mucho más entendible.
Ej:
Para i := 1 a 10 hacer Para i := 1 a 10 hacer
Si i mod 2 = 0 entonces Si i mod 2 = 0 entonces
Escribir(i) Escribir(i)
Fin si Fin si
Fin Para Fin Para
Secuencia de
acciones
Secuencia de Acciones
El código se ejecuta secuencialmente en un algoritmo.
De esta forma no es lo mismo:
c := 8 c := 8
b := 4 b := 4
a := 3 a := 3
c := a + b d := c mod a
d := c mod a c := a + b
¿Cuál es el resultado de c, y d en cada caso?
Secuencia de Acciones
Cuál es el resultado de las variables?
t := 23 c := 3 s := 2
v := 1 d := c + 5 q := 1
c := 20 c := 5 q := q + 1
v := v + 1 a := c + 5 a := 20
c := c - v w := 230 mod a h := q + 1
j := 2 a := a + r a := a - q
x := v + 1 x := w + a f := h + s
u := x + j
Ejercicios 1
Ejercicios 1
Ahora a ver la guia los primeros ejercicios:
http://aed-frre.github.io/practica/1.1/#datos-elementales
https://aed-frre.github.io/practica/1.1/#estructuras-secuenciales
Condicionales
Condicional simple
Si CONDICIÓN entonces
//acciones si se cumple la condición…
Fin Si
Condicional Alternativo
Si CONDICIÓN entonces
//acciones por si se cumple la condición…
sino
//acciones por si no se cumple la condición…
Fin Si
Condicional Múltiple
NOTA: las condiciones deben ser con los
Según VARIABLE hacer
operadores relacionales. En caso de ser por
VALOR_1: ACCION_1 igual a (=) no se escribe nada.
Ej:
VALOR_2 : ACCION_2
Según var hacer
VALOR_N : ACCION_N 1 : ACCION_1
OTRO : ACCION_OTRO 2 : ACCION_2
3 : ACCION_3
Fin Según OTRO: ACCION_OTRO
Fin Según
Condicionales Anidados Vs Condicional Múltiple
Cuándo usar Condicionales Anidados: Cuándo usar Condicional Múltiple:
Se debe ocupar cuando se van a analizar Se debe ocupar cuando se va a analizar
varias condiciones sobre varias variables varias condiciones sobre una misma
distintas. variable.
Condicionales Anidados vs Condicional Múltiple
1) Como medida preventiva a las inundaciones en la ciudad, se debe realizar un
algoritmo que diga si estamos ante una posible inundación o no. Para ello el usuario
ingresará la cantidad de agua en mm, con este dato el sistema debería indicar: si es
menor a 70 muestra por pantalla que no hay peligro, si es mayor o igual a 70 pero
menor o igual a 100 es la condición poco peligro, en caso de ser mayor a 100 pero
menor o igual a 150 es condición muy peligrosa, superando los 150 es inundación
inminente.
2) Realizar un algoritmo que, dados 3 números distintos que son ingresados por el
usuario, el sistema muestre por pantalla cuál es el menor, cuál es el del medio y cuál
es el mayor.
Ciclos
Pre-test
Es un tipo de ciclo donde la pregunta se realiza antes de la iteración.
Mientras CONDICIÓN(variable) hacer
//código a iterar...
//evento que realiza (o no) el cambio de la variable...
Fin Mientras
a:= 0
Mientras a < 10 hacer
Escribir(a)
a := a + 1
Fin Mientras
Post-test
Es un tipo de ciclo donde la pregunta se realiza después de la iteración.
Repetir
//evento que realiza (o no) el cambio de la variable...
//código a iterar...
Hasta que CONDICIÓN(variable)
a:= 0
Repetir
a := a + 1
Escribir(a)
Hasta que a = 10
Forzar Pretest o Postest
Cada uno de los ciclos antes citados posee una estructura similar pero diferente, y no
debemos confundir cuándo usar cada una. Ejemplo:
op := “S” Repetir
Mientras op = “S” hacer
// alguna magia extraña...
// alguna magia extraña...
Escribir(“Quiere continuar S/N”)
Escribir(“Quiere continuar S/N”) Leer(op)
Leer(op)
Hasta que op = “N”
Fin Mientras
Manejado por contador
Ciclo en el que se conoce de antemano la cantidad de veces que se va a iterar. Se puede
definir el paso, que es el valor con el cual se modifica el contador (si es 1 no se escribe).
Para i := 1 hasta 10 (, paso) hacer
Escribir(i)
Fin Para
Para i := 10 hasta 1, -1 hacer
Escribir(i)
Fin Para
Manejado por contador
IMPORTANTE 1: No se puede modificar el valor del contador dentro del ciclo.
Para i := 1 a 10 hacer
i := 1 + i
Fin Para
IMPORTANTE 2: El ciclo se repite desde el valor inicial al último.
Para i := 1 a 10 hacer
Escribir(i)
Fin Para
El resultado será: 1 2 3 4 5 6 7 8 9 10
Ejercicio 2
Ejercicios 2
Ahora a ver la guía los segundos ejercicios:
https://aed-
frre.github.io/practica/1.1/#estructuras-condicionales-y-re
petitivas