Está en la página 1de 45

Facultad Politcnica

Departamento de Informtica

Algoritmo
Ao: 2015
Prof. Victor E. Hermosilla M.
(vhermosilla@pol.una.py)

CLASE #1 / CLASE #2
27-julio-2015
27-julio-2015

Informacin sobre la ctedra


Asistencia: opcional pero recomendable
Derecho a examen final:

Entregar al menos 70% de las tareas entregadas

Obtener el puntaje requerido en los exmenes parciales

Promedio ponderado (puntaje final = EF*0,6 + PP*0,4)

70% Evaluaciones parciales

30% Tareas (como trabajo prctico)

Entrega de tareas:

En forma individual

Se har va EDUCA (educa.pol.una.py). Para ello cada alumno debe


registrarse.

En Educa podr obtener algunos ejemplo de exmenes


anteriores
Algoritmo Dpto. Informtica

Informacin sobre la ctedra


Exmenes:

Se podrn utilizar todos los materiales

Se har todo lo posible para que los exmenes se hagan en


mquina dependiendo de la cantidad de personas y disponibilidad
en sala de mquinas.

Recomendaciones para el curso:

Buscar un grupo de estudio

Practicar, practicar y practicar.. el xito que pueda tener en esta


materia es directamente proporcional al tiempo y esfuerzo que
dedica para realizar los ejercicios.

Herramientas

Utilizaremos SL como medio para representar algoritmos. Puede


encontrar el manual y el entorno en: http://www.cnc.una.py/sl

Para las prcticas de lenguaje C utilizaremos un entorno de


distribucin gratuita Dev-C++
http://www.bloodshed.net/devcpp.html

Algoritmo Dpto. Informtica

Contenido de la materia
Introduccin: conceptos bsicos sobre problemas,
algoritmos, programas, anlisis de problemas,
representacin de algoritmos
Tipo de datos simples, operaciones primitivas y
expresiones.
Estructura de un programa Estructuras de control.
Cadenas
Subprogramas
Tipo de datos estructurados y definidos por el usuario
Archivos
Breve introduccin a la programacin utilizando
lenguaje C

Algoritmo Dpto. Informtica

Qu veremos hoy y la prxima clase?


Introduccin conceptual

Problemas, algoritmos y programas

Anlisis de problemas

Caractersticas y representacin de algoritmos


Conceptos bsicos

Variables, constantes, expresiones, asignacin, tipo de dato,


entrada/salida de datos.

Algoritmos lineales

Algoritmo Dpto. Informtica

Problema:

Es una tarea a ser realizada. La definicin de un problema no


incluye las restricciones o la forma de resolverlo. Un mtodo de
solucin debe ser desarrollado solo despus de que el problema
sea suficientemente definido y comprendido.

En algunas ocasiones la definicin del problema puede incluir


ciertas restricciones. Por ejemplo la cantidad de recursos que
deben ser utilizados para una solucin aceptable.

Desde el punto de vista matemtico:

Un problema es una funcin que mapea ciertos valores de


entrada (llamado dominio) a ciertos valores de salida
(llamado rango)

dominio

Algoritmo Dpto. Informtica

rango

Algoritmo:

Palabra viene del nombre de un matemtico y astrnomo rabe


Abu Ja'far Mohammed ibn Musa al-Khowarizmi (825) (Padre
de Ja'far, Mohammed, hijo de Moiss, natural de Khowarizm).
Escribi el clebre libro Kitab al jabr w'al-muqabala(Reglas de
restauracin y reduccin -- > algebra)

Concepto: Es una posible solucin a un problema. Es un mtodo o


proceso sistemtico para resolver el problema (siempre que cumpla
ciertas condiciones).
Otra definicin(RAE): conjunto ordenado y finito de operaciones que
permite hallar la solucin de un problema

Propiedades de un algoritmo

Es correcto: logra resultados correctos.

Tiene pasos concretos, donde cada paso es realizado en una cantidad finita
de tiempo. Esta bien definido.

No es ambiguo. Siempre se obtiene los mismos resultados con los mismos


datos de entrada.

Compuesta por una cantidad finita de pasos.

Debe terminar: no debe quedar funcionando indefinidamente

Algoritmo Dpto. Informtica

