Está en la página 1de 47

ALGORITMO, ESTRUCTURAS Y PROGRAMACIN I

UNIDAD 1:Introduccin al Diseo de Algoritmos

Ing. Nelwi Bez Msc.

Algoritmo
El Algoritmo es un proceso para resolver problemas

Fue desarrollado por el matemtico persa Abu Jafar Mohammed Ibn Musa Al Khwarizmi.
Un algoritmo es una frmula para resolver un problema. Un algoritmo es un conjunto de acciones o secuencia de operaciones que ejecutadas en un determinado orden resuelven el problema planteado. Un algoritmo es un proceso metdico que define una serie finita de pasos sencillos y sin ambigedades para la solucin de un problema La programacin consiste en adaptar el algoritmo al ordenador El algoritmo es independiente de la implementacin en algn lenguaje de programacin

Caractersticas de un Algoritmo

Un algoritmo debe:
Estar bien definido.

Ser preciso.
Finito.

Metodologa para Disear Algoritmos


Un algoritmo es una formula para obtener la solucin de un problema. La solucin puede ser planteada de diferentes formas.

El diseo de un algoritmo es un proceso creativo.


No existe un conjunto de reglas que indiquen expresamente cmo escribir un algoritmo en forma correcta

Metodologa para Disear Algoritmos


Los pasos para resolver un problema son:
1) Anlisis del problema.
2) Diseo del algoritmo. 3) Verificacin del algoritmo.

A n l i s i s d e l P r o b l e m a

D i s e o d e l A l g o r i t m o

V e r i f i c a c i n d e l A l g o r i t m o

Metodologa para Disear Algoritmos


En la Fase de Anlisis del Problema se:
Identifica el problema.

Se determina la informacin que se debe producir como salida.


Se identifica la informacin necesaria para resolver el problema.

Se identifican los elementos que se tienen y los elementos que se deben solicitar para resolver el problema.
Se establece el camino a seguir o la solucin que se va implementar.

Metodologa para Disear Algoritmos


En la Fase de Diseo del Algoritmo se:
Se busca la manera ms fcil para simplificar propuesta. la

Se identifican los procesos ms importantes y se colocan en orden ascendente segn su importancia y precedencia (esto sirve como un algoritmo inicial).
El algoritmo inicial se va refinando sucesivamente hasta obtener una solucin ms detallada y fcil de traducir a un lenguaje de programacin

Metodologa para Disear Algoritmos


En la Fase de Verificacin del Algoritmo:
Se verifica que el algoritmo cumpla con los procesos diseados y produzca el resultado esperado.
Se realiza una prueba del algoritmo mediante su ejecucin manual con datos significativos y se comprueba si se obtienen los resultados esperados para la salida

Programas de Computadora
Un programa es un conjunto de instrucciones que, ejecutadas ordenadamente, resuelven un problema. En otras palabras, es la implementacin del algoritmo.
Un programa de computadora es una secuencia de instrucciones que le indican al computador que realice las operaciones especficas para lograr el resultado deseado.

Consiste de uno o ms mdulos o rutinas cada uno de los cuales puede estar compuesto de varios subprogramas.

Definiciones Bsicas
Lenguaje de Mquina. Lenguaje de Bajo Nivel: Ensamblador. Lenguaje de Alto Nivel. Compilar. Base de Datos. Sistema Operativo. Almacenamiento.

Definiciones Bsicas:
Lenguaje de Mquina: Es un lenguaje que puede ser interpretado por los circuitos internos de la mquina.

directamente

Est basado en instrucciones compuestas por secuencias de ceros (0) y unos (1). Ventajas:
- No requiere traduccin, la mquina lo interpreta. - Opera directamente con la mquina. - Puede ser eficiente en el manejo de los recursos.

Desventajas:
- Difcil de aprender, implementar y mantener. - Es nico y particular para cada procesador.

Definiciones Bsicas: Lenguaje de Bajo Nivel


