1-1 - Introduccion - Algoritmos y Estructuras de Datos PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

1

Algoritmos y Estructuras de Datos


1° Año
Ingeniería en Sistemas de Información

* Introducción

Prof. CLAUDIA DANIA


Magister en Docencia Universitaria
Analista Universitario de Sistemas
Licenciada en Sistemas de Información

Prof. Claudia Dania - Introducción


2

PROGRAMACION ESTRUCTURADA

Todo programa computarizado puede ser escrito con un alto grado de estructuración,
permitiendo hacer mas sencillas tareas como prueba, mantenimiento y modificación de ellos.
Mediante la programación estructurada es posible leer la codificación de cualquier programa
de inicio a fin en forma continua, siguiendo la lógica definida por el programador.
Este paradigma, es un modelo de alta precisión permitiendo trabajar en equipo, acoplando
módulos a la idea original, logrando programas fáciles de ser leídos, mantenidos y
modificados por otros programadores.
Dicha programación se desarrolla utilizando tres estructuras lógicas de control:
a. Secuencia: Sucesión de instrucciones.
b. Selección o Decisión: bifurcación condicional.
c. Repetición: ejecuciones repetidas con diferentes datos.

Tales estructuras de control, combinadas entre ellas, controlan los datos de forma tal de
generar información.

Todo programa estructurado está compuesto de módulos o procedimientos, logrados por


refinamientos sucesivos, permitiendo ser leído en secuencia, desde el comienzo hasta el final
sin perder el concepto del programa ni del módulo.

Un programa estructurado, además de tener una excelente presentación, es mucho más fácil
de actualizar ante nuevos requerimientos.

La principal condición que induce a una


diagramación correcta y a no cometer errores:

está en la

lógica.

Motivo por el cual esta materia: Algoritmos y Estructuras de Datos, desarrollará durante el año
académico diferentes algoritmos que permitirán perfeccionar la lógica, para luego ser
programados mediante software de base que reconozcan dicho paradigma.

Prof. Claudia Dania - Introducción


3

MAPA CONCEPTUAL
DE LA MATERIA

Prof. Claudia Dania - Introducción


4

NO HAY PROGRAMA
SIN ALGORITMO
Algoritmo Programa

En el andar cotidiano La descripción de un proceso


nos encontramos, a menudo, deberá ser expresada
con la necesidad de llevar en un código apto
a cabo alguna actividad, para ser interpretado
que requiera la ejecución por el que se encargue
de cierto procedimiento. de implementarlo.

Seguramente éste involucrará Así, un mismo esquema


a un conjunto de acciones de comportamiento puede ser
específicas, organizadas comunicado mediante
según un esquema lógico, distintos códigos
que responde a una forma según quién sea el ejecutante
de solucionar la situación
problemática planteada.

Tiene que haber alguien que lo redacte Tiene que haber alguien que lo ejecute

Es la actividad cognitiva, la herramienta más Cuando ésta es el ejecutante, es uno de sus


poderosa del intelecto humano para la componentes, el procesador, quien recibe estímulos a
comprensión de fenómenos y procesos de través de señales eléctricas y produce respuestas
menor o mayor complejidad. (hace algo) de la misma manera, estos estímulos son
Cuando se trata de la concepción de órdenes.
soluciones informáticas, se deberá hacer
Desde el punto de vista de la comunicación humana es
abstracción, a un cierto nivel, para
sumamente difícil expresar el sistema de emisión y
reconocer, entre un conjunto de
recepción de señales; por ello se han creado lenguajes
acontecimientos o de informaciones las
simbólicos muy parecidos al de los humanos, que
grandes líneas comunes.
hacen posible la interacción y comunicación con la
Entonces, usando sólo un conjunto de
computadora.
acciones elementales, se las encadenará en
el tiempo para obtener el resultado deseado. Un lenguaje de programación es un sistema de signos
Así, para elegir acertadamente cada acción y códigos que representan a un conjunto finito de
es esencial conocer el acontecimiento que instrucciones que, a diferencia de cualquier lenguaje
cada una de ellas es capaz de llevar a cabo. natural, no permite significados ambiguos y tiene una
Luego, apoyados en ciertas técnicas y estructura gramatical clara y rígida.
valiéndose de una notación específica se Cada una de esas instrucciones no es más que el
concluirá en el algoritmo. nombre de una acción.

