Sie sind auf Seite 1von 48

ALGORITMOS

1.1
ALGORITMOS

El objetivo principal de esta sesión


es que identifiquemos algunos
conceptos y elementos claves de la
algoritmia, con los cuales podamos
construir algoritmos, y con nuestro
trabajo en casa, desarrollar
habilidad para el diseño de los
mismos. IMCT-UV
ALGORITMO
► Un algoritmo es un procedimiento a seguir, para
resolver un problema en términos de:

1. Las acciones por ejecutar y el

2. El orden en que dichas acciones deben ejecutarse

► Un algoritmo nace en respuesta a la aparición de un


determinado problema. Una algoritmo esta compuesto
de una serie finita de pasos que convergen en la
solución de un problema, pero además estos pasos
tienen un orden específico.
ALGORITMO
► Entenderemos como problema a cualquier
acción o evento que necesite cierto grado
de análisis, desde la simpleza de cepillarse
los dientes hasta la complejidad del
ensamblado de un automóvil. En general,
cualquier problema puede ser solucionado
utilizando un algoritmo, en este sentido
podemos utilizar los algoritmos para
resolver problemas de computo.
ALGORITMO
► Unalgoritmo para un programador es una
herramienta que le permite resaltar los
aspectos más importantes de una situación
y descartar los menos relevantes. Todo
problema de cómputo se puede resolver
ejecutando una serie de acciones en un
orden específico.
ALGORITMO
Por ejemplo considere el algoritmo que se elaboraría
para el problema o situación de levantarse todas
las mañanas para ir al trabajo:
► Salir de la cama
► quitarse la pijama
► ducharse
► vestirse
► desayunar
► arrancar el automóvil para ir al trabajo o tomar
transporte.
CARACTERISTICAS DE UN ALGORITMO

► ROBUSTEZ DE UN ALGORITMO
► Quiere decir que un algoritmo debe contemplar
todas las posibles facetas del problema que
queremos resolver, al elaborar un algoritmo no se
nos debe escapar ningún detalle que provoque un
funcionamiento malo nuestro algoritmo. Si
logramos construir un algoritmo robusto, cualquier
giro inesperado del problema será controlado por
el algoritmo, es decir, debe ser flexible a cambios.
CARACTERISTICAS DE UN ALGORITMO

CORRECTITUD DE UN ALGORITMO
► Escorrecto cuando da una solución al
problema a tratar y cumple con todos lo
requerimientos especificados tal que
cumplamos con los objetivos planteados.
COMPLETITUD DE UN ALGORITMO
► Cuando un algoritmo cuenta con todos los
recursos para poder llegar a una solución
satisfactoria
CARACTERISTICAS DE UN ALGORITMO

EFICIENCIA Y EFICACIA DE UN ALGORITMO


► Un algoritmo es eficiente cuando logra llegar a
sus objetivos planteados utilizando la menor
cantidad de recursos posibles, es decir,
minimizando el uso memoria, de pasos y de
esfuerzo humano.
► Un algoritmo es eficaz cuando alcanza el objetivo
primordial, el análisis de resolución del problema
se lo realiza prioritariamente.
► Puede darse el caso de que exista un algoritmo
eficaz pero no eficiente, en lo posible debemos de
manejar estos dos conceptos conjuntamente.
CLASIFICACION DE LOS ALGORITMOS

► CONVERSACIONALES: Aquellos algoritmos donde la


