Unidad 1 algoritmos y programas

Post on 11-Apr-2017

63 views 10 download

Transcript of Unidad 1 algoritmos y programas

INSTITUTO TECNOLÓGICO SUPERIOR “ALOASÍ”

Carrera de Tecnología en Análisis de Sistemas

Quito - Ecuador

Email:

robertocamana@yahoo.es

4 de Noviembre de 2016

Roberto Camana

Resolución de prob.

Programación Estructurada III

Algoritmos y Programas

Unidad 1

Los datos Herra. de prog. Estructura prog.

• Resolución de problemas por computadoras

• Fases de resolución del problema

– Análisis del problema

– Diseño del algoritmo

– Verificación del algoritmo

– Ejemplos de aplicación

• Datos

– Constantes

– Variables

– Expresiones

– Funciones

– Reglas para la construcción de identificadores

– Ejemplos de aplicación

• Bibliografía

Presentación: Programa

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Resolución de prob.

Uso de la computadora

Las

personas

necesitan

aprender

Lenguaje de

programación

Por

intermedio de

la

computadora

Para la

resolución

de

problemas

Los datos Herra. de prog. Estructura prog.

¿Cómo se entienden los procesos?

Resolución de prob.

Análisis

del

problema

Diseño del

algoritmo

Verificación

del

algoritmo

Codificación

del

algoritmo

Ejecución

del

programa

Verificación

del

programa

Los datos Herra. de prog. Estructura prog.

Fases de Resolución del Problema

Resolución de prob.

1. Análisis del Problema

2. Diseño del Algoritmo

3. Verificación de

Algoritmos

Los datos Herra. de prog. Estructura prog.

Fases: 1. Análisis del Problema. ¿Cómo lo logro?

Resolución de prob.

Primer Paso

Examinación cuidadosa del problema

Para obtener una idea clara, sobre lo que se solicita

Determinar los datos necesarios

Datos de salida = resultados

Los datos Herra. de prog. Estructura prog.

Fase: 1. Análisis del Problema

Resolución de prob.

Ejemplo de un procedimiento paso a paso

Tarea: Hacer una llamada por teléfono publico.

Pasos:

1. Ir a un teléfono.

2. Levantar el auricular del teléfono.

3. Esperar el tono.

4. Sacar monedas exactas para hacer la llamada.

5. Meter las monedas en la ranura.

6. Marcar el número.

Los datos Herra. de prog. Estructura prog.

Fase: 1. Análisis del Problema

Enunciado:

• Definición clara y precisa

• Debe entenderse claramente lo que se solicita

Problema:

Calcular el sueldo mensual de un trabajador conociendo su sueldo básico y

bono por comisión.

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Fase: 1. Análisis del Problema

¿Cuál es el método a usar?

Inicio

Leer Sueldo básico

Leer bono por comisión

Calcular Sueldo mensual = Sueldo básico + Bono por comisión

Imprimir Sueldo mensual

Fin

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Fase: 2. Diseño del Algoritmo

• Desarrollo del algoritmo en base a la etapa de análisis

• Representación mediante el diagrama de flujo o el pseudocódigo

Resolución de prob.

inicio

sueldo_basico

bono_comision

Sueldo_mensual =

sueldo_basico +

bono_comision

fin

Sueldo_mensual

Los datos Herra. de prog. Estructura prog.

Fase: 2. Diseño del Algoritmo

En un algoritmo se deben considerar tres partes:

• Entrada: Información dada al algoritmo.

• Proceso: Operaciones o cálculos necesarios para encontrar la solución al

problema.

• Salida: Respuestas dadas por el algoritmo o resultados finales de los

cálculos.

Ejemplo:

Desarrollar un algoritmo que calcule la superficie de una rectángulo

proporcionándole su base y altura

PREGUNTAS

• Obtener el NOMBRE del capitán del equipo MAVORT

• Cuantos partidos ha jugado el equipo MAVORT en su campo?

