510 likes | 863 Views
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.
E N D
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: • Las acciones por ejecutar y el • 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 • Un algoritmo 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 • Es correcto 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 puedenguardarvalores. 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. Además, si el identificador está formado por varias palabras la primera se escribe en minúsculas (excepto para las clases) y el resto de palabras se hace empezar por mayúscula (por ejemplo: fechaDeNacimiento). Estas reglas no son obligatorias, pero son convenientes ya que ayudan al proceso de codificación de un programa, así como a su legibilidad. Es más sencillo distinguir entre clases y métodos o variables.
DECLARACION DE VARIABLES • Hay tres posibilidades: Tipo nombre; Tipo nombre1, nombre2, nombre3; Tipo nombre=valor; Por ejemplo: float peso; Se declara una variable de tipo float int temperatura, edad; Se declaran dos variables del mismo tipo. double iva=16.5; se declara una variable y a su vez se le asigna un valor de inicio.
Operadores Un operador es un símbolo que se utiliza para manipular datos. Clasificación: Los operadores pueden ser: • Operadores aritméticos
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:
Operadores Operadores Lógicos
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:
Operadores Precedencia de operadores
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 • las expresiones 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 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