Algoritmo
Término muy antiguo entre los matemáticos. Proviene del sabio árabe al-Khwarizmi
que vivió en el siglo IX y contribuyó, desde España, a la civilización de Europa.
En su sentido más antiguo y original se refiere al método y notación
en las distintas formas de cálculo.

Prof. Claudia Dania - Introducción


5

INTRODUCCION
Programación: planificación y ejecución de una tarea mediante una secuencia de instrucciones, que
indican las acciones a ejecutarse. Para desarrollar dicha secuencia, se deben realizar dos fases:

Análisis: Comprender el problema.


Fase Algoritmo: Procedimiento paso a paso, para resolver un problema, en
de una cantidad finita de tiempo ó pasos, generalmente se
resolución visualiza mediante una representación gráfica.
del Problema Prueba: Seguir los pasos para ver si la solución resuelve el problema,
llamada prueba de escritorio.
Programa: Traducir el algoritmo a un lenguaje de programación.
Fase Prueba: Ejecutarlo: Hacer que el ordenador siga las instrucciones y
de comprobar los resultados.
implementación Uso: Utilización del programa (software) para casos concretos.

ALGORITMO: Es una manera formal y sistemática de representar la descripción de un proceso,


mediante una secuencia lógica de pasos discretos. Se utilizarán los diagramas de Chapín como
modelo de representación algorítmica, dado que este esquema es el que mejor representa a la
programación estructurada.

SEUDOCODIGO: mezcla de lenguaje de programación y léxico habitual en el que estamos trabajando,


sin conocer lenguajes específicos.

LENGUAJE DE PROGRAMACION: un conjunto de reglas, símbolos y palabras especiales utilizadas


para construir un programa, traducido al lenguaje de máquina mediante un compilador o intérprete.

Primera etapa: comprender y analizar un problema, desarrollar la solución correcta en forma


algorítmica y luego implementarla en un lenguaje de programación adecuado teniendo en cuenta:
SINTAXIS: reglas formales para la construcción de secuencias en un lenguaje específico.
SEMANTICA: conjunto de reglas que da el significado de una construcción del lenguaje.

Segunda etapa: implementación de un programa, se realiza en un dispositivo electrónico programable,


que puede almacenar, recuperar y procesar datos, dado que consta de componentes básicos: unidad
de memoria, unidad aritmético-lógica, unidad de control y dispositivos de entrada - salida.

Almacenamiento interno de datos (datos de entrada, cálculos e instrucciones


UNIDAD de programas). La memoria es una secuencia ordenada de celdas, cada una
DE contiene un fragmento de información, cada celda ó posición de memoria
MEMORIA tiene una dirección para poder almacenar y/o recuperar la información allí
alojada, la cual está codificada en forma binaria (1 -0). Esta codificación
puede representar un número, un carácter ó una instrucción, pero no es una
función de la memoria reconocerlo, sino sólo guardarlo.
UNIDAD Ejecuta operaciones aritméticas (suma, resta, multiplicación y división) y
ARITMETICO operaciones lógicas (comparaciones de dos valores).
LOGICA
UNIDAD Controla acciones de las otras componentes para ejecutar las instrucciones
DE CONTROL en secuencia. Estas dos últimas unidades forman la CPU (unidad central de
procesamiento): la cual interpreta y ejecuta las instrucciones.
DISPOSITIVO DE Es el medio para lograr la comunicación hombre-máquina.
ENTRADA SALIDA