Ensamblador. Es un lenguaje fuente para codificar sentencias simblicas. Hace uso de nemotcnicos para representar instrucciones de mquina. Un ensamblador convierte cada instruccin en instrucciones de lenguaje de mquina. Ventajas:

No es tan complicado como el lenguaje de mquina.

Eficiente en el manejo de recursos.

Desventajas:
Cada procesador tiene su propio juego de instrucciones en ensamblador Debe ser traducido ensamblado.

Definiciones Bsicas: Lenguaje de Alto Nivel


Es un lenguaje orientado al problema o procedimiento.
Son los ms cercanos al lenguaje humano. Ejemplo: COBOL, PL/I, FORTRAN, etc.

Otros son los lenguajes de Programacin Orientado a Objetos (OOPL) : C++, Smalltalk, Java, etc.
Ventajas:

Son independientes del procesador. Son ms fciles de aprender, implementar y mantener. Tiene un carcter genrico.

Desventajas:

Menos eficiente en el manejo de recursos.


Requiere un proceso de traduccin compilacin.

Otras Definiciones Bsicas

Compilar
Es traducir un programa escrito en un lenguaje de alto nivel a lenguaje de mquina, que es la forma en que la computadora puede ejecutar las acciones o instrucciones.

Base de Datos
Es una coleccin de datos completa e integrada para evitar duplicados, que permite recuperar informacin para satisfacer a una amplia variedad de usuarios.

Sistema Operativo
Es una coleccin organizada de software que se usa para ayudar y controlar las operaciones de una computadora.

Almacenamiento
Se refiere a los dispositivos en que los datos se almacenan para posteriormente ser recuperados.

Desarrollar un Programa de Computadora


El programador debe escribir las sentencias o instrucciones del cdigo fuente, en un editor.
El conjunto de sentencias fuente se denomina programa fuente.

El programa fuente es la entrada para el compilador.


El compilador convierte el programa fuente en un conjunto de comandos entendibles por el computador llamado programa ejecutable. Si se encuentra algn error en la sintaxis de los comandos en el programa fuente, el compilador listar cada uno de ellos y no produce el programa ejecutable.

Pasos de un Programa de Computadora


Editor Programa Fuente Compilador

Lista de Programas

Programa Ejecutable

Funcionamiento del Compilador/Enlazador


El compilador crea un programa objeto y un listado del programa objeto. El programa objeto se usa como la entrada al enlazador para realizar lo que se llama el paso de edicin de enlace. El enlazador combina el programa objeto recin creado, con otros archivos objetos ya existentes para producir un programa ejecutable. Los otros archivos objeto generalmente residen en un archivo en disco llamado Librera de Enlace.

Funcionamiento del Compilador / Enlazador

Compilador

Programa fuente

Programa objeto Enlazador

Libreras de Programas Objeto

Programa Ejecutable

Datos e Instrucciones
Un programa de computadora, para que pueda ser ejecutado debe ser cargado en memoria.

La unidad de procesamiento del ordenador slo puede trabajar con los datos e instrucciones que residen en la memoria.

Dato
El dato es cualquier objeto o elemento de informacin que se usa a travs de las diversas operaciones dentro de un programa. Son los elementos sobre los que se opera cuando se efecta una instruccin. Un dato tiene un nombre que lo identifica y distingue de los dems elementos del programa. El nombre no es ms que una forma de referenciar la direccin de memoria que ocupa el dato.

Tipo de Dato
El tipo de dato es una definicin que identifica los valores vlidos para un conjunto de datos y las operaciones que sobre ellos se pueden realizar. Normalmente se puede establecer una relacin de orden sobre los datos de naturaleza escalar o con valores determinsticos. Cada tipo de computador. dato tiene una representacin en el

Para cada tipo de dato el computador reserva una cantidad de memoria para almacenarlo
Todo, absolutamente todo, en la memoria de un computador se representa por medio de cdigo binario.

Clasificacin de los Tipo de Dato