• Cuantos minutos ha jugado el capitán del equipo ESPOL durante toda la liga?.

• Cual ha sido el resultado del partido ESPOL – IMPORTADORA ALVARADO,

jugado en el campo del equipo MAVORT?.

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Fase: 2. Diseño del Algoritmo

Un algoritmo puede ser definido como la secuencia ordenada de pasos,

sin ambigüedades, que conducen a la solución de un problema dado y

expresado en lenguaje natural.

Todo algoritmo debe ser:

• Preciso: Indicando el orden de realización de cada uno de los pasos.

• Definido: Si se sigue el algoritmo varias veces proporcionándole los

mismos datos, se debe obtener siempre los mismos resultados.

• Finito: Al seguir el algoritmo, éste deber terminar en algún momento.

PREGUNTAS

• Obtener el NOMBRE del capitán del equipo MAVORT

• Cuantos partidos ha jugado el equipo MAVORT en su campo?

• Cuantos minutos ha jugado el capitán del equipo ESPOL durante toda la liga?.

• Cual ha sido el resultado del partido ESPOL – IMPORTADORA ALVARADO,

jugado en el campo del equipo MAVORT?.

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Fase: 3. Verificación de Algoritmo

Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que

realiza las tareas para las que se ha diseñado y produce el resultado correcto y

esperado

¿Pero cómo comprobar un algoritmo?

• Es mediante una ejecución manual (prueba de escritorio)

• Anotando en una hoja de papel, todos los pasos del algoritmo

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Ejemplos de aplicación

1. Desarrollar un algoritmo que calcule la superficie de una rectángulo proporcionándole su base y altura.

2. Realice un algoritmo que permita realizar las 4 operaciones matemáticas.

3. Realizar un algoritmo, dado tres números, determine cual es el mayor de ellos.

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Sus tipos

¿Qué son?

Se le conoce como objetos de la información que trabaja un programa o

algoritmo. Se le conoce como un rango que toma valores durante el

programa.

¿Para qué sirven?

Un tipo de dato determina la naturaleza del conjunto de valores que puede

tomar una variable.

Clasificarse en:

Resolución de prob. Los datos

Tipos de datos

Numéricos

Enteros Reales

Caracteres Lógicos

Herra. de prog. Estructura prog.

Tipo de Dato Numérico: Entero

Resolución de prob. Los datos

Características:

• Son números que no tienen fracciones o decimales.

• Pueden ser negativos o positivos.

• Se almacenan internamente en 2 o 4 bytes de memoria.

• Ejemplo: 5, 6, -15, 13456, -12122, etc.

Herra. de prog. Estructura prog.

Tipo de Dato Numérico: Real

Resolución de prob. Los datos

Características:

• Contienen un coma (punto) decimal, tal como 3.1416, -8.12, etc.

• Pueden ser positivos o negativos.

• La representación números muy grandes se emplea notación de punto

flotante como notación científica, por ejemplo el número

456529600000000000000, en notación científica, se representa por

4.565296 x 10 a la 19 o 4.5655296 E+19

• Se almacena internamente, números reales de punto flotante: 4 bytes.

Herra. de prog. Estructura prog.

Tipo de Dato Carácter

Resolución de prob. Los datos

Características:

• Su almacenamiento interno se hace en “palabras” de 8 bits (1 byte).

• Representa valores enteros entre -128 a +127

• Ejemplo de tipo carácter son: ‘H’, ‘h’, ‘9’, ‘%’, ‘a’, ‘<‘, etc.

• Una cadena de caracteres o string, es una secuencia ordenada de

datos tipo carácter delimitados por una comilla simple o apóstrofe, tanto

al inicio como al final.

• Ejemplo de cadenas de caracteres son: ‘Hola Mundo’, ‘0998176876’, ’17

de agosto de 1973’, etc.

Herra. de prog. Estructura prog.