CPU
Dispositivo • Unidad aritmético-lógica Dispositivo
de entrada • Unidad de control de salida
Unidad de memoria

Prof. Claudia Dania - Introducción


6

CONJUNTO DE CARACTERES
Caracteres Pascal Pascal y Python Python
Letras ‘A’ .. ‘Z’ ‘a’ .. ‘z’
Dígitos 0..9
Símbolos especiales . ; : , ( ) [] {}
Operadores matemáticos DIV MOD + - * / ** //
Operadores relacionales <> = > >= < <= == != +=
Operadores lógicos .OR. .AND. .NOT. OR AND NOT
Asignación: (en chapín ) := =
Puntero: (en chapín ) 


PRECEDENCIA DE OPERADORES
1er. nivel (superior) .NOT.
2do. nivel * / DIV MOD .AND.
3er. nivel + - .OR.
4to. nivel (inferior) = > >= < <= <> IN
Dentro de un mismo nivel las operaciones se realizan como aparecen de izquierda a derecha.

PALABRAS RESERVADAS
PASCAL PASCAL Y PYTHON PYTHON
ARRAY AND AS
BEGIN ELSE BREAK
CASE FALSE CLASS
CONST FOR CONTINUE
DIV IF DEF
DO IN DEL
DOWNTO NOT ELIF
END OR EXCEPT
FILE TRUE FLOAT
FUNCTION WHILE FROM
GOTO WITH GLOBAL
MOD IMPORT
OF IS
PROCEDURE NONLOCAL
PROGRAM PASS
REPEAT UNTIL RANGE
THEN RETURN
TYPE TRY
TO YIELD
VAR

CONSTANTES ó IDENTIFICADORES ESTANDAR


MAXINT (Pascal): especifica el mayor valor que puede ser asumido por una cantidad de tipo entero.
Import sys
sys.maxint (Python)

FALSE y TRUE: son los dos valores posibles que puede asumir un dato tipo booleano (tener en cuenta
que ambos represetan un conjunto ordenado donde falso precede a verdadero).

Prof. Claudia Dania - Introducción


7

FUNCIONES ESTANDAR o INTERNAS


(Pascal y Python: puede cambiar la forma de escritura)

Dato Resultado

abs(x): valor absoluto de x entero o real entero o real


arctan(x): arcotangente de x entero o real real
chr(x): carácter presentado por x entero o real char
cos(x): coseno de x entero o real real
exp(x): logaritmo neperiano entero o real real
In(x): logaritmo de x (> 0) entero o real real
odd(x): determina si x es par o impar entero bool (true : impar)
ord(x): entero q' codifica el carácter x char entero
pred(x): predecesor d e x entero, char o bool entero, char o bool
round(x): redondea al próximo entero real entero
sin(x): seno de x entero o real real
sqr(x): cuadrado de x entero o real entero o real
sqrt(x): raiz cuadrada de x entero o real real
succ(x): sucesor de x entero, char o bool entero, char o bool
trunc(x): suprime parte decimal de x real entero

Pascal
X mod Y: entrega el resto de dividir x e y entero entero
X div Y: divide enteros con resultado entero entero entero

Python
divmod (X,Y): entrega el resto de dividir x e y entero entero

Prof. Claudia Dania - Introducción


8

DATOS

Los datos son objetos que al ser manipulados por diferentes sentencias o instrucciones de un
programa, se convierten en información que ofrece dicho programa.

ESTRUCTURA DE DATOS: Cada dato tiene un formato, según sea su característica, se establecerán
las operaciones de acceso que se usan para almacenar, recuperar y operar cada elemento individual.

DATOS CONSTANTES DATOS VARIABLES


CONST nombre = valor; VAR nombre: tipo;

Identificador al cual se le asigna un dato Identificador que permite


permanente cambiar su valor
durante la ejecución del programa durante la ejecución del programa

IDENTIFICADORES: Tipos de Datos


El tipo de dato es una descripción formal del conjunto de valores posibles
que una variable o constante puede presentar y que operaciones que se le puede aplicar.