secuencia de los pasos se presentan mediante frases o
proposiciones.
Ejemplo: Elaborar un algoritmo para determinar la nota
definitiva de estudiantes en el curso de introducción a la
programación.
Paso 1: Comienzo
Paso2: Se debe conocer el código, nombre del estudiante;
además las notas obtenidas durante el curso.
Paso 3: Con las notas obtenidas efectuar los cálculos u
operaciones necesarias para obtener las notas definitivas
o finales del curso.
Paso 4: Por último debemos entregar o publicar las notas
definitivas del curso.
Paso 5: Final
CLASIFICACION DE LOS ALGORITMOS
► GRAFICOS: Son aquellos algoritmos donde la secuencia
de pasos se representa mediante gráficos o figuras
geométricas. A estos algoritmos se les llama “Diagramas
de flujo”.
La ventaja de utilizar un algoritmo es que se lo puede
construir independientemente de un lenguaje de
programación, pues al momento de llevarlo a código se
lo puede hacer en cualquier lenguaje.
Dichos diagramas se construyen utilizando ciertos
símbolos de uso especial como son rectángulos,
diamantes, óvalos, y pequeños círculos, estos símbolos
están conectados entre sí por flechas, conocidas como
líneas de flujo. A continuación se detallarán estos
símbolos.
DIAGRAMAS DE FLUJO

Terminal. Representa el inicio y fin de un programa.

Proceso. Son acciones que el programa tiene que realizar

Decisión. Indica operaciones lógicas o de comparación, así como expresiones

Entrada / Salida. Nos permite ingresar datos, de un periférico, así como mostrarlos

Salida. Es usado para mostrar datos o resultados

Conector. Se coloca al principio y fin de un pedazo de programa, enlaza dos partes cualquiera de un programa

Línea de flujo o indicador de dirección.


CLASIFICACION DE LOS ALGORITMOS

► SEUDOCODIGO: Aquellos algoritmos donde la


secuencia de pasos se representa o indica mediante
códigos en español, los cuales tendrán un significado
especial de acuerdo a cada paso:
Inicio : INICIO - COMIENZO
Datos conocidos: ENTRADA - LEER
Cálculos: EJECUTE - HAGA
Resultados: SALIDA - IMPRIMIR
Final: FINAL - FIN
CLASIFICACION DE LOS ALGORITMOS

Seudocódigo para el algoritmo anterior


Paso 1: Comienzo
Paso 2: Entrada: Código, nombre y notas
Paso 3: Ejecute: Cálculo de la nota definitiva
Paso 4: Salida: Entrega de nota definitiva
Paso 5: Final
Resolución de Problemas
Para lograr resolver cualquier problema se deben seguir
básicamente los siguientes pasos:
► Análisis del Problema. en este paso se define el
problema, se lo comprende y se lo analiza con todo
detalle.
► Diseño del Algoritmo. se debe elaborar una algoritmo
que refleje paso a paso la resolución del problema.
► Resolución del Algoritmo en la computadora. se
debe codificar el algoritmo.
RESOLUCION DE PROBLEMAS A TRAVES DEL
COMPUTADOR
Se identifican dos fases:
► Fase de resolución del problema
► Análisis del problema.
► Modelación y diseño de algoritmos para los métodos.
► Verificación manual de algoritmos.

► Fase de implementación en la computadora.


► Codificación.
► Prueba.
► Puesta en marcha.
Necesariamente el entendimiento del problema es lo primero y es
extremadamente importante comprender todos los aspectos del
problema: el tipo y la forma de la entrada, la información
disponible y los resultados deseados.
ANALISIS DEL PROBLEMA
► Podemos observar cierta regularidad (patrón) en los
algoritmos. Veamos...

► Pasos Iniciales (entrada): captura de datos con los que


el algoritmo va a trabajar.

► Pasos centrales (proceso): realización de cálculos y


control de errores o posibles situaciones anormales o
inesperadas que generen conflicto.

► Pasos Finales (salida): despliegue o devolución de


resultados.
TIPOS DE DATOS
► Concepto propio de la informática, más específicamente de
los lenguajes de programación, aunque también se
encuentra relacionado con nociones similares de las
matemáticas y la lógica.
► En un sentido amplio, un tipo de datos define un conjunto
de valores y las operaciones sobre estos valores.
► Todo sistema de computación digital es alimentado con
datos.
► La representación de los datos, incide en la elaboración de
los pasos del algoritmo.
► Generalmente el sistema de identificación de los datos se
denomina “estructura de datos”; la cual depende de la
característica de los datos.
TIPOS DE DATOS

