Sin título de diapositiva

Anuncio
C++
Informática I
Fundamentos de los computadores
Ainara Pradera
Héctor Solar
Aviso
Viernes día 1 de diciembre ->
Miércoles día 29 de noviembre de 9:00 a 11:00
Índice
• Visibilidad de variables
• Bucles FOR, WHILE y DO-WHILE
• Bifurcaciones IF, SWITCH y Operador Condicional
• Cadenas de caracteres
Creación y visibilidad de las variables en C++
En C++ pueden crearse variables
en cualquier parte de la función.
Creación y visibilidad de las variables en C++
En C++ puede haber dos variables con el mismo nombre
si hay una o más llaves de separación entre ellas.
void main (void)
{
int a=3,i=1;
cout<<a<<endl;
for (;i<=1;i++)
{
double a=4.2;
cout<<a<<endl;
}
cout<<a<<endl;
}
void main (void)
{
int a=3,i=1;
cout<<a<<endl;
for (;i<=1;i++)
{
double a=4.2;
cout<<a<<endl;
}
int a;
}
Error
Creación y visibilidad de las variables en C++
En C++ cuando se crean dos variables con el mismo
nombre tiene prioridad la que están más encerrada
entre llaves frente la más externa.
Al salir de un bloque encerrado entre llaves, las
variables que han sido creadas DENTRO de ese bloque
de llaves, se destruyen.
Creación y visibilidad de las variables en C++
Otro ejemplo:
int i;
void main(void)
{
for (i=1; i<=10 ;++i)
{
int suma=0;
suma=suma+i;
}
cout<<suma;
}
Error
Bucles FOR
En Matlab están muy orientados a controlar una variable
for i=1:2:10
valor inicial:paso:valor final
sentencias
end
En C++ el esquema es algo diferente…
Bucles FOR
for
(SENTENCIAS A EJECUTAR AL COMIENZO;
CONDICIÓN DE CONTINUACIÓN; SENTENCIAS A
EJECUTAR AL FINALIZAR EL BUCLE)
{
CUERPO DEL BUCLE
}
Bucles FOR
for ( int i=1,suma=0; i<=10 ;++i)
{
suma=suma+i; // ó suma+=i;
}
cout<<suma;
Bucles FOR
int i=1;suma=0;
for ( ; i<=10 ;)
{
suma=suma+i;
i++;
}
cout<<suma;
Bucles FOR
int i, suma=0;
for (i=1; i<=10 ;i=i+1)
{
suma=suma+i;
}
cout<<suma;
Bucles FOR
for ( int i=1,suma=0; i<=10 ;suma+=i++);
cout<<suma;
Bucles FOR
Dos errores típicos de bucles FOR:
int i, suma=0;
for (i=1; i<=10 ;i=i+1);
{
suma=suma+i;
}
cout<<suma;
for ( int i=1,suma=0; i<=10 ;suma+=i++)
cout<<suma;
Bucles WHILE
En Matlab guardan un gran parecido con C++
while (expresión de control)
{
Cuerpo del bucle While
}
Bucles WHILE
int i=1, suma=0;
while ( i<=10)
{
suma+=i++;
}
cout<<suma;
Bucles WHILE
int i=11, suma=0;
while ( i--)
{
suma+=i;
}
cout<<suma;
Bucles DO-WHILE
En Matlab guardan un gran parecido con C++
do
{
Cuerpo del bucle Do-While
}
while (expresión de control);
La ventaja es que permite ejecutar el bucle al menos
una vez. Veremos su utilidad en uno de los ejercicios.
Bucles DO-WHILE
int i=1, suma=0;
do
{
suma+=i++;
}
while ( i<=10);
cout<<suma;
Bucles DO-WHILE
int i=10, suma=0;
do
{
suma+=i;
}
while ( i--);
cout<<suma;
Bucles WHILE y DO-WHILE
Dos errores típicos de bucles WHILE y DO-WHILE:
int i=1, suma=0;
int i=1, suma=0;
while ( i<=10);
do
{
{
suma+=i++;
suma+=i++;
}
}
cout<<suma;
while ( i<=10)
cout<<suma;
Bifurcaciones IF
En Matlab guardan un gran parecido con C++
if (expresión de control)
{Instrucciones que se ejecutan en este caso}
else if (expresión de control II)
{Instrucciones que se ejecutan en este caso}
…
else if (expresión de control N)
{Instrucciones que se ejecutan en este caso}
else
{Instrucciones que se ejecutan en este caso}
Bifurcaciones IF
Un error típico de bifurcaciones IF:
char respuesta;
cout<<"Introduzca la opcion que desea:\t\t";
cin>>respuesta;
if (respuesta=='a');
cout<<"La respuesta es "<<respuesta<<"\n";
if (respuesta=='b')
cout<<"La respuesta es "<<respuesta<<"\n";
Bifurcaciones IF
Un “error” típico de bifurcaciones IF:
char respuesta;
cout<<"Introduzca la opcion que desea:\t\t";
cin>>respuesta;
if (respuesta=='a')
{
cout<<"La respuesta es "<<respuesta<<"\n";
}
else if (respuesta=='b')
{
cout<<"La respuesta es"<<respuesta<<"\n";
}
else (respuesta!='b'||respuesta!='a')
{
cout<<"Respuesta incorrecta\n";
}
Bifurcaciones SWITCH
Se parece a la bifurcacion if, con algunas diferencias:
switch (expresion)
{
case expresion_cte_1:
sentencia_1;
break;
case expresion_cte_2:
sentencia_2;
break;
…
case expresion_cte_N:
sentencia_N;
break;
default:
sentencia
break;
}
Bifurcaciones SWITCH
char respuesta;
cout<<"Introduzca la opcion que desea:\t\t";
cin>>respuesta;
switch (respuesta)
{
case 'a':
cout<<"La respuesta es "<<respuesta<<"\n";
break;
case 'b':
cout<<"La respuesta es"<<respuesta<<"\n";
break;
default:
cout<<"Respuesta incorrecta\n";
break;
}
Operador condicional
El operador condicional es ternario tiene 3 operandos.
Permite realizar una bifurcación. Expresión general:
expresión_control? sentencia_1 : sentencia_2; Ej:
Se evalúa la primera expresión:
char respuesta;
cout<<"Introduzca la opcion que desea:\t\t";
cin>>respuesta;
respuesta=='a'? cout << “Respuesta a" : cout << “Respuesta b";
si es true (!=0), se ejecuta la expresión_2.
si es false (==0), se ejecuta la expresión_3.
Cómoda para casos sencillos.
Anidamiento
Se pueden anidar bucles y bifurcaciones entre sí. Es
decir, poner unos dentro de otros. Pero CUIDADO!!!
if (a>=b)
if (b!=14)
c=a/b;
else
c=0;
if (a>=b)
{
if (b!=14)
c=a/b;
}
else
c=0;
Ejercicio 8.3 y 9.1
Comienzo
Pedimos el número
Multiplicamos
y restamos
FIN
No
Si
Dar resultado
¿Hemos
acabado?
Ejercicio 10.2
Comienzo
Historia: C y C++
Pedimos los valores
de A y B
¿Es A divisible
entre B?
No
Si
Decimos que A
es divisible
entre B
Decimos que A
NO es divisible
entre B
Pedimos la respuesta
a si quiere continuar (R)
Si
FIN
¿Es R==‘N’?
No
No
¿Es R==‘S’?
Si
Cadenas de caracteres
En C++ los espacios en blanco son caracteres.
H
o
l
a
0
1
2
3
4
J
u
a
n
5
6
7
8
72 111 108 97 32 74 117 97 110
char frase [9]=“Hola Juan”
Cadenas de caracteres
En C++ para guardar 9 caracteres hacen falta 10 celdas.
En la última celda se guarda el carácter nulo ‘\0’
H
o
l
a
0
1
2
3
4
J
u
a
n
\0
5
6
7
8
9
72 111 108 97 32 74 117 97 110 0
Cadenas de caracteres
Para obtener una cadena de caracteres (con
espacios) por pantalla:
char mi_cadena [longitud];
cin.getline (mi_cadena,longitud);
La librería estándar <string.h> contiene
muchas funciones útiles para manejar
cadenas. Las + interesantes están en las
prácticas
Cadenas de caracteres
char frase [10];
cin.getline (frase,10);
for (int i=0 ;i<10;i++)
{
cout<<frase[i]<<endl;
}
Ordenar programa
¡¡ORDEN!! El compilador Visual C++ introduce tabuladores
automáticamente:
#include <libreria.h>
void main (void)
{
char var1;
int var2;
while (expresion)
{
if (expresion)
{
sentencia2;
}
else if (expresion2)
{
sentencia2;
}
else (expresion)
{
sentencia2;
}
}
}
#include <libreria.h>
void main (void)
{
char var1;
int var2;
while (expresion)
{
if (expresion)
{sentencia2;
}
else if (expresion2)
{
sentencia2;}
else (expresion)
{
Sentencia2;}
}}
Ejercicio 1.3
asi es esta frase que queremos comprobar
esta
esta
esta
esta
esta
esta
esta
esta
Comienzo
Ejercicio 1.3
Historia: C y C++
Pedir frase y palabra
Calcular longitudes
1ª Letra de frase
¿Letra frase =
1ª Letra palabra?
No
Siguiente letra
frase
Si
Siguiente letra palabra
Siguiente letra frase
No
¿Son iguales?
No
Fin
Encontrada
No
Si
Si
¿Hemos acabado
Letras palabra?
Si
¿Hemos acabado
Letras frase?
No encontrada
Fin
Descargar