Conceptos Generales - ING. VICTOR ANDRES … · 2015-08-12 · expresamos de manera cotidiana....

35
Conceptos Generales ALGORITMOS 1

Transcript of Conceptos Generales - ING. VICTOR ANDRES … · 2015-08-12 · expresamos de manera cotidiana....

Conceptos

Generales

ALGORITMOS

1

Que es un Algoritmo?

Es un conjunto preescrito de instrucciones o

reglas bien definidas, ordenadas y finitas que

permite realizar una actividad mediante

pasos sucesivos que no generen dudas a

quien deba realizar dicha actividad.

Conjunto finito de reglas que dan una

secuencia de operaciones para resolver

todos los problemas de un tipo dado.

De forma más sencilla, podemos decir que un

algoritmo es un conjunto de pasos que nos

permite obtener un dato.

2

Un algoritmo debe cumplir:

Finitud: El algoritmo debe acabar tras un

número finito de pasos.

Definibilidad: El algoritmo debe definirse

de forma precisa para cada paso, es

decir hay que evitar toda ambigüedad.

Entrada: El algoritmo tendrá cero o más

entradas es decir, cantidades dadas

antes de empezar el algoritmo.

3

Salida: El algoritmo tiene una o mas

salidas en relación con las entradas.

Efectividad: Se entiende por eso que una

persona sea capaz de realizar el

algoritmo de modo exacto y sin ayuda

de una maquina en un lapso de tiempo

finito.

4

Representación de un

Algoritmo Pseudocódigo: Significa escribir las instrucciones

del algoritmo en lenguaje natural tal y como lo expresamos de manera cotidiana.

Diagramas de Flujo: Son representaciones gráficas de los pasos necesarios que conllevan a la solución algorítmica de un problema. Se utilizan determinados símbolos o figuras que representan una acción.

5

6

• El pseudocódigo es una manera de escribir algoritmos de forma poco estricta

(con una sintaxis relajada) o estructuras de datos poco detalladas, pero

intentando acercar las ideas del algoritmos a estructuras y sintaxis parecidas a

las de los lenguajes de alto nivel en los que vamos a programar el algoritmo.

• Es para ser leído por personas, por tanto no se preocupa en detalles

sintácticos.

• Es un lenguaje de especificación de algoritmos, pero muy parecido a cualquier

lenguaje de programación, por lo que luego su traducción al lenguaje de

programación es muy sencillo, pero con la ventaja de que no se rige por las

normas de un lenguaje en particular. Nos centramos más en la lógica del

problema.

• El pseudocódigo también va a utilizar una serie de palabras claves o palabras

especiales que va indicando lo que significa el algoritmo.

Pseudocódigo.

1. INICIO y FIN: Por donde empieza y acaba el algoritmo.

2. DATOS: Aquí se declaran e inicializan las variables que utilizará el algoritmo.

3. ALGORITMO: En esta sección se escribe el algoritmo.

Pseudocódigo - Sintaxis Utilizada.

Pseudocódigo de un algoritmo genérico:

INICIO.

DATOS: ** esto es un comentario **

entero a ; ** declaración de una variable entera **

real b = 0 ; ** declaración e inicialización de una variable **

ALGORITMO:

leer a ;

b = a + 5 ;

escribir b ;

FIN.

Si: Si la Condición es Verdadera, se ejecuta la Acción, sino el algoritmo continua con su

ejecución.

Estructuras de Control Selectivas.

Condición

Verdadera?

Si

No

Acción

Si < Condición >

<Acción>

Fin_Si

Si – Sino: Si la Condición es Verdadera, se ejecuta la Acción 1, sino el algoritmo ejecuta la

Acción 2. Luego el algoritmo continua con su ejecución.

Condición

Verdadera?

Si

No

Acción 1 Acción 2

Si < Condición >

< Acción 1 >

Sino < Acción 2 >

Fin_Si

Estructuras de Control Selectivas.

Si – Sino – Si: Si la Condición 1 es Verdadera, se ejecuta la Acción 1, sino el algoritmo

evalúa la Condición 2. Si es Verdadera, ejecuta la Acción 2 y sino la Acción 3.

Cond. 1 Verdad

era?

Si

No

Acción 1

Acción 3