Ejemplo de problema y algoritmo

Problema:
Dado dos nmeros enteros positivos que representan la base y la
altura de un tringulo, encontrar la superficie del mismo.

Algoritmo (pasos bien definidos)


a) inicio del algoritmo
b) obtener la base y altura
c) calcular la superficie: s = ( base * altura) / 2
d) mostrar superfice
e) fin del algoritmo

Algoritmo Dpto. Informtica

Datos de
Entrada
base y altura

Procesamiento
Algoritmo

superficie =

Algoritmo Dpto. Informtica

Datos de
Salida
superficie

base .altura
2

Observaciones sobre un algoritmo

Tiene siempre datos de entrada ( ejemplo:.. base y altura )

Siempre se especifica la cantidad de datos de entrada...

Se especifica exactamente el tipo de datos de entrada (ejemplo:


entero positivo..).

Tiene siempre un resultado que es producto del algoritmo aplicado


de acuerdo a los datos de entrada (ejemplo: superficie )

Ejercicio:
Disee como solucionara el siguiente
problema. Escrbalo paso a paso.
Encuentre el rea sombreada que
representa un anillo.
Que datos son necesarios?
Algoritmo Dpto. Informtica

10

Representacin de un algoritmo

Diagramas : de flujo o Nassi-Shneiderman(N-S)

Semi-hablado: pseudocdigo

Diagrama de Flujo
Inicio
base, altura

Pseudocdigo
Inicio
leer base, altura
sup <- (base*altura)/2
escribir sup
Fin

sup <- (base*altura)/2

sup

Fin

Algoritmo Dpto. Informtica

SL
var
base, altura,sup : numerico
inicio
leer(base,altura)
sup = (base*altura)/2
imprimir(sup)
fin
11

Solucin de un problema algortmico

Anlisis

Codificacin en
algn L.P.

L.P.=>
Lenguaje de
Programacin

Traduccin
Diseo de
sol
solucin

Verificacin
manual de
la solucin
Resolucin del problema

Algoritmo Dpto. Informtica

Ejecucin

Verificacin
Depuracin

Cdigo
depurado
Prueba y depuracin
en mquina

12

Programa
Una instancia de un algoritmo. Es la representacin concreta de un
algoritmo en algn lenguaje de programacin (para el curso seria
SL).

Lenguaje de programacin

Medio para comunicar el algoritmo a la computadora. Es un


conjunto de smbolos y las reglas para combinarlos.

Existen tres categoras de lenguajes segn su implementacin:

Intrpretes

Compiladores

Hbridos ( generadores de cdigo intermedio)

Algoritmo Dpto. Informtica

13

Representacin en SL. Por qu?


Es un lenguaje concebido e implementado en la UNA.
Su sintaxis es muy similar a pseudocdigo. Mucho ms
simple que otros lenguajes tradicionales, obvindose
detalles innecesarios para un curso introductorio de
programacin.
El alumno puede probar y depurar sus algoritmos en la
computadora. No se le limita simplemente al papel.
Se acostumbra al alumno a las caractersticas reales de
cualquier lenguaje de programacin permitiendo la
transicin a un lenguaje tradicional sin mayores
inconvenientes.
No obstante el alumno puede usar pseudocdigo u otra
representacin en la fase de resolucin del problema
Algoritmo Dpto. Informtica

14

Problemas y algoritmos
Recordar que:
Un algoritmo es una posible solucin a un problema planteado.

Desde el punto de vista de la materia, este problema puede ser resuelto por una
computadora.

Un problema puede ser resuelto por ms de un algoritmo.

Un problema siempre consta de:

Datos de entrada: cantidad y naturaleza de los datos.

Informacin de la salida requerida resultado de aplicar un procesamiento especfico.

Antes de elaborar un algoritmo se debe hacer un anlisis del


problema, esto es : interpretar el problema.

Para ello es recomendable leer al menos 3 o mas veces el problema


de manera a:

Tratar de encontrar la forma de reducir el problema en otros menores (divide y


vencers). Sobre todo para el caso de problemas complejos.

Tener en claro cuales son los datos de entrada, en qu cantidad y cual es su naturaleza
de cada uno (tipo o dominio del dato).

