Está en la página 1de 16

TEMA 3: Programacin en lenguajes de alto nivel

TEMA 3: Programacin en lenguajes de alto nivel


3.1.-Caractersticas de un lenguaje de programacin de alto nivel A partir de ahora estudiaremos los conceptos que se utilizan en los lenguajes de programacin en general, aunque nos centraremos especialmente en los lenguajes procedurales. Estudiaremos los conceptos en el caso concreto del lenguaje C++. El lenguaje C++ es una evolucin del lenguaje C (1975). El lenguaje C fue desarrollado inicialmente como lenguaje de programacin de sistemas operativos, en concreto, para desarrollar y mantener el sistema operativo UNIX. El lenguaje C es muy potente, debido a que permite operaciones a bajo nivel. Pero tambin a causa de esto, es muy propenso a los errores por parte del programador. Para subsanar esto se creo a principios de los 80 el C++, que aade al C la programacin orientada a objetos. En 1998 se cre el estndar de C++ que se denomina ANSI/ISO C++, y es el que se sigue actualmente. En el vocabulario de los lenguajes de alto nivel se pueden distinguir claramente tres tipos de palabras (tokens): palabras reservadas, identificadores y smbolos (*,+,/,^, ). 3.1.1.-Palabras reservadas Palabras que tienen un significado especial en el lenguaje y no pueden ser utilizadas para ninguna otra cosa. Definen la estructura del programa y las instrucciones ms bsicas.

Ejemplo:
if / for / while ...

3.1.2.-Identificadores Son palabras del lenguaje que hacen referencia a elementos del programa (variables, subprogramas, )

Fernando Barber y Ricardo Ferrs

21

TEMA 3: Programacin en lenguajes de alto nivel En C++ un identificador es una secuencia de caracteres que cumple las siguientes reglas: Slo pueden utilizarse caracteres alfanumricos estndar (no , o acentuados) y el carcter subrayado _. No puede utilizarse el carcter blanco. El primer carcter ha de ser una letra o el carcter subrayado. No pueden utilizarse palabras reservadas como identificadores.

En C++ se distingue entre maysculas y minsculas, por lo que hay que tener cuidado de cmo se escribe un identificador.

Ejemplo: Vlidos
num_2 PracticaDos _uno

No Validos
ao Practica Dos 12x if

3.1.3.-Smbolos Existen smbolos de diferentes tipos y con diferentes significados en cada lenguaje de programacin, pero bsicamente se pueden clasificar en los siguientes grupos: Operadores: Son smbolos que indican la realizacin de una cierta operacin entre valores y/o variables.

Ejemplo: En C++:
+ % =

Suma Resto de la divisin entera Asignacin Suma Asignacin

&& ==

Resta Y (lgico) Comparacin Resta Comparacin 22

En Pascal:
+ := =

Fernando Barber y Ricardo Ferrs

TEMA 3: Programacin en lenguajes de alto nivel Smbolos de comentarios: Los comentarios son explicaciones del programa. Son ignoradas por el compilador.

Ejemplo: En C++:
// /* */

Inicio de comentario en una sola lnea Inicio de comentario en una o varias lneas Fin de comentario Inicio de comentario Fin de comentario

En Pascal:
{ }

Directivas del compilador: Son rdenes especiales para el compilador que no forman parte del lenguaje.

Ejemplo: En C++ se escriben con una almohadilla delante: Directiva para incluir un fichero.
#include <iostream.h>

3.2.-Concepto de variable En lenguajes de bajo nivel, los datos estn en celdas de memoria. La variable es una abstraccin del concepto de celda de memoria. Existe una relacin biunvoca entre el nombre de la variable y la direccin de memoria, y el valor de la variable y el contenido de la celda. Una variable tiene un nombre que la identifica y cuatro atributos bsicos: Valor: Est codificado en la posicin de memoria asociada a la variable. Tipo: Describe el conjunto de valores que puede tomar una variable as como las operaciones que soporta (dominio.) mbito: Rango de sentencias del programa en el que la variable es conocida. 23