Tipo de Dato Lógico

Resolución de prob. Los datos

Características:

• Toman dos valores, verdadero (true) y falso (falso).

• En Pascal, toman dos valores enteros, 1 verdadero y 0 falso.

• Es muy útil cuando se evalúan condiciones dentro de un algoritmo o

dentro de un programa.

Herra. de prog. Estructura prog.

¿Qué es una variable?

Resolución de prob. Los datos

Es un dato que puede cambiar durante la ejecución del programa.

¿Donde se encuentran almacenados?

Este se encuentra almacenado en la memoria y puede ser utilizado las

veces que fueran necesario.

Condición:

• Los diferentes tipos de variables, son enteros, reales, carácter y

cadenas, toman cierto tipos de datos y que corresponden cierto tipo de

datos.

• Contraindicado un diferente tipo de datos se producirá una error.

Herra. de prog. Estructura prog.

Componentes de una variable

Resolución de prob. Los datos

Toda variable utilizada en un algoritmo o en un programa de computación

se compone de tres partes esenciales:

• Nombre

• Tipo

• Valor

El nombre de una variable (identificador):

• Es el conjunto de caracteres permitidos, letras, número, con los cuales

se denomina a una variable dentro de un algoritmo o de un programa.

• El nombre de una variable debe cumplir con las siguientes reglas:

• Debe comenzar con una letra.

• Puede contener letras, números o el carácter subrayado (_).

• No debe coincidir con el nombre de alguna palabra reservada.

• La máxima longitud de un nombre depende del compilador, en

Pascal el límite es de 80 caracteres.

Herra. de prog. Estructura prog.

Componentes de una variable

Resolución de prob. Los datos

El tipo de una variable:

• Permite describir el uso que se dará a la misma dentro de un algoritmo o

de un programa.

• Dependiendo del lenguaje de programación, existen diferentes tipos de

variables.

• Para el uso de tipo de variable, se debe considerar las siguientes reglas:

• Si se intenta asignar un valor de un tipo a una variable de otro tipo se

producirá un error de tipo.

• Cuando las variables son utilizadas en expresiones debe ser de un

mismo tipo.

Herra. de prog. Estructura prog.

Componentes de una variable

Resolución de prob. Los datos

El Valor de una Variable:

• Es el contenido que tiene asociado en un determinado momento de la

ejecución de un programa o desarrollo de un algoritmo.

• El valor de una variable depende del tipo de la misma, así por ejemplo

una variables de tipo entera podrá almacenar solo valores enteros

mientras que una variable de tipo booleano podrá almacenar los valores

VERDADERO o FALSO.

Herra. de prog. Estructura prog.

¿Qué es una constante?

• Es un datos que no cambia en la ejecución de un programa, es decir son

valores fijos y no son modificados por otros usuarios.

• Este tipo de constantes, también pueden ser de tipo entero, real, carácter y cadena.

Tipos de constantes:

Resolución de prob. Los datos

Tipo de constante Descripción

Entero Son dígitos precedidos por el signo + O -. Ejemplo: 321, -322

Real Son dígitos con punto adelante, al final o en medio y seguido por un exponente. Ejemplo: 21.212, 0.32, 32.2e-05, 9.2e03

Carácter Es una constante, es decir código ASCII. Ejemplo: ‘x’, ‘y’, ‘z’

Cadena Secuencia de caracteres. Ejemplo: “897”, “Luis palacios”

Herra. de prog. Estructura prog.

Operadores

Los operadores fundamentales son: • Aritméticos

• Relacionales

• Lógicos

• Asignación ¿Qué hacen los operadores? Permiten relacionar dos o mas datos de una expresión y proporcionar el resultado de la operación

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Operadores aritméticos

Características:

• Es una agrupación válida de operandos (variables y/o constantes) que se

encuentran relacionados entre si por medio de operadores aritméticos.

• Se usan en número enteros y reales.