SIMPLES ESTRUCTURADOS PUNTERO

Se asocian a Identificadores únicos uno a uno Múltiples elementos Son tipos


relacionados entre sí, dinámicos
Pascal cada grupo se asocia a un de datos
STANDARD identificador estructurados,
o REALES (real) se identificacn
o ENTEROS (integer) Pascal con 
o CARACTERES (char)
o CADENAS (string) ➢ ARREGLOS (array)
o LOGICOS (bool)
➢ REGISTROS (record)
DEFINIDOS por el USUARIO
o ENUMERADOS ➢ ARCHIVOS (file to)
o SUBRANGO
Python
Python
STANDARD ➢ LISTAS (lists)
o REALES (float)
o ENTEROS (int) ➢ TUPLAS (tuples)
o CARACTERES (str)
o CADENAS (str) ➢ CONJUNTOS (sets)
o LOGICOS (bool)
➢ DICCIONARIOS
(dictionaries)

➢ ARCHIVOS

Prof. Claudia Dania - Introducción


9

IDENTIFICADORES
Un identificador es el nombre dado a un elemento del programa, tal como una constante, una variable,
procedimiento, función, tipo de dato o programa.
Pueden tener la combinación de letras en minúsculas (de a a la z) o MAYÚSCULAS (de la A a la Z) o
dígitos (del 0 al 9) o un underscore en Python (_).
El primer carácter no puede ser un número. Reconociéndose solamente los primeros 8 caracteres si el
nombre superase dicha cantidad (los nuevos sistemas operativos no tienen esta restricción).
Las palabras reservadas (página 5) no se las puede utilizar como identificadores.

Ejemplo: Arbol, ARBOL, arbol


• en Pascal es la misma variable no importa como se la escriba
• en Python son 3 variables distintas

Constantes: CONST nombre = valor;


Un identificador se dice constante cuando se le asigna un dato permanente, permanezca inalterable a
lo largo del programa. Debe ser definida antes de que aparezca en alguna sentencia de Pascal (en
Python no se declaran).
Se la define como:
Ej.: CONST personas = 125;
dias = 7;

Variables: VAR nombre = (TYPE);


Es un identificador cuyo valor cambia durante la ejecución del programa; debe ser declarada antes de
ser utilizada en el programa, especificando su tipo en Pascal (en Python no se declaran).
Se declara:

Ej.: VAR suma: real;


bandera: integer;
resp: char;

en Python para saber cual es el type de un identificador se escribe


>>> type (suma) >>> type (bandera)
<class ‘float’> <class ‘int’>

IDENTIFICADORES ESTANDARD
abs arctan boolean char Cos
dispose eof eoln exp false
get input integer ln maxint
new odd ord output pack
page pred put read readln
real reset rewrite round sin
sqr sqrt succ text true
trunc unpack write writeln

EXPRESIONES
Una expresión es una colección de operandos (números, constantes, variables) enlazados por
operadores. Existen expresiones numéricas: que representan un valor numérico como ser:

(b * 4 - 0) / (2 * r)

y expresiones lógicas: que representan una condición verdadera o falsa, ejemplo:

costo < 25

Prof. Claudia Dania - Introducción


10

en Pascal siempre las comparaciones son de a pares: (a<b) and (b=c)


en Python se puede escribir de a pares o unidas
(a<b) and (b==c) ó a < b == c

SENTENCIAS
Sentencia es una instrucción que tiene un modo unívoco de expresión. Un grupo de instrucciones
ordenadas en forma secuencial conforman un programa.
Existen dos tipos de sentencias: simples y estructuradas.
Las primeras son instrucciones únicas e incondicionales:
• Asignar un dato a una variable (asignación)
• Acceder a un módulo (llamar a un procedimiento)
• Transferir el control del programa incondicionalmente a otra parte del programa (GOTO, no
será dado en la cátedra).

