UNIDAD 2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS 2.1 Fórmulas matemáticas 2.2 Tipos de datos 2.3 Identificadores, constantes y variables.
2.1 Fórmulas matemáticas Expresiones: son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Ejemplo: A+(b+3)/c Cada expresión toma un valor que se determina tomando los valores de variables y constantes implicadas y la ejecución de las operaciones indicadas. Una expresión consta de operadores y operandos.
Operadores: son signos que nos permiten expresar relaciones entre variables y/o constantes, relaciones de las cuales normalmente se desprende un resultado. Según sea el tipo de datos que manipulan las expresiones, se clasifican en: Aritméticas Relacionales Lógicas
2.2 Tipos de datos Simples: su principal característica es que ocupan sólo una casilla de memoria, por lo tanto, una variable simple hace referencia a un único valor a la vez. Tipos de datos simples Enteros Reales Caracteres Booleanos Enumerados* Subrangos* * No existen en algunos lenguajes de programación.
2.2 Tipos de datos Estructurados: se caracterizan por el hecho de que con un nombre (identificador de variable estructurada) se hace referencia a un grupo de casillas de memoria. Es decir, un dato estructurado tiene varios componentes. Cada uno de los componentes puede ser a su vez un dato simple o estructurado. Sin embargo, los componentes básicos (de nivel más bajo) de cualquier tipo estructurado son datos simples. Arreglos Cadena de caracteres Registros Conjuntos
2.2 Tipos de datos
Identific ador
a). Datos simples
Identific ador
b). Datos estructurados
2.2.1 Tipos de datos simples Numéricos: dentro de este tipo de dato se encuentran los enteros y los reales. Enteros: son números que pueden estar precedidos del signo + (más) o – (menos), y que no tienen parte decimal. Ejemplos: 128
1538
-756.
Reales: son números que pueden estar precedidos por el signo + o -, y que tienen una parte decimal. Ejemplos: 7.5 128.0 -74.98 -18.0
2.2.1 Tipos de datos simples Alfanuméricos: es una secuencia de
caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero éstos pierden su propiedad matemática, es decir, no se pueden hacer operaciones con ellos. Este tipo de datos se representan encerrados entre paréntesis. Ejemplos: “Universidad Politécnica de Morelos” “01777-3091283” “65890”
2.2.1 Tipos de datos simple Lógicos:
dentro de este tipo de datos se encuentran los booleanos. Los datos booleanos solo pueden tomar dos valores: verdadero (true) o falso (false). Representan el resultado de comparación entre dos datos.
2.3 IDENTIFICADORES, CONSTANTES Y VARIABLES Identificador: es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que nos permite acceder a su contenido. Ejemplo: nombre, num_horas y calif2. Reglas para formar un identificador El primer carácter que forma un identificador debe ser una letra (mayúscula o minúscula). Los demás caracteres pueden ser letras, dígitos o el símbolo _ (guión bajo).
2.3 IDENTIFICADORES, CONSTANTES Y VARIABLES Constante: son datos que no cambian durante la ejecución de un programa. Para nombrar las constantes se utilizan los identificadores. Los tipos de constantes son de los tipos de datos, por lo tanto puede haber constantes enteras, reales, carácter, cadena de caracteres, booleanas, etc. Variable: es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar durante la ejecución del programa. Los nombres de las variables deben ser representativas de la función que cumplen en el programa.
2.3 IDENTIFICADORES, CONSTANTES Y VARIABLES Ejemplo: area = pi * radio ^ radio Variables: area y radio. Constante: pi. Las variables son como cajitas de diferentes tamaños y por tal motivo se deben declarar previamente para que el computador las dimensione de acuerdo a las necesidades. Existen tipos de variables como tipos de datos existentes.
2.3.1Clasificación de variables Tipo de variable según su contenido Numéricas Lógicas Alfanuméricas
Tipo de variable según su uso Variables de trabajo: son variables que reciben el resultado de una operación matemática completa y que se usan normalmente dentro de un programa. Contadores: se utilizan para llevar el control del número de ocasiones en que se realiza una operación o se cumple una cierta condición. Pueden incrementar o decrementar su valor. Acumuladores: forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente.
UNIDAD 3. TÉCNICAS DE DISEÑO
3.1 Técnicas de diseño TOP-DOWN. 3.2 Técnicas de diseño BOTTOM-UP.
INTRODUCCIÓN La forma en que se plantea un problema, es fundamental para alcanzar una solución satisfactoria del mismo. En esta unidad se plantean dos técnicas de diseño para el planteamiento de problemas. • •
Técnicas de diseño Top-Down. Técnicas de diseño Bottom-Up.
3.1 Técnicas de diseño TOP-DOWN (ascendente, arriba-abajo) Este diseño consiste en una serie de descomposiciones sucesivas del problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte del programa. Objetivos básicos Simplificación del problema y de los subprogramas de cada descomposición. Las diferentes partes del problema pueden ser programadas de modo independiente e incluso por diferentes personas. El programa final queda estructurado en forma de bloque o módulos lo que hace más sencilla su lectura y mantenimiento.
3.1 Técnicas de diseño BOTTOM-UP (ascendente) Este diseño se refiere a la identificación de aquellos procesos que necesitan computarizarse conforme vayan apareciendo, su análisis como sistema y su codificación, o bien, la adquisición de paquetes de software para satisfacer el problema inmediato. Diseño ascendente o “bottom-up”: Primero se hace una planificación de los módulos de bajo nivel que se vayan a necesitar. Se desarrollan las partes más detalladas y con mayor nivel de dificultad en primer lugar. Se realiza el diseño del resto del sistema, acomodando los diseños previos, hasta llegar finalmente al diseño del sistema final. Puede resultar una estructura de control inadecuada.
UNIDAD 4. TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS 4.1 Programación estructurada 4.2 Diagrama de flujo 4.3 Pseudocódigo 4.4 Diagramas estructurados (NassiSchneiderman)
INTRODUCCIÓN El proceso de desarrollo de algoritmos y diagramas de flujo es fundamental dentro de la creación de programas de computadora en la parte de programación estructurada. Por ello, es necsario conocer y manejar la terminología que se utiliza dentro de estas herramientas de desarrollo de la programación.
4.1 Programación estructurada Es una forma de escribir programas de forma clara, para ello utiliza únicamente tres estructuras: Secuencial Selectiva Iterativa
Siendo innecesario y no permitiéndose el uso de la instrucción o instrucciones de transferencia incondicional ( GOTO ).
4.1.1 Surgimiento de la programación estructurada A fines de los años sesenta. Un famoso Teorema de Dijkstra, demostrado por Edsger Dijkstra en los años sesenta, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes: Secuencial de instrucciones. Instrucción condicional. Iteración, o bucle de instrucciones.
Solamente con estas tres estructuras se puede hacer un programa informático.
4.1.2 Secuencias estructuradas (estructuras de control) ESTRUCTURA SECUENCIAL: una estructura de programa es secuencial si se ejecutan una tras otra a modo de secuencia. Ejemplo: auxiliar:= x x:= y y:= auxiliar Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable auxiliar, intermedia. PASOS 1º Guardamos una copia del valor de x en auxiliar. 2º Guardamos el valor de y en x, se pierde el valor anterior de x pero no importa porque tenemos una copia en auxiliar. 3º Guardamos en y el valor de auxiliar, que es el valor inicial de x.
El resultado es el intercambio de los valores de x e y, en tres operaciones secuenciales.
4.1.2 Secuencias estructuradas (estructuras de control) ESTRUCTURA SELECTIVA: La estructura selectiva permite la realización de una instrucción u otra según un criterio, solo una de estas instrucciones se ejecutará. Ejemplo:
si a > b entonces Escribir a es mayor que b si_no Escribir a no es mayor que b fsi si señala el comienzo de la instrucción condicional, y se espera que después esté la condición de control de la instrucción. entonces señala el fin de la condición, y después estará la instrucción a realizar si la condición es cierta. si_no separa la instrucción que se ejecutará si la condición es cierta de la que se ejecutará si es falsa. fsi indica que la instrucción condicional finaliza y el programa seguirá su curso.
4.1.2 Secuencias estructuradas (estructuras de control) ESTRUCTURA ITERATIVA: un bucle iterativo o iteración de una secuencia de instrucciones, hace que se repitan mientras se cumpla una condición, en un principio el número de iteraciones no tiene porque estar determinado. Ejemplo:
a:= 0 b:= 7 mientras b > a hacer Escribir a a:= a + 1 mientras Esta instrucción tiene tres palabras reservadas mientras, hacer y fmientras. mientras: señala el comienzo del bucle y después de esta palabra se espera la condición de repetición, si la condición es cierta se pasa al cuerpo del bucle, si no al final de la instrucción mientras. hacer: señala el final de la condición, lo que esté después será el cuerpo del bucle. fmientras: señala el final del cuerpo del bucle y de la instrucción mientras. El bucle mientras, se repite mientras la condición sea cierta, esta condición se comprueba al principio por lo que el cuerpo del bucle puede que no se ejecute nunca, cuando la condición es falsa en un principio, o que se repita tantas veces como sea necesario, mientras la condición sea cierta.
4.1.2 Secuencias estructuradas (estructuras de control): Iterativa En el ejemplo tenemos dos variables a y b que al iniciarse el bucle tienen los valores a=0 y b=7. La condición del bucle es b > a. Cuando a=0 y b=7. la condición es cierta, en el cuerpo del bucle se escribe el valor de a en pantalla y se incrementa a en una unidad. Entonces a=1 y b=7. ... ... Cuando a=6 y b=7. la condición es cierta, se escribe el valor de a en pantalla y se incrementa en una unidad. Resultando que a=7 y b=7. Entonces la condición es falsa y la instrucción mientras finaliza. La salida por pantalla de este ejemplo seria 0 1 2 3 4 5 6 Algunos lenguajes ofrecen un modelo de estructuras iterativas algo diferente donde la condición puede variar en cada iteración.
4.1.3 Anidamiento El cuerpo de cualquier estructura puede ser una instrucción simple u otra estructura, que a su vez puede anidar a otra. Ejemplo: si a > b entonces auxiliar:=a a:= b b:= auxiliar si_no nada fsi escribir a y b
4.1.4 Ventajas de la programación estructurada Los programas son más fáciles de entender. Un programa estructurado puede ser leído en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lógica, lo cual es típico de otros estilos de programación. La estructura del programa es más clara puesto que las instrucciones están más ligadas o relacionadas entre sí, por lo que es más fácil comprender lo que hace cada función. Reducción del esfuerzo en las pruebas. El programa se puede tener listo para producción normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas("debugging") se facilita debido a la lógica más visible, de tal forma que los errores se pueden detectar y corregir más fácilmente. Reducción de los costos de mantenimiento. Programas más sencillos y más rápidos. Aumento de la productividad del programador. Se facilita la utilización de las otras técnicas para el mejoramiento de la productividad en programación. Los programas quedan mejor documentados internamente.
4.1.5 Desventajas de la programación estructurada El principal inconveniente de este método de programación, es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo, esto se resuelve empleando la programación modular, definiendo módulos interdependientes programados y compilados por separado, cada uno de los cuales ha podido ser desarrollado con programación estructurada.
4.2 Diagramas de flujo (flujogramas) Es la representación gráfica de un algoritmo. Es la representación detallada en forma gráfica de cómo deben realizarse los pasos en la computadora para producir resultados. Está representación gráfica se da, cuando se relacionan entre sí varios símbolos mediante líneas que indican el orden en que se deben ejecutar los procesos. Si el diagrama de flujo está completo y correcto, el paso del mismo a un lenguaje de programación es relativamente simple y directo.
4.2.1 Características de los diagramas de flujo Según Gómez Cejas, Guillermo. Año 1.997: Sintética: La representación que se haga de un sistema o un proceso deberá quedar resumido en pocas hojas, de preferencia en una sola. Los diagramas extensivos dificultan su comprensión y asimilación, por tanto dejan de ser prácticos. Simbolizada: La aplicación de la simbología adecuada a los diagramas de sistemas y procedimientos evita a los analistas anotaciones excesivas, repetitivas y confusas en su interpretación. De forma visible a un sistema o un proceso: Los diagramas nos permiten observar todos los pasos de un sistema o proceso sin necesidad de leer notas extensas.
4.2.2 Símbolos de los diagramas de flujo (flujogramas) Representa el Inicio o el Fin del diagrama de flujo (algoritmo). Símbolo utilizado para introducir los datos de entrada. Expresa lectura. Representa un proceso. Indica la asignación de un valor de memoria y/o la ejecución de una operación aritmética.
4.2.2 Símbolos de los diagramas de flujo (flujogramas) Representa una decisión. En su interior se almacena una condición, y dependiendo del resultado de la evaluación de la misma se sigue por una de las ramas, Si o No. Se utiliza en la estructura selectiva si entonces y si entonces/sino y en las estructuras repetitivas repetir y mientras. Representa una decisión múltiple. En su interior se almacena un selector, y dependiendo del valor de dicho selector se sigue por una de las ramas. Se utiliza en la estructura selectiva si múltiple.
4.2.2 Símbolos de los diagramas de flujo (flujogramas) Representa la escritura (impresión) de un resultado. Se utilizan para expresar la dirección del flujo del diagrama. Conector lógico dentro de una página. Representa la continuidad del diagrama dentro de la misma página. Conector lógico fuera de la página. Representa la continuidad del diagrama en otra página.
4.2.2 Símbolos de los diagramas de flujo (flujogramas) Representa la salida de datos en la pantalla o monitor. Representa los subprogramas.
Representa una entrada de datos utilizando el teclado. Lo que se escribe en su interior es el nombre de la variable(s) en que se almacenará el dato que entra en el teclado.
Etapas en la construcción de un diagrama de flujo
Proceso de información en la computadora
Inicio Lectura de datos
ENTRADA
Procesamiento de datos
PROCESO
Impresión de resultados
Fin
SALIDA
4.2.3 Reglas para el diseño de diagramas de flujo Todo diagrama de flujo debe tener un inicio y un fin. Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas, verticales y horizontales. Se debe evitar el cruce de líneas. Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar conectadas. La conección puede ser un símbolo que exprese lectura, proceso, decisión, impresión, conexión o fin de diagrama. Los conectores solo se deben usar cuando sea necesario. El diagrama de flujo debe estar construido de arriba hacia abajo (top-down) y de izquierda a derecha. La notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de programación. Si el diagrama de flujo requiere más de una hoja, utilizar conectores adecuados y enumerar las páginas convenientemente. Un símbolo no puede llevar más de una línea. Todo texto escrito dentro de un símbolo debe estar escrito claramente, evitando el uso de muchas palabras.
VÁLIDOS
E j e m p l o s
NO VÁLIDOS
4.3 Pseudocódigo Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. Es una mezcla de lenguaje de programación y español (o inglés o cualquier otro idioma) que se emplea dentro de la programación estructurada para realizar el diseño de un programa. No hay ningún compilador o intérprete de pseudocódigo informático, y por tanto no puede ser ejecutado en una computadora, pero las similitudes con la mayoría de los lenguajes informáticos lo hacen fácilmente convertible.
4.3.1 Estructuras de control en pseudocódigo Secuencial Instrucción 1 Instrucción 2 … … Instrucción n
Selectiva si (condición) entonces Instrucción 1 si_no Instrucción2 fsi
Iterativa mientras (condición) hacer Instrucción fmientras
4.3.2 Ventajas de pseudocódigo a un diagrama de flujo Ocupa menos espacio en una hoja de papel. Permite representar en forma fácil operaciones repetitivas complejas. Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje de programación. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.
4.4 Diagramas estructurados (Nassi-Schneiderman) El diagrama estructurado N-S también conocido como Diagrama de Chapín es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja.
4.4 Diagramas estructurados (Nassi-Schneiderman) Inicio Leer Nombre, Hrs, Precio
Inicio Accion1
Calcular Salario= Hrs*Precio
Accion2
Calcular Imp = Salario * 0.15
... Fin
Calcular Neto = Salario + Imp Escribir Nombre, Imp, Neto Fin