Operador Operación Tipos de operandos Tipo de resultado

- Resta Entero o real Entero o real

+ Suma Entero o real Entero o real

* Multiplicación Entero o real Entero o real

/ División Real Real

Mod Módulo (resto) Entero Entero

Div División entera Entero Entero

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Operadores relacionales

Características:

• Describe relación entre dos valores en una expresión.

• Su resultados es de tipo lógico o booleano

Pseudocódigo Pascal Significado

> > mayor que

< < menor que

= = igual que

>= > = mayor o igual que

<= < = menor o igual que

<> <> destino a

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Operadores relacionales

Ejemplo de operadores relacionales

Nota: En el ejemplo A mayúscula y a minúscula, son diferentes puesto que

en código ASCII, la primera le corresponde a 65 y la segunda 97.

Pseudocódigo Pascal Resultado Valor binario

´x´ < ´y´ ´x´ < ´y´ V 1

´A´ = ´a´ ´A´ = ´a´ F 0

8 <> 4.2 8 <> 4.2 F 0

-143 < 22 -143 < 22 V 1

8.82 > 2.98 8.82 > 2.98 F 0

´A´ < ´a´ ´A´ < ´a´ V 1

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Operadores lógicos

Características:

• Son expresiones lógicas para formar expresiones más complejas.

Pseudocódigo Pascal

NO not

O or

Y and

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Operadores lógicos

Ejemplos de operadores lógicos

Pseudocódigo Pascal Resultado Valor binario

5>7 5>7 V 1

9<2 9<2 F 0

8>2 y 9<2 8>2 and 9<2 F 0

8<2 o 9>2 8<2 or 9>2 V 1

not 4 > 2 not (4 > 2) F 0

not 8 < 3 not (8 < 3) V 1

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Funciones estándar del lenguaje Pascal

Función Descripción Tipo del argumento

Tipo del valor devuelto

abs Devuelve el valor absoluto int/real int/real

arctan Devuelve el inverso tangente int., real real

chr Devuelve el carácter asociado a un valor entero int char

cos Devuelve el coseno int, real real

exp Devuelve el exponencial de una cantidad int, real real

In Devuelve el logaritmo natural de un número int, real real

odd Permite saber si un número es par o impar int boolean

ord Devuelve el ordinal de un caracter char, boolean int

pred Devuelve el predecesor int /char int /char

round Redondea la parte decimal de un número real int

sin Devuelve el seno int., real real

sqr Devuelve el cuadros de un número int, real real

sqrt Devuelve al raíz cuadrada de un número int, real real

trunc Devuelve la parte decimal de un número real int

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Prioridad de los Operadores

Características:

• Cuando se utilizan en alguna expresión mas de un operador, se evalúan conforme

a una prioridad establecida por Pascal.

• Se opera en orden de evaluación para evitar errores en nuestros programas.

• El orden que se ejecutan las operaciones son:

• *, /, DIV, MOD primeros en evaluarse, todos tienen igual prioridad.

• +, - últimos en evaluarse, ambos tienen igual prioridad.

• En caso de existir paréntesis en la expresión de evaluará primero el

contenido de los paréntesis antes que otros operadores.

• Si existen dos operadores de igual prioridad se evaluará de izquierda a

derecha.

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Prioridad de los Operadores

Ejercicios de expresiones aritméticas:

A continuación, se producen a obtener el resultado de las siguientes

expresiones aritméticas.

a) 3 + 6 * 14

• Primero se efectúa la multiplicación entre 6 y 14, obteniéndose la

expresión 3 + 84.

• Finalmente se realiza la suma entre 3 y 84, obteniéndose 87.

b) -4 *7 +2 ^ 2 / 4 – 5 + 2

c) 45 / (56 – 8 div (10 mod 3) + 5)

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Métodos: Diagrama N-S (Nassi – Scheneiderman)

Características:

• Son utilizadas en la programación estructurada.