Tener en claro las restricciones del problema...(siempre que se expliciten los


mismos).Entender perfectamente la salida requerida.

Algoritmo Dpto. Informtica

15

Conceptos bsicos
Memoria
Componente del computador destinado a almacenar programas y
datos.

Variable
Regin de la memoria (principal) que puede ser accedida mediante un
nombre. El contenido de esta regin puede ser cambiada.

Constante literal

Cualquier nmero o cadena de caracteres que forma parte del texto del
programa. Es un valor en s mismo y no puede cambiar. Es almacenado
(generalmente ) como parte del programa.

Identificador

Nombre que es asignado a las variables o subprogramas. Existen


identificadores que se denominan reservados y que tienen un significado especial
dentro de un programa.

Para nuestro curso un identificador:

Comienza con una letra o con un _ (guin bajo). No debe tener espacios

Pueden tener hasta 32 caracteres. Las maysculas y minsculas son diferentes.

Algoritmo Dpto. Informtica

16

Conceptos bsicos
Expresin
Combinacin de constantes, variables y operadores.

Ejemplo: a + b + 10 * c ^ 2

Permite indicar un clculo especfico as como usualmente lo


hacemos en matemticas.

Existen varios tipos de expresiones que utilizaremos: aritmticas,


relacionales, lgicas y otras.

Operadores

Indica un clculo especfico en una expresin. Por ejemplo: sumar,


multiplicar, dividir, etc dos operandos. Se representan mediante
smbolos : + , - , *, /, etc.

Existen varios tipos: aritmticos, lgicos, relaciones, especiales.

Algoritmo Dpto. Informtica

17

Conceptos bsicos
Operadores (continuacin)

Aritmticos: +, - , /, * , ^ (exponenciacin), % (mdulo).


Requieren operandos numricos.

Lgicos: and, or, not. Permiten implementar operaciones del


lgebra de Boole. Requieren operandos lgicos.

Relacionales: ==, < , > , <=, >=, <>. Permiten comparar


contenido de variables. (mayor, igual, menor, distinto, etc).

Evaluacin de operandos
Para que una expresin pueda evaluarse (determinar el valor final
de la misma) debe tenerse en cuenta qu pasa cuando existe ms
de un operador en la expresin, en qu orden se evaluar?

Reglas de precedencia: cada operador tiene un peso de precedencia. Por ejemplo el *


(multiplicacin) tiene precedencia sobre el + (suma).

Reglas de asociatividad: cuando un operador tiene el mismo peso de precedencia me


permite determinar cual evaluar primero. Generalmente es de izquierda a derecha.

Puedo forzar las reglas de arriba mediante la utilizacin de parntesis.


Ejemplo (10+20 ) * 5 (Primero se evaluara la suma y luego la multiplicacin)

Algoritmo Dpto. Informtica

18

Conceptos bsicos
Ejemplo de expresin algortmica
Variables

Constantes literales

A + B * C ^ 2 100 + 55

Expresin algebraica
correspondiente
A+B . C 2100+55
Algoritmo Dpto. Informtica

Operadores

19

Conceptos bsicos
Evaluacin de expresin.
Uso de reglas de precedencia y asociatividad

A + B * C ^ 2 100 + 55
1

2
3
4

- En 1 se aplica la precedencia mayor de ^ sobre los dems operadores


- En 2 se aplica la precedencia mayor de * sobre el + y - En 3, 4 y 5 todas las precedencias son iguales y se aplica la regla de
asociatividad (de izquierda a derecha).

Ejercicio: Si A = 2 , B = 10 y C = 5, Cul es el resultado?


Algoritmo Dpto. Informtica

20

Expresiones algortmicas y algebraicas


Dada las siguientes expresiones algebraicas, escriba su
correspondiente expresin algortmica:

a)

b2 +4.(a+c)

b)

b
a.
100+c

x +1

c)

( x 2+ y 2)3

zb

Algoritmo Dpto. Informtica

21

Conceptos bsicos
Tipo de datos

Los tipos de datos indican la naturaleza del dato. Delimita el rango


posible de valores (dominio) y las operaciones posibles aplicables
al dato.

En el curso distinguiremos tres tipos de datos bsicos o


primitivos:

Numrico (numerico): representa informacin numrica ya sea entera o


fraccionaria. En SL de -1.7E-308 a 1.7E+308
Por ejemplo: 1912, 18121000, 0.0002, 0.152, 1e-10, 14e+30

Cadena de caracteres (cadena): representa informacin textual.


Por ejemplo: hola esto es una prueba (fjese que se encierra entre
comillas dobles).

Lgico (logico) : representa datos que pueden tomar dos valores posibles
: verdadero o falso.
Por ejemplo: NO, SI, TRUE, FALSE.

Algoritmo Dpto. Informtica

22

Conceptos bsicos
Asignacin

Es la operacin que me permite acceder a cierta posicin de


memoria y cambiar el valor all guardado.

El operador de asignacin esta definido por el smbolo =. A la


derecha debe aparecer una variable y a la izquierda una expresin.

Ejemplo:
a = 10 + 5 . Indica que a la variable de nombre a se le asignar
el resultado de evaluar 10 + 5.

Operacin de
asignacin

a
Memoria

a = 10 + 5

15
a
Memoria
Me

La asignacin es la operacin fundamental para lograr


realizar clculos con la computadora.

Algoritmo Dpto. Informtica

23

Instrucciones
Instruccin:

Una accin a ser realizada por la computadora. Un programa puede


verse como un conjunto de instrucciones.

Hasta ahora vimos : expresiones y asignacin, que son


instrucciones simples. De qu forma?

Tipos de instrucciones

Simples: evaluacin de expresiones y asignacin. Permiten tener


algoritmos lineales, con un solo camino de ejecucin.

Seleccin: permiten tener alternativas de ejecucin bajo ciertas


condiciones.

Iteracin: permiten repetir un conjunto de instrucciones bajo


ciertas condiciones.

Entrada/Salida: permiten interactuar con el usuario ya sea para


la lectura de datos como la salida de los mismos.

Algoritmo Dpto. Informtica

24

Estructura bsica de un programa en SL


programa <nomb_programa>

O
Opcional

var
<nombre_variable(s)> : <nombre_tipo>
...

O
Opcional
si no hay
var
variables

inicio
Instrucciones

<cuerpo>
fin
Archivo .sl

Algoritmo Dpto. Informtica

25

Comparando pseudocdigo con SL


Problema :
Dada dos variables numricas enteras a y b, asignar a b el valor 1000
y a la variable a el valor contenido en b ms 10

Pseudocdigo

SL
programa suma_1010
var
a, b: numerico

Inicio
b = 1000
a = b + 10
Fin

Algoritmo Dpto. Informtica

inicio
b = 1000
a = b + 10
fin

26

Estructura bsica de un programa en SL - partes

programa sumar_1010
var
a, b : numerico
inicio
b = 1000
a = b + 10
fin

Algoritmo Dpto. Informtica

27

Estructura bsica de un programa en SL - partes

programa sumar_1010 Palabra reservada que indica que


continuacin se encuentra el nombre
var
a, b : numerico
del programa.
inicio
b = 1000
a = b + 10
fin

Algoritmo Dpto. Informtica

28

Estructura bsica de un programa en SL - partes

programa sumar_1010
var
a, b : numerico
inicio
b = 1000
a = b + 10
fin

Algoritmo Dpto. Informtica

Identificador del programa

29

Estructura bsica de un programa en SL - partes

programa sumar_1010
var
a, b : numerico
inicio
b = 1000
a = b + 10
fin

Algoritmo Dpto. Informtica

Indica que a continuacin se


declararn las variables

30

Estructura bsica de un programa en SL - partes

programa sumar_1010
var
a, b : numerico
inicio
b = 1000
a = b + 10
fin

Declaracin de variables
dos variables numricas
identificadas como a y b.

Para qu declarar las variables?

Algoritmo Dpto. Informtica

31

Estructura bsica de un programa en SL - partes

programa sumar_1010
var
a, b : numerico
inicio
b = 1000
a = b + 10
fin

Algoritmo Dpto. Informtica

Palabra reservada inicio


que indica que se iniciara el
cuerpo principal del
programa

32

Estructura bsica de un programa en SL - partes

