Anda di halaman 1dari 39

Solución de problemas utilizando algoritmos

Jimmy Alexander Cifuentes


jiacifuentesro@unal.edu.co

29 de julio de 2012

Pensamiento Algorı́tmico
Pontificia Universidad Javeriana
Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Índice

1 Algoritmos

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Índice

1 Algoritmos

2 Datos

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Índice

1 Algoritmos

2 Datos

3 Constantes y variables

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Índice

1 Algoritmos

2 Datos

3 Constantes y variables

4 Expresiones y operadores

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Índice

1 Algoritmos

2 Datos

3 Constantes y variables

4 Expresiones y operadores

5 Representación de algoritmos
Pseudocódigo
Diagramas de flujo

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Introducción

Diariamente el ser humano trata de darle solución a cada problema


que se le presenta, o de mejorar las soluciones disponibles. Para
algunos problemas fundamentales ha encontrado soluciones
brillantes que consisten en una serie de acciones, que siempre que
se realicen de manera ordenada y precisa conducen a la respuesta
correcta. Algunas de esas soluciones han requerido el trabajo, la
inteligencia y la persistencia de muchas generaciones. Hoy la
sociedad cuenta con ese legado de soluciones, además de las
máquinas capaces de ejecutarlas precisa y velozmente.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Definition
Un ALGORITMO es una secuencia finita ’bien definida’ de tareas
’bien definidas’, cada una de las cuales se puede realizar con una
cantidad finita de recursos.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Caracterı́sticas de un algoritmo

Precisión: Hay un orden preciso en el cual deben ejecutarse las


tareas que conforman el algoritmo.
Determinismo: Todas las veces que se realicen las tareas o
pasos de un algoritmo, con las mismas condiciones inı́ciales, se
deben obtener resultados idénticos.
Finitud: El algoritmo debe terminar en algún momento y debe
usar una cantidad finita de recursos.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Estructura básica de un algoritmo

Datos: Para almacenar información: datos de entrada, de


salida o intermedios.
Instrucciones: Las acciones o procesos que el algoritmo realiza
sobre los datos.
Estructuras de control: Las que determinan el orden en que se
ejecutarán las instrucciones del algoritmo.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Example
Algoritmo para saber si un número es primo o no:
1 Inicio
2 Poner X igual a 2
3 Dividir N por X
4 Si el resultado de N/X es entero, entonces N no es un número
primo y bifurcar al punto 7; en caso contrario, continuar el
proceso
5 Suma 1 a X
6 Si X es igual a N, entonces N es un número primo; en caso
contrario, bifurcar al punto 3
7 Fin

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Definition
De manera informal, un dato es una pieza de información
simple como un número, un código, un hecho o una edad.
De manera formal, un dato es un elemento concreto de algún
conjunto.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Para resolver un problema se trabaja con varios tipos(modos)


de datos.
En el proceso de solución de problemas el diseño de la
estructura de datos es tan importante como el diseño del
algoritmo.
Un dato puede considerarse simple (sin estructura) o
compuesto (estructurado).
Los datos simples se pueden agrupar en:
Numéricos (entero, real)
Lógicos (booleano)
Carácter (carácter, cadena)

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Datos numéricos

El tipo numérico es el conjunto de los valores numéricos.


Definition
Entero: El tipo de dato entero es un subconjunto finito de los
números enteros. Los enteros son números completos, no tienen
componentes fraccionarios o decimales y pueden ser negativos o
positivos.

Definition
Real: El tipo de dato real consiste en un subconjunto de los
números reales. Los números reales siempre tienen un punto
decimal y pueden ser positivos o negativos.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Datos lógicos

Definition
El tipo lógico – también denominado como booleano – es aquel
dato que sólo puede tomar uno de dos valores: verdadero (true) o
falso (false).

Este tipo de datos se utiliza para representar alternativas a


determinadas condiciones.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Datos Carácter

Definition
El tipo carácter es el conjunto finito y ordenado de caracteres que
la computadora reconoce. Un dato de tipo carácter contiene un
solo carácter.

Definition
Una cadena (string ) de caracteres es una sucesión de caracteres
que se encuentran delimitados por comillas dobles. La longitud de
una cadena es el número de caracteres comprendidos entre los
limitadores.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Constantes

Definition
Una constante es una partida de datos que permanecen sin
cambios durante todo el desarrollo del algoritmo.

Example

PI = 3,1415926
SALUDO BASICO = ”Hola, Buenos dı́as”
TAMANO MAXIMO = 1000
ESPACIO = ’ ’

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Variables

