Programacion 3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

Tema 3.

Estructuras de datos y
de control básicas(Parte I)
3.1. Introducción
3.2. Estructuras de control elementales
3.2.1. Secuencia
3.2.2. Selección
3.2.3. Iteración
3.3. Técnicas de representación
3.3.1. Diagramas de flujo de control
3.3.2. Pseudocódigo
3.4. Matrices

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 1


Fundamentos
• Programación ESTRUCTURADA
Todo programa con un único punto de
entrada y un único punto de salida, cuyas
sentencias se alcancen todas en algún
momento y que no posea bucles infinitos
(programa propio) se puede construir con
tres constructores elementales: secuencia,
selección y bucle. (Bohm and Jacopini,
1966)

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 2


Secuencia
RAE: Serie de elementos que se
suceden unos a otros y guardan
relación entre sí

PROGRAMACIÓN: Serie de
instrucciones que se suceden unas a
otras y guardan relación entre sí

INICIO
Obtener el Número 1
Obtener el Número 2 En Java, el principio y el final de una
Suma  Numero1 + Numero2 secuencia se marcan con { y }.
Proporcionar el valor de Suma La separación de instrucciones se
FIN realiza con ;

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 3


Selección SIMPLE
Si(condición)
Sentencias_Condicion
Si_no
Sentencias_NoCondicion
Fin_Si

JAVA
if (condición) {
sentencias CONDICION = TRUE
}
else {
sentencias CONDICION = FALSE
}
EJEMPLO
Diseñe un algoritmo que decida si un número leído desde el teclado es
par o impar.

Algoritmo ParImpar
Datos
numero: Entero

Instrucciones
numero  leer un valor entero desde el teclado
Si el resto de dividir el número entre 2 es 0
Mostrar “El número es par”
Sino
Mostrar “El número es impar”
Fin_si
Fin_AlgoritmoParImpar

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 5


Implementación en Java
import java.util.Scanner;

public class ParImpar {

public static void main(String[] args){


//DATOS
final Scanner TECLADO=new Scanner(System.in);
int numero;
String textoSalida, resultado;

//INSTRUCCIONES
System.out.println("Este programa decide si el entero introducido es par o impar\n");

//obtención y/o inicialización de los datos


System.out.println("Introduce un número entero");
numero=TECLADO.nextInt();

//procesamiento de los datos y generación de resultados


textoSalida="El número "+numero+" es ";
if (numero%2==0)
resultado="par";
else resultado="impar";
textoSalida=textoSalida+resultado+".\n\nFin del programa...";

//muestra los resultados


System.out.println(textoSalida);
}
}
Selección anidada
Como parte del bloque de Sentencias_Condicion o del
bloque de Sentencias_NoCondicion puede haber otras
sentencias de selección

Ejemplo:

Si(condición1)
Si (condicion2)
Sentencias_(Condicion1 Y Condicion2)
Sino Sentencias_(Condicion1 Y NoCondicion2)
Fin_Si
Si_no
Sentencias_NoCondicion
Fin_Si
EJEMPLO
Diseñe un algoritmo que decida si un número leído desde el teclado es
mayor, menor o igual a 0.
Algoritmo Decidir
Datos
numero: Entero
Instrucciones
numero  leer un valor entero desde el teclado
Si numero = 0
Mostrar “El número es cero”
Sino
Si numero > 0
Mostrar “El número es positivo”
Sino Mostrar “El número es negativo”
Fin_Si
Fin_si
Fin_AlgoritmoDecidir

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 8