SENTENCIA DE ASIGNACION
(sentencia de asignación interna)

Es una sentencia de tipo simple para asignar un dato ó una expresión a una variable, donde el
identificador de la izquierda del signo de asignación (que nunca puede ser un número ni una expresión)
:= recibe el valor de una expresión, variable, constante ó número a la derecha del mismo,

Pascal Python
variable:= dato; variable = dato
calculo := 3 * 14 / sqr(x); resul = succ(valor)
r:= 5;

SENTENCIA DE ENTRADA
(sentencias de asignación externa)

Sentencia READ
Se usa para leer datos del archivo de entrada (ejemplo teclado) y asignarlos a variables de tipo
standard y/o estructuradas.
Las variables se separan por comas. Los datos que se leen son asignados a ellas en el mismo orden
en que ingresan. Solo en Pascal: Cada variable debe ser del mismo tipo del dato que se asignó (un
número real debe ser almacenado en una variable de tipo real; a excepción de un número entero que
puede ser almacenado en una variable real).
Las de tipo booleanas no pueden incluirse en la lista de variables de entrada.

Se define como:

Pascal Python
READ (variable1, variable2,....,variablen); Input (" mensaje ")

READ ( a , b , c[1] ); a = int(input("Introduce un número entero: ")

Sentencia READLN (solo en Pascal)


Al igual que la sentencia READ, se utiliza para leer datos del archivo de entrada y asignarlos a
variables de distintos tipos. La diferencia es que ésta hace que la siguiente sentencia READ o READLN
comience leyendo datos de una nueva línea.

READLN (variable1, variable2,.....,variableN);

Ej.: READLN ( a , b , c[1] )

Prof. Claudia Dania - Introducción


11

SENTENCIA DE SALIDA
Sentencia WRITE / PRINT
Se usa para exhibir datos en el archivo de salida (ejemplo pantalla).

Pascal Python
WRITE (dato1, dato2,......,datoN); print (dato)

WRITE (‘CX=', X); Print (i)


WRITE ('Buenos días, son las', r , 'Hs'); Print (‘los archivos están en’, out-dir)
WRITE (a, b); Print (‘ ¡muy bien! ’)

Los datos pueden ser cadenas, constantes numéricas, variables o expresiones; de tipo real, entero,
char o booleano. Los datos se separan por comas y las cadenas de caracteres deben ir entre
apóstrofos.

Sentencia WRITELN (solo en Pascal)


Es idéntica a la sentencia WRITE, salvo que luego de exhibir la información que contiene, se identifica
que es el fin de línea y la próxima sentencia WRITE o WRITELN comenzará en nueva línea. La
sentencia WRITELN vacía puede usarse para generar una línea en blanco

WRITELN (datos de salida); ó WRITELN ( );

Modelo de representación algorítmica


Mediante la utilización del diagrama de chapín, siguiendo una estructura secuencial, resolveremos la
metodología del cálculo de descuentos.

ALGORITMO (sin ningún lenguaje)

exhibir (‘Ingrese el valor actual de la prenda’) muestra un mensaje


leer (actual) ingresa un dato en una variable
exhibir (‘ngrese el porcentaje de descuento’) muestra un mensaje
leer (porcen) ingresa un dato en una variable
dscto  actual * porcen / 100 calcula el porcentaje
valor  actual - dscto resta el descuento del valor actua
exhibir (‘se descuentan: ’,dscto,’ pesos’) muestra un mensaje con la variable descuento
exhibir (‘la prenda vale ’,valor,’ pesos’) muestra un mensaje con la variable valor

PROCESO Y RESULTADOS

Resultados en pantalla Ingrese el valor actual de la prenda


62
ingrese el porcentaje de descuento
10

cálculos internos dscto = 62 * 10 / 100


valor = 62 - 6,2

Resultados en pantalla se descuentan: 6,2 pesos


la prenda vale 55,8 pesos

Prof. Claudia Dania - Introducción

También podría gustarte