Relacion entre pseudolenguaje y C++

Anuncio
Pseudolenguaje
Tipo C
Dominio 0 .. 2n -1
[MIN(C) .. MAX(C)]
Operadores No hay
Aritméticos
Otras funciones CHR(...)
CAP(...)
ORD(...)
E/S No Formateada:
Leer (...)
Escribir (...)
Pseudolenguaje
Tipo N
Dominio 0 .. 2n – 1
[0 .. MAX(N)]
Operadores +
*
DIV
MOD
E/S Formateada:
Leer (...)
Escribir (...)
Laboratorio de Programación. Técnicas de Telecomunicación
C/C++
char
(1 byte) 0 .. 255 (valores códigos ASCII)
[CHAR_MIN .. CHAR_MAX]
(Definida en <limits.h>)
No hay
char (...)
(casting)
toupper(...),
tolower(...) (<ctype.h>)
int (…)
(casting)
isalnum(...) (<ctype.h>)
isdigit(...) (<ctype.h>)
isalpha(...) (<ctype.h>)
#include <iostream>
cin >> ...
cout << ... << ...
Ej: cout << “El carácter es: “ << carácter << endl
C/C++
unsigned int
(4 bytes) 0 .. 4.294.967.295
[0 .. UINT_MAX]
(Definida en <limits.h>)
Modificadores:
short: 2 bytes [0 .. UHRT_MAX]
long: 4 bytes [0 .. UONG_MAX]
+
*
/
%
#include <iostream>
cin >> ...
cout << ...
Ej: cout << El número es: << num
1
David Bueno Vallejo, José Jerez Aragonés
Pseudolenguaje
Tipo Z
Dominio -2n-1 .. 2n-1 -1
[MIN(N) .. MAX(N)]
Operadores +
- (unario)
- (binario)
*
DIV
MOD
E/S Formateada:
Leer (...)
Escribir (...)
Pseudolenguaje
Tipo R
Dominio [MIN(R) .. MAX(R)]
Operadores +
- (unario)
- (binario)
*
/
E/S Formateada:
Leer (...)
Escribir (...)
Laboratorio de Programación. Técnicas de Telecomunicación
C/C++
int
(4 bytes) –2.147.483.448 .. 2.147.483.647
[INT_MIN .. INT_MAX]
(Definida en <limits.h>)
Modificadores:
short: 2 bytes [SHRT_MIN .. SHRT_MAX]
long: 4 bytes [LONG_MIN .. LONG_MAX]
+
- (unario)
- (binario)
*
/
%
#include <iostream>
cin >> ...
cout << ...
C/C++
float / double
float: (4 bytes) -3.4x10-38 .. 3.4x1038
[FLT_MIN .. FLT_MAX]
(Definida en <float.h>)
double: (8 bytes) -1.7x10-308 .. 1.7x10308
[DBL_MIN .. DBL_MAX]
(Definida en <float.h>)
+
- (unario)
- (binario)
*
/
#include <iostream>
cin >> ...
cout << ...
2
David Bueno Vallejo, José Jerez Aragonés
Pseudolenguaje
Tipo B
Dominio Dos posibles valores
[FALSO, VERDADERO]
Operadores AND
OR
NOT
E/S No permitida
C/C++
bool (C++) (no existe en C)
1 byte en representación interna
[false, true]
&& (importante: dos &)
||
!
No permitida
Se deben implementar las funciones necesarias
Pseudolenguaje
C/C++
Tipo ENUM {<valores>} id_tipo
Dominio Valores enumerados que
clarifican el dominio y mejoran
la legibilidad del programa
Operadores Ninguno
Funciones MIN, MAX
Estándares ORD
PRED
SUCC
E/S No permitida
Laboratorio de Programación. Técnicas de Telecomunicación
3
Typedef enum {<valores>} id_tipo
Dominio de los int
Los de los int, pero haciendo casting
INT_MIN, INT_MAX <limits.h>
int(<valor>)
id_var = id_tipo(id_var - 1)
id_var = id_tipo(id_var + 1) (casting)
No son circulares.
No permiten utilizar el los operadores "++"
ni "--", ya que éstos incluyen una operación
de asignación sin casting.
No permitida
Se deben implementar las funciones
necesarias
David Bueno Vallejo, José Jerez Aragonés
Operadores
Aritméticos
- valor
valor * valor
valor / valor
valor % valor
valor + valor
valor - valor
Relacionales
valor < valor
valor <= valor
valor > valor
valor >= valor
valor = = valor
valor != valor
Lógicos
!valor
valor && valor
valor | | valor
Reglas de precedencia de operadores
!–
*/%
+< <= > >=
= = !=
&&
||
Automática
Explícitas
Constantes (CONST)
Variables (VAR)
Sentencia de asignación
Descripción
Menos unario
Producto
División ( entera [DIV] y real [/])
Modulo o resto (MOD) (no para reales)
Suma
Resta
Comparación menor
Comparación menor o igual
Comparación mayor
Comparación mayor o igual
Comparación igualdad
Comparación desigualdad
Negación lógica (NOT)
AND lógico
OR lógico
unarios
binarios
binarios
binarios
binarios
binario
binario
Conversiones de Tipos (casting)
C++ realiza conversiones de tipos automática: el
resultado de una operación será el del tipo más
amplio implicado en ella.
int(‘a’) -> 65
char(65) -> ‘a’
double(2) -> 2.0
int(3.6) -> 3
const <tipo> id_cte = valor;
Hay que asignar un valor inicial.
<tipo> id_var = valor;
Se pueden inicializar las variables en la zona de
declaración
id_var = expresión;
Laboratorio de Programación. Técnicas de Telecomunicación
4
David Bueno Vallejo, José Jerez Aragonés
Estructura general de un programa en C/C++
Inclusión de módulos de bibliotecas necesarios
Declaraciones y definiciones de constantes, tipos y subprogramas
int main( )
{
Declaraciones de variables y constantes
Secuencia de sentencias;
En entorno DEV-C++, para que no se cierre la ventana de MS-DOS y
poder ver los resultados la última sentencia del programa deberá ser:
system (‘PAUSE’);
return Estado;
}
#include
<iostream>
cout
cin
Entrada / Salida Básicas
Librería que contiene las funciones de entrada / salida básica
Es una librería de C++, que contiene objetos y manipuladores que
permiten operar con esos objetos
Se utiliza el operador “<<” para indicar que los datos se
redireccionan al flujo de salida cout (que representa la pantalla)
Ej: cout << “Contador” << contador << endl;
Se puede utilizar “\n” para final de línea, pero incluido en una
cadena de caracteres.
Se utiliza el operador “>>”, para almacenar los datos provenientes
del flujo de entrada (teclado) en la variable correspondiente.
Ej: cin >> maximo >> minimo
Se pueden leer varios valores en una sola sentencia.
Entrada de Datos:
- Salta los caracteres en blanco y saltos de linea hasta encontrar
datos.
Formatear E/S
Se utilizan manipuladores sobre los objetos cin y cout: Hay que
incluir el fichero <iomanip.h>
cout << setprecision(2) << 4.567
cout << setw(5) << 234
cout << setfill(‘#’) << setw(5) << 234
cin.get( )
Laboratorio de Programación. Técnicas de Telecomunicación
5
Imprime 4.6
Imprime “ 234” (justifica)
Imprime ##234
Lee un carácter de entrada
(sin saltar espacios)
David Bueno Vallejo, José Jerez Aragonés
Estructura de selección (if)
if <cond> {
<sentencias>
}
Simple:
SI <cond> ENTONCES
<sentencias>
FINSI
Doble:
SI <cond> ENTONCES
<sentencias_1>
SINO
<sentencias_2>
FINSI
Multiple:
SI <cond_1> ENTONCES
<sentencias_1>
SINOSI <cond_2> ENTONCES
<sentencias_2>
SINOSI <cond_3> ENTONCES
<sentencias_3>
SINOSI
<sentencias>
FINSI
if <cond> {
<sentencias_1>
} else {
<sentencias_2>
}
if <cond_1> {
<sentencias_1>
} else if <cond_2> {
<sentencias_2>
} else if <cond_3> {
<sentencias_3>
} else {
<sentencias>
}
Estructura de selección (switch)
CASO <expr_ordinal> SEA
switch <expr_ordinal> {
<valor1>: <sent1>
case <valor1>:
<valor2>: <sent2>
<sent1>
<valor3>: <sent3>
break;
…
case <valor2>:
ENOTROCASO
<sent2>
<sentencias>
break;
FINSI
case <valor3>:
<sent3>;
break;
default:
<sentencias>
}
Laboratorio de Programación. Técnicas de Telecomunicación
6
David Bueno Vallejo, José Jerez Aragonés
Estructura de iteración
REPETIR
do {
<sentencias>
<sentencias>
HASTA <cond>
} while (!(<cond>))
MIENTRAS <cond> HACER
while (<cond>) {
<sentencias>
<sentencias>
FINMIENTRAS
}
PARA vc = vini HASTA vfin [PASO
for (vc = vini; vc <= vfin; vc += paso) {
paso] HACER
<sentencias>
<sentencias>
}
FINPARA
Laboratorio de Programación. Técnicas de Telecomunicación
7
David Bueno Vallejo, José Jerez Aragonés
Subprogramas (Procedimientos y Funciones)
Pseudolenguaje
C/C++
Procedimientos ALGORITMO IdProc (<par_formales>) {
void IdProc (<par_formales>) {
<sentencias>
<sentencias>
}
}
Funciones ALGORITMO <TipoFunc> IdFunc
(<par_formales>) {
<TipoFunc> IdFunc (<par_formales>) {
<sentencias>
DEVOLVER (valor);
<sentencias>
return (valor);
}
}
Parámetros Valor: (..., E <Tipo> id_param, ...)
Valor: (..., const <Tipo> id_param, ...)
Referencia: (..., [S | ES <Tipo> id_param, ...)
Reglas de 1) Regla de ámbito: es la parte del alg. donde
ámbito
se puede utilizar y va desde el punto donde
se declara hasta el final del cuerpo del
algoritmo en que se declara, incluyendo los
subalgoritmos anidados.
Referencia: (..., <Tipo> &id_param, ..)
Las mismas que para el pseudolenguaje,
pero sin la posibilidad de anidar
subalgoritmos en C++, donde no está
permitido.
2) Regla de ocultación: La visibilidad de un
identificador coincide con su ámbito
exceptuando los ámbitos de los
identificadores con el mismo nombre
declarados en subalgoritmos anidados, los
cuales ocultan al más externo.
Notas
Laboratorio de Programación. Técnicas de Telecomunicación
En C/C++, todos los subprogramas son
externos, no se permiten anidamientos y
el principal, main(), es otro subprograma
8
David Bueno Vallejo, José Jerez Aragonés
Descargar