Publicado el 9 de Julio del 2019
456 visualizaciones desde el 9 de Julio del 2019
612,7 KB
15 paginas
Creado hace 10a (09/11/2013)
1
PROGRAMACIÓN I
C++
Grado en Estadística Aplicada. EUE.
2
Tema 3.- Programación estructurada
Isabel Riomoros
Programación estructurada
3
Introducción
4
Sentencias condicionales
programas lineales - comienzan por la primera Sentencia y acababan
por la última, ejecutándose todas una sola vez.
Sentencias iterativas o
repetitivas
Secuenciales
Entrada
Salida
Asignación
Estructuras
Algorítmicas
Condicionales
Simples
Múltiples
Iterativas o repetitivas
Hacer para
Hacer mientras
Repetir hasta
Introducción
5
cout ,cin, asignación
Sentencias IF y SWITCH
Sólo con estas sentencias podemos
resolver problemas sencillos.
Cuando nos interesa que dependiendo
de los valores de los datos, se ejecuten
unas sentencias u otras sentencias
condicionales.
6
Sentencias condicionales
Sentencias WHILE, DO-WHILE y FOR
IF, IF-ELSE, SWITCH
A veces nos interesará repetir una
sentencia ó sentencias un número
determinado de veces sentencias de
control iterativas ó repetitivas (ciclos
o bucles).
Sentencia condicional simple: IF
Sentencia condicional simple: IF
7
8
estructura algorítmica
El formato general de una
si
?
condición
no
#include <iostream>
using namespace std;
sentencia if es la siguiente:
Sentencia (es )
if (condición)
{
}
Sentencia 1;
…
Sentencia n;
¡¡¡OJO!!!
if (condición)
Sentencia;
Si se cumple la condición, entonces se
ejecuta la Sentencia ó el bloque de
Sentencias; en caso contrario,
no se
ejecutan.
int main()
{
int a;
cin >> a;
if (a<0)
a = -a;
cout << a;
return 0;
}
Valor absoluto
#include <iostream>
using namespace std;
int main()
{
...
if (cantidad > 3)
{
descuento = 0.2;
precio = n*descuento;
}
...
return 0;
}
Descuento en un producto si
compras más de tres unidades
9
11
Sentencia condicional doble : IF-ELSE
Estructura algorítmica asociada:
si
?
condición
no
Sentencia condicional IF, IF-ELSE
10
Diagrama sintáctico:
sentencia if-else
if (condición)
{
}
else
{
}
Sentencias 1;
Sentencias 2;
Sentencia(es )1
Sentencia(es )2
if
(
condición
)
Sentencia
;
{
Sentencia
;
}
if (condición)
Sentencia 1;
else
Sentencia 2;
Si se cumple la condición, se ejecutan las
Sentencias del primer bloque;
si no, se ejecutan las Sentencias del segundo
bloque.
else
Sentencia
;
{
Sentencia
;
}
Sentencia condicional doble : IF-ELSE
Sentencia condicional doble : IF-ELSE anidadas
#include <iostream>
int main()
{
int a, x;
cin >> a;
if (a==0)
else
x = 1;
x= 0;
cout << x;
return 0;
}
#include <iostream>
int main()
{
...
if (cantidad > 3)
{
descuento = 0.2;
precio = n*descuento;
}
else
precio = n;
...
return 0;
}
12
Podemos utilizar las sentencias IF-ELSE anidadas, es decir,
que alguna de las ramas sea a su vez otra Sentencia IF-
ELSE.
si
?
no
condición1
condición1
Acción (es)
si
?
no
condición2
condición2
Acción (es)
Acción (es)
Sentencia condicional doble : IF-ELSE anidadas
13
.
Sentencias IF-ELSE anidadas
Ejercicios
14
if (condición1)
Sentencia 1;
else
if (condición2)
Sentencia 2;
else
Sentencia 3;
if (condición1)
Sentencia 1;
else
if (condición2)
Sentencia 2;
else
if (condición3)
Sentencia 3;
else
Sentencia 4;
If (a>=0)
if (a<=5)
cout<<“a está entre 0 y 5”;
else cout<<“a debe ser menor que cero”;
Si a toma un valor menor que 0 ¿qué pasará?
¿Cómo se
escribirá
en c++?
15
Sentencias Condicionales
16
#include <iostream>
int main()
{
int a, b, c, max;
cin >> a >> b >> c;
if (a > b)
else
if (a > c)
cout << a;
else
cout << c;
if (b > c)
cout << b;
else
cout << c;
return 0;
}
¿Qué problema
resuelve este
código
?
if (Nota == 10)
cout << "MH";
else
if (Nota >= 9)
cout << "Sobresaliente";
else
if (Nota >= 7)
cout << "Notable";
else
if (Nota >= 5)
cout << "Aprobado";
else
cout << "Suspenso";
17
19
Ver si un número es primo sin ciclos
#include<iostream>
using namespace std;
int main()
{
int n;
cout << "Introduce un numero: "; cin >> n;
if(n!=2 & n%2==0)
cout << "No es primo";
else
{
if(n!=3 & n%3==0)
cout << "No es primo";
else
{
if(n!=5 & n%5==0)
cout << "No es primo";
else
{
if(n!=7 & n%7==0)
cout << "No es primo";
else
{
}
if(n!=11 & n%11==0)
cout << "No es primo";
else
{
}
cout << "Es primo";
}
}
}
system("pause");
return 0;
}
es infalible hasta el 168
Problemas clase
18
Dado el sueldo de un trabajador, aplicar un aumento del
20 % si el sueldo es inferior a 600 euros.
Determina si un entero es par y en caso de no serlo,
determinar si es divisible por 3
Leer tres números enteros de un supuesto triángulo,
determinar si realmente forman un triángulo, y mostrar el
tipo de triángulo que es (si es un triángulo).
triángulo: La suma de dos cualesquiera de los lados debe ser
mayor que el otro.
equilátero: todos los lados son iguales.
isósceles: solo dos lados son iguales.
escaleno: no tiene dos lados iguales.
Dados los goles del equipo local (golLocal) y los goles del
equipo visitante (golvisita), devuelva una cadena de
caracteres indicando qué equipo ha ganado (local,visitante,
empate).
Dado un número de mes escribir el nombre
Calcular el área de diferentes polígonos
Sentencia condicional múltiple : SWITCH
¿Qué área quieres calcular?
1. cuadrado
2. rectángulo
3. Triángulo
4. Fin
20
Estructura algorítmica
switch (selector)
{
}
case constante1:
Sentencia1 ó bloque de Sentencias
break;
case constante2:
Sentencia2 ó bloque de Sentencias
break;
defeault:
Sentencia2 ó bloque de Sentencias
Constante 1
?
DATO
ConstanteN
Acción (es)
Constante 2
Acción (es)
Acción (es)
. . .
. . .
Permiten comparar una ‘variable’
con distintos valores posibles,
ejecutando para cada caso una
serie de Sentencias específicas.
Sentencia condicional múltiple : SWITCH
Sentencia condicional múltiple : SWITCH
21
El valor de selector debe ser un número
entero. Puede ser una variable, una expresión
ó una llamada a una función.
switch (selector)
{
}
case constante1:
Sentencia1 ó bloque de Sentencias
break;
case constante2:
Sentencia2 ó bloque de Sentencias
break;
defeault:
Sentencia3 ó bloque de Sentencias
Cada caso comienza con un
case y termina con un break
¿Qué ocurre si se me
olvida algún break ?
Dada una nota escribir la calificación
23
#include<iostream>
using namespace std;
int main() {
int nota;
cout<<" Inserte una nota: ";
cin>>nota;
switch(nota) {
case 0: cout<<"\nSuspenso"; break;
case 1: cout<<"\nSuspenso"; break;
case 2: cout<<"\nSuspenso"; break;
case 3: cout<<"\nSuspenso"; break;
case 4: cout<<"\nSuspenso"; break;
case 5: cout<<"\nAprobado"; break;
case 6: cout<<"\nBien"; break;
case 7: cout<<"\nNotable"; break;
case 8: cout<<"\nNotable"; break;
case 9: cout<<"\nSobresaliente"; break;
case 10: cout<<"\nSobresaliente"; break;
default: cout<< "esa nota es incorrecta";
}
return 0;
}
22
24
#include <iostream>
int main ()
{
cin>> num;
switch (num)
{
case 1:
Ejemplo
Si al ejecutar el programa
introducimos un 2, obtenemos
el mensaje:
‘Ha introducido el nº 2’
cout << “Ha introducido el nº 1\n”;
case 2:
cout << “Ha introducido el nº 2\n”;
break;
defeault:
cout << “Ha introducido otro nº”;
}
return 0;
}
Si al ejecutar el programa
introducimos un 1, obtenemos
el mensaje:
‘Ha introducido el nº 1’
‘Ha introducido el nº 2’
Pasar de euros a pts o de Pts a euros
const float EURO= 166.386;
float n,x; int opcion;
cout<<"la cantidad: ";
cin>>n;
cout<<"1-Ptas a Euros 2-Euros a ptas";
cin>>opcion;
switch(opcion) {
case 1: {
x=n/EURO;
cout<<n<<" Pesetas son "<< x<<" Euros"; break;
}
case 2: {
x=n*EURO;
cout<<n<<" Euros son "<<x<<" Pesetas"; break;
}
default: cout<<"incorrecta";
}
Errores difíciles de encontrar
25
Ejercicios
26
En la condición de un if poner un = en vez de ==, no da
error y considera la expresión siempre cierta, salvo que sea =
0 que la expresión la considerará falsa
Programa que calcule el índice de masa corporal de
una persona (IMC = peso [kg] /altura2 [m]) e
indique el estado en el que se encuentra esa persona
en función del valor de IMC:
If x<y<z NO
If ((x<y) &&(z<y)) SI
Ejercicios
27
Ejercicios
28
En el Supermercado CompraMix se ofrece la promoción de
llevarse tres productos por el precio de los dos más
baratas. Escribir un programa que, dados los tres precios
de los productos, determine la cantidad a pagar.
Programa que simule el funcionamiento de una calculadora que puede
realizar las cuatro operaciones aritméticas básicas (suma, resta, producto y
división) con valores numéricos enteros. El usuario debe especificar la
operación con el primer carácter del primer parámetro de la línea de
comandos: S o s para la suma, R o r para la resta, P, p, M o m para el
producto y D o d para la división. Solicitar al usuario los dos enteros y la
operación a realizar.
29
Sentencias o sentencias repetitivas o
iterativas
Sentencias Iterativas o repetitivas
30
Controlan la repetición de un conjunto de Sentencias
denominado bloque o cuerpo del bucle, mediante la
evaluación de una condición o mediante un contador.
WHILE, DO-WHILE, FOR
Sentencias
WHILE, DO-WHILE y FOR
Sentencia de control repetitiva : FOR
Sentencia de control repetitiva : FOR
31
32
Se utiliza para ejecutar un bloque de
Sentencias un número fijo de veces
que se conoce de antemano.
estructura algorítmica
hacer_para:
La Sentencia for se vale de una variable de control del ciclo. El ciclo se repite
desde el límite inferior, hasta que la variable de control llegue la límite
superior.
i ‹
inf
?
sup
sup
i £
i
no
si
Acción(es)
i ‹
i + 1
for ( inicialización ; condición ; actualización )
{
Sentencia 1;
…
Sentencia n;
}
for ( inicial
Comentarios de: Tema3 Programación estructurada - Programación I C++ (0)
No hay comentarios