DATOS NUMÉRICOS: Los utilizaremos para efectuar


operaciones aritméticas. Se representan de la siguiente
forma:
► Enteros: Corresponden a números completos, o sea que
no tienen componente decimal; pueden ser negativos,
positivos y el cero. En general son aquellos números
que no poseen punto decimal.
Ejemplo:
La edad de un estudiante  33
El total de estudiantes de un grupo 40
TIPOS DE DATOS

► Reales: Son aquellos números que poseen


un punto decimal, pueden ser positivos,
negativos y el cero. Los números reales los
podemos representar de dos formas.
► Reales decimales: Son aquellos números
que pueden constar de una parte entera y
una parte decimal.
Ejemplo: la nota de un estudiante 4.2
TIPOS DE DATOS

► Reales exponenciales: Son aquellos números que


se expresan en función de potencias de 10. Se
conoce también como notación científica o coma
flotante. Representan números muy grandes o
muy pequeños. Se representan de la siguiente
forma: “real decimal” E “entero”
Ejemplo: 3.675204 * 1019 = 3.675204E19
-3.5E3 = -3500.0
1.23E2 = 123.0
4.5E- 4 = 0.00045
TIPOS DE DATOS

► DATOS ALFANUMERICOS: Se agrupan en


series o cadenas de caracteres alfabéticas o
caracteres numéricos o caracteres
especiales.
Los datos alfanuméricos generalmente se
utilizan de referencia, o sea que con ellos no
efectuaremos operaciones aritméticas.
Se representan de la siguiente forma:
TIPOS DE DATOS

► De caracter: Cuando se hace referencia a un


solo carácter. Ejemplo:
El sexo de un empleado:
Masculino = ‘M’
Femenino = ‘F’
El estado civil de una persona:
Soltero ‘S’, Casado ‘C’, Viudo ‘V’, Separado ‘Z’.
TIPOS DE DATOS

► De cadena: Cuando se hace referencia a


más de un carácter. Son datos de tipo
cadena los siguientes:
El nombre de un estudiante “Juan Pérez”
La dirección de una persona “Calle 3 No. 3-12”
El cargo que desempeña “Docente”
TIPOS DE DATOS

► Datos Lógicos: Son aquellos que pueden


tomar dos valores: El valor verdadero o el
valor falso, representan estados (0 y 1).
Ejemplo: le preguntamos a un alumno que si
aprobó el curso; dicho alumno nos podrá
responder verdadero o falso.
Constantes

► Constantes: Son aquellos datos que


permanecen fijos e invariables en la solución
de un problema. Pueden ser (enteros,
reales, carácter, cadena, booleanos).
Ejemplo:
El porcentaje de una evaluación 0.20
El valor PI en geometría 3.1415926
El valor de la gravedad en mts 9.8
Variables
► Las variables son posiciones de memoria en donde
se pueden guardar valores.
A una variable se le identifica con un nombre, se
le define un tipo de dato y almacena un valor.
► A las variables se les asocia un datos el cual puede
cambiar en la solución de un problema. (un
nombre de variable debe existir solo una vez en el
ámbito de la variable).
► La declaración de una variable origina una reserva
de una posición en la memoria de la computadora
y que sea etiquetada con el correspondiente
identificador.
Variables
► Ejemplos:
► Código del estudiante codigoEstudiante
► Nombre del estudiante nombresEst
► Primera evaluación evaluacion1
► Edad del empleado edadEmp
IDENTIFICADORES
Reglas para la creación de identificadores:
► 1. Java hace distinción entre mayúsculas y minúsculas, por
lo tanto, nombres o identificadores como var1, Var1 y
VAR1 son distintos.
► 2. Pueden estar formados por cualquiera de los caracteres
del código Unicode, por lo tanto, se pueden declarar
variables con el nombre:
► fechaDeNacimiento, edad, etc. (se acabó la época de los
nombres de variable como fecha_de_nacimiento), aunque
eso sí, el primer carácter no puede ser un dígito numérico
y no pueden utilizarse espacios en blanco ni símbolos
coincidentes con operadores.
► 3. La longitud máxima de los identificadores es
prácticamente ilimitada.
IDENTIFICADORES
► 4. No puede ser una palabra reservada del lenguaje ni los
valores lógicos true o false.
► 5. No pueden ser iguales a otro identificador declarado en
el mismo ámbito.
► 6. Por convenio, los nombres de las variables y los
métodos deberían empezar por una letra minúscula y los
de las clases por mayúscula.
► Solo se pueden utilizar los siguientes caracteres en un
identificador:
► -Letras del alfabeto (A-Z , a-z)
► -Dígitos del 0 al 9
► -carácter Subrayado _
► Siempre se de comenzar con un carácter alfabético o
subrayado
IDENTIFICADORES
EJEMPLOS
DECLARACION DE VARIABLES
► Hay tres posibilidades:
Definir nombre como Tipo
Definir nombre1, nombre2, …. Como Tipo
Por ejemplo:
Definir peso como real // Se declara una variable de tipo entero