Definition
Una variable es un objeto o partida de datos cuyo valor puede
cambiar durante el desarrollo del algoritmo.

Toda variable posee tres caracterı́sticas:


1 nombre
2 tipo
3 estado.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Expresiones y operadores

Definition
Las expresiones son combinaciones de constantes, variables,
sı́mbolos de operación, paréntesis y nombres de funciones
especiales.

Las mismas ideas son utilizadas en notación matemática


tradicional: √
a + (b + 3) + c

−b + c + (b − 5)
Una expresión consta de operandos y operadores.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Expresiones aritméticas

Definition
Las expresiones aritméticas son análogas a las fórmulas
matemáticas. Las variables y constantes son numéricas (real o
entera) y las operaciones son las aritméticas.

Sı́mbolo Operador
+ Suma
- Resta
* Multiplicación
/ División
% Módulo
Cuadro: Operadores aritméticos

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Expresiones lógicas

Definition
Una expresión lógica es aquella en la cual el resultado se da en
términos de verdadero o falso.
Las expresiones lógicas se forman combinando constantes lógicas,
variables lógicas y otras expresiones lógicas, utilizando los
operadores lógicos y los operadores relacionales.

Sı́mbolo Operador
&& AND
k OR
! NOT
Cuadro: Operadores lógicos

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Sı́mbolo Operador
< Menor que
> Mayor que
== Igual que
<= Menor o igual que
>= Mayor o igual que
!= Diferente de
Cuadro: Operadores Relacionales

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Tablas de verdad

p !p
V F
F V
Cuadro: Negación

p q pkq p&&q
V V V V
V F V F
F V V F
F F F F
Cuadro: Conjunción lógica y disyunción lógica

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Precedencia de operadores

Definition
La precedencia de operadores es un orden de evaluación estándar,
que se le ha asignado a los operadores para evitar excesivo uso de
paréntesis.
Evitan las posibles ambigüedades en el proceso de evaluación, es
decir, evitan que una expresión pueda tomar más de un valor.

Example

3+4∗5

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Precedencia de operadores

Definition
La precedencia de operadores es un orden de evaluación estándar,
que se le ha asignado a los operadores para evitar excesivo uso de
paréntesis.
Evitan las posibles ambigüedades en el proceso de evaluación, es
decir, evitan que una expresión pueda tomar más de un valor.

Example

3+4∗5

=
23 ó 35

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Precedencia Operadores
8 () Paréntesis
7 − (Signo menos)
6 ∗, /, %
5 +, −(sustracción)
4 >, <, ==, ≥, ≤, ! =
3 !
2 &&
1 k
Cuadro: Precedencia de operadores

Cuando una expresión está formada por operadores de la misma


precedencia, dichos operadores son evaluados de izquierda a
derecha, salvo unas pocas excepciones.
J. Cifuentes Solución de problemas utilizando algoritmos
Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Evaluación de expresiones
Una expresión se evalúa mediante el siguiente algoritmo:
Inicio
PASO 1. Reemplazar todas las variables de la expresión por su valor.
PASO 2. Desde los paréntesis más internos hacia los más externos mientras
existan paréntesis y/o operadores hacer:
2.1. Si una función no tiene todos sus argumentos evaluados,
evaluar cada uno de los mismos.
2.2. Evaluar toda función que tenga sus argumentos evaluados
y reemplazarla por su valor resultado.
2.3. Realizar las operaciones indicadas según la precedencia de
los operadores que actúan sobre números y/o valores de
verdad, es decir, términos ya evaluados.
2.4. Si sólo un número y/o valor de verdad se encuentra entre
paréntesis eliminar los paréntesis.
PASO 3. El número o valor de verdad que resulta es el valor de la expresión.
Fin

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Example
Si los valores de las variables enteras A, B y C son 5, 3 y 9
respectivamente, la siguiente expresión

−(3 + 4) ∗ A/B ∗ C + B ∗ C

se evalúa de la siguiente forma:

−(3 + 4) ∗ 5/3 ∗ 9 + 3 ∗ 9

−(7) ∗ 5/3 ∗ 9 + 3 ∗ 9
−7 ∗ 5/3 ∗ 9 + 3 ∗ 9
−35/3 ∗ 9 + 27
−11 ∗ 9 + 27
−99 + 27
−72

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Example
Sean A y B variables de tipo entero con valores 6 y 8 respectivamente, la
expresión siguiente

