Sei sulla pagina 1di 10

Materia: Algoritmos y lenguajes de programacin

UNIDAD 2
2.1 Solucin de problemas
La principal razn para que las personas aprendan lenguajes programacin es utilizar la computadora como una herramienta para la resolucin de problemas. El proceso de solucin de problemas por computadora se divide en dos fases: 1.- Fase de resolucin del problema. 2.- Fase de implementacin (realizacin) en un lenguaje de programacin.

1.-Fase de resolucin del problema. Esta fase incluye, a su vez, el anlisis del problema as como el diseo y posterior verificacin del algoritmo. Anlisis del problema El primer paso para encontrar la solucin de un problema es el anlisis del mismo. Se debe examinar cuidadosamente el problema a fin de obtener una idea clara sobre lo que se solicita y determinar los datos necesarios para conseguirlo. Diseo del algoritmo Un algoritmo puede ser definido como la secuencia ordenada de pasos, sin ambigedades, que conducen a la solucin de un problema dado y expresado en lenguaje natural, por ejemplo el castellano. Para disear un algoritmo se debe comenzar por identificar las tareas ms importantes para resolver el problema y disponerlas en el orden en el que han de ser ejecutadas. Los pasos en esta primera descripcin de actividades debers ser refinados, aadiendo ms detalles a los mismos e incluso, algunos de ellos, pueden requerir un refinamiento adicional antes de que podamos obtener un algoritmo claro, preciso y completo. Este mtodo de diseo de los algoritmos en etapas, yendo de los conceptos generales a los detalles a travs de refinamientos sucesivos, se conoce como mtodo descendente (TOPDOWN). El lenguaje algortmico debe ser independiente de cualquier lenguaje de programacin particular, pero fcilmente traducible a cada uno de ellos. Alcanzar estos objetivos conducirn al empleo de mtodos normalizados para la representacin de algoritmos, tales como los diagramas de flujos, diagrama Nassi - Schneiderman o pseudocdigo.

Verificacin de algoritmos Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que realiza las tareas para las que se ha diseado y producen el resultado correcto y esperado.
Profesor: Lic. Concepcin Nava Arteaga 1

Materia: Algoritmos y lenguajes de programacin

El modo ms normal de comprobar un algoritmo es mediante su ejecucin manual, usando datos significativos que abarquen todo el posible rango de valores y anotando en una hoja de papel las modificaciones que se producen en las diferentes fases hasta la obtencin de resultados. Este proceso se conoce como prueba del algoritmo o corrida de escritorio. 2.-Fase de Implementacin. Una vez que el algoritmo esta diseado, representado grficamente mediante una herramienta de programacin (diagrama de flujo, diagrama N - S o pseudocdigo), y verificado se debe pasar a la fase de codificacin, traduccin del algoritmo a un determinado lenguaje de programacin, que deber ser completada con la ejecucin y comprobacin del programa en la computadora.

2.2 Definicin Algoritmo


Algunas definiciones ms comunes de algoritmo son las siguientes: 1.- Un algoritmo es un conjunto de reglas bien definidas para resolver un problema en un nmero finito de operaciones. 2.- Un algoritmo es una lista de instrucciones para efectuar paso por paso algn proceso. 3.- Un algoritmo puede ser definido como la secuencia ordenada de pasos, sin ambigedades, que conducen a la solucin de un problema dado expresado en lenguaje natural, por ejemplo el castellano. Un algoritmo debe ser: Preciso. Indicando el orden de realizacin de cada uno de los pasos. Definido. Si se sigue el algoritmo varias veces proporcionndole los mismos datos, se deben obtener siempre los mismos resultados. Finito. Al seguir el algoritmo, ste debe terminar en algn momento, es decir, tener un nmero finito de pasos.

En un algoritmo se deben considerar 3 partes: Entrada. Informacin dada al algoritmo. Proceso. Operaciones o clculos necesarios para encontrar la solucin del problema. Salida. Respuestas dadas por el algoritmo o resultados finales de los clculos.

Profesor: Lic. Concepcin Nava Arteaga

Materia: Algoritmos y lenguajes de programacin Como por ejemplo, imagine que desea desarrolla un algoritmo que calcule la superficie de un rectngulo proporcionndole su base y altura. Lo primero que deber hacer es plantearse y contestar a las siguientes preguntas: Especificaciones de entrada

Qu datos son de entrada? Cuntos datos se introducirn? Cuntos son lo datos de entrada vlidos?
Especificaciones de salida

Cules son los datos de salida? Cuntos datos de salida se producirn? Qu precisin tendrn los resultados? Se debe imprimir un encabezado? El algoritmo en el primer diseo se podr presentar con los siguientes pasos:

1. Entrada desde el perifrico de entrada, por ejemplo, el teclado: base y altura.


2. Clculo de la superficie, multiplicando la base por la altura. 3. Salida por pantalla de la base, altura y superficie.

Diagrama de flujo

Los Diagramas de Flujo son un conjunto de smbolos, los cuales se utilizan para representar a los algoritmos; cada smbolo tiene una funcin especfica, los cuales estn unidos por flechas, las cuales se denominan Lneas de Flujo, que indican el orden en que los pasos deben ser ejecutados.

Profesor: Lic. Concepcin Nava Arteaga

Materia: Algoritmos y lenguajes de programacin

2.3 Smbolos.
Los principales smbolos de diagramas de flujo son los siguientes:

SMBOLO

DESCRIPCIN Indica el inicio y el final del diagrama de flujo.

Indica la entrada y salida de datos.

Smbolo de proceso y nos indica la asignacin de un valor en la memoria y/o la ejecucin de una operacin aritmtica.

