Principios de Programación
Principios de Programación
Principios de Programación
1.1 Introduccin Los sistemas modernos de computacin consisten en una gran conjuncin de elementos de circuitos (hardware) y de programacin (software) que han sido diseados para proporcionar a la computacin un ambiente productivo y hasta cierta medida agradable.
El trmino Sistema de Cmputo se utiliza para sealar lo que el usuario emplea, en lugar del trmino Computadora. En los primeros aos de la computacin, los usuarios del sistema deban interactuar ms estrechamente con el hardware real que lo que es hoy necesario, muchas funciones que deban realizar los usuarios mismos se manejan ahora por software mediante Sistemas Operativos. El sistema operativo crea un ambiente en el cual los usuarios pueden preparar programas y ejecutarlos sin tener que entrar en los detalles del hardware del sistema. Para satisfacer el crecimiento de la demanda de medios de computacin, es que se ha desarrollado la multiprogramacin, en la cual varios usuarios emplean el sistema de forma simultnea, como Windows por ejemplo. Un trmino fundamental de esta materia es el Programa, el cual es simplemente una secuencia de instrucciones que orienta a la Unidad de Control de Procesamiento (CPU) en el desarrollo de los clculos, el cual debe expresarse de forma que sea entendido por el CPU. Un CPU slo puede entender instrucciones que estn expresadas en trminos de su lenguaje mquina, pero esto se explicar ms adelante.
Las caractersticas fundamentales que debe cumplir todo algoritmo son : Debe ser preciso. e indicar el orden de realizacin de cada paso. Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento ; o sea debe tener un nmero finito de pasos. La definicin de un algoritmo debe describir tres partes : Entrada, Proceso y Salida.
1.4 Algoritmos Cotidianos Se refiere a todos aqullos algoritmos que nos ayudan a resolver problemas diarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una metodologa para resolverlos.
Algunos ejemplos son : Disear un algoritmo para cambiar una llanta a un coche. Inicio. Traer gato. Levantar el coche con el gato. Aflojar tornillos de las llantas. Sacar los tornillos de las llantas. Quitar la llanta. Poner la llanta de repuesto. Poner los tornillos. Apretar los tornillos. Bajar el gato. Fin Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su banco de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido, en caso contrario rechazar el pedido. Pasos del algoritmo : Inicio Leer el pedido Examinar ficha del cliente Si el cliente es solvente aceptar pedido, en caso contrario rechazar Fin Determinar el mayor de tres nmeros enteros. Pasos del algoritmo :
pedido
1.- Comparar el primero y el segundo entero, deduciendo cul es el 2.- Comparar el mayor anterior con el tercero y deducir cul es el Este ser el resultado.
mayor. mayor.
Los pasos anteriores se pueden descomponer en otros pasos ms simples en los que se denomina refinamiento del algoritmo. 1.- Obtener el primer nmero (entrada), denominado NUM1 2.- Obtener el segundo nmero (entrada), denominado NUM2 3.- Compara NUM1 con NUM2 y seleccionar el mayor ; si los dos enteros son iguales, seleccionar NUM1. Llamar a este nmero MAYOR. 4.- Obtener el tercer nmero (entrada), y se denomina NUM3. 5.- Compara MAYOR con NUM3 y seleccionar el mayor ; si los dos enteros son iguales, seleccionar el MAYOR. Denominar a este nmero MAYOR. 6.- Presentar el valor MAYOR (salida). 7.- Fin
1.5 Definicin de Lenguajes Algortmicos Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten describir los pasos con mayor o menor detalle.
La clasificacin de los lenguajes para algoritmos puede enunciarse de la siguiente manera : Lenguaje Natural. Lenguaje de Diagrama de Flujo. Lenguaje Natural de Programacin. Lenguaje de Programacin de Algoritmos. Lenguaje Natural Es aqul que describe en espaol, para nuestro caso, los pasos a seguir utilizando un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan trminos especializados de una determinada ciencia, profesin o grupo. Lenguaje de Diagrama de Flujo Es aqul que se vale de diversos smbolos para representar las ideas o acciones a desarrollar. Es til para organizar las acciones o pasos de un algoritmo pero requiere de etapas posteriores para implementarse en un sistema de cmputo. Lenguaje Natural de Programacin Son aqullos que estn orientados a la solucin de problemas que se definen de una manera precisa. Generalmente son aplicados para la elaboracin de frmulas o mtodos cientficos.
Tiene las siguientes caractersticas : Evita la ambigedad (algo confuso que se puede interpretar de varias maneras). Son precisos y bien definidos. Utilizan trminos familiares al sentido comn. Elimina instrucciones innecesarias. Lenguaje de Programacin de Algoritmos Es aqul que se utiliza para introducir en la computadora un algoritmo especfico. Se les conoce tambin como Lenguaje de Programacin. Lenguaje de Programacin : Es un conjunto de palabras, smbolos y reglas sintcticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema. Los lenguajes de programacin pueden clasificarse por diversos criterios, siendo el ms comn su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles internos de la mquina. Los principales tipos de lenguajes utilizados son tres : Lenguaje Mquina. Lenguaje de bajo Nivel (ensamblador). Lenguajes de Alto Nivel.
Lenguaje Mquina
Son aqullos que estn escritos en lenguajes directamente inteligibles por la mquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres de dgitos 0 y 1) que especifican una operacin y las posiciones (direccin) de memoria implicadas en la operacin se denominan instrucciones de mquina o cdigo mquina. El cdigo mquina es el conocido cdigo binario. Las instrucciones en lenguaje mquina dependen del hardware de la computadora y, por tanto, diferirn de una computadora a otra. Ventajas del Lenguaje Mquina Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traduccin posterior, lo que supone una velocidad de ejecucin superior a cualquier otro lenguaje de programacin. Desventajas del Lenguaje Mquina Dificultad y lentitud en la codificacin. Poca fiabilidad. Gran dificultad para verificar y poner a punto los programas. Los programas solo son ejecutables en el mismo procesador (CPU). En la actualidad, las desventajas superan a las ventajas, lo que hace prcticamente no recomendables a los lenguajes mquinas.
Lenguajes de Bajo Nivel Son ms fciles de utilizar que los lenguajes mquina, pero al igual que ellos, dependen de la mquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotcnicos. Por ejemplo, nemotcnicos tpicos de operaciones aritmticas son : en ingls : ADD, SUB, DIV, etc. ; en espaol : SUM, RES, DIV, etc. Una instruccin tpica de suma sera : ADD M, N, P Esta instruccin significa "sumar el contenido en la posicin de memoria M al nmero almacenado en la posicin de memoria N y situar el resultado en la posicin de memoria P" . Evidentemente es ms sencillo recordar la instruccin anterior con un nemotcnico que su equivalente en cdigo mquina. 0110 1001 1010 1011 Un programa escrito en lenguaje ensamblador, requiere de una fase de traduccin al lenguaje mquina para poder ser ejecutado directamente por la computadora. El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje mquina se conoce como programa objeto, el cual ya es directamente entendible por la computadora.
Ventajas del lenguaje ensamblador frente al lenguaje mquina Mayor facilidad de codificacin y, en general, su velocidad de clculo. Desventajas del lenguaje ensamblador Dependencia total de la mquina lo que impide la transportabilidad de los programas (posibilidad de ejecutar un programa en diferentes mquinas. El lenguaje ensamblador del PC es distinto del lenguaje ensamblador del Apple Machintosh. La formacin de los programadores es ms compleja que la correspondiente a los programadores de alto nivel, ya que exige no solo las tcnicas de programacin, sino tambin el conocimiento del interior de la mquina. Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se entran bsicamente en aplicaciones de tiempo real, control de procesos y de dispositivos electrnicos.
Lenguajes de Alto Nivel Estos lenguajes son los ms utilizados por los programadores. Estn diseados para que las personas escriban y entiendan los programas de un modo mucho ms fcil que los lenguajes mquina y ensambladores. Un programa
escrito en lenguaje de alto nivel es independiente de la mquina (las instrucciones no dependen del diseo del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificacin en diferentes tipos de computadoras. Ventajas de los lenguajes de alto nivel El tiempo de formacin de los programadores es relativamente corto comparado con otros lenguajes. La escritura de programas se basa en reglas sintcticas similares a los lenguajes humanos. Nombres de las instrucciones tales como READ, WRITE, PRINT, OPEN, etc. Las modificaciones y puestas a punto de los programas son ms fciles. Reduccin del coste de los programas. Transportabilidad. Desventajas de los lenguajes de alto nivel Incremento del tiempo de puesta a punto al necesitarse diferentes traducciones del programa fuente para conseguir el programa definitivo. No se aprovechan los recursos internos de la mquina que se explotan mucho mejor en lenguajes mquina y ensambladores. Aumento de la ocupacin de memoria. El tiempo de ejecucin de los programas es mucho mayor. Para una mejor compresin de este tema se definir el concepto de programa, por ser este un trmino muy utilizado en el diseo estructurado de algoritmos.
Programa : Es un conjunto de instrucciones escritas en un lenguaje de programacin que indican a la computadora la secuencia de pasos para resolver un problema. 1.6 Historia y Aplicacin de los Lenguajes Algortmicos Al igual que los idiomas sirven de vehculo de comunicacin entre los seres humanos, existen lenguajes que realizan la comunicacin entre los seres humanos y las computadoras. Estos lenguajes permiten expresar los programas o el conjunto de instrucciones que el operador humano desea que la computadora ejecute. Los lenguajes de computadoras toman diferentes formas; los de las primeras computadoras, como la ENIAC y la EDSAC, se componan en el lenguaje real de las mquinas mismas. La dificultad de programar las mquinas de esta manera limitaba drsticamente su utilidad y proporcionaba un fuerte incentivo para que
se desarrollaran lenguajes de programacin ms orientados hacia la expresin de soluciones con la notacin de los problemas mismos. Los primeros lenguajes de programacin se conocieron como Lenguajes Ensambladores, un ejemplo es: TRANSCODE, desarrollado para la computadora FERUT. En los lenguajes ensambladores se define un cdigo especial llamado mnemnico para cada una de las operaciones de la mquina y se introduce una notacin especial para especificar el dato con el cual debe realizarse la operacin. A mediados de los aos 60s aparecieron los primeros lenguajes de propsito general como FORTRAN, FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C,C++, PASCAL, etc. pero el desarrollo de nuevas tecnologas, tanto en arquitectura de computadoras como en lenguajes de programacin, contina a paso acelerado, cada vez con mayor velocidad, el panorama est cambiando de una etapa de sistemas y lenguajes especialmente desarrollados para aplicaciones individuales. Los lenguajes de programacin actuales son los conocidos como Lenguajes visuales, como por ejemplo Visual Fox, Visual Basic, Visual C .
Unidad II
" METODOLOGIA PARA LA SOLUCION DE PROBLEMAS POR MEDIO DE COMPUTADORAS " A fin de resolver un problema utilizando sistemas de cmputo, debe seguirse una serie de pasos que permiten avanzar por etapas bien definidas hacia la solucin. Estas etapas son las siguientes : Definicin del problema. Anlisis de los datos. Diseo de la solucin. Codificacin. Prueba y depuracin. Documentacin. Mantenimiento.
Una vez que el problema ha sido definido y comprendido, deben analizarse los siguientes aspectos : Los resultados esperados. Los datos de entrada disponibles. Herramientas a nuestro alcance para manipular los datos y alcanzar un resultado (frmulas, tablas, accesorios diversos). Una medida aconsejable para facilitar esta etapa consiste en colocarnos en lugar de la computadora deduciendo los elementos que necesitaremos para alcanzar el resultado. Ejemplo 2.1 Leer el radio de un crculo y calcular e imprimir su superficie y circunferencia. Anlisis Las entradas de datos en este problema se concentran en el radio del crculo. Dado que el radio puede tomar cualquier valor dentro del rango de los nmeros reales, el tipo de datos radio debe ser real. Las salidas sern dos variables : superficie y circunferencia que tambin sern de tio real. Entradas : Radio del crculo (variable RADIO). Salidas : Superficie del crculo (variable AREA). Circunferencia del crculo (variable CIRCUNFERENCIA). Variables : RADIO, AREA, CIRCUNFERENCIA tipo real.
El problema de clculo de la longitud y superficie de un crculo se puede descomponer en subproblemas ms simples : Leer datos de entrada. Calcular superficie y longitud. Escribir resultados (datos de salida).
2.4 Codificacin
Se refiere a la obtencin de un programa definitivo que pueda ser comprensible para la mquina. Incluye una etapa que se reconoce como compilacin. Si la codificacin original se realiz en papel, previo a la compilacin deber existir un paso conocido como transcripcin.
Programa Fuente
Esta escrito en un lenguaje de programacin. (pascal, C++,Visual Fox, Visual Basic, etc). Es entendible por el programador.
Programa Ejecutable
El proceso de depuracin consiste en localizar los errores y corregirlos en caso de que estos existan. Si no existen errores, puede entenderse la depuracin como una etapa de refinamiento en la que se ajustan detalles para optimizar el desempeo del programa.
2.6 Documentacin
Debido a que el programa resultante en esta etapa se encuentra totalmente depurado (sin errores), se procede a la utilizacin para resolver problemas del tipo que di origen a su diseo. En vista de que esta utilizacin no podr ser supervizada en todas las ocasiones por el programador, debe crearse un manual o gua de operacin que indique los pasos a seguir para utilizar el programa.
2.7 Mantenimiento
Se refiere a las actualizaciones que deban aplicarse al programa cuando las circunstancias as lo requieran. Este programa deber ser susceptible de ser modificado para adecuarlo a nuevas condiciones de operacin. Cualquier actualizacin o cambio en el programa deber reflejarse en su documentacin.
Unidad III
"Entidades Primitivas Para el Diseo de Instrucciones"
Enteros Es un conjunto finito de los nmeros enteros. Los enteros son nmeros completos, no tienen componentes fraccionarios o decimales y pueden ser negativos y positivos. Algunos ejemplos son : 37 -10 9 15.25 15.25 50 Reales Consiste en un subconjunto de los nmeros reales. Estos nmeros siempre tienen un punto decimal y pueden ser positivos o negativos. Un nmero real consiste de un nmero entero y una parte decimal. Algunos ejemplos son : 0.52 664.32 6.579 8.0 -9.3 -47.23 Cadenas Son los datos que representan informacin textual (palabras, frases, smbolos, etc). No representan valor alguno para efectos numricos. Pueden distinguirse porque son delimitados por apstrofes o comillas. Se clasifica en dos categoras : Datos tipo carcter (char) Datos tipo Cadena (string)
Datos Tipo Cadena (string) Es un sucesin de caracteres que se encuentran delimitados por una comilla (apstrofe) o dobles comillas, segn el tipo de lenguaje de programacin. La longitud de una cadena de caracteres es el nmero de ellos comprendidos entre los separadores o delimitadores. Ejemplos :
Hola Mortimer 12 de octubre de 1496 Enunciado cualquiera Los smbolos disponibles para la formulacin de caracteres y de cadenas son aqullos que se encuentran en el codigo ASCII. ASCII (American Standard Code for Information Interchange).
Nota:
Lgicos Tambin se le denomina Booleano, es aqul dato que solo puede tomar uno de dos valores : Falso y verdadero. Se utiliza para representar las alternativas (si/no) a determinadas condiciones. Por ejemplo, cuando se pide si un valor entero sea primo, la respuesta ser verdadera o falsa, segn sea. Las categoras y tipos que se mencionaron anteriormente se conocen como Tipos Simples, puesto que no poseen una estructura compleja. En forma adicional, cada lenguaje puede proporcionar la utilizacin de Tipos Compuestos, siendo estos, datos que tienen una estructura predeterminada. Tipos Compuestos Entre los principales tipos compuestos se encuentran los siguientes:
a.- SUBRANGO : Son aqullos en los que se especifca con precisin el intervalo de valores vlidos para un dato. Ejemplos: 0..100 (son enumerativos de tipo entero) 'A'..'Z' (son enumerativos de tipo cadena) Los Reales no son vlidos para crear enumerativos, ya que su intervalo no est definido. b.- ENUMERATIVOS : Son aqullos en los que se definen individualmente los valores para un dato. Ejemplos: (0,25,40,52) Siempre deben ponerse netre parntesis. c.- DEFINIDOS POR EL USUARIO : Son aqullos que el programador crea para satisfacer las necesidades del programa en diseo.
Constantes y variables
Una Constante es aqulla que no cambia de valor durante la ejecucin de un programa (o comprobacin de un algoritmo en este caso). Se representa en la forma descrita para cada categora. Las Variables son aqullas que pueden modificar su valor durante la ejecucin de un programa (idem). Su representacin se da a traves de letras y smbolos generalmente numricos a los que se les asigna un valor. Ejemplos: Constantes Variables Numricos Cadena Lgicos
36 450.35 0.58 'A' 'Juan' 'La Paz' Falso Verdadero A Nom Edad Ciudad Estatura
Un operador es el smbolo que determina el tipo de operacin o relacin que habr de establecerse entre los operandos para alcanzar un resultado. Los operadores se clasifican en tres grupos: Aritmticos Relacionales. Lgicos.
Mod ^ Ejemplos: 7+3 = 10 10 Div 4 = 2 7-3 = 4 20 Mod 3 = 2 7*3 = 21 5 Mod 7 = 5 10/4= 2.5 4 ^ 2 = 16
Residuo Exponenciacin
En la expresin 7+3, los valores 7 y 3 se denominan operandos. El valor de la expresin 7+3 se conoce como resultado de la expresin. Todos los operadores aritmticos no existen en todos los lenguajes de programacin, por ejemplo, en Fortran no existen Div y mod. Operadores Div y Mod El smbolo / se utiliza para la divisin real, y el operador Div representa la divisin entera. Expresin 10.5/3.0 1/4 2.0/4.0 30/30 6/8 Resultado 3.5 0.25 0.5 1.0 0.75 Expresin 10 Div 3 18 Div 2 30 Div 30 10 Mod 3 10 Mod 2 Resultado 3 9 1 1 0
Operadores Relacionales Permiten realizar comparaciones de valores de tipo numrico o carcter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lgicos.
Operador < > = <= >= <> Significado Menor que Mayor que Igual que Menor o igual que Mayor o igual que Diferente de
El formato general para las comparaciones es: expresin1 operador de relacin expresin2 El resultado de la operacin ser Verdadero o Falso. As por ejemplo, si A=4 y B=3, entonces: A>B Es Verdadero (A-2) < (B-4) Es Falso Los operadores de relacin se pueden aplicar a cualquiera de los cuatro tipos de datos estndar: enteros, real, lgico y carcter. A < K = Verdadero A > a = Falso MARIA < JUAN = Falso (se considera la primera letra) JAIME > JORGE = Falso
(4 + 12) /2 = 8 (con agrupador) Ejemplo: Obtener los resultados de las expresiones: -4 * 7 + 2 ^ 3 / 4 - 5 Solucin: -4 *7 + 2 ^ Resulta: -4 * 7+ 8/4 -5 -28 + 8/4 -5 -28 + 2 - 5 -26 - 5 -31 Los parntesis tienen prioridad sobre el resto de las operaciones. A * (B+3) La constante 3 se suma primero al valor de B, despus este resultado se multiplica por el valor de A. (A*B) +3 A y B A + (B/C) + D Se multiplican primero y a continuacin se suma 3. Esta expresin equivale a A+ B/C + D Operadores Lgicos Son aqullos que permiten la combinacin de condiciones para formar una sola expresin lgica. Utilizan operandos lgicos y proporcionan resultados lgicos tambin. Operador Not And Or Xor Se obtiene Verdadero si: NOT AND OR El operando es falso Ambos operandos son verdaderos Al menos un operando es verdadero Relacin Negacin (No) Conjuncin (Y) Disyuncin (O) Disyuncin Exclusiva (O/SOLO)
XOR
X F V F V
Y F F V V
NOT(X) V F V F
NOT(Y) V V F F
X AND Y F F F V
X OR Y F V V V
X XOR Y F V V F
Prioridad De Los Operadores Lgicos Los operadores aritmticos seguan un orden especfico o de prioridad cuando existan ms de un operador en las expresiones. De modo similar los operadores lgicos y relacionales tienen un orden de prioridad. Ejemplos: Not 4 > 6 Produce un error, ya que el operador not se aplica a 4. Not (4 > 14) Produce un valor verdadero. (1.0<x) And (x<z +7.0) Si x vale 7 y z vale 4, se obtiene un valor falso.
Asignacin La operacin de asignacin es el modo de darle valores a una variable. La operacin de asignacin se representa por el smbolo u operador . La operacin de asignacin se conoce como instruccin o sentencia de asignacin cuando se refiere a un lenguaje de programacin. A fin de manejar datos por medio de variables, estos pueden recibir valores determinados. El tipo de los valores que pueden recibir dependen de la declaracin previa de tales variables. En una asignacin se resuelve, primeramente la expresin (al lado derecho del smbolo de asignacin) y se asigna el resultado en la variable. El formato general de asignacin es: Nom_variable Expresin Donde Expresin puede ser una variable o constante, operacin, funcin. Ejemplo: A 9
Significa que la variable A se le ha asignado el valor 9. La accin de asignar es destructiva, ya que el valor que tuviera la variable antes de la asignacin se pierde y se reemlaza por el nuevo valor. As en la secuencia de operaciones: A 30 A 189 A 9 Cuando se ejecutan, el ltimo valor que toma A ser 9, ya que los valores anteriores a este han desaparecido. Las acciones de asignacin se clasifican segn sea el tipo de expresiones : Aritmticas, Lgicas y de Caracteres.
Asignacin Aritmtica
Las expresiones en las operaciones de asignacin son aritmticas: Suma 5+10+2 Se evala la expresin 5+10+2 y se asigna a la variable Suma, es decir, 17 ser el valor que toma Suma.
Asignacin Lgica
La expresin que se evala en la operacin de asignacin es lgica. Supngase que M, N, y P son variables de tipo lgico. M 8<5 N M o (7 <= 12) P 7>6 Tras ejecutar las operaciones anteriores, las variables M,N,P toman los valores, falso, verdadero, verdadero respectivamente.
Asignacin de caracteres
La operacimn que se evala es de tipo caracter. x '3 de Mayo de 1999' La accin de asignacin anterior asigna la cadena de caracteres '3 de Mayo de 1999' a la variable de tipo carcter x.
En la escritura de algoritmos las acciones de lectura y escritura se representan por los formatos siguientes leer ( Nom_variable ) escribir (lista de variables de salida) Ejemplo: Obtener rea de un tringulo. Entrada Frmula (A= B*h/2) Datos (Base, altura) Proceso Multiplicar Base y altura. Dividir resultado de la multiplicacin anterior entre dos. Mostrar resultado de divisin anterior. Salida Area del tringulo.
Algoritmo
Inicio leer(B) leer(h) x B*h A x/2 escribir(A) Fin
3.3 Expresiones
Las expresiones son combinaciones de constantes, variables, smbolos de operadores, parntesis y nombres de funciones especiales. Las mismas ideas son utilizadas en notacin matemtica tradicional ; por ejemplo : a + b ( b+2) Aqu los parntesis indican el orden de clculo. Cada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de operadores y operandos. Segn sea el tipo de objetos que manipulan, las expresiones se clasifican en : Aritmticas Relacionales Lgicas Carcter
El resultado de la expresin numrica es de tipo numrico ; el resultado de una expresin relacional y de una expresin lgica es de tipo lgico ; el resultado de una expresin carcter es de tipo carcter.
Los clculos que implican tipos de datos reales y enteros suelen dar normalmente resultados del mismo tipo si los operandos lo son tambin. Por ejemplo, el producto de operandos reales produce un real. Ejemplo : 4x6 se representa por 4 * 6 9 3 se representa por 3 ^ 9 18 div 6 se representa por 18/6
UNIDAD IV
"TECNICAS DE DISEO"
Con el objeto de facilitar el diseo de algoritmos y la organizacin de los diversos elementos de los que se componen se utilizan algunas tcnicas que
muestran una metodologa a seguir para resolver los problemas. Estas tcnicas hacen que los programas sean ms fciles de escribir, verificar, leer y mantener. Algunas de las tcnicas ms conocidas son : Top Down (diseo descendente) Botton Up Warnier Orr 4.1 Top Down Es una tcnica para disear que consiste en tomar el problema en forma inicial como una cuestin global y descomponerlo sucesivamente en problemas ms pequeos y por lo tanto, de solucin ms sencilla. La descomposicin del problema original (y de las etapas subsecuentes), puede detenerse cuando los problemas resultantes alcanzan un nivel de detalle que el programador o analista pueden implementar fcilmente. El problema se descompone en etapas o estructuras jerrquicas, de modo que se puede considerar cada estructura como dos puntos de vista : lo que hace?, y cmo lo hace ?. Si se considera un nivel n de refinamiento, las estructuras se consideran de la siguiente forma : nivel n : Vista desde el exterior. "lo que hace ?" Nivel n+1 : Vista desde el interior. "cmo lo hace ?" Ejemplo de un diseo descendente (top-down ) de un control de almacn :
4.2 Botton Up
Esta tcnica consiste en partir de los detalles ms precisos del algoritmo completando suscesivamente mdulos de mayor complejidad, se recomienda cuando ya se cuenta con experiencia y ya se sabe lo que se va a hacer. Conforme se va alcanzando el desarrollo de mdulos ms grandes se plantea como objetivo final la resolucin global del problema. Este mtodo es el inverso del anterior y es recomendable cuando se tiene un modelo a seguir o se cuenta con amplia experiencia en la resolucin de problemas semejantes. La tcnica de Botton Up es frecuentemente utilizada para la realizacin de pruebas a sistemas ya concluidos.
Bsicamente, utiliza una notacin de llaves para organizar los mdulos y se auxilia en la siguiente simbologa para indicar operaciones de control.
Smbolo + Significado OR (uno, otro o varios) XOR (uno u otro, solo uno) (x,y) puede hacerse tantas veces desde x hasta y
Los diagramas Warnier Orr se leen de izquierda a derecha y de arriba hacia abajo.
Nota :
Ejemplo: Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de impuestos (20 por 100).
Ejemplo: Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayora o minora de edad segn sea el caso para un nombre especfico.
5.2 Pseudocdigo
Es un lenguaje de especificacin de algoritmos. El uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un lenguaje de programacin) relativamente fcil. El pseudocdigo naci como un lenguaje similar al ingls y era un medio representar bsicamente las estructuras de control de programacin estructurada. Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. Cabe sealar que el pseudocdigo no puede ser ejecutado por una computadora. La ventaja del pseudocdigo es que en su uso en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas en la lgica del programa, adems de todo esto es fcil su traduccin a lenguajes como pascal, COBOL, C, FORTRAN o BASIC. El pseudocdigo utiliza para representar las acciones sucesivas palabras reservadas en ingls (similares a sus homnimos en los lenguajes de programacin), tales como star,begin, end, stop, if-then-else, while, repeatuntil.etc
Secuencia
Inicio accin1 accin2 : accin n Fin
Decisin
Simple si condicin entonces accin1 accin2 : accin n Doble si condicin then accin1
Fija para var. Entera inicial hasta final accin1 accin2 : accin n Condicional al inicio mientras condicin hacer accin1 accin2 : accin n Condicional al final Repetir accin1 accin2 : accin n Hasta que condicin
Seleccin
hacer
casos selector de valor1 : accin1 accin2 valor2 : accin1 accin2 valor n : accin1 accin2
Ejercicio : Se requiere preguntar dos valores, y a continuacin ofrecer un men con las operaciones bsicas (+, -, *, /). Despus de presentar el resultado se ofrecer la posibilidad de una nueva operacin. Declaracin de variables : Real : X, Y, RESPUESTA Entero : OPCION Carcter : OP Inicio Repetir escribir(Primer valor : ) leer(X) escribir(Segundo valor : ) leer(Y) escribir(1) Suma ) escribir(2) Resta ) escribir(3) Multiplicacin ) escribir(4) Divisin ) escribir(Qu operacin deseas realizar ? : ) leer(OPCION) casos OPCION de 1 : RESULTADO X+Y 2 : RESULTADO X-Y 3 : RESULTADO X*Y 4 : si Y=0 entonces escribir( Error ) RESULTADO 0 en caso contrario RESULTADO X/Y escribir (Resultado : ,RESULTADO) escribir(Deseas otro clculo : [S/N] ) leer(OP) Hasta que RES = N Fin Ejercicio : Preguntar un nombre y repetirse en pantalla tantas veces como se desee. (preguntar cantidad de repeticiones), indicando el nmero de repeticin.
Declaracin de variables Cadena : nom entero : x, n Inicio escribir(Nombre : ) leer(nom) escribir(Cuntas veces quieres repetirlo ? : ) leer(n) para x 1 hasta n hacer escribir(x.- , nom) Fin
Ejemplo: Se desea calcular el salario neto semanal de un trabajador en funcin del nmero de horas trabajadas y la tasa de impuestos.
....
PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL Inicio : : acciones : : fin Ejemplo: Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de impuestos (20 por 100). Pseudocdigo Inicio {clculo salario neto} leer nombre, horas, precio_hora salario_bruto horas * precio impuestos 0.20 * salario_bruto salario_neto salario_bruto_impuestos escribir nombre, salario_bruto, salario_neto_bruto, salario_neto Fin
Diagrama de flujo
Diagrama N-S
6.2 Condicionales
La especificacin formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripcin ms complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un nmero de posibles alternativas resultantes de la evaluacin de una determinada condicin. Las estructuras selectivas se utilizan para tomar decisiones lgicas; de ah que se suelan denominar tambin estructuras de decisin o alternativas. En las estructuras selectivas se evala una condicin y en funcin del resultado la misma se realiza una opcin u otra. Las condiciones se especifcan usando expresiones lgicas. La representacin de una estructura selectiva se hace con palabras en pseudocdigo (if, then, else o bien en espaol si, entonces, sino), con una figura geomtrica en forma de romba o bien con un tringulo en el interior de una caja rectangular. Las estructuras selectivas o alternativas pueden ser: Simples Mltiples
Alternativa Simple (si-entonces/if-then)
La estructura alternativa simple si-entonces (en ingls if-then o bien IFTHEN ) ejecuta una determinada accin cuando se cumple una determinada condicin. La seleccin si-entonces evala la condicin y . . . Si la condicin es verdadera, entonces ejecuta la accin S1 (o acciones caso de ser S1 una accin compuesta y constar de varias acciones). Si la condicin es falsa, entonces no hacer nada. A continuacin se muestra la grfica de la estructura condicional simple.
Pseudocdigo en espaol
Si
If
Cuando existen ms de dos elecciones (alternativas) posibles, es cuando se presenta el caso de alternativas mltiples. Si el nmero de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente de legibilidad. La estrucura de decisin mltiple evaluar una expresin que podr tomar n valores distintos 1,2,3,4,..n . Segn que elija uno de estos valores en la condicin, se realizara una de las n acciones, o lo que es igual, el flujo del algoritmo seguir un determinado camino entre los n posibles. La representacin grfica se muestra a continuacin:
Diagrama de Flujo
Diagrama N-S
Modelo 1
Modelo 2
Pseudocdigo
En ingls la estructura de decisin mltiple se representa Case expresin of [e1]: accin S1 [e2]: accin S2 : [en]: accin Sn else accin Sx end_case Ejemplo: Se desea disear un algoritmo que escriba los nombres de los das de la semana en funcin del valor de una variable DIA introducida por teclado. Los das de la semana son 7; por consiguiente, el rango de valores de DIA ser 1..7, y caso de que DIA tome un valor fuera de este rango se deber producir un mensaje de error advirtiendo la situacin anmala.
Inicio Leer DIA Segn_sea DIA hacer 1: escribir('Lunes') 2: escribir('Martes') 3: escribir('Mircoles') 4: escribir('Jueves') 5: escribir('Viernes') 6: escribir('Sabado') 7: escribir('Domingo') else escribir('Error') fin_segn fin
Estructuras Repetitivas
Las estructuras que repiten una secuencia de instrucciones un nmero determinado de veces se denominan Bucles y se denomina Iteracin al hecho de repetir la ejecucin de una secuencia de acciones. Entre las estructuras repetitivas se encuentran: Mientras (while) Repetir (repeat) Desde (for)
1.- Estructura Mientras (while)
La estructura repetitiva while, es aqulla en que el cuerpo del bucle se repite mientras se cumple una determinada condicin, su representacin grfica es:
Ejemplo: Contar los nmeros enteros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contar el nmero de enteros positivos). Se supone que se leen nmeros positivos y se detiene el bucle cuando se lee un nmero negativo o cero.
Pseudocdigo
Inicio contador 0 Leer (numero) Mientras numero > 0 hacer contador contador+1 Leer (numero) Fin_Mientras Escribir('El nmero de enteros positivos es : ', contador) Fin
Diagrama de Flujo
Representacin en N-S
3.- Estructura Desde/Para (for) En muchas ocasiones se conoce de antemano el nmero de veces que se desean ejecutar las acciones de un bucle. En estos casos en el que el nmero de iteraciones es fija, se debe usar la estructura desde o para. La estructura Desde ejecuta las acciones del cuerpo del bucle un nmero especfico de veces y de modo automtico controla el nmero de iteraciones o pasos a travs del cuerpo del bucle. Pseudocdigo en Espaol Pseudocdigo en Ingls Desde variable(v)= vi Hasta vf hacer For variable (v)= vi To vf Do <acciones> <acciones> : Fin_desde
Las variables que hemos utilizado hasta ahora nos permiten el almacenamiento de un solo valor a la vez. Para resolver cierto tipo de problemas con datos mltiples en forma eficiente, se requiere almacenamiento en conjunto. A esta organizacin de elementos se le conoce con el nombre de arreglo. Otra definicin de arreglo ms completa (Luis Joyanes A.), es un conjunto finito y ordenado de elementos homogneos. La propiedad "ordenado" significa que el elemento primero, segundo, terceron-simo de un arreglo puede ser identificado. Los elementos de una arreglo debern ser homogneos, es decir, del mismo tipo de datos. Por ejemplo un arreglo puede estar compuesto de todos sus elementos de tipo cadena, otro puede tener sus elementos de tipo entero, etc. Al tratar el tema de arreglos es necesario conocer el trmino de dimensin. Dimensin Descripcin 0 Un solo punto. 1 (vector o lista) Una recta. Contiene largo. 2 (matriz o tabla) Contiene largo y ancho. 3 (cubo) Tiene largo, ancho y fondo.
Declaracin de un Arreglo
Nom_variable : Arreglo [dimensin] de Nom_tipo En donde dimensin especifica : <subndice inferior> <subndice superior> En el orden : Fila, Columna, Fondo. Ejemplo de una declaracin : 0 Dimensin : x 20 donde x, es de tipo Entero. 1 Dimensin : 5
1 2 3 4
2 Dimensiones :
1 2 3 4
x[2,4] 8 x : arreglo [1..3, 1..4] de Enteros. 3 Dimensiones : x[1,4,2] 3 x : arreglo[1..3, 1..4, 1..2] de Enteros. Las operaciones que se pueden realizar con arreglos durante el proceso de resolucin de un problema son : Asignacin Lectura/Escritura Recorrido (acceso secuencial) Actualizar (aadir, borrar, insertar) Ordenacin Bsqueda
7.1 Vectores
Son aqullos de una sola dimensin, por lo que tambin son llamados arreglos Unidimensionales. Ejemplo : Un vector de una dimensin llamado CALIF, que consta de n elementos.
calif(1) calif(2) calif(n2) calif(n1) calif(n)
El subndice o ndice de un elemento (1, 2 n) designa su posicin en la ordenacin del vector. Otras posibles notaciones del vector son : a1, a2,,an En matemticas y algunos lenguajes(BASIC)
En programacin (Pascal)
Los vectores se almacenan en memoria central de la computadora en un orden adyacente. As, un vector de 50 elementos denominado NUMEROS se representa grficamente por 50 posiciones de memoria sucesivas.
Memoria
NUMEROS(1) NUMEROS(2) NUMEROS(3)
: :
NUMEROS(50)
Cada elemento de un vector se puede procesar como si fuese una variable simple al ocupar una posicin de memoria. As : NUMEROS(25) 75 (almacena el valor 75 en la posicin 25a del vector NUMEROS y la instruccin de salida : escribir NUMEROS(25).
Declaracin
nom _arreglo = arreglo[liminf..limsup] de tipo donde : nom_arreglo : nombre vlido del arreglo. liminf..limsup : lmites inferior y superior del rango del arreglo. tipo : tipo de datos de los elementos del arreglo : entero, real, carcter. NOMBRES= arreglo [1..10] de carcter Significa que NOMBRES es un arreglo (array) unidimensional de 10 elementos (1 a 10) de tipo carcter.
Asignacin
La Lectura/Escritura de datos en un arreglo u operaciones de entrada/salida normalmente se realizan con estructuras repetitivas, aunque puede tambin hacerse con estructuras selectivas. Las instrucciones simples de lectura/escritura se representarn como :
Lectura del vector A Escritura del vector A Leer el elemento V(5) del vector V
Se puede acceder a los elementos de un vector para introducir datos (escribir) en el o bien para visualizar su contenido (leer). Estas operaciones se realizan utilizando estructuras repetitivas, cuyas variables de control (por ejemplo I) se utilizan como subndices del vector (por ejemplo, X(I). El incremento del contador del bucle producir el tratamiento sucesivo de los elementos del vector. Ejemplo : Lectura de 15 valores enteros de un vector denominado TOTAL. TOTAL= array [1..15] de entero desde i 1 hasta 15 hacer leer TOTAL(i) fin _desde Si se cambian los limite inferior y superior, por ejemplo, 5 y 12, el bucle de lectura sera : desde i 5 hasta 12 hacer leer TOTAL(i) fin_desde La salida o escritura de vectores se representa de un modo similar. desde i 1 hasta 15 hacer escribir TOTAL(i) fin_desde Visualiza todo el vector completo (un elemento en cada lnea independiente).
Actualizacin de un Vector
Puede constar de tres operaciones ms elementales : a) Aadir elementos (aade un nuevo elemento al final del vector) Un arreglo A se ha dimensionado a 6 elementos, pero solo se han asignado 4 valores a los elementos A(1), A(2), A(3), A(4), se podrn aadir dos elementos ms con una simple accin de asignacin. A(5) 15 A(6) 9 b.- Insertar elementos (introduce un elemento en el interior de un vector)
Ejemplo : Se tiene un arreglo NOM de 6 elementos de nombres de personas, en orden alfabtico y se desea insertar un nuevo nombre. {Calcular la posicin ocupada por el elemento a insertar} P {Inicializar contador de inserciones} i n. mientras i >= P hacer {transferir el elemento actual hacia abajo, a la posicin i+1} NOM(i+1) NOM(i) {decrementar contador} i i-1 fin_mientras {Insertar el elemento en la posicin P} NOM(P) nuevo elemento {Actualizar el contador de elementos del vector} n n+1 fin c) Borrar elementos (Elimina elementos de un vector) Algoritmo de Borrado Inicio {se utilizar una variable auxiliar AUX, que contendr el valor del elemento que se desea borrar} AUX NOM(i) desde i j hasta N-1 hacer {llevar elemento j+1 hacia arriba} NOM(i) NOM(i+1) fin_desde {actualizar contador de elementos} {ahora tendr un elemento menos, N-1} N N-1 Fin
Referencia a un elemento de Arreglo
Ejercicio : Se desea la lectura y desplegado de 5 nombres. Resuelva el problema por cada uno de los siguientes criterios : a) Lectura y desplegado alternados. b) Todas las lecturas, todos los desplegados. a) variables : string : nom entero : x Inicio Para x 1 hasta 5 hacer escribir(Nombre ? ) leer(nom) escribir( La persona nmero, x, se llama : ,nom) Fin
Nota :
mltiple. b) variables : nom : Arreglo[1..5] de string x : Entero Inicio para x 1 hasta 5 hacer escribir(Dame el nombre nmero,x, ?) leer(nom[x]) para x 1 hasta 5 hacer escribir(La persona nmero , x, se llama : ,nom[x]) Fin
Ordenacin de Arreglos Existen diversos mtodos para ordenar los elementos de un arreglo. El ms conocido de ellos (no el mejor) es el Mtodo de la Burbuja.
El mtodo consiste en hacer un recorrido por el arreglo comparando parejas de elementos ; si estos no estn en el orden deseado, se procede a intercambiarlos.
Al finalizar el recorrido se verifica la cantidad de intercambios, si esta es 0 se asume que el arreglo est ordenado ; en caso contrario se inicia nuevamente el recorrido. Las parejas de elementos que se comparan deben ser contiguos (elemento1 y elemento2, elemento2 y elemento3, etc). El nmero total de comparaciones es n1 (donde n es la cantidad de elementos). Ejemplo : Se requiere la ordenacin de una lista con 5 valores enteros previamente introducidos. Variables : LISTA : arreglo[1..5] de entero x, aux : entero cambio : boleano Inicio Para x 1 hasta 5 hacer escribir(Dame el valor,x, :) leer( LISTA[x]) repetir cambio falso para x 1 hasta 4 hacer si LISTA[x] > LISTA[x+1] entonces aux LISTA[x] LISTA[x] LISTA[x+1] LISTA[x+1] aux cambio verdadero fin_si_entonces hasta cambio = falso escribir(Lista ordenada) para x 1 hasta 5 hacer escribir(Elemento nmero,x, es,LISTA[x]) Fin
7.2 Matrices Se puede considerar como un vector de vectores. Es, por consiguiente, un conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es significativo y en el que se necesitan especificar dos subndices para poder identificar a cada elemento del arreglo.
Tambin se les llama arreglos Bidimensionales, ya que una tabla ser utilizada cuando se requiere de establecer relaciones por renglones y columnas entre datos de un tipo comn.
1 2 3 4... J ... N
B(I,J)
Se considera que este arreglo tiene dos dimensiones (una dimensin por cada subndice) y necesita un valor para cada subndice, y poder identificar un elemento individual. En notacin estndar, normalmente el primer subndice se refiere a la fila del arreglo, mientras que el segundo subndice se refiere a la columna del arreglo. Es decir, B(I,J), es el elemento de -b que ocupa la Ia y la Ja columna como se muestra en la figura anterior. Un ejemplo tpico de un arreglo Bidimensional es un tablero de ajedrez. Se puede representar cada posicin o casilla del tablero mediante un arreglo, en el que cada elemento es una casilla y en el que su valor ser un cdigo representativo de cada figura del juego. Ejemplo: Se desea registrar las edades de 4 grupos de personas, cada uno de ellos con 5 elementos. Los datos debern ser mostrados en forma posterior. variables: edad: arreglo(1..4,1..5) de entero g,p: enteros Inicio para g 1 hasta 4 hacer escribir(Grupo : ,g) para p 1 hasta 5 hacer escribir(Edad de la persona ,p) leer(edad[g,p]) para g 1 hasta 4 hacer escribir(Grupo ,g)
para p 1 hasta 5 hacer escribir(persona ,p, Tiene,edad[g,p],aos) Fin Ejemplo: Se tienen 4 fbricas cada una de ellas con 6 empleados. Se desea registrar los salarios y mostrarlos posteriormente. En forma alternada deber leerse tambin el nombre de cada empleado. Durante el desplegado de los gastos se indicar el nombre y salario del empleado mejor pagado de cada fbrica as como el total de nmina ( de cada fbrica). variables: Nom: arreglo[1..4,1..6] de string salario: arreglo[1..4,1..6] de entero fab, emp, total, cont, lug, zuc: entero Inicio para fab 1 hasta 4 hacer para emp 1 hasta 6 hacer escribir(Empleado : ,emp) escribir(Nombre del empleado :) leer(nom[fab,emp]) escribir(Salarios del empleado : ) leer(sal[fab,emp]) para fab 1 hasta 4 hacer total 0 cont sal[fab,1] escribir(Fbrica, fab) para emp 1 hasta 6 hacer escribir(El empleado ,emp, se llama,nom[fab,emp], y gana ,salario[fab,emp]) total total + salario[fab,emp] si salario[fab,emp] >= cont entonces cont salario[fab,emp] lug fab zuc emp finEntonces escribir(El mejor pagado es ,nom[lug,zuc],y gana ,salario[lug,zuc]) escribir(El total es : ,total) Fin
Algoritmo
Una posible definicin de algoritmo es un conjunto de reglas que permiten obtener un resultado determinado apartir de ciertas reglas definidas. Otra definicin sera, algoritmo es una secuencia finita de instrucciones, cada una de las cuales tiene un significado preciso y puede ejecutarse con una cantidad finita de esfuerzo en un tiempo finito. Ha de tener las siguientes caractersticas: legible, correcto, modular, eficiente, estructurado, no ambiguo y a ser posible se ha de desarrollar en el menor tiempo posible. El trmino proviene del matemtico rabe Al'Khwarizmi, que escribi un tratado sobre los nmeros. Este texto se perdi, pero su versin latina, Algoritmi de Numero Indorum, s se conoce.
que se utilizan para resolver un problema especfico. En este conjunto de instrucciones se indica la secuencia de operaciones que se deben realizar para, a partir de los datos de entrada, obtener el resultado buscado. El concepto de algoritmo es anterior a los ordenadores, y ampliamente utilizado en el mundo de la ciencia para la resolucin metdica de problemas. Sin embargo, con la aparicin de los ordenadores se comprob que era una herramienta ideal, ya que cualquier algoritmo puede transformarse en un programa informtico. Caractersticas del algoritmo: Tiene que ser finito (con un final), preciso (detallar el orden de las operaciones a realizar) y unvoco (al aplicar el algoritmo a los mismos datos de entrada, siempre se obtendr el mismo resultado a la salida).
Pasos para la elaboracin de un programa Anlisis del problema: Conocer los
deseamos obtener.
Construccin del algoritmo:
Se puede expresar mediante grficos (diagramas de flujo, diagramas de Nessie Sheneiderman, cartas de estructura) o mediante texto (pseudocdigo). Codificacin: Introduccin del algoritmo en el ordenador utilizando alguno de los lenguajes de programacin informtica, obteniendo el llamado "cdigo fuente del programa". Traduccin: Se traduce el cdigo fuente del programa a cdigo mquina para que pueda ser entendido y ejecutado por el ordenador. Esta traduccin se realiza de manera automtica, utilizando programas compiladores o intrpretes. 1. Intrprete: Transforma y ejecuta, simultneamente, lnea a lnea el cdigo fuente del programa. 2. Compilador: Hace la traduccin de una vez, generando y almacenado el cdigo mquina que podr ser ejecutado directamente siempre que lo necesitemos. Ejecucin y depuracin: Probar el programa generado para todo tipo de datos de entrada, buscando y corrigiendo posibles errores de la fase de Codificacin. Mantenimiento: Diseo de nuevas versiones, aplicacin de nuevas tcnicas y resolucin de problemas que surgen en la utilizacin por parte de usuarios finales.
Los Algortmos permiten resolver problemas computacionales mediante lenguajes de programacin. Como Ejemplo podemos poner dos de los ms usuales:
Divide y Vencers: Consiste en descomponer un problema en subproblemas, resolver cada subproblema y combinar las soluciones. El resultado, es la solucin del problema original. Si los subproblemas son todava demasiado grandes, se utiliza la misma tctica con ellos, esto es, dividirlos a ellos tambin, utilizando un algoritmo recursivo que vaya dividiendo ms el sub-problema hasta que su solucin sea trivial
Backtracking: El Backtracking o esquema de vuelta atrs, es un esquema que de forma sistemtica y organizada, genera y recorre un espacio que contiene todas las posibles secuencias de decisiones. Este espacio se denomina el espacio de bsqueda del problema, y se representa como un rbol sobre el que el algoritmo hace un recorrido en profundidad partiendo de la raz. Se conoce de antemano el orden en que se van a generar y recorrer sus nodos, y se contina recorriendo el rbol mientras se cumplan las restricciones. ste mtodo tiene tres posibles esquemas: encontrar una solucin factible, encontrar todas las soluciones factibles, encontrar la mejor solucin factible.
Algoritmo Conjunto de procedimientos mediante los que se consigue un efecto. Suelen expresarse a travs de letras, cifras y smbolos, que forman un algoritmo determinado. <br><br> Dcese del procedimiento para resolver problemas en trminos de las acciones a ejecutar o el orden en que se ejecutarn dichas acciones en un problema dado. <br><br> Conjunto de Instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un sistema especifico o clase de problema
CAPITULO 1 CONCEPTOS BSICOS Y METODOLOGA PARA LA SOLUCIN DE PROBLEMAS POR MEDIO DE COMPUTADORES
UNIDAD 1 INTRODUCCIN El desarrollo de algoritmos es un tema fundamental en el diseo de programas por lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de manera fcil y rpida sus programas. El computador no solamente es una mquina que puede realizar procesos para darnos resultados, sin que tengamos la nocin exacta de las operaciones que realiza para llegar a esos resultados. Con el computador adems de lo anterior tambin podemos disear soluciones a la medida, de problemas especficos que se nos presenten. Mas aun, si estos involucran operaciones matemticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de
datos. El diseo de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodologa que nos ensee de manera gradual, la forma de llegar a estas soluciones. A las soluciones creadas por computador se les conoce como programas y no son mas que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos especficos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especifico. Para poder realizar programas, adems de conocer la metodologa mencionada, tambin debemos de conocer, de manera especifica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma. Computador: Es un dispositivo electrnico utilizado para procesar informacin y obtener resultados. Los datos y la informacin se pueden introducir en la computadora como entrada (input) y a continuacin se procesan para producir una salida (output).
Programa: Es el conjunto de instrucciones escritas de algn lenguaje de programacin y que ejecutadas secuencialmente resuelven un problema especifico. Organizacin fsica de un computador
Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (informacin) en el computador para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Ejemplos: teclado , scanners (digitalizadores de rastreo), mouse (ratn), trackball (bola de ratn estacionario), joystick (palancas de juego), lpiz ptico, etc. Dispositivos de Salida: Regresan los datos procesados que sirven de informacin al usuario. Ejemplo: monitor, impresora. La Unidad Central de Procesamiento (C.P.U) se divide en dos: Unidad de control Unidad Aritmtico - Lgica Unidad de Control: Coordina las actividades del computador y determina que operaciones se deben realizar y en que orden; as mismo controla todo el proceso del computador. Unidad Aritmtico - Lgica: Realiza operaciones aritmticas y lgicas, tales como suma, resta, multiplicacin, divisin y comparaciones. La memoria del computador se divide en dos: 1. Memoria Central o Interna 2. Memoria Auxiliar o Externa Memoria Central (interna): La CPU utiliza la memoria del computador para guardar informacin mientras trabaja con ella; mientras esta informacin permanezca en memoria, el computador puede tener acceso a ella en forma directa. Esta memoria construida internamente se llama memoria de
acceso aleatorio (RAM). La memoria interna consta de dos reas de memoria: La memoria RAM (Randon Access Memory): Recibe el nombre de memoria principal o memoria del usuario, en ella se almacena informacin solo mientras el computador esta encendida. Cuando se apaga o arranca nuevamente el computador, la informacin se pierde, por lo que se dice que la memoria RAM es una memoria voltil. La memoria ROM (Read Only Memory): Es una memoria esttica que no puede cambiar, el computador puede leer los datos almacenados en la memoria ROM, pero no se pueden introducir datos en ella, o cambiar los datos que ah se encuentran; por lo que se dice que esta memoria es de solo lectura. Los datos de la memoria ROM estn grabados en forma permanente y son introducidos por el fabricante del computador. Memoria Auxiliar (Externa): Es donde se almacenan todos los programas o datos que el usuario desee. Los dispositivos de almacenamiento o memorias auxiliares (externas o secundarias) mas comnmente utilizados son: cintas magnticas y discos magnticos.
UNIDAD 2 DEFINICIN DE LENGUAJE 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 el computador. 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 el computador 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 en el computador son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensin del programa.
UNIDAD 3 DEFINICIN DE ALGORITMO La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solucin a un problema especifico. Tipos de Algoritmos Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso. Lenguajes Algortmicos Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso. Tipos de Lenguajes Algortmicos Grficos: Es la representacin grfica de las operaciones que realiza un algoritmo (diagrama de flujo). No Grficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocdigo). Metodologa para la solucin de problemas por medio de computadora Definicin del Problema Esta fase est dada por el enunciado del problema, el cual requiere una definicin clara y precisa. Es importante que se conozca lo que se desea que realice el computador; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. Anlisis del Problema Una vez que se ha comprendido lo que se desea del computador, es necesario definir:
Los datos de entrada. Cual es la informacin que se desea producir (salida) Los mtodos y frmulas que se necesitan para procesar los datos. Una recomendacin muy practica es el que nos pongamos en el lugar del computador y
analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. UNIDAD 4 DISEO DEL ALGORITMO Las caractersticas de un buen algoritmo son: Debe tener un punto particular de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar en la definicin del problema. Debe ser finito en tamao y tiempo de ejecucin. Codificacin La codificacin es la operacin de escribir la solucin del problema (de acuerdo a la lgica del diagrama de flujo o pseudocdigo), en una serie de instrucciones detalladas, en un cdigo reconocible por el computador, la serie de instrucciones detalladas se le conoce como cdigo fuente, el cual se escribe en un lenguaje de programacin o lenguaje de alto nivel. Prueba y Depuracin Los errores humanos dentro de la programacin de computadores son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solucin sin errores se le llama depuracin. La depuracin o prueba resulta una tarea tan creativa como el mismo desarrollo de la solucin, por ello se debe considerar con el mismo inters y entusiasmo. Resulta conveniente observar los siguientes principios al realizar una depuracin, ya que de este trabajo depende el xito de nuestra solucin. Documentacin Es la gua o comunicacin escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentacin sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). La documentacin se divide en tres partes: Documentacin Interna Documentacin Externa Manual del Usuario Documentacin Interna: Son los comentarios o mensaje que se aaden al cdigo fuente para hacer mas claro el entendimiento de un proceso.
Documentacin Externa: Se define en un documento escrito los siguientes puntos: Descripcin del Problema Nombre del Autor Algoritmo (diagrama de flujo o pseudocdigo) Diccionario de Datos Cdigo Fuente (programa) Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que el usuario obtenga el resultado deseado. Mantenimiento Se lleva acabo despus de terminado el programa, cuando se detecta que es necesario hacer algn cambio, ajuste o complementacin al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.
EVALUACIN 1 1) Cual de los siguientes elementos no constituye un dispositivo de entrada. A) Mouse B) Teclado C) Parlantes D) Escaner 2) La Unidad de Control (UC) y la Unidad Aritmtica Lgica son: A) Dispositivos de entrada B) Componentes de la CPU C) Dispositivos de Salida D) Dispositivos de Almacenamiento 3) Cual de las siguientes caractersticas no identifica una buena elaboracin de un algoritmo: A) Debe tener un punto particular de inicio. B) Debe ser definido, no debe permitir dobles interpretaciones. C) Debe ser finito en tamao y tiempo de ejecucin. D) Ninguna de las anteriores 4) La documentacin Interna describe: A) La manera de cmo funciona un programa B) Los comentarios o mensajes que se aaden al cdigo fuente C) Los datos del autor del programa D) Versin de realizacin del programa 5) Cual de los siguientes elementos no constituye un dispositivo de Salida. A) Monitor B) Impresora C) Parlantes D) Mouse 6) Defina con sus palabras memora RAM 7) Defina con sus palabras memora Auxiliar
UNIDAD 1 TIPOS DE DATOS Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carcter, tal como b, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable.
Tipos de Datos Simples Datos Numricos: Permiten representar valores escalares de forma numrica, esto incluye a los nmeros enteros y los reales. Este tipo de datos permiten realizar operaciones aritmticas comunes. Datos Lgicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparacin entre otros datos (numricos o alfanumricos). Datos Alfanumricos (String): Es una secuencia de caracteres alfanumricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar nmeros como alfanumricos, pero estos pierden su propiedad matemtica, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas.
UNIDAD 2 EXPRESIONES Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales. Por ejemplo: a+(b + 3)/c Cada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de operadores y operandos. Segn sea el tipo de datos que manipulan, se clasifican las expresiones en: - Aritmticas - Relacinales - Lgicas Operadores y Operandos Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores.
Operadores Aritmticos: Los operadores aritmticos permiten la realizacin de operaciones matemticas con los valores (variables y constantes). Los operadores aritmticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.
Operadores Aritmticos + * / Mod Modulo (residuo de la divisin entera) Ejemplos: Expresin 7/2 12 mod 7 4+2*5 Resultado 3.5 5 14 Suma Resta Multiplicacin Divisin
Prioridad de los Operadores Aritmticos Todas las expresiones entre parntesis se evalan primero. Las expresiones con parntesis anidados se evalan de dentro a fuera, el parntesis mas interno se evala primero. Dentro de una misma expresin los operadores se evalan en el siguiente orden. 1.- ^ Exponenciacin 2.- *, /, mod Multiplicacin, divisin, modulo. 3.- +, - Suma y resta. Los operadores en una misma expresin con igual nivel de prioridad se evalan de izquierda a derecha. Ejemplos: 4 + 2 * 5 = 14 23 * 2 / 5 = 9.2 46 / 5 = 9.2 3 + 5 * (10 - (2 + 4)) = 23
3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23 3.5 + 5.09 - 14.0 / 40 = 5.09 3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09 2.1 * (1.5 + 3.0 * 4.1) = 28.98 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98 Operadores Relacinales: Se utilizan para establecer una relacin entre dos valores. Compara estos valores entre si y esta comparacin produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relacinales comparan valores del mismo tipo (numricos o cadenas) Tienen el mismo nivel de prioridad en su evaluacin. Los operadores relacinales tiene menor prioridad que los aritmticos. Operadores Relacinales > Mayor que < >= <= <> = Ejemplos: Si a = 10 b = 20 c = 30 a+b>c a-b<c a-b=c a*b<>c Falso Verdadero Falso Verdadero Menor que Mayor o igual que Menor o igual que Diferente Igual
Ejemplos no lgicos: a<b<c 10 < 20 < 30 T < 30 (no es lgico porque tiene diferentes operandos) Operadores Lgicos: Estos operadores se utilizan para establecer relaciones entre valores lgicos. Estos valores pueden ser resultado de una expresin relacional. Operadores Lgicos And Or Not Y O Negacin
Operador AND
Operando2 T F T F
Resultado T F F F
Operador OR
Operando2 T F T F
Resultado T T T F
Operando T F Prioridad de los Operadores Lgicos Not And Or Prioridad de los Operadores en General 1.- ( ) 2.- ^ 3.- *, /, Mod, Not 4.- +, -, And 5.- >, <, > =, < =, < >, =, Or
Resultado F T
CAPITULO 4 TCNICAS PARA LA FORMULACIN DE ALGORITMOS UNIDAD 2 PSEUDOCODIGO Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma) que se emplea, dentro de la programacin estructurada, para realizar el diseo de un programa. En esencial, el pseudocodigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un problema determinado. El pseudocodigo utiliza palabras que indican el proceso a realizar.
Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo Ocupa menos espacio en una hoja de papel Permite representar en forma fcil operaciones repetitivas complejas Es muy fcil pasar de pseudocodigo a un programa en algn lenguaje de programacin. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin.
CAPITULO 5 ESTRUCTURAS ALGORITMICAS UNIDAD 1 CLASIFICACIONES 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:
CAPITULO 5 ESTRUCTURAS ALGORITMICAS UNIDAD 2 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 o Entrada: 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 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.
Efectuar el Ejercicio 2 EJERCICIO 2 PROBLEMAS SECUENCIALES 1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara despus de un mes si el banco paga a razn de 2% mensual. 2) Un vendedor recibe un sueldo base mas un 10% extra por comisin de sus ventas, el vendedor desea saber cuanto dinero obtendr por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibir en el mes tomando en cuenta su sueldo base y comisiones. 3) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deber pagar finalmente por su compra. 4) Un alumno desea saber cual ser su calificacin final en la materia de Algoritmos. Dicha calificacin se compone de los siguientes porcentajes: 55% del promedio de sus tres calificaciones parciales. 30% de la calificacin del examen final. 15% de la calificacin de un trabajo final. 5) Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes. 6) Realizar un algoritmo que calcule la edad de una persona. RESPUESTAS AL EJERCICIO 2
Imprimir gan Fin 2): Inicio Leer sb, v1, v2, v3 tot_vta = v1 + v2 + v3 com = tot_vta * 0.10 tpag = sb + com Imprimir tpag, com Fin 3): Inicio Leer tc d = tc * 0.15 tp = tc - d Imprimir tp Fin 4): Inicio Leer c1, c2, c3, ef, tf prom = (c1 + c2 + c3)/3 ppar = prom * 0.55 pef = ef * 0.30 ptf = tf * 0.15 cf = ppar + pef + ptf Imprimir cf Fin 5): Inicio Leer nh, nm ta = nh + nm ph = nh * 100 / ta pm = nm * 100 / ta Imprimir ph, pm Fin 6): Inicio Leer fnac, fact edad = fact - fnac Imprimir edad Fin.
Realice la Evaluacin 5
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
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)
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
si no Precede a las acciones a realizar cuando no se cumple la condicin 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 Accin(es) Fin-si Fin-si Forma General Casos Variable Op1: Accin(es) Op2: Accin(es) . . OpN: accin Fin-casos
Efectuar el Ejercicio 3 Efectuar el Ejercicio 4 Realice la Evaluacin 6 Realice la Evaluacin 7 CAPITULO 5 ESTRUCTURAS ALGORITMICAS UNIDAD 4 ESTRUCTURAS CCLICAS (HACER PARA) 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: Ciclos con un Numero Determinado de Iteraciones (Hacer-Para) Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta estructura es la siguiente:
Hacer para V.C = L.I a L.S Accion1 Accion2 . . . AccionN Fin-para Donde: V.C L.I L.S Variable de control del ciclo Limite inferir Limite superior
En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la variable de control llegue al limite superior.
Efectuar el Ejercicio 5 Realice la Evaluacin 8 CAPITULO 5 ESTRUCTURAS ALGORITMICAS UNIDAD 5 ESTRUCTURAS CCLICAS (HACER MIENTRAS)
Ciclos con un Numero Indeterminado de Iteraciones (Hacer-Mientras, Repetir-Hasta). Son aquellos en que el nmero de iteraciones no se conoce con exactitud, ya que est dado en funcin de un dato dentro del programa. Hacer-Mientras: Esta es una estructura que repetir un proceso durante "N" veces, donde "N" puede ser fijo o variable. Para esto, la instruccin se vale de una condicin que es la que debe cumplirse para que se siga ejecutando. Cuando la condicin ya no se cumple, entonces ya no se ejecuta el proceso. La forma de esta estructura es la siguiente:
EJERCICIOS PROPUESTOS
EJERCICIO 1 OPERADORES
- Determine el resultado despus el smbolo igual 1) 3 + 3 * 6 = 2) 2 + 7 * (9 - (1 + 6)) = 3) 3.4 * (1.5 + 2.0 * 6.3) = 4) 5.5 * (2.1 * 5 + (46 - (4 * 5 + 3.3)) + 4 = - Si a = 8 b = 5 c = 9, determine verdadero o falso: 5) a + b = c
6) a b > c 7) c a < b 8) b + b > a 9) ((a > b) or (a < c)) and ((a = c) or (a > = b)) 10) ((a=b) or (a=c)) or ((a > b) and (c < a)) 11) not (a < c) and not(c > b) 12) (not (a < b)) or (a > c)
EJERCICIO 2 PROBLEMAS SECUENCIALES 1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara despus de un mes si el banco paga a razn de 2% mensual. 2) Un vendedor recibe un sueldo base mas un 10% extra por comisin de sus ventas, el vendedor desea saber cuanto dinero obtendr por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibir en el mes tomando en cuenta su sueldo base y comisiones. 3) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deber pagar finalmente por su compra. 4) Un alumno desea saber cual ser su calificacin final en la materia de Algoritmos. Dicha calificacin se compone de los siguientes porcentajes: 55% del promedio de sus tres calificaciones parciales. 30% de la calificacin del examen final. 15% de la calificacin de un trabajo final. 5) Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes. 6) Realizar un algoritmo que calcule la edad de una persona. EJERCICIO 3 PROBLEMAS CONDICIONALES Problemas Selectivos Simples 1) Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversin en el banco. El decidir reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuanto dinero tendr finalmente en su cuenta. 2) Determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario. 3) En un almacn se hace un 20% de descuento a los clientes cuya compra supere los $1000 Cual ser la cantidad que pagar una persona por su compra? 4) Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera: Si trabaja 40 horas o menos se le paga $16 por hora. Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra. 5) Que lea dos nmeros y los imprima en forma ascendente 6) Una persona enferma, que pesa 70 kg, se encuentra en reposo y desea saber cuantas caloras consume su cuerpo durante todo el tiempo que realice una misma actividad. Las actividades que tiene permitido realizar son nicamente dormir o estar sentado en reposo. Los datos que tiene son que estando dormido consume 1.08 caloras por minuto y estando sentado en reposo consume 1.66 caloras por minuto. 7) Hacer un algoritmo que imprima el nombre de un articulo, clave, precio original y su precio con descuento. El descuento lo hace en base a la clave, si la clave es 01 el descuento es del 10% y si la clave es 02 el descuento en del 20% (solo existen dos claves). 8) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si se compran tres camisas o mas se aplica un descuento del 20% sobre el total de la compra y si son menos de tres camisas un descuento del 10% 9) Una empresa quiere hacer una compra de varias piezas de la misma clase a una fabrica de refacciones. La empresa, dependiendo del monto total de la compra, decidir que hacer para pagar al fabricante. Si el monto total de la compra excede de $500 000 la empresa tendr la capacidad de invertir de su propio dinero un 55% del monto de la compra, pedir prestado al banco un 30% y el
resto lo pagara solicitando un crdito al fabricante. Si el monto total de la compra no excede de $500 000 la empresa tendr capacidad de invertir de su propio dinero un 70% y el restante 30% lo pagara solicitando crdito al fabricante. El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a crdito. EJERCICIO 4 PROBLEMAS CONDICIONALES
Problemas Selectivos Compuestos 1) Leer 2 nmeros; si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no que los sume. 2) Leer tres nmeros diferentes e imprimir el numero mayor de los tres. 3) Determinar la cantidad de dinero que recibir un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el resto al triple. 4) Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna como un porcentaje de su salario mensual que depende de su antigedad en la empresa de acuerdo con la sig. tabla: Tiempo Menos de 1 ao 1 ao o mas y menos de 2 aos 2 aos o mas y menos de 5 aos 5 aos o mas y menos de 10 aos 10 aos o mas Utilidad 5 % del salario 7% del salario 10% del salario 15% del salario 20% del salario
5) En una tienda de descuento se efecta una promocin en la cual se hace un descuento sobre el valor de la compra total segn el color de la bolita que el cliente saque al pagar en caja. Si la bolita es de color blanco no se le har descuento alguno, si es verde se le har un 10% de descuento, si es amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que el cliente deber pagar por su compra. se sabe que solo hay bolitas de los colores mencionados. 6) El IMSS requiere clasificar a las personas que se jubilaran en el ao de 1997. Existen tres tipos de jubilaciones: por edad, por antigedad joven y por antigedad adulta. Las personas adscritas a la jubilacin por edad deben tener 60 aos o mas y una antigedad en su empleo de menos de 25 aos. Las personas adscritas a la jubilacin por antigedad joven deben tener menos de 60 aos y una antigedad en su empleo de 25 aos o mas. Las personas adscritas a la jubilacin por antigedad adulta deben tener 60 aos o mas y una antigedad en su empleo de 25 aos o mas. Determinar en que tipo de jubilacin, quedara adscrita una persona.
EJERCICIO 5 PROBLEMAS CCLICAS Problemas (Hacer Para)
1) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseo Estructurado de Algoritmos. 2) Leer 10 nmeros y obtener su cubo y su cuarta. 3) Leer 10 nmeros e imprimir solamente los nmeros positivos. 4) Leer 20 nmeros e imprimir cuantos son positivos, cuantos negativos y cuantos neutros. 5) Leer 15 nmeros negativos y convertirlos a positivos e imprimir dichos nmeros. 6) Suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos. Realizar un algoritmo para calcular la calificacin media y la calificacin mas baja de todo el grupo. 7) Calcular e imprimir la tabla de multiplicar de un numero cualquiera. Imprimir el multiplicando, el multiplicador y el producto. 8) Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un da desde las 0:00:00 horas hasta las 23:59:59 horas. EJERCICIO 6 PROBLEMAS CCLICAS
Problemas (Hacer Mientras) 1) Una compaa de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su poltica de pagos es que un vendedor recibe un sueldo base, y un 10% extra por comisiones de sus ventas. El gerente de su compaa desea saber cuanto dinero obtendr en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuanto tomando en cuenta su sueldo base y sus comisiones. 2) En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran en ella. El salario se obtiene de la sig. forma: Si el obrero trabaja 40 horas o menos se le paga $20 por hora Si trabaja mas de 40 horas se le paga $20 por cada una de las primeras 40 horas y $25 por cada hora extra. 3) Determinar cuantos hombres y cuantas mujeres se encuentran en un grupo de n personas, suponiendo que los datos son extrados alumno por alumno. 4) El Depto. de Seguridad Publica y Transito del D.F. desea saber, de los n autos que entran a la ciudad de Mxico, cuantos entran con calcomana de cada color. Conociendo el ultimo dgito de la placa de cada automvil se puede determinar el color de la calcomana utilizando la sig. relacin: DGITO 1o2 3o4 5o6 7o8 COLOR amarilla rosa roja verde
9o0 azul 5) Obtener el promedio de calificaciones de un grupo de n alumnos. 6) Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de inters. Cual ser la cantidad de dinero que esta persona tendr al cabo de un ao si la ganancia de cada mes es reinvertida?. 7) Calcular el promedio de edades de hombres, mujeres y de todo un grupo de alumnos. 8) Encontrar el menor valor de un conjunto de n nmeros dados. 9) Encontrar el mayor valor de un conjunto de n nmeros dados.
10) En un supermercado un cajero captura los precios de los artculos que los clientes compran e indica a cada cliente cual es el monto de lo que deben pagar. Al final del da le indica a su supervisor cuanto fue lo que cobro en total a todos los clientes que pasaron por su caja. 11) Cinco miembros de un club contra la obesidad desean saber cuanto han bajado o subido de peso desde la ultima vez que se reunieron. Para esto se debe realizar un ritual de pesaje en donde cada uno se pesa en diez bsculas distintas para as tener el promedio mas exacto de su peso. Si existe diferencia positiva entre este promedio de peso y el peso de la ultima vez que se reunieron, significa que subieron de peso. Pero si la diferencia es negativa, significa que bajaron. Lo que el problema requiere es que por cada persona se imprima un letrero que diga: SUBIO o BAJO y la cantidad de kilos que subi o bajo de peso. 12) Se desea obtener el promedio de g grupos que estn en un mismo ao escolar; siendo que cada grupo puede tener n alumnos que cada alumno puede llevar m materias y que en todas las materias se promedian tres calificaciones para obtener el promedio de la materia. Lo que se desea desplegar es el promedio de los grupos, el promedio de cada grupo y el promedio de cada alumno.
EJERCICIO 7 PROBLEMAS CCLICAS
Problemas Repetir Hasta 1) En una tienda de descuento las personas que van a pagar el importe de su compra llegan a la caja y sacan una bolita de color, que les dir que descuento tendrn sobre el total de su compra. Determinar la cantidad que pagara cada cliente desde que la tienda abre hasta que cierra. Se sabe que si el color de la bolita es roja el cliente obtendr un 40% de descuento; si es amarilla un 25% y si es blanca no obtendr descuento. 2) En un supermercado una ama de casa pone en su carrito los artculos que va tomando de los estantes. La seora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado, por lo que cada vez que toma un articulo anota su precio junto con la cantidad de artculos iguales que ha tomado y determina cuanto dinero gastara en ese articulo; a esto le suma lo que ira gastando en los dems artculos, hasta que decide que ya tomo todo lo que necesitaba. Aydale a esta seora a obtener el total de sus compras. 3) un teatro otorga descuentos segn la edad del cliente. determinar la cantidad de dinero que el teatro deja de percibir por cada una de las categoras. Tomar en cuenta que los nios menores de 5 aos no pueden entrar al teatro y que existe un precio nico en los asientos. Los descuentos se hacen tomando en cuenta el siguiente cuadro: Categoras Categora 1 Categora 2 Categora 3 Categora 4 Categora 5 Edad 5 - 14 15 - 19 20 - 45 46 - 65 66 en adelante Descuento 35 % 25 % 10 % 25 % 35 %
4) La presin, volumen y temperatura de una masa de aire se relacionan por la formula: masa= presin * volumen . 0.37 * (temperatura + 460) Calcular el promedio de masa de aire de los neumticos de n vehculos que estn en compostura en un servicio de alineacin y balanceo. Los vehculos pueden ser motocicletas o automviles. 5) Determinar la cantidad semanal de dinero que recibir cada uno de los n obreros de una empresa. Se sabe que cuando las horas que trabajo un obrero exceden de 40, el resto se convierte en horas extras que se pagan al doble de una hora normal, cuando no exceden de 8; cuando las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple. 6) En una granja se requiere saber alguna informacin para determinar el precio de venta por cada kilo de huevo. Es importante determinar el promedio de calidad de las n gallinas que hay en la granja. La calidad de cada gallina se obtiene segn la formula: calidad = peso de la gallina * altura de la gallina numero de huevos que pone Finalmente para fijar el precio del kilo de huevo, se toma como base la siguiente tabla: PRECIO TOTAL DE CALIDAD mayor o igual que 15 mayor que 8 y menor que 15 menor o igual que 8 PESO POR KILO DE HUEVO 1.2 * promedio de calidad 1.00 * promedio de calidad 0.80 * promedio de calidad
7) En la Cmara de Diputados se levanta una encuesta con todos los integrantes con el fin de determinar que porcentaje de los n diputados esta a favor del Tratado de Libre Comercio, que porcentaje esta en contra y que porcentaje se abstiene de opinar. 8) Una persona que va de compras a la tienda Enano, S.A., decide llevar un control sobre lo que va comprando, para saber la cantidad de dinero que tendr que pagar al llegar a la caja. La tienda tiene una promocin del 20% de descuento sobre aquellos artculos cuya etiqueta sea roja. Determinar la cantidad de dinero que esta persona deber pagar. 9) Un censador recopila ciertos datos aplicando encuestas para el ultimo Censo Nacional de Poblacin y Vivienda. Desea obtener de todas las personas que alcance a encuestar en un da, que porcentaje tiene estudios de primaria, secundaria, carrera tcnica, estudios profesionales y estudios de posgrado. 10) Un jefe de casilla desea determinar cuantas personas de cada una de las secciones que componen su zona asisten el da de las votaciones. Las secciones son: norte, sur y centro. Tambin desea determinar cual es la seccin con mayor numero de votantes.
EJERCICIO 8 PROBLEMAS CCLICAS
Problemas Repetir Hasta 1) Un negocio de copias tiene un limite de produccin diaria de 10 000 copias si el tipo de impresin es offset y de 50 000 si el tipo es estndar. Si hay una solicitud de un el empleado tiene que verificar que las copias pendientes hasta el momento y las copias solicitadas no excedan del limite de produccin. Si el limite de produccin se excediera el trabajo solicitado no podra ser aceptado. El empleado necesita llevar un buen control de las copias solicitadas hasta el momento para decidir en forma rpida si los trabajos que se soliciten en el da se deben aceptar o no.
2) Calcular la suma siguiente: 100 + 98 + 96 + 94 + . . . + 0 en este orden 3) Leer 50 calificaciones de un grupo de alumnos. Calcule y escriba el porcentaje de reprobados. Tomando en cuenta que la calificacin mnima aprobatoria es de 70. 4) Leer por cada alumno de Diseo estructurado de algoritmos su numero de control y su calificacin en cada una de las 5 unidades de la materia. Al final que escriba el numero de control del alumno que obtuvo mayor promedio. Suponga que los alumnos tienen diferentes promedios. 5) El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen derecho al examen de nivelacin. Disee un algoritmo que lea las calificaciones obtenidas en las 5 unidades por cada uno de los 40 alumnos y escriba la cantidad de ellos que no tienen derecho al examen de nivelacin. 6) Leer los 250,000 votos otorgados a los 3 candidatos a gobernador e imprimir el numero del candidato ganador y su cantidad de votos. 7) Suponga que tiene usted una tienda y desea registrar las ventas en su computadora. Disee un algoritmo que lea por cada cliente, el monto total de su compra. Al final del da que escriba la cantidad total de ventas y el numero de clientes atendidos. 8) Suponga que tiene una tienda y desea registrar sus ventas por medio de un computador. Disee un pseudocdigo que lea por cada cliente: A).- el monto de la venta, B).- calcule e imprima el IVA , C).-calcule e imprima el total a pagar, D).- lea la cantidad con que paga el cliente, E).-calcule e imprime el cambio. Al final del da deber imprimir la cantidad de dinero que debe haber en la caja.
EJERCICIO 9 Vectores
1) Calcular el promedio de 50 valores almacenados en un vector. Determinar adems cuantos son mayores que el promedio, imprimir el promedio, el numero de datos mayores que el promedio y una lista de valores mayores que el promedio. 2) Llenar dos vectores A y B de 45 elementos cada uno, sumar el elemento uno del vector A con el elemento uno del vector B y as sucesivamente hasta 45, almacenar el resultado en un vector C, e imprimir el vector resultante. 3) Llenar un vector de 20 elementos, imprimir la posicin y el valor del elemento mayor almacenado en el vector. Suponga que todos los elementos del vector son diferentes. 4) Almacenar 500 nmeros en un vector, elevar al cuadrado cada valor almacenado en el vector, almacenar el resultado en otro vector. Imprimir el vector original y el vector resultante. 5) Almacenar 300 nmeros en un vector, imprimir cuantos son ceros, cuantos son negativos, cuantos positivos. Imprimir adems la suma de los negativos y la suma de los positivos. 6) Almacenar 150 nmeros en un vector, almacenarlos en otro vector en orden inverso al vector original e imprimir el vector resultante. 7) Se tienen almacenados en la memoria dos vectores M y N de cien elementos cada uno. Hacer un algoritmo que escriba la palabra Iguales si ambos vectores son iguales y Diferentes si no lo son. Sern iguales cuando en la misma posicin de ambos vectores se tenga el mismo valor para todos los elementos.
8) Se tiene el vector A con 100 elementos almacenados. Disee un algoritmo que escriba SI si el vector esta ordenado ascendentemente o NO si el vector no esta ordenado. 9) Disee un algoritmo que lea un numero cualquiera y lo busque en el vector X, el cual tiene almacenados 80 elementos distintos. Escribir la posicin donde se encuentra almacenado el numero en el vector o el mensaje NO si no lo encuentra. Bsqueda secuencial. 10) Disee un algoritmo que lea dos vectores A y B de 20 elementos cada uno y multiplique el primer elemento de A con el ultimo elemento de B y luego el segundo elemento de A por el diecinueveavo elemento de B y as sucesivamente hasta llegar al veinteavo elemento de A por el primer elemento de B. El resultado de la multiplicacin almacenarlo en un vector C. 11) Disee un algoritmo que almacene en un vector llamado FIB[100] los 100 primeros nmeros de la serie fibonacci.
EJERCICIO 10 Matriz
1) Hacer un algoritmo que almacene nmeros en una matriz de 5 * 6. Imprimir la suma de los nmeros almacenados en la matriz. 2) Hacer un algoritmo que llene una matriz de 10 * 10 y determine la posicin [fila ,columna] del numero mayor almacenado en la matriz. Los nmeros son diferentes. 3) Hacer un algoritmo que llene una matriz de 7 * 7. Calcular la suma de cada fila y almacenarla en un vector, la suma de cada columna y almacenarla en otro vector. 4) Hacer un algoritmo que llene una matriz de 20 * 20. Sumar las columnas e imprimir que columna tuvo la mxima suma y la suma de esa columna. 5) Hacer un algoritmo que llene una matriz de 5 * 5 y que almacene la diagonal principal en un vector. Imprimir el vector resultante. 6) Hacer un algoritmo que llene una matriz de 10 * 10 y que almacene en la diagonal principal unos y en las dems posiciones ceros. 7) Hacer un algoritmo que llene una matriz de 6 * 8 y que almacene toda la matriz en un vector. Imprimir el vector resultante. 8) Hacer un algoritmo que llene una matriz de 8 * 8, que almacene la suma de las filas y la suma de las columnas en un vector. Imprimir el vector resultante. 9) Hacer un algoritmo que llene una matriz de 5 * 6 y que imprima cuantos de los nmeros almacenados son ceros, cuantos son positivos y cuantos son negativos.
EJERCICIO 11 Funcin 1) Disee un algoritmo que llene una matriz de 10 * 10 y determine: A) El numero mayor almacenado en la matriz B) El numero mayor almacenado en cada rengln C) La columna que tuvo la mxima suma D) El rengln que tuvo la mxima suma Disea una funcin para cada inciso. 2) Disee un algoritmo que lea un numero y mediante una funcin regrese el valor de 1 si el numero es positivo y -1 si es negativo).
EVALUACIONES
EVALUACIN 1
A) Mouse B) Teclado C) Parlantes D) Escaner 2) La Unidad de Control (UC) y la Unidad Aritmtica Lgica son: A) Dispositivos de entrada B) Componentes de la CPU C) Dispositivos de Salida D) Dispositivos de Almacenamiento 3) Cual de las siguientes caractersticas no identifica una buena elaboracin de un algoritmo: A) Debe tener un punto particular de inicio. B) Debe ser definido, no debe permitir dobles interpretaciones. C) Debe ser finito en tamao y tiempo de ejecucin. D) Ninguna de las anteriores 4) La documentacin Interna describe: A) La manera de cmo funciona un programa B) Los comentarios o mensajes que se aaden al cdigo fuente C) Los datos del autor del programa D) Versin de realizacin del programa 5) Cual de los siguientes elementos no constituye un dispositivo de Salida. A) Monitor B) Impresora C) Parlantes D) Mouse 6) Defina con sus palabras memora RAM 7) Defina con sus palabras memora Auxiliar
Si a = 12 , b = 4 y c = 7 Determine: 1) Not (a > b) 2) (a >b) or (b < c) 3) (a =c) or (b=c) or ( c>b) 4) (Not (a < b)) and (Not (b>a)) 5) Not ((Not (a < b)) or (not((c > b) and ( c>a)))) 6) (a mod b =0) or (c + b > a) 7) (( c mod b <> 0) and ((a >= b) or (c =a))) 8) Not (((a > b)or(a < c)) and ((a = c) or (a > = b)))
EVALUACIN 3
1) Cual de los siguientes objetivos no corresponde a la utilizacin de la tcnica de diseo Top-Down: A) Simplificacin del problema y de los subprogramas de cada descomposicin. B) El programa final queda estructurado en forma de bloque o mdulos lo que hace mas sencilla su lectura y mantenimiento. C) Las diferentes partes del problema pueden ser programadas de modo independiente e incluso por diferentes personas. D) Ninguna de las anteriores 2) Bottom Up se refiere a: identificacin de aquellos procesos que necesitan computarizarse conforme vayan apareciendo A) Verdadero B) Falso 3) El diseo top-Down consiste en : una serie de descomposiciones sucesivas del problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte del programa A) Verdadero B) Falso
EVALUACIN 4
1) Diagrama de Flujo es: La representacin de un programa mediante pseudocdigo A) Verdadero B) Falso 2) Asocie al lado izquierdo de la columna A, la letra de la columna B correspondiente al nombre de cada uno de los siguientes smbolos de los diagramas de flujo
3) Elabore el siguiente diagrama de flujo Una persona se encuentra con una temperatura superior a la normal. Se solicita un diagrama de flujo, que permita tomar una de las siguientes decisiones y luego mostrarlas al usuario a) Si la temperatura es superior a 39C deber llamar al mdico b) Si la temperatura es superior a 38C e inferior a 39C deber hacer reposo c) Si la temperatura es superior a 37C e inferior a 38C deber tomar una aspirina Considere que la temperatura deber ser ingresada por el usuario