Lógica de Programación
Short Description
Lógica de Programación...
Description
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
INSTITUTO NACIONAL DE USULUTÁN BACHILLERATO TÉCNICO VOCACIONAL OPCIÓN DESARROLLO DE SOFTWARE DOCENTE: NELLY MERCEDES BARRERA GRANADA
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de programación INDICE
GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACION T2: ESTRUCTURAS BASICAS DE PROGRAMACION T3: ESTRUCTURA DE DATOS
El presente módulo tiene como finalidad que usted pueda desarrollar la lógica de programación, a través del estudio de diferentes herramientas que le servirán para plantear la solución de problemas por medio de representación gráfica y pseudo codificada; a partir del análisis de un problema en particular, lo que propiciará que usted pueda iniciarse en el campo de la programación. No se pretende enseñar un lenguaje de programación, sino dar a conocer las bases de la programación; a través de un lenguaje similar al habla humana (pseudocódigo), que luego le facilite aprender a utilizar un lenguaje de programación en particular. El módulo está compuesto por una unidad que proporcionará paso a paso, las bases que usted necesita para adquirir los conocimientos e ir desarrollando la lógica de programación, y así plantear soluciones a problemas en el área de la informática. Está dividido en tres partes: la primera constituye la fase inicial de la identificación de competencias y se refiere a conceptos fundamentales del desarrollo de software, donde se definen las reglas que debe seguir para aplicar jerarquía de operadores operadores y tablas de verdad, los cuales reflejará a través de una representación algorítmica.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Luego estudiaremos las herramientas básicas de programación, donde a partir del análisis de un problema informático se representará su solución en forma gráfica o pseudo codificada. Finalmente, la tercera parte se centra en las estructuras de datos y subalgoritmos para que resuelva problemas más complejos y los aplique en situaciones de la vida real.
Al finalizar este módulo, usted habrá adquirido las competencias para aplicar las técnicas básicas que le permitan realizar el análisis de un problema, representado por medio de diagramas de flujo o pseudocódigo.
Aplicar Tablas de Verdad y Jerarquía de Operadores. Elaborar Algoritmos narrados y pseudocodificados. Diseñar Flujogramas para resolver problemas. Elaborar la estructura general de un programa. Elaborar algoritmos usando estructuras básicas de programación. Elaborar algoritmos usando arreglos en una y dos dimensiones. Resolver problemas aplicando cadenas de caracteres. Resolver problemas usando procedimientos y funciones. Aplicar métodos de ordenamiento y búsqueda en la solución de problemas.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de Programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN 1.1 Herramientas de Programación 1.2 Tablas de verdad 1.3 Tipos de datos y jerarquía de operadores 1.4 Algoritmos y Diagramas de Flujo T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN T3: ESTRUCTURAS DE DATOS o
o
o
o
Sistema de información: es un conjunto de elementos que interactúan entre sí con el fin de apoyar las actividades de una empresa o negocio[1].
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Procesamiento de Información: Es la capacidad de los Sistemas de Información para realizar cálculos con base en secuencias de operaciones preestablecidas. Estos cálculos pueden efectuarse con datos introducidos recientemente en el sistema o bien con datos que están almacenados. Esta característica de los sistemas permite la transformación de datos fuente en información que puede ser utilizada para la toma de decisiones, lo que hace posible, entre otras cosas, que un tomador de decisiones genere una proyección financiera a partir de los datos que contiene un estado de resultados o un balance general de un año base1. Procesamiento de Datos: es cualquier ordenación o tratamiento de datos, o los elementos básicos de información, mediante el empleo de un sistema. Procesar datos es generar información para la toma de decisiones[2].
Escribir un programa para resolver un problema involucra una serie de pasos desde su análisis hasta llegar a su implementación. Estos pasos se conocen como Desarrollo de Software y algunas veces como Ingeniería de Software o Ciclo de Vida de un Sistema. El desarrollo de software se puede definir como la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. [Bohem, 1976].
Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que se utiliza para escribir los programas de computadoras. Un lenguaje de programación permite a uno o más programadores especificar la forma precisa en que los datos van a ser operados en una computadora, cómo van a ser almacenados o transmitidos y qué acciones tomar ante ciertas circunstancias o problemas que se deben resolver. El programador debe ser capaz de seleccionar el lenguaje de programación apropiado para resolver DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
un problema bajo ciertas circunstancias específicas, de manera óptima. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.
[1] Tomado de informacin-1708626.
http://www.slideshare.net/miniproject/sistemas-de-
[2] Tomado de fccea.unicauca.edu.co/old/procesamiento.htm
Los compiladores, los interpretes y ls ensambladores se encargan de traducir lo que haya escrito en los lenguajes de alto nivel (código fuente) y lo convierten en código objeto (casi ejecutable).
Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel:
Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la máquina). Su función es similar a la de un traductor humano, que toma
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
un libro lo analiza completamente y produce otro equivalente escrito en una lengua diferente. Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningún código equivalente. Su acción equivale a la de un intérprete humano, que traduce las frases que oye sobre la marcha, sin producir ningún escrito permanente. Intérpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios: Con el intérprete es más fácil la búsqueda de errores, pues la ejecución del programa se puede interrumpir en cualquier momento para estudiar el entorno (valores de las variables, etc.). El intérprete va analizando instrucción por instrucción y al momento en que detecta un error se detiene permitiendo su modificación o corrección. Además, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución. El compilador genera programas más rápidos y eficientes, pues este analiza todo el código de una sola vez y luego genera un archivo objeto, por lo cual el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equivalente. Se tarda analizando solamente la primera vez, pero luego lo que se ejecuta es el código objeto, por lo cual las demás ejecuciones son más rápidas. En cambio, un intérprete como no genera el código objeto, siempre se tarda realizando el análisis pues lo hace instrucción por instrucción hasta que termina y no hayan más errores detectados. El tiempo de ejecución se irá reduciendo cuando se vayan depurando todos los errores encontrados. Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores. [1] o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Es un programa que traduce un programa escrito en un lenguaje de alto nivel, en un programa en lenguaje de máquina que la computadora es capaz de entender y ejecutar directamente. Ejemplo de lenguajes que usan compilador:
Pascal Cobol Fortran Ada Modula 2 C , C++
Involucra dos pasos en su operación: 1. Convertir código fuente a objeto 2. Ejecutar el código objeto
Fases de compilación:
[1] Tomadodewww.scribd.com/doc/37261651/Emulador-y-Simulador.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
El enlazador realiza la tarea de enlazar la funcionalidad de las teclas y funciones con el código objeto generado a través de la compilación de un programa. Una librería es la colección de varias teclas y sus funciones, las cuales son creadas por programadores expertos y almacenadas en lugares especiales para que se puedan utilizar por otros programadores. También pueden ser algunas funciones estándar como raíz cuadrada, logaritmo, random y otras. Para poder utilizar estas funciones predefinidas que están guardadas en las librerías, el programador tiene que hacer referencia a dicha librería, que es un archivo que se llama en la cabecera del programa. El proceso de enlace es mostrado a continuación:
Lógica de Programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN 1.1 Herramientas de Programación 1.2 Tablas de verdad 1.3 Tipos de datos y jerarquía de operadores 1.4 Algoritmos y Diagramas de Flujo T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN o
o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
T3: ESTRUCTURAS DE DATOS
Es la capacidad de pensar racionalmente acerca de soluciones alternativas y los resultados de aplicarlas, y por lo tanto, de hacer elecciones inteligentes. Otras definiciones de Lógica: • Es el estudio crítico del razonamiento y tiene un valor teórico y práctico.[1] • Es el estudio de los métodos y principios usados al distinguir entre los
argumentos correctos (buenos) y los argumentos incorrectos (malos). • En un sentido amplio, es el estudio del correcto razonamiento.
Cuando el razonamiento se expresa con palabras, recibe el nombre de “argumento”.
Un argumento es un grupo cualquiera de proposiciones o enunciados que forman premisas y conclusiones. Este puede constar de varias premisas pero de una sola conclusión.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
PREMISASYCONCLUSIÓN Laspremisasdeunargumentosonproposicionesafirmadascomofundamento orazonesparaaceptarunaconclusión. Laconclusióneslaproposiciónafirmadaquesebasaenlasotrasproposiciones opremisas. Unaproposiciónpuedeserpremisaenunargumentoyconclusiónenotro. Hay dos condiciones que debe satisfacer un argumento para establecer la verdad de su conclusión: Debe ser válido y todas sus premisas deben ser verdaderas. A esto se le llama razonamiento confiable.[2]
TIPOS DE PROPOSICIONES O ENUNCIADOS:
Simples o átomos Compuestas
Enunciado Simple: Es el que no contiene otro enunciado como parte componente. Los átomos o proposiciones simples son tales que no es posible encontrar en ellas otras proposiciones Ej. “Las rosas son rojas”
Enunciado compuesto: Es el que se compone de varios enunciados. Estas proposiciones compuestas están conformadas de varias proposiciones simples a través de lo que se denomina conectores lógicos, entre los cuales se encuentran: y, o, implica. Ej. “Las rosas son rojas y las violetas son azules”.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Es la certeza o falsedad de una proposición. Se representa por T (True) o V (verdadero) cuando es cierta y por F (false o falso) cuando no es cierta.
Las conectivas lógicas también se llaman a veces operadores, y son de dos tipos: Operadores
unarios:
NEGACION: Not, ¬ Ejemplo: El periódico no ha llegado todavía. Operadores CONJUNCION: AND, DISYUNCION: CONDICIONAL: BICONDICIONAL: sí y sólo sí
&, OR ==>
y ,
binarios: , ^ V implica
Ejemplo: Ayer fui al supermercado y a la escuela. (Conjunción) Compra soda o jugo (Disyunción) Si tomas entonces no manejes (Condicional) Ganarás el concurso sí y sólo sí respondes bien todas las preguntas (Bicondicional).
[1] Tomadodewww.slideshare.net/marthaill10/unidad-iv-algoritmos
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
[2] Tomadodewww.scribd.com/doc/3863819/apuntesprog
Como se mencionó anteriormente, para formar expresiones compuestas necesitamos conectivos lógicos. Comenzaremos con un conectivo unitario; este es el que se aplica solamente a una proposición. Se le llama Negación.
La operación unitaria de negación, se representa por el símbolo de Not (¬ ) y tiene la siguiente tabla de verdad:
Por ejemplo, si tenemos el enunciado: El pizarrón es verde. Su negación sería: El pizarrón no es verde.
(AND, , &) : Es una conectiva que puede definirse como verdadera sólo cuando ambas variables proposicionales sean verdaderas. En cualquier otro caso es falsa.
(V,OR) : La sentencia será verdadera cuando una o ambas variables proposicionales sean verdaderas. Con la disyunción a diferencia de la conjunción, basta con que una de las variables sea verdadera para que la disyunción nos dé verdadero. En otras palabras, sólo cuando las dos premisas son falsas, la disyunción nos dará una conclusión falsa.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Los ( ) tienen la mayor prioridad pues pueden cambiar el valor de verdad a una expresión. El NOT se aplica directamente a una proposición, si no existen paréntesis. AND tiene más prioridad que OR La jerarquía nos queda entonces: () NOT AND OR
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
EJEMPLO. Si A y B son valores verdaderos y P y Q son falsos, cuál es el valor de verdad de la siguiente expresión:
1. ¬ (A or B) ^ (P ^ ¬Q) Solución:
Lo primero que tenemos que hacer es sustituir la expresión por los valores de verdad que nos da el enunciado.
Evaluamos primero los paréntesis, comenzando con el primero. En la tabla OR buscamos a qué equivalen Verdadero or Verdadero (porque A y B son verdaderos según el enunciado). Obtenemos que es Verdadero. Como la expresión está negada, su valor opuesto es Falso. Al evaluar el segundo paréntesis, Q es falso y al negarlo nos queda verdadero. Luego, si P es falso nos queda Falso and Verdadero, y esto es igual a Falso. Entonces:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de Programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN 1.1 Herramientas de Programación 1.2 Tablas de verdad 1.3 Tipos de datos y jerarquía de operadores 1.4 Algoritmos y Diagramas de Flujo T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN T3: ESTRUCTURAS DE DATOS o
o
o
o
Uno de los propósitos de las computadoras es manejar información. La información está formada por datos. Un dato es toda aquella información característica de una entidad, que es susceptible de tratamiento en un programa informático. También es la expresión general que describe los objetos con los cuales opera una computadora. En un programa los datos de entrada se transforman por el programa hasta producir datos de salida. Para la solución de problemas, definir adecuadamente
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
las estructuras de los datos es tan importante como el diseño mismo de la solución del problema. Todos los datos tienen un tipo asociado con ellos que nos servirá para poder conocer con qué información trabajaremos. Por ejemplo, cuando ingresamos el sueldo de un trabajador necesitamos que este contenga decimales, o al solicitar la edad de una persona ésta tiene que estar con números enteros, etc. Además hay operaciones que no tienen sentido como la suma entre caracteres.
La asignación de tipos a los datos tiene dos objetivos principales:
Detectar errores de operaciones aritméticas en los programas Determinar cómo ejecutar las operaciones.
Los tipos de datos son clasificados como sigue: a) Simples b) Estructurados
Los tipos de datos simples son los que ocupan sólo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez. Los datos simples pueden dividirse en: 1. Numéricos 2. Tipos de Datos Alfanuméricos 3. Tipos de datos Lógicos o booleanos
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Estos son un tipo de datos especial que tienen la ventaja de almacenar varios valores al mismo tiempo dentro de una misma variable. Entre éstos tenemos: Arreglos (arrays), Registros (record), Archivos o Ficheros (File) y Punteros (pointer).
Deben comenzar por una letra. Pueden estar constituidos por letras y dígitos, y en algunos casos por el signo del subrayado. Ejemplo: dato_1 No deben contener espacios en blanco. Las letras no deben ser tildadas El número máximo de caracteres dependerá del compilador utilizado. Se recomienda usar nombres cortos. El nombre asignado debe tener relación con la información que contiene.
No podrá coincidir con palabras reservadas, propias del lenguaje algorítmico. Tampoco debe tener el mismo nombre de una función, ya sea definida por el usuario o de la biblioteca del lenguaje que se utilice.
Es el modo de darle valores a una variable. Se representa con el símbolo ß, el cual se conoce como instrucción o sentencia de asignación. El formato general de una operación de asignación es:
La flecha de asignación se sustituye en algunos lenguajes de programación por el símbolo de . Ejemplo: A ß 15 significa que a la variable A se le ha asignado el valor 15.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
La acción de asignar es destructiva, ya que cada vez que le asignamos un valor a una variable, éste le cae encima al anterior pues se está almacenando en un área de memoria. Por ejemplo, en la secuencia de asignaciones Aß5 A ß 123 Aß6 Cuando éstas se ejecutan, el último valor que toma A es 6 por lo tanto los otros dos han desaparecido.
Reglas de asignación.
Una variable o expresión que esta al lado derecho de una sentencia de asignación debe tener un valor antes de asignársele a la variable de la izquierda. Esto quiere decir que hasta que un programa le da un valor a una variable, esa variable no tiene valor. Ejemplos: Si x no tiene un valor antes de realizar la operación y= 2x+10, se producirá un error pues el computador no sabrá qué valor le tiene que asignar a x. Si a,b y c no tienen un valor antes de realizar la operación de x= a+b+c, también se producirá un error.
En la izquierda de una sentencia de asignación sólo puede existir una variable que reciba operaciones a la derecha, no operaciones en sí. Por consiguiente no es válido lo siguiente: valor_neto – interes = 3.5 sueldo + comision = nuevo_sueldo (lo correcto sería hacer nuevo_sueldo = sueldo + comisión). Recuerde que la variable de la
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
izquierda recibe las operaciones, variables o expresiones de la derecha, siempre y cuando éstas generen un valor para ser asignado.
Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Una expresión representa una unidad de datos simple, tal como un número o un carácter. También puede consistir en alguna combinación de entidades interconectadas por uno o más operadores. Las expresiones también pueden representar condiciones lógicas que son verdaderas o falsas. Cada expresión tiene un valor, que se determina tomando los valores de las variables y constantes implicadas ejecutando las operaciones indicadas. Ejemplos: X = 9 * 15 + 6 2.5 + 13 = 15.5 A+B = C+D
OPERANDOS OPERADORES
Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre dos o más valores, llamados operandos. Ejemplos:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
OPERADORES Los operadores especifican el tipo de cálculo que se quiere desarrollar en los elementos de una expresión. Los operadores se pueden clasificar en las siguientes categorías:
Aritméticos Relacionales Lógicos Alfanuméricos Asociativos
[1] Los operadores aritméticos son usados para realizar cálculos matemáticos. Algunos de los operadores aritméticos se listan a continuación:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
[1] Extracto tomado de Fundamentals of Programming. NIIT.
Supóngase que unas variables a y b tienen valores 10 y 3, respectivamente. Se muestran a continuación varias expresiones aritméticas en las que aparecen estas variables, acompañadas del resultado.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Para resolver una expresión aritmética se deben seguir las siguientes reglas:
Primero se resuelven las expresiones que se encuentran entre paréntesis. Todas las sub expresiones entre paréntesis se evalúan de adentro hacia afuera, desde el paréntesis más interno hasta ir desapareciéndolos todos. Se deben seguir ciertas reglas de prioridad que veremos más adelante.
OPERADORES RELACIONALES Usted puede comparar dos operandos utilizando operadores relacionales. El resultado es un valor de verdad ya sea Cierto o Falso. Tenemos seis operadores relacionales. La siguiente tabla muestra dichos operadores:
=
>
<
Compara los dos x = y operandos y evalúa si son iguales Compara los dos x y operandos y evalúa si son diferentes Evalúa si el operando x > y izquierdo es mayor que el derecho Evalúa si el operando x < y izquierdo es menor que el derecho
DESARROLLO DE SOFTWARE
Devuelve verdadero si los valores son iguales y falso si no lo son Devuelve verdadero si los valores no son iguales y falso en caso contrario Devuelve verdadero si el primero es mayor que el segundo y falso en caso contrario Devuelve verdadero si el primero es menor que el
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
>=
Evalúa si el operando x >= y izquierdo es mayor o igual que el derecho
100 Operador Lógico de negación NOT x = 10
El resultado de evaluar una expresión aritmética es un número. Ahora bien, cuando aparecen dos o más expresiones aritméticas, ¿Cómo saber qué operaciones hay que realizar primero? Por ejemplo, si tenemos una expresión 3 + 7 * 4. ¿Cuál es la respuesta correcta? Veamos: 1) 3 + 7 = 10 10 * 4 = 40. Si hacemos primero la suma el resultado será 40. 2) 7 * 4 = 28 3) 3 + 28 = 31. Si hacemos el producto y el resultado lo sumamos con el primer término, la respuesta es 31. Sabemos que la matemática es exacta, entonces ¿Si hay una única respuesta, cómo la obtenemos? Veamos otro ejemplo. Sea la expresión: X2 + 1 / 2 Observe que esta expresión es totalmente diferente a esta otra (X 2+1)/2, por lo que es importante codificar las expresiones aritméticas correctamente. Los paréntesis nos indican un orden para realizar las operaciones. Pero no siempre nos darán los paréntesis, por lo se creó la jerarquía de operadores.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
La jerarquía varía de lenguaje a lenguaje, por lo que es importante que cuando usted vaya a codificar en algún lenguaje, lo primero que debe revisar es la jerarquía que corresponde a ese lenguaje.
Para resolver una expresión se deben seguir las siguientes reglas:
Primero se resuelven las expresiones que se encuentran entre paréntesis. Se procede aplicando la jerarquía de operadores. Al evaluar una expresión, si hay dos operadores con la misma jerarquía, se procede a evaluar de izquierda a derecha. Si hay expresiones relacionales, se resuelven primero paréntesis, luego se encuentran los valores de verdad de las expresiones relacionales y por
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
último se aplica jerarquía de operadores lógicos. En caso de haber iguales, proceder de izquierda a derecha. El orden correcto a seguir, es primero resolver operadores aritméticos, luego los relacionales y por último los lógicos. Si solo hay operadores aritméticos, el resultado es un número. Si hay operadores aritméticos y relacionales, el resultado es un valor booleano.
EJEMPLOS DE OPERADORES ARITMÉTICOS. 1. Se tiene la siguiente expresión aritmética: X = 3 + 4 * 6 / 3 * 2 – 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 ¿Cuál sería el valor que al final quedará almacenado en la variable X? SOLUCIÓN Lo primero que haría el computador es recorrer la expresión buscando paréntesis, luego expresiones de potencia (o sea el símbolo ^ para resolverlo de primero debido a que este es el operador de mayor peso en la jerarquía). Como no encuentra ninguno, entonces vuelve al principio de la expresión y comienza a buscar (y resolver a medida que los encuentre) multiplicaciones y divisiones. X = 3 + 4 * 6 / 3 * 2 – 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 24 / 3 * 2 – 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 8 * 2 – 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 16 – 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 16 – 48 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 16 – 16 * 4 + 5 * 3 / 2 * 2 DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
X = 3 + 16 – 64 + 5 * 3 / 2 * 2 X = 3 + 16 – 64 + 15 / 2 * 2 X = 3 + 16 - 64 + 7.5 * 2 X = 3 + 16 – 64 + 15 X = 19 – 64 + 15 X = -45 + 15 Con lo cual hayamos que, luego de resuelta la expresión, el valor que quedará almacenado en la variable X será el valor –30. Es muy importante que cuando tenga que resolver una expresión de estas, lo haga paso a paso, sin apresuramientos y verá como obtiene, sin mayores tropiezos, el mismo resultado que le daría al computador.
Se tiene la siguiente expresión aritmética: A = 5 * 2 / 2 * 2 + 6 * 4 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2 SOLUCIÓN Como en esta expresión no existen paréntesis, operaciones de potenciación ni signo, entonces se procede a resolver el siguiente nivel de la jerarquía, de izquierda a derecha (multiplicaciones y divisiones) A = 5 * 2 / 2 * 2 + 6 * 4 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
A = 10 / 2 * 2 + 6 * 4 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2 A = 5 * 2 + 6 * 4 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2 A = 10 + 6 * 4 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2 A = 10 + 24 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2 A = 10 + 12 * 2 – 4 * 6 * 2 / 2 * 3 / 2 A = 10 + 24 – 4 * 6 * 2 / 2 * 3 / 2 A = 10 + 24 – 24 * 2 / 2 * 3 / 2 A = 10 + 24 – 48 / 2 * 3 / 2 A = 10 + 24 – 24 * 3 / 2 A = 10 + 24 – 72 / 2 A = 10 + 24 – 36 A = 10 + 24 – 36 A = 34 – 36
Resolver la siguiente expresión, para A=5 y B=16. (A ^ 2) > (B * 2) SOLUCIÓN
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
(A ^ 2) > (B * 2) El primer paso es sustituir los valores de A yB ( ) > (16 * 2) Efectuamos los paréntesis, primero el de más a la izquierda 25 > ( ) Resolvemos el paréntesis de la derecha 25 > 32 Se evalúa la expresión relacional y el resultado es Respuesta
Resolver la siguiente expresión, donde X=6 y B = 7. (X ^ 3 \ B) 3 * 2 div 2 ) or 3 derecha pues ya no hay >=3) operadores aritméticos en el primer paréntesis Not ((15>=49) and (( )Efectuamos la resta para mod 4 < > 3 * 2 div 2 ) or 3 > = quitar el paréntesis 3) Not ((15>=49) and (27 mod 4 Seguimos con el producto div 2 ) or 3 > = 3 ) Not ((15>=49) and ( Div y mod tienen igual 6 div 2 ) or 3 > = 3 ) prioridad, el de más a la izquierda es mod. Not ((15>=49) and (3 Luego efectuamos el div ) or 3 > = 3 ) DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Not (( 3>=3)
) and (3 3 ) or Ya no hay operadores aritméticos, seguimos con los relacionales, el paréntesis de más a la izquierda Not (Falso and ( ) or 3 > Luego con el de la derecha =3) Not (Falso and Falso or Quitamos el último ) operador relacional Not ( orAnd tiene mayor prioridad Verdadero) que Or Not(Falso or Verdadero) Efectuamos Or Evaluamos Negación Respuesta
Las fórmulas matemáticas se deben escribir en formato lineal. Esto obliga al uso frecuente de paréntesis que indiquen el orden de evaluación correcto de las operaciones. Linealizar una expresión significa, convertir una expresión algebraica en expresión aritmética o algorítmica.
Linealizar las siguientes expresiones: (no se olvide que linealizar significa escribir una expresión algebraica en una sola línea).
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Sabemos que la división real se representa por / y que usamos paréntesis para que se realicen las operaciones en el orden correcto. Respuesta:
X = ( a + b /c ) / ( a / b + c)
Linealizar las siguientes expresiones: (no se olvide que linealizar significa escribir una expresión algebraica en una sola línea).
Recuerde que los paréntesis ayudan a separar las expresiones para que se evalúen en el orden correcto, debemos poner los que sean necesarios, pero tratando de que no vayan más de la cuenta. Respuesta: X = ( a / (a + b)) / (a / (a - b))
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de Programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN 1.1 Herramientas de Programación 1.2 Tablas de verdad 1.3 Tipos de datos y jerarquía de operadores 1.4 Algoritmos y Diagramas de Flujo T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN T3: ESTRUCTURAS DE DATOS o
o
o
o
CONCEPTO DE ALGORITMO: Es un conjunto de pasos secuenciales y ordenados que permiten lograr un objetivo. Que sean pasos secuenciales significa que deben ser ejecutados uno después de otro y que sean pasos ordenados quiere decir que deben llevar un orden casi obligatorio (u obligatorio en la mayoría de los casos). Como puede notar el algoritmo permite lograr un objetivo. O sea que la clave para hacer buenos algoritmos y llegar a la solución de un problema es tener claro el objetivo y no perderlo nunca de vista. Debe ser independiente de la sintaxis de un lenguaje de programación puesto que es la concreción de un plan y un medio para comunicar ideas entre personas. Lo que sí es importante notar, es que de un algoritmo sale el código en un lenguaje de programación. Por cada línea del algoritmo se corresponden una o varias líneas de código en un lenguaje de programación.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
METODOLOGÍA A SEGUIR:
Establecer el problema. Analizar el problema. Para ello nos hacemos las siguientes preguntas: ¿Qué información tenemos? ¿Qué necesitamos conocer? ¿Qué queremos obtener? Diseñar el algoritmo para su solución. Codificar. o
o
o
CARACTERÍSTICAS QUE OBLIGATORIAMENTE: ♦
DEBEN
DE
CUMPLIR
LOS
ALGORITMOS
.
Lógicamente no sirve un algoritmo que no resuelve ese problema. En el caso de los programadores, a veces crean algoritmos que resuelven problemas diferentes al planteado. Los algoritmos deben mostrar claramente cuáles son los datos iniciales y cuáles son los resultados.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN ♦
. Los algoritmos se
escriben para poder ser utilizados en cualquier máquina. . Los resultados de los cálculos deben de ser exactos, de manera rigurosa. No es válido un algoritmo que sólo aproxime la solución. Debe constar de pasos claros, precisos y no ambiguos. ♦
. Deben alcanzar la solución correcta en un tiempo finito. No es un algoritmo válido aquel que produce situaciones en las que el algoritmo no termina. ♦
. Deben de permitir su ejecución las veces que sea necesario. No son válidos los que, tras ejecutarse una vez, ya no pueden volver a hacerlo por la razón que sea. Debe tener la capacidad de resolver el problema aun cuando cambiemos los datos de entrada. ♦
CARACTERÍSTICAS ACONSEJABLES PARA LOS ALGORITMOS Un algoritmo es válido si carece de errores. Un algoritmo puede resolver el problema para el que se planteó y sin embargo no ser válido debido a que posee errores. ♦
Un algoritmo es eficiente si obtiene la solución al problema en poco tiempo. No lo es si es lento en obtener el resultado. ♦
Un algoritmo es óptimo si es el más eficiente posible y no contiene errores. La búsqueda de este algoritmo es el objetivo prioritario del programador. No siempre podemos garantizar que el algoritmo hallado es el óptimo, a veces sí. ♦
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
ESTRUCTURA GENERAL DE UN ALGORITMO. Aunque no existe una única forma de representar un algoritmo, la estructura general de éste debería ser como la siguiente:
REPRESENTACIÓN DE ENTRADAS Y SALIDAS DE UN ALGORITMO.
Entradas son los datos proporcionados al computador para procesar y generar la salida. Para que los resultados sean correctos, se tienen que dar los datos de entrada correctos. La entrada se puede representar de varias formas. Flujogramas y pseudocódigo tienen diferentes métodos de representar la instrucción de aceptar una entrada. Algunos ejemplos de representación de entradas son los siguientes: En un Flujograma, la instrucción es representada usando el símbolo llamado “Entrada de datos”. Existe un símbolo para entrada por tarjeta perforada que
ya está en desuso por haber desaparecido las mismas (Ver imágen 1). Los símbolos utilizados en flujogramas para representar las entradas son los siguientes: En un pseudocódigo, la instrucción se da a través de teclado. DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Existen varias formas de representar el pseudocódigo. Por ejemplo, para leer la edad de un estudiante en una variable llamada edad (Ver imágen 2).
Un computador requiere entradas para generar las salidas. Después de aceptar la entrada, el computador la procesa y luego despliega el resultado. Este resultado es llamado la salida.
Al igual que las entradas, hay diferentes formas de representar la salida. En
un
Flujograma,
se
utiliza
el
símbolo
“desplegar”.
Los símbolos utilizados en flujogramas para representar las salidas se ven en la imagen 3: En pseudocódigo, la instrucción “desplegar salida” es representada usando
salida a pantalla o a papel que se ve en la imagen 4.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Seleccione una imágen para agrandarla.
Los comentarios en un algoritmo se usan como una referencia para explicar la lógica del mismo. Es una forma de documentar el proceso, estos no tienen efecto en el código del programa (el computador los ignora), sino que sirven DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
para que el programador comprenda mejor lo que se está representando en el algoritmo. Los comentarios se pueden representar ya sea en una sola línea o en varias líneas. Para representar comentarios en una sola línea, se utilizan dos barras: //Este es un comentario. Para representar un comentario en varias líneas se utiliza la siguiente simbología: /* Este es un comentario en varias Líneas */
NOTACIONES PARA EL DISEÑO DE ALGORITMOS Los algoritmos pueden ser representados en diferentes formas, entre las cuales tenemos:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
PSEUDO: Falso, imitación CODIGO: instrucciones escritas en un lenguaje de programación El pseudocódigo no es propiamente un código sino un tipo de descripción que incluye un poco de lenguaje natural y de instrucciones estandarizadas para los lenguajes de programación. Podemos decir que es un lenguaje intermedio entre el lenguaje natural (nuestra forma normal de expresarnos) y cualquier lenguaje de programación específico, como por ejemplo C, Fortran, Pascal, etc. Es una mezcla de lenguaje natural, símbolos, términos y otras características comúnmente utilizadas en los lenguajes de programación. Además, es una técnica para diseño de programas que permite definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema. No existe una notación formal o estándar de pseudocódigo, sino que, cada programador puede utilizar la suya propia. Usted puede detectar errores cuando escribe pseudocódigo porque cada paso del pseudocódigo puede ser revisado durante la creación.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Se concibió para superar las dos principales desventajas de los flujogramas: requiere mucho trabajo para elaborarlo y que no se puede modificar tan fácilmente sin tener que hacer un nuevo redibujo.
Es más fácil y rápido de elaborar en comparación con el Flujograma. Es más fácil detectar errores y hacer cambios. No necesita ser reescrito si se hacen cambios, ya que cada paso es independiente y puede ser modificado sin alterar los otros pasos. Es fácil su traducción a cualquier lenguaje de programación. Esto no se logra con los flujogramas y tablas de decisión, ya que el formato usado por el pseudocódigo es similar a un programa. Ambos contienen un grupo de instrucciones secuenciales usando un grupo de instrucciones definidas. Es un lenguaje algorítmico similar al español u otro idioma Es una imitación de las instrucciones reales para una computadora Permite representar en forma fácil operaciones repetitivas complejas. Al seguir las reglas se pueden observar claramente los niveles que tiene cada operación.
No provee una representación gráfica del algoritmo, por lo que puede ser difícil entender la lógica compleja de un pseudocódigo. Si el pseudocódigo contiene demasiadas condiciones anidadas puede ser difícil de entender.
El pseudocódigo puede ser diseñado en español o en inglés. Cuando se diseña en inglés, se tiene un grupo de instrucciones más parecidas a un lenguaje de programación.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Entre las instrucciones utilizadas en el pseudocódigo inglés tenemos las siguientes:
Begin …. End/ Start…. Stop. Estas instrucciones son usadas para iniciar y
finalizar. Accept, read, input: Estas instrucciones son usadas para obtener una entrada de un usuario. Display, write, print: Estas son usadas para presentar un resultado o una salida. If… else: Son usadas para hacer decisiones.
Elaborar el pseudocódigo para encontrar la superficie de un círculo para un radio cualquiera.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Continuando con el estudio de algoritmos, estudiaremos la representación en Diagramas de Flujo o llamados también Flujogramas.
FLUJOGRAMAS Son la representación gráfica de la secuencia de actividades de un proceso en los algoritmos. Consiste en símbolos para representar los pasos de un algoritmo. Cada símbolo tiene un significado que representa una acción a ser seguida, correspondiente a un paso del algoritmo. Cada símbolo se conecta a través de flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados. Puesto que un Flujograma es la representación gráfica de un algoritmo, también debe tener: ENTRADA – PROCESO – SALIDA. Para comprender mejor los diagramas de flujo, se tiene que respetar las reglas de construcción. Al realizar una prueba manual, se debe tomar un conjunto de datos significativos de entrada y comenzar a recorrer el Flujograma de arriba hacia abajo y de izquierda a derecha; según sea la forma representada, para ver cómo se comporta el Flujograma y si los resultados obtenidos son correctos y coherentes.
EJEMPLO 1. En ejemplos anteriores, diseñamos un pseudocódigo para encontrar la superficie de un círculo para un radio cualquiera. El Flujograma que representa a dicho ejemplo es el siguiente:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de Programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.5 Estructuras cíclicas T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Siempre que vamos a resolver un problema nos enfrentamos con la dificultad de tener que encontrar una solución. Para ello, tenemos que tener bien claro cuál es el problema que queremos resolver para luego determinar la solución que sea más adecuada. Esto quiere decir que debemos determinar el objetivo o propósito de querer resolver el problema. Un problema es una situación real, bajo ciertas condiciones y/o restricciones, que se necesita transformar, y conocer su comportamiento al variar algunos de sus componentes.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de Programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.5 Estructuras cíclicas T3: ESTRUCTURAS DE DATOS o
o
o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Un problema se puede dividir en acciones elementales o instrucciones, usando un número limitado de estructuras de control (básicas) y sus combinaciones que pueden servir para resolver dicho problema. Las estructuras de control de un lenguaje de programación son métodos de especificar el orden en que las instrucciones de un algoritmo se ejecutarán. Estas son por consiguiente fundamentales en los lenguajes de programación y en los diseños de algoritmos. Se les llama de control debido a que controlan el modo de ejecución del programa. Las Estructuras Básicas pueden ser: Secuenciales: cuando una instrucción del programa sigue a otra. Constan de Entrada, Proceso y Salida. Selección o decisión: acciones en las que la ejecución de alguna dependerá de que se cumplan una o varias condiciones. Pueden ser simples, dobles, compuestas y múltiples. Repetición o Iteración: cuando un proceso se repite en tanto cierta condición sea establecida para finalizar ese proceso. Estas pueden ser: Mientras (While), Desde/Para (For) y Repetir (Repeat)
Lógica de Programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección o
o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
2.5 Estructuras cíclicas T3: ESTRUCTURAS DE DATOS o
Son problemas en los que, para su solución se emplea una serie de acciones ejecutadas invariablemente en un orden secuencial. Las tareas suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicialización de variables, operaciones de asignación, cálculo, sumarización, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa:
Definición de variables (Declaración) Inicialización de variables. Lectura de datos Cálculos Salida
REPRESENTACIÓN GRÁFICA.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
1. En una tienda se ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuánto deberá pagar finalmente por su compra. Resolveremos el ejercicio, aplicando los pasos de la metodología de la solución de un problema: DEFINICIÓN DEL PROBLEMA: Obtener la cantidad de dinero que tendrá que pagar el cliente, si la tienda ofrece un 15% de descuento sobre el total de la compra.
ANÁLISIS DEL PROBLEMA: Para obtener el descuento es necesario conocer la cantidad total de la compra, y sobre ésta aplicar el 15%. Posteriormente, este descuento deberá ser sustraído de la cantidad total de la compra para así obtener la cantidad con descuento, que es la que el cliente pagará.
Pasos que se deben realizar: Salidas: Cantidad a pagar Entradas: Total de la compra
Datos adicionales: el descuento equivale al 15% sobre el total de la compra. Aplicar las siguientes fórmulas:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Descuento = total de la compra * 0.15 Cantidad a pagar = total de la compra – descuento
Sección de Declaraciones: Var Real: CP, TC, D Donde CP será Cantidad a pagar TC será total de la compra y D será el descuento
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas. El vendedor desea saber cuánto 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 sus comisiones. DEFINICIÓN DEL PROBLEMA: Obtener la cantidad de dinero que recibirá un vendedor por concepto de comisiones por tres ventas realizadas en el mes, y el total que recibirá en el mes por sueldo y comisión. Se sabe que el vendedor recibe un sueldo base y un 10% extra por comisiones de todas sus ventas.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
ANÁLISIS DEL PROBLEMA: Para obtener la comisión y la cantidad que recibirá el vendedor, se necesita realizar lo siguiente: Para obtener la cantidad total de ventas hay que conocer la cantidad de cada una de sus ventas en el mes y sumarlas. Posteriormente, sobre el total de las ventas se debe aplicar el 10% para obtener la comisión. Por último, para obtener el total de dinero que debe recibir el vendedor hay que sumarle al sueldo base la comisión.
Pasos que se deben realizar: Salidas: Cantidad a recibir por comisión, cantidad total a recibir Entradas: cantidad de venta 1, 2 y 3, sueldo base Datos adicionales: el descuento de 10% se aplicará sobre el total de las ventas del mes
Aplicar las siguientes fórmulas: Total de las ventas = Venta 1 + Venta 2 + Venta 3 Comisión = Total de las ventas * 0.10 Total a recibir = Sueldo base + Comisión
Sección de Declaraciones: Var
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Real: TV, V1,V2,V3,TR,C, SB
Donde SB será Salario Base TV será Total de las Ventas V1,V2 y V3 será el valor de las tres ventas C será la comisión
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de Programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.4.1 Estructuras selectivas simples 2.4.2 Estructuras selectivas dobles 2.4.3 Estructuras selectivas compuestas 2.4.4 Estructuras selectivas múltiples 2.4.5 Expresiones lógicas 2.5 Estructuras cíclicas T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Una decisión es la estructura según la cual se puede escoger uno de entre dos caminos lógicos dependiendo de una condición que al ser evaluada nos brinda la oportunidad de saber cuál de los dos caminos escoger. La evaluación de dicha condición siempre va a originar una respuesta VERDADERA (cuando la condición se cumple) o FALSA (cuando dicha condición no se cumple) y con ello DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
se podrá saber cuál es el conjunto de instrucciones a resolver. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if – then – else o en español si – entonces - sino) y en flujograma con una figura geométrica en forma de rombo. La condición, en algoritmos técnicos, se podrá expresar en términos de dos tipos de operadores: los operadores relacionales y los operadores booleanos. Recordemos que los operadores relacionales son aquellos que nos originan una respuesta Verdadera o Falsa y que corresponden a los símbolos mayor que, menor que, mayor o igual, menor o igual, igual (de comparación) y diferente de. Los operadores booleanos son aquellos que nos permiten establecer conexiones entre expresiones en donde aparezcan los operadores booleanos y corresponden a los operadores:
AND: Genera Verdadero si todas las expresiones relacionales conectadas son Verdaderas OR: Genera Verdadero si al menos una de las expresiones conectadas es Verdadera NOT que invierte el sentido lógico de la expresión
Con estos elementos podemos recordar que la utilización de las decisiones como estructura básica de programación no tiene ninguna restricción y que pueden considerarse como válidos los siguientes casos:
Una decisión dentro de otra Una decisión a continuación de otra Muchas decisiones dentro de otras Muchas decisiones a continuación de otras
Los lenguajes de programación normalmente cuentan con una forma de seleccionar uno de entre varios caminos lógicos que correspondería a una pequeña modificación de la estructura de DECISIÓN pero que en última parte del mismo supuesto. Las estructuras selectivas o alternativas se clasifican en: a) Simples DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
b) Dobles c) Compuestas d) Múltiples
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.4.1 Estructuras selectivas simples 2.4.2 Estructuras selectivas dobles 2.4.3 Estructuras selectivas compuestas 2.4.4 Estructuras selectivas múltiples 2.4.5 Expresiones lógicas 2.5 Estructuras cíclicas T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Se identifican porque están compuestos únicamente de una condición. La estructura si – entonces evalúa la condición y en tal caso: Si la condición es verdadera, entonces ejecuta la acción Si (o acciones si son varias). Si la condición es falsa, entonces no se hace nada.
Representación gráfica:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
DONDE: Condición: Expresa la condición o conjunto de condiciones a evaluar Acción: Expresa la operación o conjunto de operaciones que se van a realizar si la condición resulta verdadera.
Construir un algoritmo tal, que dado como dato la calificación de un alumno en un examen, escriba DEFINICIÓN DEL PROBLEMA El mismo enunciado.
ANÁLISIS DEL PROBLEMA
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Salidas: mensaje de aprobado si se cumple la condición. Entradas: calificación Datos adicionales: un alumno aprueba si la calificación es mayor o igual que 7.
Sección de declaraciones: Var Real: Cal Donde Cal = calificación“Aprobado” en caso que esa calificación fuese mayor o igual que 7.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de Programacion INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.4.1 Estructuras selectivas simples 2.4.2 Estructuras selectivas dobles 2.4.3 Estructuras selectivas compuestas 2.4.4 Estructuras selectivas múltiples 2.4.5 Expresiones lógicas 2.5 Estructuras cíclicas T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Son estructuras lógicas que permiten controlar la ejecución de varias acciones y se utilizan cuando se tienen dos opciones de acción, por la naturaleza de estas
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.
REPRESENTACIÓN GRÁFICA:
DONDE: Condición:
Expresa la condición o conjunto de condiciones a evaluar
Acción 1: Expresa la operación o conjunto de operaciones que se van a realizar si la condición resulta verdadera. Acción 2: Expresa la operación o conjunto de operaciones que se van a realizar si la condición resulta falsa
REPRESENTACIÓN PSEUDOCODIFICADA.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Si entonces
If then
sino
else
Fin_Si
End_if
En este caso se constituye en una selección de dos posibilidades. Si la condición es verdadera se ejecuta la acción 1, y si es falsa, se ejecuta la acción 2. En el Flujograma es recomendable que el camino verdadero deba colocarse a la derecha y lo falso a la izquierda. En el diagrama N-S no se puede cambiar el orden del Si y No.
Dado como dato la calificación de un alumno en un examen, escriba “aprobado” si su calificación es mayor o igual que 7 y “Reprobado” en
caso contrario.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Dado el sueldo de un empleado, encontrar el nuevo sueldo si obtiene un aumento del 10% si su sueldo es inferior a $600, en caso contrario no tendrá aumento. DEFINICIÓN DEL PROBLEMA. El mismo enunciado.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
ANALISIS DEL PROBLEMA. Salidas: nuevo sueldo
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.4.1 Estructuras selectivas simples 2.4.2 Estructuras selectivas dobles o
o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
2.4.3 Estructuras selectivas compuestas 2.4.4 Estructuras selectivas múltiples 2.4.5 Expresiones lógicas 2.5 Estructuras cíclicas T3: ESTRUCTURAS DE DATOS
o
En la solución de problemas encontramos numerosos casos en los que luego de tomar una decisión y marcar el camino correspondiente a seguir, es necesario tomar otra decisión. Dicho proceso puede repetirse numerosas veces. En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque está anidado dentro del otro. A este tipo de estructuras se les conoce también como estructuras selectivas anidadas.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
En este caso hay dos condiciones, la primera es una selectiva simple, porque solamente tiene una posibilidad. Cuando es verdadera, se ejecuta la . Si es falsa, se continúa directamente directamente con el siguiente bloque de diagrama. La es selectiva doble, tiene dos posibilidades. Cuando es verdadera, se ejecuta la y si es falsa, se ejecuta la
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
1. 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 éstas 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 paga por una hora normal y el resto al triple. DEFINICIÓN DEL PROBLEMA El mismo enunciado. ANÁLISIS DEL PROBLEMA. Datos de salida: Pago. Datos de entrada: número de horas trabajadas y pago por hora normal. Datos Adicionales: Lo primero que hay que determinar es si el trabajador trabajó horas extras o no. Encontrar las horas extras de la siguiente forma: Horas extras = horas trabajadas – 40 En caso que sií trabajó horas extras: Si horas extras > 8 entonces a horas extras excedentes de 8 = horas extras –8 y pago por horas extras = pago por hora normal * 2 * 8 + pago por hora normal * 3 * horas extras excedentes de 8 De otra forma (solo horas al doble) pago por horas extras = pago por hora normal * 2 * horas extras.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Finalmente, pago total que recibirá el trabajador será: Pago = pago por hora normal * 40 + pago por horas extras. Si no trabajó horas extras tendremos: Pago = pago por hora normal * horas trabajadas. Definición de variables: ht = horas trabajadas que exceden de 8
het = horas extras
ph = pago por hora normal extras
phe = pago por horas
he = horas extras el trabajador
pt = pago que recibe
DECLARACIÓN DE VARIABLES: ENTERO: ht, he, het
REAL: ph, phe, pt
PSEUDOCÓDIGO: Begin Read (ht, ph) If ht >40 then he ß ht – 40 If he > 8 then het ß he – 8 phe ß ph * 2 * 8 + ph * 3 * het else DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
phe ß ph * 2 * he End_if pt ß ph * 40 + phe else pt N2) and (N1 > N3)? (10>8) and (10>1)? YES NM = 10 10
2
13
4 (N1 > N2) and (N1 > N3)? (2 > 13) and (2 > 4) F
and F
NO
(N2 > N3)? (13 > 4) YES NM = 13 13 5
2
8 (N1 > N2) and (N1 > N3)? (5 > 2) and (5 >8) T
and F
NO
(N2 > N3)? (2 > 8) NO
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
NM = 8 8
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.4.1 Estructuras selectivas simples 2.4.2 Estructuras selectivas dobles 2.4.3 Estructuras selectivas compuestas 2.4.4 Estructuras selectivas múltiples 2.4.5 Expresiones lógicas 2.5 Estructuras cíclicas T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Con frecuencia es necesario que existan más de dos elecciones posibles. Este problema se podría resolver por estructuras selectivas simples o dobles, anidadas o en cascada, pero si el número de alternativas es grande puede plantear serios problemas de escritura y de legibilidad. Usando la estructura de decisión múltiple se evaluará una expresión que podrá tomar n valores distintos, 1, 2 , 3, ...., n y según que elija uno de estos valores en la condición, se realizará una de las n acciones o lo que es igual, el flujo del algoritmo seguirá sólo un determinado camino entre los n posibles. Esta estructura se representa por un selector el cual si toma el valor 1 ejecutará la acción 1, si toma el valor 2 ejecutará la acción 2, si toma el valor N realizará la acción N.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Así, si el selector toma el valor 1 se ejecutará la acción 1, si toma el valor 2 se ejecutará la acción 2, si toma el valor N, se realizará la acción N. De otra forma, si no es ningún caso de los anteriores, significa que no se cumplió ninguna de las anteriores, entonces se realizará la acción X. Deberá reemplazar Selector por variables, propiedad o expresión que vaya a ser el valor clave.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Diseñar un algoritmo tal que dados como datos dos variables de tipo entero, obtenga el resultado de la siguiente función:
DEFINICION DEL PROBLEMA El mismo enunciado.
ANALISIS DEL PROBLEMA Salidas: Resp Entradas: V, num Datos adicionales: según el valor que tome num, así encontraremos Resp con las fórmulas dadas. Sección de Declaraciones: Var integer: V, num Real: resp Donde resp será el resultado de la función, V y num los valores de las dos variables de entrada
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
PRUEBA MANUAL DEL ALGORITMO
NUM 1
V 4
Resp Switch (1) resp=100 * 4 Resp = 400 400
5
2
Switch(5) default: Resp = 0 0
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Para este ejercicio es recomendable agregar una validación antes de entrar al switch, ya que V nunca puede ser cero pues invalida la opción 3 al volverse indeterminada la división.
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.4.1 Estructuras selectivas simples 2.4.2 Estructuras selectivas dobles 2.4.3 Estructuras selectivas compuestas 2.4.4 Estructuras selectivas múltiples 2.4.5 Expresiones lógicas 2.5 Estructuras cíclicas T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Sirven para plantear condiciones o comparaciones y dan como resultado un valor booleano verdadero o falso, es decir, se cumple o no se cumple la condición. Se pueden clasificar en simples y complejas. Las simples son las que usan operadores relacionales y las complejas las que usan operadores lógicos.
Un ejemplo en el cual usamos el operador lógico AND sería: Una escuela aplica dos exámenes a sus aspirantes, por lo que cada uno de ellos obtiene dos calificaciones DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
denotadas como C1 y C2. El aspirante que obtenga calificaciones mayores que 80 en ambos exámenes es aceptado; en caso contrario es rechazado. En este ejemplo se dan las condiciones siguientes: If (C1 >= 80) and (C2 >= 80) then print (“aceptado”)
else print (“rechazado”)
end_if Note que también usa operadores relacionales. Por lo general cuando hay operadores lógicos, éstos van acompañados de operadores relacionales. Un ejemplo usando el operador lógico OR sería: Una escuela aplica dos exámenes a sus aspirantes, por lo que cada uno de ellos obtiene dos calificaciones denotadas como C1 y C2. El aspirante que obtenga una calificación mayor que 90 en cualquiera de los exámenes es aceptado; en caso contrario es rechazado. En este caso se dan las condiciones siguientes:
If (C1 >=90) or (C2 >=90) then print (“aceptado”) else print (“rechazado”)
Fin_si
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
La instrucción equivale a OR ya que nos dice que puede ser en cualquiera de los exámenes no necesariamente en los dos. En el ejemplo 1 la palabra ambos equivalía a seleccionar la instrucción AND. Si la instrucción nos dijera “que obtenga una nota en cualquiera de los exámenes pero no en ambos”, nos estaría indicando una instrucción XOR que
es un tipo de OR pero exclusivo. Es decir, no puede considerarse el caso en que tenga la misma nota en los dos exámenes, solo en uno de los dos.
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.5 Estructuras cíclicas 2.5.1 Tipos de ciclos 2.5.2 La estructura FOR 2.5.3 La estructura WHILE 2.5.4 La estructura REPEAT 2.5.5 Conversión de estructuras 2.5.6 Bucles anidados T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Estos conceptos básicos de un programa son fundamentales en las estructuras repetitivas.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
El bucle, ciclo o lazo, es un segmento de un algoritmo o programa cuyas instrucciones se repiten un número determinado de veces, mientras se cumple una determinada condición específica (existe o es verdadera la condición).[1]
Un ciclo tiene las siguientes características: a. El conjunto de instrucciones debe ser finito b. La cantidad de veces que se repita dicho conjunto de instrucciones también debe ser finita. En algunos casos esta cantidad de veces va a depender de una condición explícita y en otros casos va a depender de una condición implícita. Una condición es explícita cuando depende solamente de la misma ejecución del programa sin que sea importante la participación del usuario. Asimismo una condición es implícita cuando depende solamente de la voluntad del usuario y por lo tanto la cantidad de iteraciones o repeticiones del ciclo podría llegar a ser diferente cada vez pues sería posible que cambiara con cada usuario. c. Deben estar claramente demarcados el inicio y el fin del ciclo. En los casos en los cuales solo exista una instrucción a iterar, no serán necesarias dichas marcas. d. Dentro de un ciclo podrá ir cualquiera de las otras estructuras que se han estudiado incluyendo otros ciclos. Un bucle consta de tres partes:
Decisión Cuerpo del bucle Salida del bucle
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle.
Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad fija en cada iteración. Se utilizan en los siguientes casos:
Para contabilizar el número de veces que es necesario repetir una acción (variable de control de un bucle) Para contar un suceso particular solicitado por el enunciado del problema (asociado a un bucle independiente) Representa la variable de control del ciclo. Toma un valor inicial (generalmente 0 ó 1) y se incrementa en la mayoría de los casos. Toma un valor inicial y se compara con el valor final.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operación de inicialización y posteriormente las sucesivas de incremento o decremento del mismo. La inicialización consiste en asignarle al contador un valor. Se situará antes y fuera del bucle. Representación: ß + Si en vez de incremento es decremento se coloca un menos en lugar del más. Ejemplo:
i = i + 1 (incremento) i = i – 1 (decremento)
Un acumulador es un campo de memoria que suma sobre sí misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor cero. Además en las situaciones en que hay que obtener un total como producto de distintas cantidades se utiliza un acumulador, debiéndose inicializar con el valor.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en uno en un valor constante, el acumulador va aumentando en una cantidad variable. Representación: ß +
[1] Tomadodeenriquebarrueto0.tripod.com/algoritmos/cap03.doc
Debe notar que el cambio de las variables contadoras se realiza de uno en uno y el de las variables acumuladoras de la suma de los números.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.5 Estructuras cíclicas 2.5.1 Tipos de ciclos 2.5.2 La estructura FOR 2.5.3 La estructura WHILE o
o
o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
2.5.4 La estructura REPEAT 2.5.5 Conversión de estructuras 2.5.6 Bucles anidados T3: ESTRUCTURAS DE DATOS
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.5 Estructuras cíclicas 2.5.1 Tipos de ciclos 2.5.2 La estructura FOR 2.5.3 La estructura WHILE 2.5.4 La estructura REPEAT 2.5.5 Conversión de estructuras 2.5.6 Bucles anidados T3: ESTRUCTURAS DE DATOS o
o
o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
DEFINICIÓN La estructura repetitiva For (desde) es aquella en la que el número de iteraciones se conoce por anticipado, y por ello no se precisa poner ninguna condición de salida para detener el bucle. En su lugar un contador cuenta el número de iteraciones fijas y se termina cuando llega al valor final previamente definido. Quiere decir que esta estructura se usa frecuentemente cuando se conoce de antemano el número de veces que se ejecutarán las acciones de un bucle. Esta es una de sus características.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Calcular la suma de los cuadrados de los primeros 100 enteros y escribir el resultado.
DEFINICIÓN DEL PROBLEMA El mismo enunciado.
ANÁLISIS DEL PROBLEMA Salidas: cuadrados de los primeros 100 enteros Entradas: ninguna Datos adicionales: Acumulador de cuadrados: la variable suma Para generar los cuadrados usamos suma ß suma + i * i
Sección de declaraciones: Var entero: suma , i Donde i es el índice del bucle, suma es el acumulador de la suma de cuadrados.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
PRUEBA MANUAL DEL ALGORITMO Como son 100 elementos, el algoritmo resulta muy grande, por lo tanto realizaremos la prueba con valor final de 4 en vez de 100, solamente para ver el funcionamiento del bucle.
Suma = 0 i=1
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
suma = suma + i * i suma = 0 + 1 * 1 = 1 i=2 suma = 1 + 2 * 2 = 5 i=3 suma = 5 + 3 * 3 = 14 i=4 suma= 14 + 4 * 4 = 14+16= 30 i=5 fuera del rango. (Termina el bucle) 30 Observe que no hay entradas en este ejercicio.
Hay un número importante de reglas que deben seguirse cuando se utilizan instrucciones FOR:
Los valores inicial y final de la variable de control se determinan antes de que empiece la repetición y no pueden cambiarse durante la ejecución de la instrucción For. Dentro del cuerpo del bucle For, los valores de las variables que especifican los valores inicial y final pueden cambiar, pero esto no va a afectar al número de repeticiones. La instrucción del cuerpo del bucle de una instrucción For puede utilizar el valor de la variable de control, pero no debe modificar este valor. Esta estructura se puede usar únicamente en aquellos casos en que conocemos el número de veces que se va a realizar el ciclo.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Esta estructura hace el incremento automáticamente y se inicializa en la instrucción For.
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.5 Estructuras cíclicas 2.5.1 Tipos de ciclos 2.5.2 La estructura FOR 2.5.3 La estructura WHILE 2.5.4 La estructura REPEAT 2.5.5 Conversión de estructuras 2.5.6 Bucles anidados T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Se llama Mientras a la estructura algorítmica que se ejecuta mientras la condición evaluada resulte verdadera. Se evalúa la expresión booleana y, si es cierta, se ejecuta la instrucción especificada, llamada el cuerpo del bucle. Entonces se vuelve a evaluar la expresión booleana, y si todavía es cierta se ejecuta de nuevo el cuerpo. Este proceso de evaluación de la expresión booleana y ejecución del cuerpo se repite mientras la expresión sea cierta. Cuando se hace falsa, finaliza la repetición. Si la condición del bucle While se evalúa a falso cuando se ejecuta el bucle por primera vez, el cuerpo del bucle no se ejecutará nunca. En este caso se dice que el bucle se ha ejecutado cero veces.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
La condición lógica en un bucle While, debe tener un valor la primera vez que se evalúa; en caso contrario, el programa abortará al ejecutarse While. La condición lógica en un bucle While, debe ser modificada por una sentencia en el cuerpo del bucle, normalmente por un contador, en caso contrario, el bucle es infinito. REPRESENTACIÓN GRÁFICA:
Existen tres métodos para controlar o terminar un bucle:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Un bucle controlado por contador es un bucle cuyas iteraciones se controlan por una variable, cuyo valor representa a un contador. El mecanismo utilizado es una variable de control del bucle que actúa como contador. Un bucle controlado por contador consta de tres partes, además del cuerpo y de la condición de salida:
Inicialización de la variable de control del bucle Comprobación del valor de la variable de control del bucle Incremento del valor de la variable del control del bucle
El formato de este bucle es: 1. Establecer variable contador a un valor inicial 2. While variable contador < valor final do Proceso Incrementar variable contador en X veces 1. End_While Se utiliza un bucle controlado por contador, cuando se conoce con anticipación el número de veces que se va a realizar la acción, es decir cuántas iteraciones se deben ejecutar exactamente. En ese caso decimos que esta estructura trabaja igual que la estructura For.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Elabore pseudocódigo para el caso en que se desean escribir los números del 1 al 100 Begin Var integer: i i=1 While i ‘ N’) and ( resp < > ‘n’) do
Read (num) suma
=
suma
+
num
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
prod = prod * num print (“Desea continuar (S / N)?”)
read ( resp ) End_While print (“Total de la suma es:” , suma)
print (“Total de producto es:”, prod) End
Diseñe un pseudocódigo para calcular la suma y producto de N números enteros, utilizando un bucle controlado por centinela. Begin Var integer : suma, prod, num suma ß 0 prod ß 1 read (num) While ( num < > -1) do suma
ß
suma
+
num
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
prod ß prod * num read ( num ) End_While print (“Total de la suma es:” , suma) print (“Total de producto es:”, prod)
Fin
Una bandera o interruptor (flag) es una variable lógica que se utiliza para conservar el estado (verdadero o falso) de una condición. El valor del interruptor debe inicializarse antes de comenzar el bucle y debe cambiar su estado (valor) dentro del cuerpo del bucle. Normalmente la bandera puede tomar los valores de 1 o 0, True o False Se utiliza para:
Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior, para salir de un bucle o para decidir en una instrucción alternativa qué acción realizar Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Determinar si un número entero proporcionado por el usuario es primo. Un número primo es un entero que no tiene más divisores que él mismo y la unidad. Elaborar Pseudocódigo: Begin Var boolean: primo integer: divisor, num, res primo = ‘True’
divisor = 2 read (num) while ((divisor < num) and (primo = ‘T’)) do
Res = num mod divisor if (res = 0) then primo = ‘F’
end_if divisor = divisor + 1 end_while if primo = ‘T’ then print (“Numero”, num, “es primo”)
else
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
print (“Numero”, num, “no es primo”)
end_if End
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.5 Estructuras cíclicas 2.5.1 Tipos de ciclos 2.5.2 La estructura FOR 2.5.3 La estructura WHILE 2.5.4 La estructura REPEAT 2.5.5 Conversión de estructuras 2.5.6 Bucles anidados T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Se llama Repetir a la estructura algorítmica que se ejecuta un número definido de veces hasta que la condición se torna verdadera.
Las reglas para construcción de una estructura usando Repeat, nos dicen que debemos declarar una variable contador que debe inicializarse antes del ciclo e DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
incrementarse dentro del ciclo. A diferencia de la estructura While, la condición ahora estará colocada al final del bucle para que primero ejecutemos la instrucción y luego preguntamos si la condición se cumple. Esto quiere decir, que en esta estructura el bucle se realizará por lo menos una vez. También podrá observar que la condición está al revés, porque el bucle se repite hasta que la condición se cumpla. En el bucle While, la condición se evaluaba mientras era cierta. Hoy en Repeat se evalúa mientras es falsa. Igual que el bucle While, el bucle repeat puede ser controlado por contador, por condición o por banderas.
REPRESENTACIÓN PSEUDOCODIFICADA:
Español
Inglés
Repetir
Repeat
Acciones Hasta que
DESARROLLO DE SOFTWARE
Acciones Until
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Cuando el bucle es controlado por contador, se inicializa la variable contadora, luego se realiza el proceso, se incrementa la variable contadora y después se coloca la condición. Como en el bucle While se usa el símbolo menor o menor o igual, aquí usamos el símbolo mayor o mayor o igual; debido a que la condición es contraria a la del While, y porque se realizará mientras sea falsa. En ese caso decimos que el bucle repeat se realizará por lo menos una vez.
Cuando el bucle es controlado por condición, si es controlado por el usuario, se continuará cuando el usuario lo indique pero se entrará siempre la primera vez y luego se coloca la condición para que el usuario decida si continúa o sale.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Si la condición es por centinela, al contrario del bucle While, acá realizaremos las acciones hasta que la variable sea igual al centinela. Note que en el bucle While se hace mientras es diferente de centinela, aquí es lo contrario.
El proceso es igual que en el bucle Mientras, con la diferencia de que la condición se coloca en la parte de abajo. Generalmente cuando se usan banderas para controlar un bucle, se utilizan operadores lógicos en la condición. Las banderas también se pueden usar como parte de un proceso, para controlar la secuencia de dichos procesos.
Aplicar los pasos de la metodología para la solución de un problema para leer un número entero N y calcular el resultado de la siguiente serie: 1 – 1/2+ 1/3 – 1/4 +.... +/- 1/N. Resolveremos el problema utilizando bucle Repeat controlado por contador y usando banderas. DEFINICIÓN DEL PROBLEMA El mismo enunciado.
ANÁLISIS DEL PROBLEMA Salidas: suma de los términos de la serie. Entradas: número de términos para la serie
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Datos adicionales: ninguno. Cálculos: Serie ß serie +/- (1/I) Sección de Declaraciones: Var Integer: I,N Real: serie Char: band
PSEUDOCÓDIGO
Begin Serie = 0 I=1 Read (N) band = ‘T’ Repeat If band = ‘T’ then
Serie = serie + (1/I) band = ‘F’
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
else Serie = serie – (1/I) band = ‘T’
end_if I=I+1 Until (I > N) print (serie) End
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.5 Estructuras cíclicas 2.5.1 Tipos de ciclos 2.5.2 La estructura FOR 2.5.3 La estructura WHILE 2.5.4 La estructura REPEAT 2.5.5 Conversión de estructuras 2.5.6 Bucles anidados T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Las estructuras repetitivas e iterativas sirven para resolver problemas en los cuales el mismo proceso se repite un número determinado de veces. El mismo problema puede resolverse con cualquiera de las tres estructuras estudiadas, DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
siempre y cuando se cumplan ciertos requisitos que corresponden a cada estructura. A continuación se muestra un cuadro comparativo de las tres estructuras, a tomar en cuenta para resolver un problema.
CUADRO COMPARATIVO DE LAS TRES ESTRUCTURAS FOR WHILE REPEAT Se usa cuando Se usa cuando Se usa cuando conocemos el número sabemos o no el sabemos o no el de veces que se hará el número de veces que número de veces que bucle se hará el bucle se hará el bucle Se maneja con Se puede manejar con Se puede manejar con contadores contadores y con contadores y con centinelas centinelas Se inicializa y se Si se controla con Si se controla con incrementa contadores, se debe contadores, se debe automáticamente inicializar e inicializar e incrementar incrementar Es una estructura Es una estructura Es una estructura repetitiva iterativa iterativa Pueden usarse Pueden usarse Pueden usarse banderas o banderas o banderas o acumuladores acumuladores acumuladores Tiene su propio símbolo No tienen un símbolo No tienen un símbolo en el Flujograma. en el flujograma, usan en el flujograma, usan el de decisión el de decisión Se realiza cero o más Puede en algunos Se realiza por lo veces casos no realizarse ni menos una vez una vez La condición está La condición se sitúa al La condición se sitúa al implícita en la definición inicio del bucle final del bucle Se realiza mientras la Se realiza mientras las Se realiza hasta que la condición evaluada es condición evaluada es condición evaluada se verdadera verdadera hace verdadera (se hace cuando es falsa) DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 2.1 Metodología para la solución de problemas 2.2 Tipos de estructuras básicas. 2.3 Estructuras secuenciales 2.4 Estructuras de selección 2.5 Estructuras cíclicas 2.5.1 Tipos de ciclos 2.5.2 La estructura FOR 2.5.3 La estructura WHILE 2.5.4 La estructura REPEAT 2.5.5 Conversión de estructuras 2.5.6 Bucles anidados T3: ESTRUCTURAS DE DATOS o
o
o
o
o
Los bucles son anidados cuando están dispuestos de tal modo que unos son interiores a otros. Las reglas para construir las estructuras anidadas establecen que la estructura interna debe estar incluida totalmente dentro de la externa y no debe existir solapamiento. Las variables índices o de control de los bucles toman valores de modo tal que por cada valor de la variable índice del ciclo externo se debe ejecutar totalmente el bucle interno.
Ejemplo 1: Calcular el factorial de N números enteros leídos de teclado.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
El problema consistirá en realizar una estructura de N iteraciones aplicando el factorial de un número. El pseudocódigo es el siguiente: Begin Read (n) For i = 1 to n do read (numero) fact = 1 for j = 1 to numero do fact = fact * j End_for Print (“El factorial del numero”, numero, “es”, fact )
End_for Fin
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN T3: ESTRUCTURAS DE DATOS 3.1 Estructura de datos 3.2 Arreglos en una dimensión 3.3 Arreglos en dos dimensiones o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN T3: ESTRUCTURAS DE DATOS 3.1 Estructura de datos 3.2 Arreglos en una dimensión 3.3 Arreglos en dos dimensiones o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Todas las variables que se han considerado hasta ahora son de tipo simple. Una variable de tipo simple consiste de una sola caja de memoria y sólo puede contener un valor cada vez. Una variable de tipo estructurado consiste en toda una colección de casillas de memoria. Los tipos de datos estudiados: entero, real, alfabético son considerados como datos de tipo simple, puesto que una variable que se define con alguno de estos tipos sólo puede almacenar un valor a la vez, es decir, existe una relación de uno a uno entre la variable y el número de elementos (valores) que es capaz de almacenar. En cambio, un dato de tipo estructurado, como el arreglo, puede almacenar más de un elemento (valor) a la vez, con la condición de que todos los elementos deben ser del mismo tipo, es decir, que se puede tener un conjunto de datos enteros, reales, etc.
ESTRUCTURA DE DATOS es una colección de datos que se caracterizan por su organización y las operaciones que se definen en ella. Los datos estructurados, llamados también estructuras de datos, son una colección o conjunto de datos simples que tiene el mismo nombre.
LAS ESTRUCTURAS DE DATOS SE CLASIFICAN EN:
a) ESTRUCTURA DE DATOS ESTÁTICAS:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Son aquellas en las que el espacio ocupado en memoria se define en tiempo de compilación y no puede ser modificado durante la ejecución del programa. Entre ellas tenemos:
Arrays Registros Archivos
b) ESTRUCTURAS DE DATOS DINÁMICAS: Son aquellas en las que el espacio ocupado en memoria puede ser modificado en tiempo de ejecución. Corresponden a este tipo:
Lineales (Pilas, Colas y listas enlazadas) No lineales (árboles y grafos).
Estas estructuras no son soportadas en todos los lenguajes.
La elección de la estructura de datos idónea, dependerá de la naturaleza del problema a resolver, y en menor medida, del lenguaje. Las estructuras de datos tienen en común que un identificador, nombre, puede representar a múltiples datos individuales.
Un arreglo (array) es una colección de datos del mismo tipo, que se almacenan en posiciones consecutivas de memoria y reciben un nombre común. Para DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
referirse a un determinado elemento de un array se deberá utilizar un índice, que especifique su posición relativa en el array.[1]
Un arreglo es una colección finita, homogénea y ordenada de elementos. Finita: Todo arreglo tiene un límite; es decir, debe determinarse cuál será el número máximo de elementos que podrán formar parte del arreglo. Homogénea: Esto significa que todos los elementos del arreglo deben ser del mismo tipo. (Todos enteros, todos reales, todos booleanos, etc.) Ordenada: Se puede determinar cuál es el primer elemento, el segundo, el tercero,.... y el n-ésimo elemento.
También el orden es significativo, el orden viene dado por el subíndice de un vector.
[1] Tomado de http://www.mailxmail.com/curso-aprendeprogramar/estructuras-datos-arreglos
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN T3: ESTRUCTURAS DE DATOS 3.1 Estructura de datos 3.2 Arreglos en una dimensión 3.3 Arreglos en dos dimensiones o
o
o
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Están formados por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre, y se diferencian por la posición que tiene cada elemento dentro del arreglo de datos. Cuando se define un arreglo, es necesario hacerlo como una variable. En la parte de declaraciones de variables se utiliza el siguiente formato: NombreVariable: Arreglo[tamaño] Tipo de dato Donde: NombreVariable Arreglo
Es el nombre de identificación de la variable
Es la palabra reservada que indica que la variable es un arreglo
Tamaño Es un número entero que indica la cantidad de elementos que tendrá el arreglo, por ejemplo 10, 20, 50, etc. Tipo de dato Es el tipo de dato que tendrá el conjunto de elementos del arreglo que se está definiendo, puede ser Entero, Real, Carácter, etc.
Cuando declare un arreglo, debe indicar el tipo de valor que va a guardar, así como el número de elementos que contendrá (llamados elementos del arreglo).
Cada elemento del arreglo tiene que ser del mismo tipo, digamos int, float o char. Para guardar un valor dentro de un arreglo, debe indicar el número del elemento dentro del cual quiere almacenar el valor. Por ejemplo, el primer elemento del arreglo es el 0, el segundo, el 1 , y así sucesivamente. Para acceder al valor guardado dentro del arreglo, los programas especifican el nombre de éste y el número del elemento, colocándolo dentro de corchetes, como en calificación[3].
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Al declarar un arreglo, se debe inicializar sus elementos antes de utilizarlos. Entonces, para declarar un arreglo tiene que indicar su tipo, un nombre único y la cantidad de elementos que va a contener. Por ejemplo, las siguientes instrucciones declaran tres arreglos distintos: char nombre[30]; Float costo_partes[50]; Int edad_empleados[100]; Float precios_acciones[25];
A los arreglos en una dimensión se les llama también Vectores o Listas. Los vectores se representan de forma lineal, indicando el valor del índice asociado a cada componente en la parte inferior, y el nombre del arreglo en la parte superior. Estos vectores se pueden representar, como filas o como columnas de datos.
Sea un vector “Calificaciones” de 100 componentes:
En forma de columna se representaría así:
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Para acceder a valores específicos del arreglo, use un valor de índice que apunte al elemento deseado. Por ejemplo, para acceder al primer elemento del arreglo calificaciones debe utilizar el valor de índice 0 ( calificaciones[0] ).
INICIALIZACIÓN Y ASIGNACIÓN DE VALORES Como se decía anteriormente, antes de utilizar un arreglo es necesario inicializarlo: calificaciones[0]; DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Para inicializar todos los elementos de una vez, se colocan dentro de un bucle, comúnmente una estructura For que va del primer elemento al último que contiene el arreglo. Para asignar un valor a un elemento del arreglo se hace por ejemplo: calificaciones[0] = 100;
Cuando se usan arreglos, una operación común es usar una variable índice para acceder a los elementos de un arreglo. Suponiendo que la variable índice I contiene el valor 3, la siguiente instrucción asigna el valor 400 a valores[3]: valores[I] = 400;
Aplicar las fases para la resolución de un problema para leer un vector de 20 números enteros y a continuación escribir en un vector A todos los números negativos y en un vector B todos los positivos o iguales a cero. Imprimir dichos vectores. ANÁLISIS DEL PROBLEMA Salidas: vectores A y B Entradas: vector de 20 números enteros Datos adicionales: if numero > 0 then positivo else negativo o cero
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Sección de Declaraciones: Var Entero: Num[20], i, j,k,A[20], B[20] Pseudocódigo:
Begin j = 1 k=1 For i=1 to 20 do Read(Num[i]) If (Num[i] >0) then A[j] = Num[i] j = j + 1 else B[k] = Num[i] k=k+1 end_if end_for for i=1 to j do print(A[i]) DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
end_for for i=1 to k do print(B[i]) end_for End
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de programación INDICE GENERALIDADES T1: HERRAMIENTAS DE PROGRAMACIÓN T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN T3: ESTRUCTURAS DE DATOS 3.1 Estructura de datos 3.2 Arreglos en una dimensión 3.3 Arreglos en dos dimensiones o
o
o
Una matriz es una tabla con números distribuidos en filas y columnas de forma que todas las filas tienen el mismo número de elementos y lo mismo para todas las columnas. Es un conjunto de datos homogéneo, finito y ordenado, donde se hace referencia a cada elemento por medio de dos índices. El primero de los índices se utiliza generalmente para indicar los renglones (filas) y el segundo para indicar columnas, por lo cual cada componente de la matriz se direcciona mediante su Nombre, seguido de los dos índices separados por coma y entre paréntesis. También puede definirse como un arreglo de arreglos. La dimensión u orden de una matriz es una forma de definir el número de filas y de columnas que esta tiene. Si tiene m filas y n columnas, se dice que la dimensión u orden de la matriz es de m x n. Esto quiere decir que internamente en memoria se reservan MxN posiciones consecutivas para almacenar todos los elementos del arreglo. A los elementos de una matriz se les denota por Aij siendo i el nº de fila y j el nº de columna. Así el elemento a34 sería el elemento de la tercera fila que ocupa la cuarta columna.
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Se representa de forma tabular, de igual forma a la utilizada en Matemática, situando las filas horizontalmente y las columnas en forma vertical.
Pseudocódigo para el recorrido por filas: Const M=valor1 N= valor2 Tipo Array[1..M,1..N] de real:matriz Var Matriz: A Desde i = 1 hasta M hacer Desde j = 1 hasta N hacer Escribir (A[i,j]) DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Fin_desde Fin_desde
El recorrido por columnas se hace de manera similar, invirtiendo el sentido de los índices. Desde j = 1 hasta N hacer Desde i = 1 hasta M hacer Escribir (A[i,j]) Fin_desde Fin_desde El número de elementos que contendrá una fila viene dado por U1-L1+1 (Valor mayor – valor menor +1) Igualmente, el número de elementos para la columna es U2-L2+1 Así, el número total de elementos de la tabla es (U2-L2+1)*(U1-L1+1)
Se tiene información sobre las calificaciones de 6 exámenes de un grupo de 30 alumnos. Los datos sobre estos exámenes se proporcionan de la siguiente manera: Cal1,1 Cal1,2 ............ Cal1,6 Cal2,1 Cal2,2 ............ Cal2,6
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
....................... Cal30,1 Cal30,2 ........ Cal30,6 Donde Cali,j es una variable real que expresa la calificación que obtuvo el alumno i en el examen j. 1 £ i £ 30, 1£ j £ 6 Calcular lo siguiente: a) el promedio de calificaciones de cada uno de los 6 exámenes b) el promedio de cada alumno c) el tipo (número) de examen que tuvo el mayor promedio de calificación. Escriba también dicho promedio.
El pseudocódigo para el ejemplo es el siguiente: Begin For i=1 to 30 do For j=1 to 6 do Print (“Escriba la calificación del alumno”,i, “en el examen”,j)
Read (cal[ i,j ]) //lectura de las calificaciones de los 6 exámenes de los 30 alumnos End_for End_for
DESARROLLO DE SOFTWARE
NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
//cálculo del promedio de calificaciones de cada uno de los exámenes For j=1 to 6 do sum = 0 For i=1 to 30 hacer sum = sum + cal[i,j] end_for prom[j] = sum/30 print(“promedio examen”, j , prom[j])
End_for
//cálculo del promedio de cada alumno For i=1 to 30 do sum = 0 For j=1 to 6 do sum = sum + cal[i,j] End_for print(“promedio del alumno” , i, sum/6)
End_for
DESARROLLO DE SOFTWARE
NELLY
View more...
Comments