Issuu on Google+

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


Diapositivas Introducción - Estructura Secuencial