Los tipos de datos se clasifican en: Primitivos: tipos bsicos o simples predefinidos en el sistema. Pueden ser numrico, lgico o carcter. Definidos por el usuario: tipos de datos complejos definidos por el programador.

Tipo de Dato Primitivo Numrico

Los tipos primitivos numricos ms importantes son:

Entero: es un subconjunto finito del conjunto matemtico de los nmeros enteros. No tiene parte decimal.
Real: es un subconjunto finito del conjunto matemtico de los nmeros reales, tienen signo y parte decimal.

Tipo de Dato Primitivo Lgico o Booleano


El tipo primitivo lgico o booleno:
Es aquel que slo puede tomar uno de los dos valores, verdadero o falso (1 0).
Las operaciones lgicas retornan un valor lgico.

Tipo de Dato Caracter


El tipo de dato primitivo carcter:
Es el conjunto finito y ordenado de caracteres que reconoce la computadora: letras, dgitos, caracteres especiales, cdigo ASCII y UNICODE. Los valores usualmente se representan dentro de un par de comillas simples. Se puede usar el cdigo del carcter o su posicin dentro del conjunto de caracteres vlidos que se est usando.

Tipos de Datos

El tipo de dato numrico entero es un subconjunto finito de los nmeros enteros del mundo real. Pueden ser positivos o negativos

Con los tipos enteros pueden utilizarse los calificadores signed y unsigned. Estos calificadores indican si el nmero tiene signo o no. Si se usan solos, sin indicar el tipo de dato se asume int. Por ejemplo, las siguientes declaraciones son equivalentes: unsigned int x; equivale a: unsigned x;

Nmero Tipo de Descripcin de bytes Rango Dato tpico Entero short 2 -32768 a 32767 corto -2147483648 int Entero 4 a +2147483647 -2147483648 Entero long 4 a +2147483647 largo char Carcter 1 -128 a 127

Tipo de Dato

Descripcin

Nmero de bytes tpico 2

Rango

signed short unsigned short signed int unsigned int signed long unsigned long signed char unsigned char

Entero corto Entero corto sin signo Entero Entero sin signo Entero largo Entero largo sin signo Carcter Carcter sin signo

-32768 a 32767

0 a 65535

4 4 4

-2147483648 a +2147483647 0 a 4294967295 -2147483648 a +2147483647

0 a 4294967295

1 1

-128 a 127 0 a 255

Ejemplo:

Tipo de datos Lgicos o bolanos


Son aquellos datos cuyos nicos valores slo pue- den ser: Verdadero (V) o Falso (F), puede encon- trarse, Verdadero (True) o Falso (False). Se utiliza para representar las opciones (si/no) a determina- das condiciones.

Nacionalidad = Venezo- lano (S/N)?