Cond. 2 Verdad

era?

Acción 2

Si

No

Si < Condición 1 >

< Acción 1 >

Sino_Si < Condición 2 >

< Acción 2 >

Sino < Acción 3 >

Fin_Si

Estructuras de Control Selectivas.

Juan

Ignacio

Talpo

neSegún (alternativa múltiple): Se evalúa una condición o expresión que puede tomar “n”

valores. Según el valor que la expresión tenga en cada momento se ejecutan las acciones

correspondientes al valor. El valor con el que se compara la expresión, va a depender de los

lenguajes, de lo que sea ese valor. En general ese valor puede ser un valor constante, un

rango de valores o incluso otra condición.

Expresión o

Condición

Acción 1 Acción “n”Acción 2

Según <expresión>

< Valor 1 >: < Acción 1 >

< Valor 2 >: < Acción 2 >

< Otro >: < Acciones >

Fin_Según

Estructuras de Control Selectivas.

Mientras: Se evalúa la Condición. Si es Verdadera, se ejecuta la Acción y se evalúa

nuevamente la Condición. En el momento en el que la Condición sea Falsa se sale del bucle y

se continua con la ejecución del algoritmo. Al evaluarse la Condición, al principio, antes de

entrar en el bucle, si la condición es Falsa, nunca se entrará en el bucle. Por lo tanto se utiliza

obligatoriamente este tipo de bucle en el caso de que exista la posibilidad de que el bucle

pueda ejecutarse 0 veces.

Estructuras de Control Repetitivas.

Condición

Verdadera?

Si

No

Acción

Mientras < Condición >

< Acción >

Fin_Mientras

Hacer - Mientras: En primera instancia se ejecuta la Acción. Posteriormente, se evalúa la

Condición. Si es Verdadera, se ejecuta nuevamente la Acción. Si es Falsa, se continúa con la

ejecución del algoritmo. Se repite el bucle mientras la condición sea Verdadera. La Condición

se evalúa siempre al final del bucle, si es Verdadera se ejecuta nuevamente la Acción, si es

Falsa se sale del bucle. Como la Condición se evalúa al final, incluso aunque la primera vez

ya sea Falsa, el bucle (la Acción) se habrá ejecutado al menos una vez.

Condición

Verdadera?

Si

No

Acción

Hacer < Acción >

Mientras < Condición >

Estructuras de Control Repetitivas.

Desde - Hasta: Se utiliza cuando se sabe el número exacto de veces que hay que iterar. Para

ello el bucle llevará asociado una variable “índice”, a la que se le asigna un valor inicial y se

determina cual va a ser su valor final y además se va a incrementar (o decrementar) en cada

iteración de bucle en un valor constante.

Variable = Inicio ; Condición? ;

Inc. “n”

Condición

Verdadera?

Si

No

Acción

Acción

No

Si

Inicio

Acción 2Para variable = Vi, variable < Vf, Inc n

<Acción>

Fin_Para

Estructuras de Control Repetitivas.

Ejemplo: Mostrar el producto de números enteros positivos entrados por teclado hasta el

ingreso de un número negativo.Pseudocódigo:

Módulo: Principal

INICIO

DATOS:

P, num: entero

ALGORITMO:

P 1

Leer num

Mientras num >= 0

P p * num

Leer num

Fin_mientras

Escribir p

FIN

INICIO

Entero P, numP = 1

Leer num

P = P * num

FIN

Num >= 0?

Leer num

Escribir num

Si

No

16Ejemplo. Ciclo Para

Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos neutros.

Inicio

cn = 0

cp = 0

cneg = 0

Para x = 1 hasta 20 hacer

Leer num

Sin num = 0 entonces

cn = cn + 1

si no

Si num > 0 entonces

cp = cp + 1

si no

cneg = cneg + 1

Fin-si

Fin-si

Fin-para

Imprimir cn, cp, cneg

Fin.

17Ejemplo 2. Ciclo Para El problema es calcular la suma de los números naturales

desde 1 hasta n.

Inicio

Entero i, n, Suma

Leer( n)

i=1

Suma =0

PARA i=1 hasta n hacer

Suma=Suma+i

Fin_para

Escribir (Suma)

Fin

18Traducción de Estructuras