Definir temperatura, edad como entero //Se declaran dos


variables del mismo tipo.
Operadores
Un operador es un símbolo que se utiliza para
manipular datos.
Clasificación: Los operadores pueden ser:
► Operadores aritméticos
Operador Uso Descripción
+ op1 + op2 Suma op1 y op2
- op1 - op2 Resta op2 de op1
Multiplica op1 por
* op1 * op2
op2
/ op1 / op2 Divide op1 por op2
Calcula el resto de
% op1 % op2
dividir op1 entre op2
Operadores
•Operadores de comparación y condicionales (relacionales)

Un operador de comparación compara dos valores y determina la relación


existente entre ambos. Por ejemplo, el operador != devuelve verdadero (true) si
los dos operandos son distintos. La siguiente tabla resume los operadores de
comparación:

Operador Uso Devuelve verdadero si

> op1 > op2 op1 es mayor que op2


op1 es mayor o igual que
>= op1 >= op2
op2
< op1 < op2 op1 es menor que op2
op1 es menor o igual que
<= op1 <= op2
op2
== op1 == op2 op1 y op2 son iguales

!= op1 != op2 op1 y op2 son distintos


Operadores
Operadores Lógicos

Operador Uso Devuelve verdadero si...


op1 y op2 son ambos
verdaderos,
&& op1 && op2
condicionalmente
evalúa op2

op1 o op2 son


verdaderos,
|| op1 || op2
condicionalmente
evalúa op2

! ! op op es falso
Operadores
Operadores de asignación
El operador de asignación básico es el = , que se utiliza para asignar
un valor a otro. Por ejemplo:
int contador = 0;
Inicia la variable contador con un valor 0.

La siguiente tabla muestra los operadores de atajo de asignación y sus


equivalentes largos:

Operador Uso Equivalente a


+= op1 += op2 op1 = op1 + op2
-= op1 -= op2 op1 = op1 - op2
*= op1 *= op2 op1 = op1 * op2
/= op1 /= op2 op1 = op1 / op2
%= op1 %= op2 op1 = op1 % op2
Operadores

Tipo de operadores Operadores de este tipo


Paréntesis ()
Multiplicación */%
Suma +-
Comparación < <= >= >
Igualdad == !=
AND lógico &&
OR lógico ||
Asignación = += -= *= /= %=
Precedencia de operadores
Tablas de verdad

p ¬p p q p^q

V V V
V F
V F F
F V F
F V
F F F

p q pvq

V V V
V F V
F V V
F F F
Expresiones
► Una expresión es una combinación de
variables y/o constantes mediante
operadores
Se clasifican en:
Expresiones aritméticas
Expresiones lógicas
Expresiones aritméticas
► lasexpresiones aritméticas se obtienen
combinando expresiones aritméticas más
sencillas con operadores aritméticos.
► Una expresión aritmética se compone de
operadores y operandos. Los operadores
actúan sobre los operandos para obtener un
resultado. Los operadores aritméticos más
comúnmente utilizados son +, -, *, / y %.
EXPRESIONES ARITMETICAS