Carcter o Char
Su valor lo comprenden todos los caracteres alfabticos, maysculas y minsculas (A Z), numricos (0 9) y smbolos especiales (#,@,%,&).

Carcter String o cadena


Su valor esta representado por un conjunto de caracteres. Abril Reporte Anual de Fallas Tcnicas 1 de mayo, Da

Tipo de Dato

Tipos de datos numricos reales


El tipo de dato numrico real es un subconjunto finito de los nmeros reales. Pueden ser positivos o negativos.

float

Nmer o de Descripcin Rango bytes tpico Positivos: 3.4E-38 a Real 3.4E38 (Nmero en 4 coma Negativos: -3.4E-38 flotante) a -3.4E38 Real doble(Nme ro en coma flotante de doble precisin) Real doble largo Positivos: 1.7E-308 a 1.7E308 Negativos: -1.7E308 a -1.7E308 Positivos: 3.4E-4932 a 1.1E4932 Negativos: -3.4E4932 a -1.1E4932

double

long double

10

Constantes y Variables

Constantes:
- Son instancias de un tipo de dato que tienen un valor fijo que se le da cuando se define la constante.
- No puede ser modificado durante la ejecucin del programa o corrida del algoritmo.

Variables:
- Son instancias de un tipo de dato, cuyo valor puede cambiar durante la ejecucin del programa o corrida del algoritmo. - No vara su nombre y su tipo. - Variables: - Acumuladoras - Contadoras

Variables
Las variables deben ser definidas o declaradas antes de usarlas. Una variable se declara dando un nombre significativo y tipo. El nombre o identificador, es una palabra que no es propia del lenguaje, la construye y usa el programador basndose en ciertas reglas El nombre, por lo general, tiene que empezar por una letra, el tamao y caracteres permitidos para formar el identificador dependen del lenguaje. En algunos lenguajes, a la variable al declararla se le asigna un valor por defecto, si no se le asigna un valor inicial.

Constantes
Las constantes pueden llevar asociados un nombre, si no lo tienen se llaman literales. El valor de la constante se debe suministrar al definir la constante y no puede cambiar a lo largo de la ejecucin del programa. El tipo de dato de la constante se especifica o no en la declaracin dependiendo del lenguaje. Ejemplo de definicin de una constante: Const PI=3,1416 La ventaja de las constantes con nombre, es que se puede usar el nombre en cualquier lugar del programa y luego el compilador lo sustituye por su valor.

Variables y Constantes en la Memoria

Cuando el compilador consigue una declaracin de una variable o una constante con nombre, automticamente reserva en memoria espacio para guardarla.

El espacio reservado en memoria depende del tipo de dato de la variable o constante.


En esa ubicacin de memoria se guarda el valor asociado a la variable o constante Cuando el programa se ejecuta busca el valor de la variable o constante en esa ubicacin de memoria.

Expresiones: Tipos y Operadores


Una expresin es una combinacin de constantes, variables, signos de operacin, parntesis y nombres especiales de funciones estndares, con un sentido unvoco y definido.
La evaluacin de una expresin da como resultado un nico valor. Toda expresin tiene asociado un tipo que se corresponde con el tipo del valor que devuelve la expresin cuando se evala. Existen dos tipos de expresiones:
Numricas. Lgicas.

Expresiones Numricas: Operadores Aritmticos


Las expresiones numricas son una combinacin de variables y constantes numricas con operadores aritmticos, que al evaluarse devuelven un valor numrico.

Los operadores aritmticos se utilizan en las expresiones numricas.


Algunos de los operadores aritmticos ms usados son:
+ * / Suma Resta Multiplicacin Divisin

Otros Operadores Aritmticos


Otros operadores aritmticos soportados en algunos lenguajes de programacin son: - Resto: devuelve el resto de una divisin entera. - Divisin entera: devuelve el cociente de una divisin en la que no se consideran los decimales. - Potencia: devuelve el valor de una base elevada a una potencia dada. Todos los operadores estudiados son binarios, utilizan dos operandos y el operador se sita en medio de ambos operandos.

Operadores Unarios
Los operadores unarios son un tipo de operador que slo necesitan de un operando. Algunos de los operadores unarios ms comunes son:
- Signo negativo: devuelve el valor actual del operando multiplicado por menos uno (-1).
- Decremento: devuelve el valor actual del operador decrementado en una unidad.

- Incremento: devuelve el valor actual del operador incrementado en una unidad.

Evaluacin de Expresiones
El resultado que retorna de la evaluacin de una expresin depende del orden en que se evalen los operadores. Ejemplo:
Sea la siguiente expresin aritmtica: 2 + 3 * 2 + 3

Si se evala en el orden de aparicin de los operadores : (((2 + 3) * 2) + 3) El resultado = 13 Si se evala primero la suma (+) y luego la multiplicacin (*): (2 + 3) * (2 + 3) El resultado = 25

Si se evala primero la multiplicacin y luego la suma: 2 + (3 * 2) + 3 El resultado = 11

Reglas de Precedencia en las Expresiones


Para evaluar las expresiones, cada operador tiene una prioridad o regla de precedencia para su evaluacin dentro de la expresin.

Cada lenguaje puede establecer sus propias reglas de prioridad o precedencia de operadores.
El orden de precedencia ms usado para los operadores aritmticos bsicos, es:
123^ *, /, div y mod + y

Se evala primero el operador con mayor prioridad.

Entre dos operadores que tienen la misma precedencia se usa la regla de la asociatividad por la izquierda.
Se pueden utilizar los parntesis () para cambiar el orden en que se evalan los operadores de una expresin aritmtica.

Expresiones Lgicas: Operadores Relacionales y Lgicos


Una expresin lgica es aquella que slo puede devolver uno de dos valores: Verdadero o Falso.
Los operadores que pueden aparecer en una expresin lgica son de dos tipos: lgicos o relacionales.

Los operadores lgicos slo trabajan sobre expresiones o datos que retornan valores booleanos.
Los operadores relacionales trabajan con expresiones numricas para realizar comparaciones que retornan un valor booleano. Las expresiones combinan tanto los operadores lgicos como relacionales, se evala ms de una condicin o relacin por medio los de operadores lgicos

Operadores Relacionales

Los operadores relacionales ms utilizados son: < menor que

>
= <>

mayor que
igualdad (en C/C++: ==) diferente (en C/C++: !=)

menor o igual que


mayor o igual que

Ejercicio sobre Expresiones Lgicas


Ejercicio: Evale las siguientes expresiones si se le asigna a:

la variable x el valor de 2 la variable y el valor de 4


1. 2. 3. 4. x == y x <> y y>x x >= y

Operadores Lgicos
Los operadores lgicos se utilizan para evaluar ms de una condicin al mismo tiempo. Los operadores lgicos ms utilizados son: 1. Y (and, &&) 2. O (or, !!) 3. No (not, ~, !) 4. O exclusivo (xor, ^)

El No es un operador unario todos los dems son operadores binarios.

Funciones Incorporadas
Las funciones incorporadas son funciones que se incorporan al lenguaje y que son diferentes de las operaciones bsicas. Se consideran estndar en la mayora de herramientas y lenguajes de programacin. Son dependientes del lenguaje y normalmente se encuentran en libreras externas que se pueden incluir en un programa.

Las libreras ms comunes son las libreras de soporte matemtico y las de entrada / salida.
La sintaxis y el nombre de las funciones puede variar de un lenguaje a otro, pero la funcionalidad suele mantenerse entre las diversas herramientas de programacin.

Uso de las Funciones Incorporadas


Lenguaje Sentencia Ejemplo

Pascal
C y C++ Java

use
include import

use conio;
#include <iostream> Import java.io.*;

Operacin de Asignacin
La operacin de asignacin consiste en atribuir un valor a una variable. El valor asignado es una expresin, una constante u otra variable

Lenguaje Operador Ejemplo Pascal := var := 5 + 3; C y C++ = var = 5 + 3; Java = var = Math.sin(90.0);

Var: representa la variable a la que se le asigna el valor dado en la expresin a la derecha del operador de asignacin.

Fases de la Operacin de Asignacin


La operacin de asignacin se realiza en 2 fases:
Se evala la expresin de la parte derecha de la asignacin y se obtiene un nico valor. Se asigna ese valor a la variable de la parte izquierda.

En la parte izquierda de la operacin de asignacin slo puede haber una variable y al asignarle el valor pierde el valor anterior.

Si la variable de la parte izquierda participa en la expresin, se evala primero la expresin antes de realizar la asignacin. Ejemplo x = x + 1.
El tipo de dato resultante despus de evaluar la expresin (parte derecha), tiene que ser del mismo tipo de dato o un tipo compatible con el de la variable a la cual se le va a asignar el resultado de la operacin.

Recomendaciones al Programar
Para minimizar la ocurrencia de errores al programar se recomienda:
Reutilizar No No

cdigo bueno.

asumir los datos de entrada como vlidos.

asumir que los datos de entrada estn en la secuencia correcta. los tamaos de los campos de datos de modo que puedan contener en el campo el valor actual ms grande. comentarios en los programas. programas legibles y fciles de entender.

Disear

Usar

Desarrollar