La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Diseño Estructurado de Programas – Parte I Preparado por la Prof. Lillian Bras con la colaboración del Prof. Antonio F. Huertas COTI 3101 – Algoritmos.

Presentaciones similares


Presentación del tema: "Diseño Estructurado de Programas – Parte I Preparado por la Prof. Lillian Bras con la colaboración del Prof. Antonio F. Huertas COTI 3101 – Algoritmos."— Transcripción de la presentación:

1 Diseño Estructurado de Programas – Parte I Preparado por la Prof. Lillian Bras con la colaboración del Prof. Antonio F. Huertas COTI 3101 – Algoritmos y Desarrollo de Programas I

2 2 Introducción Existen varias herramientas que se utilizan para diseñar programas. Dos de las más utilizadas son: –Flujograma –Pseudocódigo

3 3 ¿Qué es un flujograma? Un flujograma es un diagrama que representa el orden en que se ejecutan las instrucciones de un programa. En un flujograma se representan las instrucciones con distintas figuras geométricas. La figura que se muestra a la derecha es el flujograma correspondiente a un programa que calcula el sueldo bruto semanal de un empleado. Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End

4 4 Símbolos o Figuras Utilizadas en los Flujogramas Note que hay tres tipos de figuras en este flujograma: –óvalos –paralelogramos –un rectángulo Cada símbolo representa una operación diferente. óvalo paralelogramo rectángulo óvalo Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End

5 5 Símbolos o Figuras Utilizadas en los Flujogramas (Cont.) Terminales –Representadas por óvalos –Marcan el principio y el fin del flujograma Terminal StartEnd Terminal Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End

6 6 Símbolos o Figuras Utilizadas en los Flujogramas (Cont.) Enunciados de Entrada / Salida (Input / Output) –Representadas por paralelogramos –Se diferencia entre Input y Output por el verbo utilizado en la figura Display “How many hours did you work?” Get hours Input/Output Statement Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End

7 7 Símbolos o Figuras Utilizadas en los Flujogramas (Cont.) Procesos / Enunciados de Asignación –Representados por rectángulos –Se le asigna un valor a la variable al lado izquierdo del símbolo de la flecha –La flecha de derecha a izquierda recuerda que se almacena el valor resultante de la expresión en el lado derecho a la variable que se encuentra en el lado izquierdo Process Statement Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End

8 8 Variables: hours: ? payRate: ? grossPay: ? Veamos, paso a paso, qué sucede cuando se ejecuta cada instucción / símbolo del flujograma. Al principio las variables en la memoria sólo tienen basura. Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End Ejecución de un Flujograma

9 9 How many hours did you work? Variables: hours: ? payRate: ? grossPay: ? Paso 1: Enunciado de Output Esto es lo que veríamos en el monitor Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End Ejecución de un Flujograma…

10 10 How many hours did you work? 40 Variables: hours: 40 payRate: ? grossPay: ? Pasop 2: Enunciado de Input (Usuario entra 40.) Se almacena 40 en la variable hours. Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End Ejecución de un Flujograma…

11 11 How much do you get paid per hour? Variables: hours: 40 payRate: ? grossPay: ? Paso 3: Enunciado de Output Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End Ejecución de un Flujograma…

12 12 How much do you get paid per hour? 20 Variables: hours: 40 payRate: 20 grossPay: ? Paso 4: Enunciado de Input (Usuario entra 20.) Se almacena 20 en payRate. Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End Ejecución de un Flujograma…

13 13 How much do you get paid per hour? 20 Variables: hours: 40 payRate: 20 grossPay: 800 Paso 5: Enunciado de Asignación Se almacena 800 en grossPay. Note que esta instrucción no se refleja en el monitor. Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End Ejecución de un Flujograma…

14 14 Gross pay is $800 Variables: hours: 40 payRate: 20 grossPay: 800 Paso 6: Enunciado de Output Start Display “How many hours did you work?” Get hours Display “How much do you get paid per hour?” Get payRate grossPay ← hours * payRate Display “Gross pay is $” + grossPay End Ejecución de un Flujograma…

15 15 Pseudocódigo El pseudocódigo es una descripción de un algoritmo que utiliza las convenciones de los lenguajes de programación pero que está destinado a ser leído por seres humanos en lugar de computadoras. El pseudocódigo no pretende ser un programa con todos sus detalles sino proveer una forma compacta y clara de expresar un algoritmo.

16 16 Pseudocódigo (Cont.) El siguiente es el pseudocódigo del programa que acabamos de analizar: Start Display “How many hours did you work? ” Get hours Display “How much do you get paid per hour? ” Get payRate grossPay  hours * payRate Display “Gross pay is $” + grossPay End