x y
2 2
 b  b  4ac
2

J 2
C
2a
z
n
m 
p
C 
r
q 
s
EXPRESIONES LOGICAS
Expresiones lógicas: son aquellas expresiones donde intervienen
expresiones aritméticas, operadores relacionales y/o
operadores lógicos.
Simples: Expresiones donde intervienen expresiones aritméticas
con los operadores relacionales. Ejemplos
(df == 3)
(sueldo < 245000)
(a + b > c)
Compuestas: Expresiones donde intervienen expresiones lógicas
simples y los operadores lógicos. Ejemplos
(A + B < C) && (A + C > D) && ( B + C != A)
(DF >= 3) && (DF < 4.5)
(ED >= 18) || (ES >= 40)
FUNCIONES
Son un conjunto de pasos preestablecidos internamente en la
máquina, los cuales son utilizados por el usuario con solo
nombrarlos. Las funciones se clasifican por categorías, la
clase Math contiene todas las funciones en coma flotante
que se utilizan en geometría y trigonometría Su forma
general o sintaxis de codificación es la siguiente:

Clase.Nombre preestablecido (argumento)


Clase es el nombre de la clase que contiene las funciones, El
nombre preestablecido indica el código que nos identifica
la función y el argumento puede ser una variable,
constante o expresión aritmética sobre la cual deseamos
evaluar la función.
FUNCIONES
TRIGONOMETRICAS
Sin (double a) devuelve el seno del ángulo a en radianes.
Cos (double a) devuelve el coseno del ángulo a en radianes.
Tan (double a) devuelve la tangente del ángulo a en radianes.
Asin (double r) devuelve el ángulo cuyo seno es r.
Acos (double r) devuelve el ángulo cuyo coseno es r.
Atan (double r) devuelve el ángulo cuya tangente es r.
Atan2 (double a, double b) devuelve el ángulo cuya tangente es a/b.

EXPONENCIALES
Pow (double y, double x) devuelve y elevado a x; por ejemplo: pow
(2.0,3.0) devuelve 8.0
Exp (double x) devuelve e elevado a x.
Log (double x) devuelve el logaritmo natural de x.
Sqrt (double x) devuelve la raíz cuadrada de x.
FUNCIONES
Funciones de redondeo:

Ceil (double a) devuelve el número completo más pequeño mayor o igual


que a.
Floor (double a) devuelve el número completo más grande menor o igual
que a.
Rint (double a) devuelve el valor double truncado de a.
Round (float a) devuelve a redondeado al int más cercano.
Round (double a) devuelve a redondeado al long más cercano.

Ejemplos

Math.cos ( X )
Math.sen ( X )
Math.pow (X,2)
“No existen reglas fijas para construir
programas claros, comprensibles y
comprobables. Hay, por supuesto, guías muy
generales y muy buenas además; pero el estilo
individual del programador (o la ausencia de
él), la claridad de su pensamiento (o la
oscuridad de él), su creatividad (o falta de ella),
podrán contribuir significativamente al éxito de
esa tarea.”

Peter J. Denning, Acm Computing Surveys


El esquema general de un algoritmo
es:
► INICIO
► /*Nombre:SumaDosNumeros
► Objetivo:El algoritmo solicita dos números
► cualquiera y calcula la suma de ellos.
► Autor:Martha López.
► Fecha:15 de Noviembre del 2006.*/
► //sección de declaración de variables.
► entero numero1;
► //sección de lectura de datos.
► imprimir (“Ingrese un número”);
► leer (numero1);
► //sección de procesamiento de los datos
► /* aquí se efectúan los cálculos con base en el diseño
► planteado*/
► //sección de impresión de resultados
► imprimir (“El resultado es: “, variable2);
► FIN

Das könnte Ihnen auch gefallen