Implementación en Java
import java.util.Scanner;
public class DecisionSimple {
public static void main(String[] args){
final Scanner TECLADO=new Scanner(System.in);
int numero;
String textoSalida, textoResultado;
System.out.println("Este programa decide si el entero introducido es mayor,
menor o igual a 0\n");

System.out.println("Introduce un número entero");


numero=TECLADO.nextInt();

textoSalida="El número ";


if (numero==0)
textoResultado=" es cero";
else if (numero > 0)
textoResultado=numero+" es positivo";
else textoResultado=numero+" es negativo";
textoSalida=textoSalida+textoResultado+".\nFin del programa...";

System.out.println(textoSalida);
}
}

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 9


Operador de selección en Java
condición ? expresión1 : expresión2;

Equivale a un if-else: Ejemplo:

if (condición){ mayor = (n1 < n2) ? n2 : n1;


expresión1;
} Equivale a
else {
expresion2; if (n1 < n2)
} mayor = n2;
else
mayor = n1;
Problema propuesto:
Diseña un algoritmo que dada una nota numérica leída desde el teclado
nos diga la nota no numérica correspondiente (sobresaliente, notable,
aprobado o suspenso).
Diseñe el programa en Java que lo resuelve.

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 11


Implementación en Java
import java.util.Scanner;

public class Calificaciones {

public static void main(String[] args) {


//DATOS
final Scanner TECLADO=new Scanner(System.in);
float nota;
String calificacion="";

//INSTRUCCIONES
System.out.println("Este programa convierte una nota numérica a su calificación alfanumérica");

//obtención de datos
System.out.println("Introduce el valor de la nota");
nota=TECLADO.nextFloat();

//procesamiento de datos
if (nota<0 || nota>10)
System.out.println("El dato introducido no corresponde a una nota");
else if (nota<=5)
calificacion="Suspenso";
else if (nota<7)
calificacion="Aprobado"; ¿Da igual el orden en el que se
else if (nota<9)
calificacion="Notable";
else if (nota<10)
hagan las comprobaciones?
calificacion="Sobresaliente";
else calificacion="Matrícula de Honor";

//muestra los resultados obtenidos


System.out.printf("La nota %.2f corresponde a un "+calificación,nota);
}
}

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 12


Respuesta…
if (nota<0 || nota>10) if (nota<0 || nota>10)
System.out.println(“… no …"); System.out.println(“… no …");
else if (nota<=5) else if (nota==10)
calificacion="Suspenso"; calificacion="Matrícula de Honor";
else if (nota<7) else if (nota<10 && nota>=9)
calificacion="Aprobado"; calificacion="Sobresaliente";
else if (nota<9) else if (nota<9 && nota >=7)
calificacion="Notable"; calificacion="Notable";
else if (nota<10) else if (nota<7 && nota>=5)
calificacion="Sobresaliente"; calificacion="Aprobado";
else calificacion="Matrícula de Honor"; else calificacion="Suspenso";

El orden en el que se hacen las comprobaciones en los ifs


anidados determina la expresión de las condiciones

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 13


Otro ejemplo
¿Son equivalentes los dos fragmentos de código siguientes? Haz la
prueba para los casos en los que precio=50 y precio=150

if (precio > 10.0)


precio = precio * 0.9; // Descuento del 10%
else if (precio > 90)
precio = precio * 0,7 ; // Descuento del 30%

if (precio > 10.0)


precio = precio * 0.7; // Descuento del 10%
if (precio > 90)
precio = precio * 0,9 ; // Otro descuento

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 14


Escribe un algoritmo que calcule las soluciones
reales de una ecuación de 2º grado con
coeficientes enteros.
Algoritmo RaicesEcuacionDecision

Datos

a,b,c: Entero x1,x2: Real

Instrucciones

Obtener valor de a,b y c

Si (a!=0) Y (b*b-4*a*c >=0)

Mostrar ecuación de 2º grado x1=-b+RaizCuadrada(b*b-4*a*c))/(2*a) x2=-b-RaizCuadrada(b*b-4*a*c))/(2*a)


Mostrar x1 y x2

SiNo Si (a==0) Y (b!=0)

Mostrar ecuación de 1º grado X1=-c/b Mostrar X1

SiNo Si (a==0) Y (c!=0)

Mostrar que la ecuación es imposible

SiNo Si (c==0)

Mostrar que no existe ecuación

SiNo Mostrar que la ecuación no tiene raíces reales