Repetitivas

Simbología para los DFD Diagrama de Flujo19

Variables

Son estructuras de datos que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una variable corresponde a un área reservada en la memoria principal del ordenador pudiendo ser de longitud fija y variable.

20

21TIPOS DE VARIABLES UTILES EN

REPETICIÓN

Variables contadoras

Como su nombre lo indica estasvariables se usan fundamentalmentepara contar, por lo tanto deben ser detipo entero. Un ejemplo de este tipo devariables es la variable de control en unciclo para. Una variable contadora seincrementa (o decrementa) en un valorconstante en cada iteración del ciclo.

Ejemplo. Desarrollar un algoritmo queimprima los números impares en ordendescendente que hay entre 1 y 100.

22Variables acumuladoras

La función de una variable acumuladora esalmacenar valores numéricos quegeneralmente se suman (o multiplican) encada iteración, por lo tanto la variable debeser de tipo entero o real. Por ejemplo, en losdiferentes algoritmos presentados parasolucionar el problema de calcular la suma delos números naturales desde 1 hasta n, lavariable suma es una variable acumuladora.

Ejemplo. Calcular las suma de los cuadrados de los números entre 1 y 100.

Variables acumuladoras

Es una variable cuyo valor se

incrementa o decrementa en un valor

que no tiene por qué ser fijo (en cada

iteración de un bucle). Un acumulador

suele utilizarse para acumular

resultados producidos en las iteraciones

de un bucle.

23

24Variables bandera

Una variable bandera es utilizada dentro de la

condición del ciclo, ya sea sin negar, negada o

conectada con una expresión booleana, paradeterminar cuándo un ciclo se sigue iterando o

cuándo no. De esta manera una variable

bandera debe ser de tipo booleano. (El lenguaje

C estándar no tiene tipos booleanos, C++ si)

25Variables bandera

Ejemplo. Realizar un programa que leauna serie de números reales y los sume. Elprograma debe preguntar al usuariocuándo desea ingresar un siguiente datoy si el usuario responde que no deseaingresar más datos el programa debeconfirmar la respuesta. Si el usuario deseacontinuar ingresando datos se debeseguir solicitando datos y si el usuarioconfirma su deseo de salir, el programadebe mostrar la suma de los datos leídosy terminar.

Variables bandera

Es una variable cuyo valor se incrementa

o decrementa en un valor fijo (en cada

iteración de un bucle). Un contador suele

utilizarse para contar el número de veces

que itera un bucle. Pero, a veces, se utiliza

para contar, solamente, aquellas

iteraciones de un bucle en las que se

cumpla una determinada condición.

26

27Traducción de Estructuras

Repetitivas

Constante

Es un valor que no puede ser alterado

durante la ejecución de un programa.

Una constante corresponde a una

longitud fija de un área reservada en la

memoria principal del ordenador, donde

el programa almacena valores fijos.

28

Expresiones

Se definen como una combinación de

constantes, variables, símbolos de

operación, paréntesis, y nombres de

funciones especiales.

Una expresión consta de operandos y

operadores.

Las expresiones se clasifican en

aritméticas, lógicas y comparación.

29

Expresiones aritméticas

Operador significado

+ Suma

- Resta

* Multiplicación

/ División

Div Cociente

Mod Modulo (Residuo)

30

disyunciónP o QOr

ConjunciónP y QAnd

NegaciónNot

SignificadoExpresión

lógica

Operador

lógico

Expresiones Lógicas 31

Menor<

Distinto<>

Mayor o igual>=

Menor o igual<=

Igual=

Mayor>

SignificadoOperador

Expresiones Comparación32

Reglas de prioridad

( )Paréntesis

+, -Más y menos

Div, mod Div y mod

*, /Multiplicación,

divide

GráfoOperador

33

Operación de Asignación

Es la forma de darle valores tanto a

variables como constantes, se

representa con los símbolos

34

Estructura Secuencial

Se caracteriza porque

una acción se ejecuta

detrás de otra. El flujo

del programa

coincide con el orden

físico en el que se han

ido poniendo las

instrucciones.

Dentro de este tipo podemos

encontrar operaciones de

inicio/fin, inicialización de

variables, operaciones de

asignación, cálculo, suma, etc.

35