Você está na página 1de 41

Algoritmos y Estructura de Datos

Práctica
Año 2018
Algoritmo y Estructura de Datos
Correo para tener a mano:

juanestebancolcombet@gmail.com
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.

Real: Numérico(20,2) o N(20,2) ← un Real que posee


20 dígitos para la parte entera y 2 para la
decimal.
Todos los números con coma
(ej: 3,14, 12838,49586….) Numérico(70,80) o N(70,80) ← un Real que
posee 70 dígitos para la parte entera y 80 para la
decimal.
Tipos de Datos elementales
Carácter: Booleano (o Lógico):

todas las letras del abecedario, Verdadero o Falso.


numeros y simbolos, pero solo uno.
(ejemplo: “1”, “a”, “B”, “&”...)

También podemos definir a 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 (que hace a? para que sirve?)
- contpalabras: Entero
- Usar una forma de abreviar palabras lo suficientemente clara:
- contpalora: Entero
- contpalpar: Entero

IMPORTANTE: nunca dejar de definir una variable que se va a usar.


Variables
Consideraciones para los nombres de las variables:

- No pueden iniciar con números. (ej: 123var)


- No se distingue entre mayusculas y minusculas. (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 (lo vemos más adelante) (ej: leer,
escribir)
Constantes
Son iguales a las variables, pero 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,141
pi es el nombre de la constante.

= es la forma de definir que este espacio de memoria va a ser una “constante”.

3,141 valor real que permanece inalterable durante la ejecución del programa.
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)

Leer(Año)
Operadores
Aritméticos
- Suma La precedencia de los operadores son
- a := b + 5 igual que las matemáticas:
- Resta - Primero: ( )
- a := b - 5
- Multiplicación - Segundo: / * **
- a := b * 5 - Tercero: + -
- División
- 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 Es el módulo (o resto) de lo que queda


decimales: 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 divisible por 5? y por 37? o que no es par?


Lógicos

AoB 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
Relacional
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
Estructura de un
Algoritmo
Estructura de un Algoritmo en pseudocodigo.
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
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
a := 4 b := 4
b := 2 a := 2
c := a + b d := c mod a
d := c mod a c := a + b

Cual es el resultado de a, b, c, y d
Secuencia de Acciones
Cual es el resultado de las variables?

t := 23 c := 3 s := 2
v := 1 d := c + 5 q := 1
v := v + 1 c := 5 q := q + 1
c := 20 a := c + 5 a := 20
c := c - v w := 230 mod a h := q + 1
j := 2 a := a + r a := a - q
x := w + a f := h + s
x := v + 1
u := x + j
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
Según VARIABLE hacer NOTA: las condiciones deben ser con los
operadores relacionales. En caso de ser
CONDICION_1 : ACCION_1
por igual a (=) no se escribe nada.
CONDICION_2 : ACCION_2
Ej:
CONDICION_N : ACCION_N Según var hacer
1 : ACCION_1
OTRO : ACCION_OTRO 2 : ACCION_2
Fin Según 3 : ACCION_3
OTRO: ACCION_OTRO
Fin Según
Condicionales Anidados Vs Condicional Múltiple
Cuando usar Condicionales Anidados: Cuando usar Condicional múltiple

Se debe ocupar cuando se van a Se debe ocupar cuándo se va a realizar


realizar varias condiciones sobre varias varias condiciones sobre una misma
variables distintas. variable.
Condicionales Anidados Vs Condicional Múltiple
1) Como medida preventiva a las inundaciones en la ciudad, se debe realizar un
programa que diga si estamos ante una posible inundación o no. Para ello el
usuario ingresará la cantidad en mm de agua, 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 dado 3 números distintos que son ingresados por el
usuario, el sistema muestra por pantalla, cual es el menor, cuál es el del medio y
cual es el mayor número ingresado.
Ciclos
Pre-test
Es un tipo de ciclo donde la pregunta se realiza antes de comenzar 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 comenzar 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 cuando 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 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
a:= 0 a:= 4 Para i := 1 a 10 hacer
Repetir Mientras a < 10 hacer Escribir(i+2)
Escribir(a) Escribir(a) Escribir(i*2)
a := a + 2 a := a + 5 Fin Para
Escribir(a) Escribir(a) Escribir(i)
Hasta que a = 10 Fin Mientras
Escribir (a - 2) Escribir(a + 3) ---------------------
--------------------- a:= 4
--------------------- a:= 0 b:= a - 1
b:= 4 b:= a + 1 Mientras a < 13 hacer
Para i := 5 a 13 hacer Repetir Escribir(a + b)
b:= i + 2 Escribir(b) a := a + b
Escribir(b) a := b + 2 b := b - 1
Fin Para Escribir(a) Escribir(a)
Escribir(b+2) b := b - 1 Fin Mientras
Hasta que a = 10 Escribir(b)
Escribir (a - b)
Ejercicio
Realizar un algoritmo que diga si un alumno posee: aprobación directa, aprobación de cursada o recursa
la materia.
Para facilitar el algoritmo, solo tendremos en cuenta los parciales.
Para la aprobación directa el alumno debe tener promedio mínimo 6 entre los 3 parciales.
La nota del parcial (de 1 a 10) se calcula sumando la nota de teoría y la nota de práctica (cada una se
califica de 1 a 5 también). NOTA: para este caso vamos a redondear el promedio (4,5 = 5).
En caso de desaprobar uno de las dos, la suma no debe superar el 5. (ej: Teoría: 5 Práctica: 2, nota del
parcial 5).
Cada parcial posee un recuperatorio que será dado 15 días después del parcial.
Al finalizar el año, se tiene un 4to recuperatorio extraordinario, en el cual puede recuperar cualquiera de
los 3 parciales.
Si se recupera un parcial, la nota que vale es la mayor (entre el parcial y recuperatorio).
Para aprobación Directa solo se podrán rendir 2 de los recuperatorios.
El alumno que recursa la materia es aquel que no tiene 6 de promedio entre los 3 parciales (o
recuperatorio).

Você também pode gostar