• Posee gráficas propias de diagrama de flujo y lingüísticas propias de los

pseudocódigos.

• Tienen cajas contiguas que se leerán de arriba hacia abajo.

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Métodos: Diagrama N-S (Nassi – Scheneiderman)

El algoritmo que lee una temperatura en grados Celsius y calcula y escribe

su valor en grados Kelvin se puede representar mediante el siguiente

diagrama N-S:

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Métodos: Pseudocódigo

Características:

• Utiliza palabras reservadas y exige la indentación (sangría) al margen

izquierdo.

• El pseudocódigo, comienza con la palabra inicio y terminará con la

palabra fin.

• Para introducir un valor o serie de valores desde el dispositivo estándar y

almacenarlos en una o varias variables leer (<lista_de_variables>).

• Para imprimir en el dispositivo estándar de salida una o varias

expresiones emplearemos escribir (<lista_de_expresiones>).

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Métodos: Pseudocódigo

Características:

• Las distintas estructuras se representarán de la siguiente forma:

Decisión simple: si <condición> entonces

<acciones1>

fin_si

Decisión doble: si <condición> entonces

<acciones1>

si_no

<acciones2>

fin_si

Decisión múltiple: según sea <expresión_ordinal> hacer

<lista_de_valores_ordinales>: <acciones1>

[si_no //el corchete indica opcionalidad

<accionesN>]

fin_según

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Métodos: Pseudocódigo

Repetitivas: mientras <condición> hacer

<acciones>

fin_mientras

repetir

<acciones>

hasta_que <condición>

desde <variables> <- <v-inicial> hasta <v_final>

[incremento | decremento <incremento>] hacer

<acciones>

fin_desde

Inicio, fin, leer, escribir y las palabras que aparecen en negrita en las distintas

estructuras se consideran palabras reservadas y no deberán utilizarse en

su lugar otras similares.

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Ejercicios resueltos

¿Cuál de los siguientes datos son válidos para procesar por una

computadora?

a) 3.14159

b) 0.0014

c) 12345.0

d) 15.0E-04

e) 2.234E2

f) 12E+6

g) 1.1E-3

h) -15E-0.4

i) 12.5E.3

j) .123E4

k) 5A4.14

l) A1.E04

Resolución de prob. Los datos Herra. de prog.

Válido

Válido

Válido

Válido

Válido

Válido

Válido

No Válido

No Válido

Válido

Válido

Válido

Estructura prog.

Escritura de algoritmos

Características:

• Partimos de el pseudocódigo, este debe ser claro y preciso, para su

posterior codificación.

• Una algoritmo, tiene las siguientes pastes: La cabecera y el cuerpo del

algoritmo.

• La cabecera, tiene el nombre del algoritmo.

• El cuerpo del algoritmo, tiene el bloque de declaraciones (variables y

constantes) y el bloque de instrucciones (acciones a ejecutar).

const

<nombre_de_constate_1> = <valor_1>

var

<tipo_de_dato1>: <lista_de_variables>

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Escritura de algoritmos

Características:

• De lectura: Toma uno o varios valores desde un dispositivo de entrada y

los almacena en las variables que aparecen listadas en la propia

instrucción.

leer (<lista_de_variables>)

• De escritura: Envía datos a un dispositivo. Cuando los datos los

enviemos al dispositivo estándar en formato para la instrucción será:

escribir (<lista_de_expresiones>)

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Contadores

Características:

• Es una variable cuyo valor se incrementa o decrementa en una cantidad

constante.

• Los contadores se utilizan en estructuras repetitivas, con la finalidad

contar sucesos o acciones.

• Los contadores debe realizar una operación de inicialización y

posteriormente, las sucesivas de incremento o decremento del contador.

<nombre_del _contador> <valor_de_inicialización>

• En cuanto al incremento o decremento del contador, puesto que la

operación de asignación admite que la variable que recibe el valor final de