(A > B + 4)((A == 3)&&¬(B < 4))

es evaluada de la siguiente manera:

(6 > 8 + 4)k((6 == 3)&&!(8 < 4))

(6 > 12)k((6 == 3)&&!(8 < 4))


(falso)k((falso)&&!(falso))
falsok(falso&&!falso)
falsok(falso&&verdadero)
falsok(falso)
falsokfalso
falso

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Asignación

Definition
La operación de asignación es el modo de darle valores a una
variable. Se conoce como instrucción o sentencia de asignación
cuando se refiere a un lenguaje de programación.

El formato general de una operación de asignación es:


nombre de la variable = expresión

Example

A = 25
X =Y +2

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Cuando se quiere que un computador ejecute un algoritmo es


indispensable, por lo menos hasta hoy, representar ese algoritmo
mediante algún formalismo. Las técnicas utilizadas más
comúnmente para la representación de algoritmos son:
1 Pseudocódigo
2 Diagramas de flujo

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Pseudocódigo

Pseudocódigo

Es un lenguaje de especificación de algoritmos.


Tiene asociado un léxico (conjunto de palabras), una sintaxis
(reglas gramaticales) y una semántica precisa (significado), de
manera análoga a un lenguaje natural como el castellano.
El uso de tal lenguaje hace relativamente fácil el paso de
codificación final del algoritmo (esto es, la traducción a un
lenguaje de programación).

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Pseudocódigo

La ventaja del pseudocódigo es que le permite al programador


concentrarse en la lógica y en las estructuras de control del
algoritmo que quiere diseñar, sin preocuparse de las reglas de un
lenguaje especı́fico de programación, que normalmente incluyen
infinidad de detalles. Es también fácil modificar el pseudocódigo si
se descubren errores o anomalı́as en la lógica del programa; además
de lo anterior, es fácil su traducción a lenguajes de programación
como Pascal, C, Java o Basic.
El pseudocódigo utiliza palabras reservadas (similares a sus
homónimos en los lenguajes de programación) para representar las
acciones y estructuras de control, tales como inicio, fin,
si-entonces-sino, mientras, etc.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Pseudocódigo

El formato general de un algoritmo expresado mediante


pseudocódigo es el siguiente:

[<definición de registros o tipos de datos>]


[constantes <declaración constantes>]
[variables <declaración variables globales del programador>
[<definición de funciones y procedimientos>]

inicio
/*bloque de instrucciones*/
fin

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Pseudocódigo

Example
funcion_principal
entero n;
entero suma;
entero dato;
entero i;
imprimir( "Número de enteros a considerar:");
leer(n);
suma = 0;
para(i=1;i<n;1) hacer
imprimir("ingrese un número entero:" );
leer(dato);
suma = suma + dato;
fin_para
imprimir("La suma de los números es:");
imprimir(suma);

fin_principal

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Diagramas de flujo

Diagramas de flujo

Es una de las técnicas de representación de algoritmos más


antigua y a la vez la más utilizada.
Es un diagrama que utiliza sı́mbolos estándar y que tiene los
pasos del algoritmo escritos en esos sı́mbolos unidos por
flechas, denominadas lı́neas de flujo, que indican la secuencia
en la que se deben ejecutar.

J. Cifuentes Solución de problemas utilizando algoritmos


Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Diagramas de flujo

Sı́mbolos de diagrama de flujo


Sı́mbolo Función

Terminal: Representa el comienzo y el final


de un programa

Entrada/Salida

Proceso: Cualquier operación que pueda


originar cambio de valor, formato o posi-
ción de la información

Decisión: Indica operaciones lógicas o de


comparación entre datos

Indicador de dirección o lı́nea de flujo

Cuadro: Sı́mbolos de diagrama de flujo


J. Cifuentes Solución de problemas utilizando algoritmos
Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Diagramas de flujo

Example

Figura: Ejemplo Diagrama de Flujo


J. Cifuentes Solución de problemas utilizando algoritmos
Outline Algoritmos Datos Constantes y variables Expresiones y operadores Representación de algoritmos

Diagramas de flujo

Referencias

Joyanes Aguilar, Luis Fundamentos de Programación, Ed.


McGraw Hill
GOMEZ, J., GONZALEZ, F., GIRALDO, G., APONTE, H.,
NIÑO, L., Programación de Computadores, Publicaciones
Facultad de Ingenierı́a, Universidad Nacional de Colombia,
2004.

J. Cifuentes Solución de problemas utilizando algoritmos

Anda mungkin juga menyukai