programa sumar_1010
var
a, b : numerico
inicio
Cuerpo del programa
b = 1000
Cada sentencia o instruccin esta
a = b + 10
separada por un ENTER
fin
Para el ejemplo existen dos
instrucciones de asignacin

Algoritmo Dpto. Informtica

33

Estructura bsica de un programa en SL - partes

programa sumar_1010
var
a, b : numerico
inicio
b = 1000
a = b + 10
fin

Algoritmo Dpto. Informtica

Palabra reservada fin


que indica que se termina el
cuerpo principal del
programa

34

Vista del entorno de programacin SL

Algoritmo Dpto. Informtica

35

Algoritmos lineales
Caractersticas

nico flujo de ejecucin.

Se especifican las cmputos instrucciones uno tras otro de forma


secuencial.

Por s solos, resuelven problemas muy simples y cortos.

Son usados en conjuncin en otros algoritmos con procesos


selectivos e iterativos.

Inicio
Paso 1
Paso 2
...
Paso N
Fin
Algoritmo Dpto. Informtica

36

Algoritmos lineales ejemplo ya visto


Problema:

Dado dos nmeros enteros positivos que representan la base y la


altura de un tringulo, encontrar e imprimir la superficie del
mismo.

Para encontrar una solucin, asumimos que se sabe geometra plana


bsica.
Por tanto

base . altura
superficie=
2

Un posible algoritmo de solucin (hablado)

inicio del algoritmo

Leer los datos de base y altura

Calcular la superficie que es igual a base por altura entre dos.

Imprimir o mostrar el contenido de superfice

fin del algoritmo

Algoritmo Dpto. Informtica

37

Algoritmos lineales ejemplo en SL (1)


Para llevar a SL tendramos que tener en cuenta
Definicin de las variables necesarias que usaremos

base, altura y superfice

Funciones de entrada/salida de datos

leer (para entrada de datos) e imprimir (para salida de datos)

Expresin de la operacin aritmtica que indica el clculo

( base * altura ) / 2 (en representacin algortmica)

Guardar el resultado del clculo en otra variable (asignacin)

operador de asignacin =

Algoritmo Dpto. Informtica

38

Algoritmos lineales ejemplo en SL (2)


SL
programa calc_superfice_triang
var
base, altura : numerico
superficie
: numerico

Pasos
secuenciales

inicio
leer(base,altura)
superficie = (base * altura)/2
imprimir(superficie)
fin

Algoritmo Dpto. Informtica

39

Algoritmos lineales paso a paso en SL

Algoritmo Dpto. Informtica

40

Algoritmos lineales paso a paso en SL

Algoritmo Dpto. Informtica

41

Algoritmos lineales paso a paso en SL

Algoritmo Dpto. Informtica

42

Algoritmos lineales paso a paso en SL

Algoritmo Dpto. Informtica

43

Funciones matemticas usuales en SL

Frmula

Funcin en SL Descripcin

sin ( x)
cos ( x )
tan ( x)
ln ( x)
x
arctan ( x )

sen(x)

seno de x expresado en radianes

cos(x)

coseno de x expresado en radianes

tan(x)

tangente de x expresado en rad.

log(x)

logaritmo natural de x

abs(x)

valor absoluto de x

arctan(x)

arco tangente de x expresado en rad.

sqrt(x)

raiz cuadrada de x

ex

exp(x)

el valor de e elevado a x

Algoritmo Dpto. Informtica

44

Bibliografa
Joyanes Aguilar, Luis. Fundamentos de programacin:
algoritmos, estructura de datos y objetos. McGraw-Hill,
2003.
Joyanes Aguilar, Luis. Fundamentos de ProgramacinAlgoritmos y Estructuras de Datos. McGraw-Hill, 1996.
Segovia Silvero, Juan. SL. Introduccin al lenguajeReferencia de subrutinas predefinidas-Ejemplos selectos.
Centro Nacional de Computacin, Universidad Nacional
de Asuncin. 1999.
Rodriguez Almeida, Miguel Angel. Metodologa de la
programacin a travs del pseudocdigo. McGraw-Hill,
1991.
Kernighan & Pike. La prctica de la programacin.
Prentice-Hall. 1999.
Algoritmo Dpto. Informtica

49

También podría gustarte