Smbolo de decisin indica la realizacin de una comparacin de valores.

Conector dentro de pgina. Representa la continuidad del diagrama dentro de la misma pgina.

Conector fuera de pgina. Representa la continuidad del diagrama en otra pgina.

Indica la salida de informacin por impresora.

Indica la salida de informacin en la pantalla o Monitor.

Lneas de flujo o direccin. Indican la Secuencia en que se realizan las operaciones.

Profesor: Lic. Concepcin Nava Arteaga

Materia: Algoritmos y lenguajes de programacin

2.4 Recomendaciones para el diseo de Diagramas de Flujo


Se deben se usar solamente lneas de flujo horizontal y/o vertical. Se debe evitar el cruce de lneas utilizando los conectores. Se deben usar conectores solo cuando sea necesario. No deben quedar lneas de flujo son conectar. Se deben trazar los smbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando el uso de muchas palabras.

2.5 Solucin de Problemas.


Como se mencion anteriormente, para resolver un problema primero se debe elaborar el algoritmo adecuado con un nmero finito de pasos; posteriormente se elabora el diagrama de flujo para se algoritmo. Ejemplo de Algoritmo con su respectivo Diagrama de Flujo.
1.- Elaborar un algoritmo con su respectivo diagrama de flujo que represente la secuencia de pasos necesaria para leer una temperatura en grados centgrados y calcule y escriba su valor en grados kelvin.

Algoritmo

1.- Inicio 2.- Leer (pedir)grados celcius 3.- Realizar la operacin kelvin = celcius + 273.15 4.- Escribir (mostrar) grados kelvin 5.- Fin.

Profesor: Lic. Concepcin Nava Arteaga

Materia: Algoritmos y lenguajes de programacin

Diagrama de flujo

INICIO

Dar grados

kelvin:= grados + 273.15

Los grados celcius son, kelvin

Fin

Profesor: Lic. Concepcin Nava Arteaga

Materia: Algoritmos y lenguajes de programacin

Lenguaje: Es una serie de smbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes. A la transmisin de mensajes se le conoce comnmente como comunicacin. La comunicacin es un proceso complejo que requiere una serie de reglas simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes: * Los mensajes deben correr en un sentido a la vez. * Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicacin y Mensaje. Lenguajes de Programacin Es un conjunto de smbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora. Los lenguajes de programacin tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulacin de textos, lgica/comparacin y almacenamiento/recuperacin. Los lenguajes de programacin se clasifican en: Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traduccin posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en trminos de la unidad de memoria mas pequea el bit (dgito binario 0 o 1). Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en cdigos alfabticos conocidos como mnemotcnicos para las operaciones y direcciones simblicas. Lenguaje de Alto Nivel: Los lenguajes de programacin de alto nivel (BASIC, pascal, cobol, frotran, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensin del programa.

ESTRUCTURAS ALGORITMICAS
Las estructuras de operacin de programas son un grupo de formas de trabajo, que permiten, mediante la manipulacin de variables, realizar ciertos procesos especficos que nos lleven a la solucin de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:

Profesor: Lic. Concepcin Nava Arteaga

Materia: Algoritmos y lenguajes de programacin

Secuenciales

- Asignacin - Entrada - Salida - Simples

Estructuras Condicionales Algoritmicas

- Mltiples

Cclicas

- Hacer para - Hacer mientras - Repetir hasta

Estructuras Secuenciales
La estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma: Inicio Accion1 Accion2 . . AccionN Fin

- Asignacin: La asignacin consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor. La asignacin se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constate a una variable (a=15) Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a=a+1) Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b) De trabajo: Donde puede recibir el resultado de una operacin matemtica que involucre muchas variables (a=c+b*2/4). - Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operacin se representa en un pseudocodigo como sigue: Leer a, b
Profesor: Lic. Concepcin Nava Arteaga 8

Materia: Algoritmos y lenguajes de programacin

Donde a y b son las variables que recibirn los valores Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue: Escribe El resultado es:, R Donde El resultado es: es un mensaje que se desea aparezca y R es una variable que contiene un valor.

Estructuras de Condicionales
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resultado de esta comparacin, se siga un curso de accin dentro del programa. Cabe mencionar que la comparacin se puede hacer contra otra variable o contra una constante, segn se necesite. Existen dos tipos bsicos, las simples y las mltiples. Simples: Las estructuras condicionales simples se les conoce como Tomas de decisin. Estas tomas de decisin tienen la siguiente forma: Si <condicin> entonces Accin(es) Fin-si

Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en funcin del cumplimiento o no de una determinada condicin. Se representa de la siguiente forma: Si <condicin> entonces Accin(es) si no Accin(es) Fin-si

Donde: Si Condicin entonces.. accin(es) si no Indica el comando de comparacin Indica la condicin a evaluar Precede a las acciones a realizar cuando se cumple la condicin Son las acciones a realizar cuando se cumple o no la condicin Precede a las acciones a realizar cuando no se cumple la condicin
9

Profesor: Lic. Concepcin Nava Arteaga

Materia: Algoritmos y lenguajes de programacin

Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o mas acciones.

Mltiples: Las estructuras de comparacin mltiples, son tomas de decisin especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma comn es la siguiente: Si <condicin> entonces Accin(es) si no Si <condicin> entonces Accin(es) si no . . Varias condiciones .

Forma General Casos Variable Op1: Accin(es) Op2: Accin(es) . . OpN: accin Fin-casos

Estructuras Cclicas
Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en funcin de algn dato dentro del programa).Los ciclos se clasifican en: while (hacer), do-while (hacer-mientras) y for (repetir desde)

Profesor: Lic. Concepcin Nava Arteaga

10