Fin_RaicesEcuacionDecision
Implementación en Java
import java.util.Scanner;
public class RaicesEcuacion {
public static void main(String[] args){
//SENTENCIAS DE LECTURA DE DATOS IGUALES QUE ANTES

if (a!=0 && b*b-4*a*c>=0){


System.out.printf("\nLa ecuación que el programa va a resolver es %dx^2 + %dx + %d\n",a,b,c);
x1=(-b+Math.sqrt(b*b-4*a*c))/(2*a);
x2=(-b-Math.sqrt(b*b-4*a*c))/(2*a);
System.out.printf("Las soluciones de la ecuación son:\nX1=%.2f y\nX2=%.2f",x1,x2);
}else if (a==0 && b!=0){
System.out.printf("\nLa ecuación que el programa va a resolver es %dx + %d\n",b,c);
x1=(-c/b);
System.out.printf("La soluciones de la ecuación es:\nX=%.2f",x1);
}else if (a==0 && c!=0)
System.out.printf("La ecuación %d=0 es imposible", c);
else if (c==0)
System.out.printf("No existe ecuación, no se puede resolver");
else System.out.printf("\nLa ecuación %dx^2 + %dx + %d no tiene raíces reales",a,b,c);
}
}

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 16


Pruebas
Probad el programa para los siguientes valores de a, b y c
respectivamente:
a) 2,1 y 3
b) 0, 0 y 1
c) 0, 2 y 3
d) 0, 2 y 1
e) 1, 0 y -2
f) 1, 0 y 2
g) 3, 1 y 0

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 17


Selección múltiple

Según (expresión) Hacer:

valorExpr 1: bloque de sentencias 1


valorExpr 2: bloque de sentencias 2
...

valorExpr n: bloque de sentencias n

resto: bloque se sentencias resto

Fin_según
Selección múltiple en Java
switch (expresión) {
case literal1:
Bloque sentencias para el caso expresion=literal1
break;
case literal2:
Bloque sentencias para el caso expresion=literal2
break;
...
default:
Bloque sentencias para todos los demás casos
}

La expresión debe producir un valor de tipo int, char o String y el literal


debe ser del mismo tipo que el resultado de la expresióm
Ejemplo
Diseña un algoritmo que lea un número desde el teclado y muestre al
usuario un menú con tres opciones: Decidir si es par o impar; Decidir si es
positivo, negativo o cero; y decidir si tiene más de una cifra . Si el usuario
introduce cualquier otra opción debe mostrar un mensaje de error.
Algoritmo Menu
Datos
numero, opcionMenu: Entero,
Instrucciones
numero  Leer un número desde el teclado
Mostrar el menú: “1. Decidir si es par; 2. Decidir si es positivo; 3. Decidir
si es múltiplo de 5; 4. Mostrar”
opcionMenu  Leer el numero elegido por el usuario
Según (opcionMenu)
1: Decidir si numero es par o impar
2: Decidir si es mayor, menor o igual a 0
3: Decidir si tiene más de una cifra
resto: Mostrar “La opción elegida es incorrecta”
Fin_Segun
Fin_AlgoritmoMenu

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 20


Implementación en Java (I)
import java.util.Scanner;

public class MenuSencillo {

public static void main(String[] args){

final Scanner TECLADO=new Scanner(System.in);


int numero ;
int opcionMenu;

System.out.println("Este programa muestra un menú sencillo de 3 opciones");

System.out.print(“Introduce un número entero…");

numero = TECLADO.nextInt();

System.out.println("Elija la opción deseada:\n1. Leer un número desde el "+

"teclado\n2. Decidir si es par o impar\n3. Decidir si es”+

“ positivo, negativo o 0");

opcionMenu=TECLADO.nextInt();

Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 21


Implementación en Java (II)
switch (opcionMenu){
case 1: if (numero % 2==0)
System.out.println("El número "+numero+" es par");
else System.out.println("El número "+numero+" es impar");
break;
case 2: if (numero == 0)
System.out.println("El número es cero");
else if (numero > 0)
System.out.println("El número "+numero+" es positivo");
else System.out.println("El número "+numero+" es negativo");
break;
case 3: if (numero >= 10 || numero <= -10)
System.out.println("El número "+numero+" tiene más de una cifra ");
else System.out.println("El número "+numero+" tiene menos de una cifra");
break;
default: System.out.println("La opción introducida es incorrecta. No se
ejecutará el programa");
}
System.out.println("Fin del programa...");
}//fin del main
}//fin del programa
Carmen Lacave FUNDAMENTOS DE PROGRAMACIÓN I 22

También podría gustarte