Facultad de Ingeniería Departamento de Ciencias de la Información
Informática 1 532219
UNIDAD 1
ALGORITMOS Profesor Fabiรกn Lasso
ALGORITMO “Secuencia de instrucciones o pasos que es llevada a cabo de forma mecánica y sistemática por un actor que se desenvuelve en un ambiente o entorno dado, para resolver un problema determinado en un tiempo finito.” PROPIEDADES Su lógica de construcción debe ser independiente de cualquier lenguaje de programación Simplicidad Definido: sin ambigüedades Preciso: orden específico de sentencias Finito: principio y fin Efectivo: funciona y funciona de acuerdo a los requerimientos
Profesor Fabián Lasso
Valores relacionados Tomar decisiones Sacar conclusiones Valores no relacionados No tomar decisiones No sacar conclusiones Profesor Fabiรกn Lasso
DEFINICIÓN DEL PROBLEMA
ESPECIFICACIONES DE ENTRADA
ESPECIFICACIONES DE SALIDA
Definir el problema con total precisión ABSTRACCIÓN
Especificar los datos de partida necesarios para desarrollar la solución del mismo
Especificar la información que debe proporcionarse cuando el problema es resuelto Profesor Fabián Lasso
Representación de los datos e información Diagramas de flujo
Pseudocódigo INICIO ALGORITMO Mayor{ /* Este algoritmo calcula e imprime la edad cumplida o a cumplir, de una persona, en el 2009, conociendo su año de nacimiento */ entero a=0, b=0; IMPRIMA(“Digite el primer número: ”); LEA(a); IMPRIMA(“Digite el segundo número: ”); LEA(b); SI (a > b){ IMPRIMA (a+” es mayor que “+b); }SINO{ IMPRIMA (b+” es mayor que “+a);
Imagen tomada de elticus.com
} FINAL ALGORITMO Edad Profesor Fabián Lasso
Eficiencia: capacidad para lograr un fin, empleando los mejores medios posibles Eficacia: capacidad de lograr el efecto que se desea o se espera, sin que priven para ello los recursos o los medios empleados Efectividad: cuantificación del logro de la meta LOGICA PROCESAL
LOGICA DIRECCIONAL
EFICIENCIA
EFICACIA
INSUMOS Cantidad Calidad Espacio Tiempo
PRODUCTO PROCESO
RESULTADO Expectativas Máximo de efectos deseados y mínimo de efectos indeseados
http://www.monografias.com/trabajos11/veref/veref.shtml. La verdad sobre eficiencia, eficacia y efectividad. Parte de una imagen del trabajo de González M. Juan carlos. Febrero 2002
Profesor Fabián Lasso
Ejercicios Desarrollar cada uno de los siguientes ejemplos utilizando los procedimientos de desarrollo de algoritmos, hasta ahora, vistos en clase
1. Calcular el área de un círculo 2. Determinar si un numero n es par o impar 3. Determinar el valor del perímetro de un rectángulo 4. Calcular el índice de masa corporal de una persona (IMC = peso(kg) / altura2(m2)
Profesor Fabián Lasso
Ejemplo Calcular el área de un círculo
Listo
Inicio 1. Conocer qué es el área (geométrica) El área es la magnitud geométrica que mide la extensión de un cuerpo en dos dimensiones
Área de un circulo =
Radio2
= 3.141592
2. Conocer cómo se determinar el área geométrica de un círculo Área de un circulo =
Radio2 (unidades 2)
3. Conocer el valor de = 3.141592 4. Conocer el concepto de radio El segmento que une el centro de la circunferencia con cualquier punto de ella 5. Determinar que, para calcular el área de un círculo, es necesario conocer el valor del radio 6. Aplicar la fórmula Area de un circulo =
Radio2 (unidades 2)
Radio=? Radio=5 Ac = Ac = 3.141592 * 25 Ac = 78.5398 u2 Profesor Fabián Lasso
Final
ELEMENTOS DE CONSTRUCCIÓN DE UN ALGORITMO
Inicio del algoritmo Finalización del algoritmo Comentarios
Declaración de variables Expresiones Funciones de lectura Funciones de impresión Profesor Fabián Lasso
Inicio y finalización del algoritmo - Inicio del algoritmo INICIO ALGORITMO Nombre { - Finalización del algoritmo } FIN ALGORITMO Nombre
Ejemplo: INICIO ALGORITMO Edad { Cuerpo del Algoritmo } FIN ALGORITMO Edad
Comentarios
Documentación interna del algoritmo - Párrafo o bloque (más de una línea): Inicia con /* Termina con */ - Una línea: Inicia con // Ejemplo: INICIO ALGORITMO Edad { // Este es comentario de una línea /* Este es un comentario de un bloque de líneas. Este es un comentario de un bloque de líneas. Este es un comentario de un bloque de líneas. */
Cuerpo del Algoritmo } FIN ALGORITMO Nombre Profesor
Fabián Lasso
Tipos de datos
Numéricos oEnteros (entero) oFlotantes (flotante) oDobles (doble) Caracter (character) Cadena (cadena) Booleano o lógico (booleano)
Profesor Fabián Lasso
Variables Son espacios de memoria reservados para guardar datos que pueden variar durante la aplicación de un algoritmo. El tipo de la variable depende del tipo de dato que pueda guardar. Declaración de una variable Tipo_de_variable nombre_de_la_variable = valor_inicial; El “tipo de variable” depende del tipo de dato que va a guardar la variable y se nombra con dicho tipo El nombre de la variable, generalmente se escribe en letras minúsculas Profesor Fabián Lasso
Variables entero valor1= 0; caracter respuesta = „s‟; flotante numero_2 = 3.14; cadena nombre = “ ”; booleano respuesta2 = verdadero;
Profesor Fabián Lasso
Respecto al nombre de las variables Sin restricción en su longitud Deben ser auto-documentadas Solo pueden contener caracteres alfabéticos (a..z A..Z), numéricos (0..9), caracter subrayado (_) No pueden incluir en su nombre caracteres especiales (! “ # $ % & / ( ) = ? ¡ „ ¿{[}]…) No pueden incluir palabras reservadas para el lenguaje de programación en el que se están programado los algoritmos Sensibles a mayúsculas y minúsculas
Profesor Fabián Lasso
Constantes Son variables que después de habérseles asignado una valor, éste no cambia durante el proceso de aplicación del algoritmo. El nombre de las constantes, generalmente, se escribe en letras mayúsculas. Ejemplo doble PI = 3.141592; flotante PORCENTAJE = 0.25;
Profesor Fabián Lasso
Expresiones Conjunto de valores, variables, constantes y operadores relacionados matemรกticamente o lรณgicamente, asignados a una variable.
Ejemplo: promedio = (n1 + n2 + n3)/3; suma = suma + numero; num1 > num2 nombre_completo = nombre + apellido;
Profesor Fabiรกn Lasso
Asignación Operación que permite determinar y otorgar, a una variable, el valor de una expresión.
El símbolo para esta operación es = Sintaxis variable = expresión;
Profesor Fabián Lasso
FUNCIONES DE SALIDA Entrega resultados, al usuario, mediante dispositivos estándar de salida: pantalla, impresora, parlantes.
Sintaxis IMPRIMA (“El Texto que se va a imprimir”); IMPRIMA (nombre_de_variable); IMPRIMA (“El texto ”+nombre de la variable); El símbolo + se llama operador de concatenación cuando se utiliza para encadenar dos elementos y formar una dato tipo cadena
El símbolo ; se llama separador de instrucciones y se utiliza para separar una sentencia de otra Profesor Fabián Lasso
FUNCIONES DE ENTRADA Asigna datos a espacios de memoria generados por variables. Se puede realizar tal asignaci贸n desde archivos o dispositivos externos tales como el teclado, el l谩piz 贸ptico, etc. Sintaxis LEA (variable);
Profesor Fabi谩n Lasso
Ejemplo:
INICIO ALGORITMO NombreCompleto { /*Este algoritmo captura nombre y el apellido de una persona e imprime el nombre completo */ cadena nombre = “ ”, apellido = “ ”; IMPRIMA (“Digite su nombre: “); LEA(nombre); IMPRIMA (“Digite su apellido: “); LEA (apellido); IMPRIMA (“Su nombre completo es “+nombre + apellido); }FIN ALGORITMO NombreCompleto Digite su nombre:
Digite su nombre: Sarah
Digite su apellido:
Digite su apellido: Delgado
Su nombre completo es: Sarah Delgado
Profesor Fabián Lasso
ESTRUCTURA GENERAL DE UN ALGORITMO Inicio del algoritmo Los comentarios pueden ser insertados en cualquier parte del algoritmo
Declaraciรณn de variables La asignaciรณn de valores hace parte de las instancias del cuerpo del algoritmo La aplicaciรณn de funciones de entrada y salida hace parte de las instancias del cuerpo del algoritmo
Cuerpo del algoritmo La aplicaciรณn de funciones especiales hace parte de las instancias del cuerpo del algoritmo
Final del algoritmo Profesor Fabiรกn Lasso
OPERADORES Son símbolos que establecen una relación aritmética, lógica o relacional entre datos OPERADORES ARITMÉTICOS
Nombre
OPERADORES RELACIONALES
Símbolo
Sintaxis
+
a+b
Nombre
Símbolo
Sintaxis
>
a>b
>=
a>=b
<
a<b
Menor o igual que
<=
a<=b
Igual a
==
a==b
Diferente de
!=
a!=b
Mayor que Suma
Mayor o igual que
Resta
Multiplicación
-
a-b Menor que
*
a*b
División
/
a/b
Módulo
%
a%b
Profesor Fabián Lasso
OPERADORES OPERADORES LÓGICOS
Nombre
Y (AND)
O (OR)
NO (NOT)
Símbolo
&&
JERARQUÍA DE OPERADORES
Sintaxis
Exp1&&Exp2
||
Exp1||Exp2
!
!Exp
1er lugar
()
2do lugar
+ - (unarios)
3er
*/%
4to
+ - (binarios)
5to
< <= > >=
6to
== !=
7to
&&
8vo
!
9no
||
10o
= Profesor Fabián Lasso
Ejercicios – Objetivos Reconocer los conceptos estudiados sobre operadores y jerarquía de operadores Aplicar los conceptos y técnicas estudiados sobre operadores y jerarquía de operadores
Profesor Fabián Lasso
EJERCICIOS Determine el valor final de las variables “totaln”, dados lo valores de las siguientes variables: a = 10, b = “alto”, c = 20, d = verdadero, e = 4, f = „N‟, g = “árbol”, h = 5 1. 2. 3. 4. 5. 6. 7. 8.
total1 = a + h * 3; total2 = 3 * (c + a) / h; total3 = ! d; total4 = g + b; total5 = c < e; total6 = (10 > h) && (! d); total7 = 13 % e; total8 = c + a * 3 – (e + h) * c - a / h
Profesor Fabián Lasso
ESTRUCTURA SECUENCIAL Indica la ejecución consecutiva de acciones. Esta composición no es conmutativa. Ejemplo:
Acción 1
Acción 2
Acción 3
INICIO ALGORITMO Suma { // Iniciación de variables entero dato1=0; entero dato2=0; entero dato3=0, entero suma=0; // Captura de datos IMPRIMA (“Digite el primer número”); LEA (dato1); IMPRIMA (“Digite el segundo número”); LEA (dato2); IMPRIMA (“Digite el tercer número”); LEA (dato3); // Cálculos suma = dato1+ dato2 + dato3; // Salida de datos IMPRIMA (“La suma de “+dato1+” , “+dato2+” , “+dato3+” es “+suma); }FIN ALGORITMO Suma Profesor Fabián Lasso
ESTRUCTURA SECUENCIAL Ejemplo: desarrollar un algoritmo que permita calcular el área de un círculo INICIO ALGORITMO Area_Círculo { // Declaración de variables flotante radio = 0.0; // Captura de datos IMPRIMA (“Digite el valor del radio: ”); LEA (radio); // Salida de datos IMPRIMA (“El área del cículo de radio “+radio+” es “+3.141592*(radio*radio)); } FIN ALGORITMO Area_circulo
INICIO ALGORITMO Area_Círculo { // Declaración de variables flotante radio = 0.0; flotante area = 0.0; flotante PI = 3.1415926535; // Captura de datos IMPRIMA (“Digite el valor del radio: ”); LEA (radio); //Cálculos area = PI * (radio*radio); // Salida de datos IMPRIMA (“El área del cículo de radio “+radio+” es “+area); } FIN ALGORITMO Area_circulo
Profesor Fabián Lasso
PRUEBA DE ESCRITORIO Es una herramienta de verificación del algoritmo mediante la asignación de valores a las especificaciones de entrada y el seguimiento de su comportamiento, bajo las condiciones propuestas por las estructuras que lo componen. INICIO ALGORITMO Cuadrado { // Declaración de variables flotante numero1 = 0.0; flotante cuadrado = 0.0; // Captura de datos IMPRIMA (“Digite el número : ”); LEA (numero1); // Cálculos cuadrado = numero1 * numero1; // Salida de datos IMPRIMA (“El cuadrado de “+numero1+” es “+ cuadrado); } FIN ALGORITMO Cuadrado
INICIO ALGORITMO Cuadrado { numero1
cuadrado
0.0
0.0
Impresión
Digite el número:
1.5
2.25 El cuadrado de 1.5 es 2.25
} FIN ALGORITMO Cuadrado
Profesor Fabián Lasso
Ejercicios – Objetivos
Reconocer los conceptos estudiados, previamente, sobre solución de problemas y algoritmos Aplicar los conceptos y técnicas estudiados, previamente, sobre solución de problemas y algoritmos Aplicar la estructura secuencial en el desarrollo de algoritmos para resolver problemas específicos
Profesor Fabián Lasso
ESTRUCTURA SECUENCIAL Ejercicios 1. Desarrollar una algoritmo que calcule el valor, en centímetros, de una medida dada en metros e imprimirla 2. Calcular el área de un triángulo, conociendo las longitudes de sus lados.
S
p( p
a )( p
b )( p
c ) , donde p es el semiperíme tro del triángulo
3. Desarrollar un algoritmo que capture valores de temperaturas en grados Fahrenheit y los convierta a grados Centígrados. La formula de conversión en la siguiente:
F
C
32
1 .8 4. Escriba un algoritmo que calcule la altura desde la que cae un objeto que tarda t segundos en llegar al suelo. El tiempo lo introduce el usuario por teclado. La formula a utilizar:
a
1
2
gt , siendo
g
9 . 81 m / s
2
2 5. Calcular el salario neto de un trabajador en función del número de horas trabajadas, valor de la hora y considerando unos descuentos fijos al sueldo bruto por concepto de impuestos (15%) Profesor Fabián Lasso