una expresión intervenga en la misma:

<nombre_del _contador> <nombre_del_contador> + <valor_constante>

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Acumuladores e Interruptores

Acumuladores:

Son variables cuyo valor se incrementa o decrementa en una cantidad

variable. Necesitan operaciones de:

• Inicialización:

<nombre_del _contador> <valor_de_inicialización>

• Acumulación:

<nombre_del _contador> <nombre_del_contador> + <valor_constante>

Interruptores:

Un interruptor, bandera o switch es una variable que puede tomas valores

verdad y falso a lo largo de la ejecución de un programa, comunicando así

información de una parte a otra del mismo. Pueden ser utilizados para el

control de bucles.

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Estilo recomendado para la escritura de algoritmos

Como se dijo anteriormente, la herramienta de escritura de algoritmos mas

adecuada es el pseudocódigo, con el siguiente formato:

algoritmo <nombre_algoritmo>

const

<nombre_de_constante1> = valor1

var

<tipo_de_dato1>: <nombre_de _variable1> [nombre_variable2>, …..]

inicio

<acción1>

<acción2>

<acciónN>

fin

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Ejercicios

• Se desea calcular la suma de los números pares e impares comprendidos

entre 1 y 200.

• Leer una serie de número enteros positivos distintos de 0 (el último

número de la serie debe ser el -99) obtener el número mayor.

• Calcular y visualizar la suma y el producto de los números pares

comprendidos entre 20 y 400.

• Se trata de escribir el algoritmo que permita emitir la factura

correspondiente a una compra de un artículo determinado del que se

adquieren una o varias unidades. El IVA a aplicar es del 12% y si el precio

bruto (precio de venta + IVA) es mayor de 50.000 dólares, se aplicará un

descuento de 5%.

Resolución de prob. Los datos Herra. de prog. Estructura prog.

¿Preguntas?

•Dudas

•Inquietudes

•Quejas

•Preguntas

•Y demás cosas para hablar…

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Bibliografía

• Weiss, Mark Allen: "Estructuras de datos y algoritmos", Addison-Wesley Iberoamericana,

1995.

• Kruse, Robert Leroy; Tondon, Clovis L.; Leung, Bruce P: "Data structures and program

design in C'', Prentice-Hall, 1997.

• Brassard, Gilles; Bratley, Paul: "Algorithmics: theory and practice", Prentice-Hall, 1988.

• Sedgewick, Robert: "Algorithms in C++", Addison-Wesley, 1992.

• Tenenbaum, Aaron M.; Langsam, Yedidyah; Augenstein, Moshe J.: "Estructuras de datos en

C", Prentice-Hall Hispanoamericana, 1993.

• Kernighan, Brian W.; Ritchie, Dennis M.: "El lenguaje de programación C'', Prentice-Hall

Hispanoamericana, 1991.

Tutoriales:

• Introducción a la programación con C, Universidad de Jaume, España. Disponible en:

http://www.uji.es/bin/publ/edicions/c.pdf Acceso: Octubre de 2015

• Introducción al lenguaje C, José Miguel Santos Espino. Disponible en:

http://www.algoritmos7541-rw.tk/bibliografia Acceso: Octubre de 2015

• Programación en C, un wikilibro en español. Disponible en:

https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C Acceso: Noviembre de 2015

Resolución de prob. Los datos Herra. de prog. Estructura prog.

Próxima clase…

•Unidad 2: De Pseudocódigo a Pascal

Introducción

Estructura básica de un programa en Pascal

Palabras reservadas del lenguaje Pascal

Compilación de un programa en lenguaje Pascal

Tipos de datos básicos en Pascal

Operadores en Pascal

Programa Pascal

Palabras reservadas y estructura

Declaración de variables, de constantes

Equivalencias entre estructuras de Pseudocódigo y las de Pascal

Ejercicios propuestos

Resolución de prob. Los datos Herra. de prog. Estructura prog.