Fernando Barber y Ricardo Ferrs

TEMA 3: Programacin en lenguajes de alto nivel Tiempo de vida: Rango de sentencias en que la variable est asociada a la posicin de memoria. Existen tambin unas operaciones bsicas sobre las variables: Indireccin: Consiste en recuperar el valor de la variable haciendo uso de su nombre.

Ejemplo: Si la variable X tiene valor 4


X + 3 ==> 4 + 3

Asignacin: Consiste en modificar el valor de la variable.

Ejemplo:
X 3 A partir de ahora X contendr el valor 3.

(En C++ x = 3 / En Pascal x := 3)

3.3.-Tipos simples de datos Un tipo de datos es simple cuando no puede ser descompuesto en tipos de datos ms simples (es decir, es atmico). Cuando s que es posible descomponerlo diremos que es compuesto. Un tipo es ordinal o numerable cuando se puede establecer una biyeccin entre los elementos de ese tipo y los nmeros naturales. Un tipo es ordenado cuando existe una relacin de orden. Todos los tipos simples son ordenados.

Fernando Barber y Ricardo Ferrs

24

TEMA 3: Programacin en lenguajes de alto nivel

Los ordinales, debido a la biyeccin con los naturales, se codifican como enteros. En la asignatura de Estructura de Computadores I se explica la representacin interna de los tipos enteros, reales, lgicos y caracteres. 3.3.1.-Lgicos Solamente posee los valores VERDADERO y FALSO. Como todo tipo ordinal posee un orden: En C++: bool Los valores son: true o false Operaciones en C++ sobre variables y valores lgicos: Los operadores sobre tipos lgicos son: Y (&&), o (||), no (!). X1
F V NO V F F < V

X1
F F V V

X2
F V F V

Y F F F V

O F V V V

Fernando Barber y Ricardo Ferrs

25

TEMA 3: Programacin en lenguajes de alto nivel

Ejemplo:
bool b; int a;

b = a > 5;

3.3.2.-Carcter Tipo para representar caracteres alfanumricos, que corresponde con una serie estndar de caracteres. Normalmente se utiliza la serie ASCII, aunque casi todas las series contienen lo siguiente: Cdigos de control. Conjunto de letras por orden alfabtico que no contiene caracteres especiales (, acentos, etc.) Conjunto de nmeros del 0 al 9. Caracteres especiales: , , acentos, ?, !, etc.

Los caracteres se codifican en el ordenador utilizando su cdigo ASCII. En C++: TIPO


char

FORMATO (Codificacin) 16 bits

Los caracteres se escriben con comillas simples 'A'.


'A' < 'B' TRUE

Fernando Barber y Ricardo Ferrs

26

TEMA 3: Programacin en lenguajes de alto nivel TABLA ASCII


Cdigo ASCII estndar
Hex Hex 0 Bin
0000

Cdigo ASCII extendido


6
0110

0
0000 NUL 0

1
0001 DLE 16 DC1 17 DC2 18 DC3 19 DC4 20 NAK 21 SYN 22 ETB 23 CAN 24 EM 25 SUB 26 ESC 27 FS 28 GS 29 RS 30 US 31

2
0010

3
0011

4
0100

5
0101

7
0111

8
1000

9
1001

A
1010

B
1011

C
1100

D
1101

E
1110

F
1111

0
32 48

@
64

P
80