17 17 Del Diseño al Programa Luego de diseñar un programa utilizando un flujograma o pseudocódigo, el programador implementa el diseño utilizando un lenguaje de programación real. A continuación se presenta el programa que hemos estudiado usando los lenguajes Java y Pascal.

18 18 Del Diseño al Programa (Cont.) El siguiente es el programa escrito usando Java: import java.util.Scanner; public class Payroll { public static void main(String[] args) { int hours; double payRate, grossPay; Scanner keyboard = new Scanner(System.in); System.out.print("How many hours did you work? "); hours = keyboard.nextInt(); System.out.print("How much do you get paid per hour? "); payRate = keyboard.nextDouble(); grossPay = hours * payRate; System.out.println("Gross pay is $" + grossPay); }

19 19 Del Diseño al Programa (Cont.) El siguiente es el programa escrito usando Pascal: program Payroll; var hours: Integer; payRate, grossPay: Real; begin write('How many hours did you work? '); readln(hours); write('How much do you get paid per hour? '); readln(payRate); grossPay := hour * payRate; writeln('Gross pay is $', grossPay); end.

20 20 Estructuras de Control Las estructuras de control indican el orden en que ejecutarán las instrucciones. Son tres: –Secuencia –Decisión / Selección –Repetición En la programación estructurada las instrucciones en cada rutina del programa se organizan usando las estructuras de control.

21 21 Estructura de Secuencia En esta estructura las instrucciones se ejecutan en una después de la otra en el orden en que aparecen. Los programas que hemos estudiados se componen de instrucciones organizadas en secuencia.

22 22 Esta estructura se compone de varios elementos. El símbolo o figura del diamante indica la necesidad de evaluar una expresión lógica (una pregunta de cierto o falso). Si la contestación resulta ser cierta, el flujo de ejecución sigue un camino y si es falsa, sigue el otro. Estructura de Decisión / Selección True False Expresión lógica Acción TrueFalse Expresión lógica Acción BAcción A If-Then If-Then-Else

23 23 Estructura de Decisión / Selección (Cont.) Una expresión lógica es aquella en que produce un resultado lógico o booleano (valores cierto y falso). Normalmente las expresiones lógicas involucran una comparación. Los operadores de comparación (relacionales) son los siguientes: == igual a < menor que <= menor que o igual a > mayor que >= mayor que o igual a != distinto de (a veces se escribe así: )

24 24 Estructura de Decisión / Selección (Cont.) If-Then: En esta estructura se lleva a cabo una acción sólo si se cumple una condición (o sea, la expresión lógica es cierta). True False Expresión lógica Acción Pseudocódigo If (Expresión lógica) Then Acción End If Flujograma

25 25 Estructura de Decisión / Selección (Cont.) El siguiente fragmento muestra una estructura de selección donde la instrucción a  x*2 se ejecuta sólo si x < y. if (x < y) a = x * 2; Código en Java True False x < y? a ← x * 2 Pseudocódigo If (x<y) Then a ← x*2 End If Flujograma

26 26 Estructura de Decisión / Selección (Cont.) If-Then-Else: En esta estructura se ejecuta una de dos posibles acciones (A o B) dependiendo de si la evaluación de la expresión lógica es cierta o falsa. TrueFalse Expresión lógica Acción BAcción A Pseudocódigo If (Expresión lógica) Then Acción A Else Acción B End If Flujograma

27 27 Estructura de Decisión / Selección (Cont.) El siguiente es un ejemplo con acciones concretas: True False x < y? a ← x * 2 a ← x + y if (x < y) a = x * 2; else a = x + y; If (x < y) Then a  x * 2 Else a  x + y End If Pseudocódigo Flujograma Código en Java

28 28 Estructura de Decisión / Selección (Cont.) A continuación se mostrará el diseño de un programa que le pide al usuario el radio de un círculo y muestra el área sólo si el radio es positivo ( > 0.0). Si el radio no es positivo, el programa deberá indicarle al usuario que el radio es inválido.

29 29 Estructura de Decisión / Selección (Cont.) Start Display “Enter the radius: ” Get radius area  PI * power(radius, 2) radius > 0.0? Display “The area is ” + area truefalse Display “The radius is invalid.” End Start Display “Enter the radius: ” Get radius If (radius > 0.0) Then area  PI * power(radius, 2) Display “The area is ” + area Else Display “The radius is invalid.” End If End Flujograma Pseudocódigo

30 30 Estructura de Decisión / Selección (Cont.) El siguiente es el programa en Java: import java.util.Scanner; public class CircleApp4 { public static void main(String[] args) { double radius, area; Scanner keyboard = new Scanner(System.in); System.out.print("Enter the radius: "); radius = keyboard.nextDouble(); if (radius > 0.0) { area = Math.PI * Math.pow(radius, 2); System.out.println("The area is " + area); } else System.out.println("The radius is invalid."); }

31 31 Estructura de Decisión / Selección (Cont.) A continuación se mostrará el diseño de un programa que calcula el costo de matrícula de un estudiante universitario basado en la cantidad de créditos. El programa asume que el costo por crédito es $75 y le otorga a los atletas y a los estudiantes de honor un descuento de 60%.

32 32 Estructura de Decisión / Selección (Cont.) Start Display “Enter the name: ” Display “Enter the number of credits: ” Get studentName Get numberOfCredits Display “Are you an athlete or honor student? (Y/N): ” Get answer A registrationFee  numberOfCredits * COST_PER_CREDIT A answer == ‘Y’? true discount  DISCOUNT_RATE * registrationFee registrationFee  registrationFee - discount Display “For ” + studentName + “,” Display “the registration fee is $” + registrationFee End false Flujograma

33 33 Estructura de Decisión / Selección (Cont.) Start Display “Enter the name: ” Get studentName Display “Enter the number of credits: ” Get numberOfCredits Display “Are you an athlete or honor student? (Y/N): ” Get answer registrationFee  numberOfCredits * COST_PER_CREDIT If (answer == ‘Y’) Then discount  DISCOUNT_RATE * registrationFee registrationFee  registrationFee - discount; End If Display “For ” + studentName + “, ” Display “the registration fee is $” + registrationFee End Pseudocódigo

34 34 Estructura de Decisión / Selección (Cont.) El siguiente es el programa en Java: import java.util.Scanner; public class RegistrationFeeApp { public static void main(String[] args) { final double COST_PER_CREDIT = 75.00; final double DISCOUNT_RATE = 0.60; String studentName; int numberOfCredits; char answer; double registrationFee, discount; Scanner keyboard = new Scanner(System.in); System.out.print("Enter the name: "); studentName = keyboard.nextLine(); Continúa…

35 35 Estructura de Decisión / Selección (Cont.) El siguiente es el programa en Java (cont.): System.out.print("Enter the number of credits: "); numberOfCredits = keyboard.nextInt(); System.out.print("Are you an athlete or honor " + "student? (Y/N): "); answer = keyboard.next().charAt(0); // To read a char registrationFee = numberOfCredits * COST_PER_CREDIT; if (answer == 'Y') { discount = DISCOUNT_RATE * registrationFee; registrationFee -= discount; } System.out.print("For " + studentName + ", "); System.out.println("the registration fee is $" + registrationFee); }

36 36 Estructura de Decisión / Selección (Cont.) A continuación se muestra el diseño de un programa que muestra un mensaje indicando si el número entrado por el usuario es positivo, cero o negativo. Este programa es un ejemplo del uso de Ifs anidados (Ifs que contienen otros Ifs).

37 37 Estructura de Decisión / Selección (Cont.) End Start Display “Enter a number: ” Get number number > 0? truefalse number == 0? truefalse Display “The number is positive.” Display “The number is zero.” Display “The number is negative.” Flujograma

38 38 Estructura de Decisión / Selección (Cont.) Pseudocódigo Start Display “Enter a number: ” Get number If (number > 0) Then Display “The number is positive.” Else If (number == 0) Then Display “The number is zero.” Else Display “The number is negative.” End If End

39 39 Estructura de Decisión / Selección (Cont.) Java (Una alternativa): import java.util.Scanner; public class NumberSignApp { public static void main(String[] args) { double number; Scanner keyboard = new Scanner(System.in); System.out.print("Enter a number: "); number = keyboard.nextDouble(); if (number > 0) System.out.println("The number is positive."); else if (number == 0) System.out.println("The number is zero."); else System.out.println("The number is negative."); }

40 40 Estructura de Decisión / Selección (Cont.) Java (La alternativa preferida por los programadores): import java.util.Scanner; public class NumberSignApp { public static void main(String[] args) { double number; Scanner keyboard = new Scanner(System.in); System.out.print("Enter a number: "); number = keyboard.nextDouble(); if (number > 0) System.out.println("The number is positive."); else if (number == 0) System.out.println("The number is zero."); else System.out.println("The number is negative."); }

41 41 Estructura de Decisión / Selección (Cont.) Los operadores lógicos son usados para combinar valores o expresiones lógicas. Estos operadores son tres: notproduce el opuesto del operando andproduce True sólo si ambos operandos son True orproduce False sólo si ambos operandos son False


Descargar ppt "Diseño Estructurado de Programas – Parte I Preparado por la Prof. Lillian Bras con la colaboración del Prof. Antonio F. Huertas COTI 3101 – Algoritmos."

Presentaciones similares


Anuncios Google