`
96

p
112

128

144

160

176

192

208

224

240

0001

SOH 1

!
33

1
49

A
65

Q
81

a
97

q
11

129

145

161

177

193

209

225

241

0010

STX 2

34

2
50

B
66

R
82

b
98

r
114

130

146

162

178

194

210

226

242

0011

ETX 3

#
35

3
51

C
67

S
83

c
99

s
115

131

147

163

179

195

211

227

243

0100

EOT 4

$
36

4
52

D
68

T
84

d
100

t
116

132

148

164

180

196

212

228

244

0101

ENQ 5

%
37

5
53

E
69

U
85

e
101

u
117

133

149

165

181

197

213

229

245

0110

ACK 6

&
38

6
54

F
70

V
86

f
102

v
118

134

150

166

182

198

214

230

246

0111

BEL 7

39

7
55

G
71

W
87

g
103

w
119

135

151

167

183

199

215

231

247

1000

BS 8

(
40

8
56

H
72

X
88

h
104

x
120

136

152

168

184

200

216

232

248

1001

HT 9

)
41

9
57

I
73

Y
89

i
105

y
121

137

153

169

185

201

217

233

249

1010

LF 10

*
42

:
58

J
74

Z
90

j
106 122

138

154

170

186

202

218

234

250

1011

VT 11

+
43

;
59

K
75

[
91

k
107

{
123

139

155

171

187

203

219

235

251

1100

FF 12

,
44

<
60

L
76

\
92

l
108

|
124

140

156

172

188

204

220

236

252

1101

CR 13

45

=
61

M
77

]
93

m
109

}
125

141

157

173

189

205

221

237

253

1110

SO 14

.
46

>
62

N
78

^
94

n
110

~
126 DEL 127

142

158

174

190

206

222

238

254

1111

SI 15

/
47

?
63

O
79

_
95

o
111

143

159

175

191

207

223

239 255

Caracteres de Control

Caracteres Grficos

Fernando Barber y Ricardo Ferrs

27

TEMA 3: Programacin en lenguajes de alto nivel Para escribir caracteres especiales se utiliza el smbolo \ (barra invertida):

Ejemplo: '\n' '\'' '\\' Salto de lnea Comilla simple Smbolo \

3.3.3.-Enteros Es un subconjunto del conjunto matemtico de los enteros. Es por tanto ordenado y numerable. Distintos tipos de enteros en C++ (el rango y formato dependen del compilador y la mquina): TIPO
int long short unsigned int unsigned short

RANGO [-2147483648,2147483647] '' [-32768,32767] [0,4294967295] [0,65535]

FORMATO (Codificacin) 32 bits con signo 32 bits con signo 16 bits con signo 32 bits sin signo 16 bits sin signo

Operaciones sobre enteros: Aritmticas: +, -, *, /, % (Entre enteros / es la divisin entera!!) Relacionales:


==, !=, <, >, <=, >=

Funciones de biblioteca: abs

(stdlib.h)

3.3.4.-Reales Representacin de los nmeros matemticos reales. Es ordenado pero no numerable. Se codifica en el ordenador en notacin de coma flotante, es decir, el nmero est dividido en dos partes: mantisa y exponente.

Fernando Barber y Ricardo Ferrs

28

TEMA 3: Programacin en lenguajes de alto nivel


Real = Mantisa * Baseexponente

donde la Base normalmente es binaria (base 2.)1 La representacin de constantes de tipo real en el programa se puede realizar tanto con nmeros con punto decimal como con notacin cientfica.

Ejemplos: 50.0 0.05 0.5 E+2 5 E -2

Los diferentes tipos de reales en C++ son: TIPO


float double long double

PRECISIN 7 cifras 15 cifras

RANGO
1038..10-38 (E38..E-38) 10300..10-300 (E300..E-300)

FORMATO (Codificacin) 32 bits con signo 32 bits con signo

18 cifras 104932..10-4932 (E4932..E-4932) 16 bits con signo

Los nmeros reales no se deben comparar directamente para ver si son iguales pues pueden haber diferencias debido al redondeo. Tampoco se deben hacer ms operaciones de las necesarias, ya que en cada operacin se puede perder informacin. Operaciones en C++ sobre reales: Aritmticas: +, -, *, / (Entre reales / es la divisin real!!) Relacionales: Funciones de biblioteca:
fabs(X), pow(X,Y), sqrt(X), sin(X), cos(X), tan(X), asin(X), acos(X), atan(X), log(X), exp(X) !=, <, >, <=, >= (Cuidado con la comparacin ==)

(math.h)

Fernando Barber y Ricardo Ferrs

29

TEMA 3: Programacin en lenguajes de alto nivel 3.3.5.-Enumerado El tipo enumerado permite definir qu valores tendr el tipo. Los valores son una secuencia de identificadores, donde el orden de los valores viene dado por el orden de la secuencia. En C++ la declaracin de un tipo enumerado se realiza:
enum Tipo { Valor1, Valor2, ..., ValorN };

Ejemplo:
enum Dias {lunes, martes, miercoles, jueves, viernes, sabado, domingo};

3.3.6.-Puntero El tipo puntero sirve para almacenar direcciones de memoria. Este tipo se estudiar en el Tema 8. 3.4. Expresiones Una expresin es una combinacin de operadores y variables o constantes. Puede ser de dos tipos: aritmtica o lgica. 3.4.1.-Aritmticas Cuando el resultado de evaluar la expresin sea un nmero. Los operadores que utiliza son siempre aritmticos (+, -, *, /, %)

Ejemplo:
8 / 2 2 * 3.0 + 2 2 * 3 + 2 4 8.0 8

3.4.2.-Lgicas Cuando el resultado de evaluar la expresin sea un valor lgico. Los operadores que utiliza son relacionales (==, !=, <, >, <=, >=) o lgicos (!, &&, ||). Fernando Barber y Ricardo Ferrs 30

TEMA 3: Programacin en lenguajes de alto nivel Ejemplo:


((1 + 4) < 5) || !('a' > 'b') true

Cortocircuito de expresiones: En algunas expresiones lgicas es posible saber el resultado de la expresin completa sin necesidad de evaluarla totalmente (slo se evala la parte necesaria para obtener el resultado).

Ejemplo:
(1 > 2) && ('a' > 'b') false

Slo es necesario evaluar (1 > 2) para saber que el resultado es false.

3.4.3.-Orden de evaluacin Cuando existe ms de un operador en una expresin, stos se han de evaluar en un cierto orden. 1 Todas las subexpresiones entre parntesis. Primero los parntesis ms interiores. 2 Se evalan los operadores segn su orden de prioridad (tabla simplificada): Tipo de Operador
Unarios Multiplicativos Aditivos Relacionales And Or

Orden de prioridad
!, (Signos: -, +), ++, -*, /, % +, >, <, >=, <=, ==, != && ||

+ Nivel de prioridad

3 Operadores con el mismo nivel de prioridad se evalan de izquierda a derecha.

Fernando Barber y Ricardo Ferrs

31

TEMA 3: Programacin en lenguajes de alto nivel

Ejemplo:
9 + 3 * 5 / 4 %(7 + 1) = 9 + 3 * 5 / 4 % 8 = = 9 + 15 / 4 % 8 = = 9 + 3 % 8 = = 9 + 3 = = 12

3.4.4.-Conversin implcita de tipos Cuando se evala una expresin algebraica que implica diferentes tipos de datos, se transforman los operandos implicados al mismo tipo (el de mayor capacidad) dando el resultado en ese tipo.

Ejemplo:
5.0 Real + + 2 Entero

7.0 Real

Real

Real

(los operandos se convierten al tipo ms "grande")

3.4.5.-Conversin explcita de tipos (casting) Hay ocasiones en que se desea transformar a un tipo concreto los datos con los que estamos trabajando, de manera que explicitamos el tipo al que deseamos la conversin. A esta conversin se la llama conversin explcita de datos.

Ejemplo:
int(5.7) int('A') Dias(1)

5 65 martes

float(5) char(65)

--> -->

5.0 'A' --> 1

int(martes)

Antes de realizar un casting se debe estar seguro de que el resultado no se saldr del tipo. Fernando Barber y Ricardo Ferrs 32

TEMA 3: Programacin en lenguajes de alto nivel Ejemplo:


int(2E100)

3.5.-Estructura general de un programa Un programa se divide en dos partes bien diferenciadas. Un bloque de declaraciones, donde se especifican todos los elementos (variables, tipos, funciones, ...) que se van a utilizar en el programa y un bloque de definiciones, donde se escribe el cdigo de las distintas funciones que componen el programa. Esta estructura se vuelve a repetir para cada funcin que se define (las funciones se vern en el Tema 5). - Cabecera (Nombre del programa, autor, propsito, ...)

- Parte declarativa

- Declaracin de constantes - Declaracin de tipos - Declaracin de variables - Declaracin de funciones (prototipos)

- Definicin de la funcin principal (main() ) - Definicin de funciones Cualquier identificador que se vaya a utilizar debe haber sido declarado previamente. 3.5.1.-Declaracin de constantes: Las constantes declaradas tienen las siguientes ventajas: Claridad: Es ms claro para que sirve NUMMAX que 25. Facilidad de modificacin: Slo se modifica la declaracin. Prevencin de errores de escritura: Es ms difcil equivocarse poniendo PI que 3.1415926. En C++:
const Tipo ident = Valor;

Fernando Barber y Ricardo Ferrs

33

TEMA 3: Programacin en lenguajes de alto nivel Ejemplo:


const int NUMMAX = 25; const float IVA = 13.0;

3.5.2.-Declaracin de tipos: C++:


typedef Tipo ident;

Ejemplo:
typedef int entero;

3.5.3.-Declaracin de variables: C++:


tipo ident; // Declaracin de una variable

tipo ident1, ident2, ...; // Declaracin de varias variables tipo ident = Valor; // Declaracin de var. con valor inicial

Ejemplo:
int contador; float num1, num2; int cont = 1;

3.5.4.-Funcin principal: La funcin principal siempre tendr una de las siguientes formas:
int main() { ...(Cuerpo de la funcin) return 0; } }

int main(int argc, char* argv[]) { ... (Cuerpo de la funcin) return 0;

Fernando Barber y Ricardo Ferrs

34

TEMA 3: Programacin en lenguajes de alto nivel

Ejemplo:
/********************************************/ /* Programa 1 */ /* Autor: F. Barber */ /********************************************/ const float PI = 3.14159265; typedef int entero; int contador; entero contador2; float real; int main() { cout << "Hola"; return 0; }; /*****************************************************/ /* Programa 2 */ /* Autor: F. Barber */ /* Programa para el clculo del rea de un triangulo */ /*****************************************************/ int main() { float base, altura, area; cout << " Clculo del rea de un triangulo" << endl; cout << "Introduce la base del triangulo: "; cin >> base; cout << "Introduce la altura del triangulo: "; cin >> altura; area = base * altura / 2; cout << "El rea del tringulo es: " << area << endl; return 0; };

3.6. Sentencias bsicas 3.6.1.-Asignacin: Se modifica el valor de una variable. Pseudocdigo: Var Expr C++:
Var = Expr

Fernando Barber y Ricardo Ferrs

35

TEMA 3: Programacin en lenguajes de alto nivel Ejemplo:


X = 5; A = 3 * 5 + 2;

3.6.2.-Sentencia vaca: Sentencia que no hace nada.

Ejemplo:
A = B; ;

3.6.3.-Sentencias de entrada y salida: Psedocdigo:


leer A escribir A

C++:

cin >> cout <<

(Se vern en detalle en prcticas).

Para poder utilizarlas hay que incluir antes la librera de entrada/salida:


#include <iostream.h>

Fernando Barber y Ricardo Ferrs

36

También podría gustarte