Tema3.
- Programación
en lenguajes de alto nivel
1
Concepto de algoritmo
Conjunto de pasos o acciones, que especifican de
forma no ambigua y finita, qué operaciones se deben
realizar para procesar datos con un determinado
objetivo
Ejemplo: algoritmo para saber si un número es primo
1.- A=2
2.- N/A
3.- si el resultado es entero, entonces N no es numero
primo. Ir a 6. En caso contrario continuar en 4
4.- A = A+1
5.- si A es igual a N, entonces es numero primo. En caso
contrario ir al punto 2
6.- fin
2
Lenguajes de programación
• Lenguaje máquina
• Lenguaje ensamblador
• Lenguajes de alto nivel
Programación clásica
Programación modular
Programación estructurada
Programación procedural
Programación declarativa
POO
3
• definición del problema
Análisis del • especificaciones de
problema entrada
• especificaciones de salida
• diseño modular o
Fases en la Diseño del
resolución descendente
algoritmo
de un • refinamiento por pasos
problema
• codificación del
Programación programa
del algoritmo
• ejecución del programa
• comprobación 4
Diagramas de flujo u organigramas
Entrada o salida de datos
Asignación
x=x+5 Leer x,y
Escribir x,y
decisión
comienzo
x<5 C F
si
? no
fin
6
Elementos básicos de un lenguaje de alto nivel (1/5)
• Palabras reservadas
• Identificadores y símbolos (operadores)
• Comentarios
• Directivas del compilador
• Variables y constantes
• Asignación
• Tipos de datos
• Expresiones aritméticas y lógicas
• Entrada de datos
• Salida de datos
7
+ Entorno de programación
Elementos básicos de un lenguaje de alto nivel (2/5)
• Palabras reservadas
help, if, for, while, …
• Identificadores y símbolos (operadores)
Un nombre o identificador
Varios caracteres seguidos (sin espacios ni ñ ni acentos y el primer carácter
no puede ser un número):
x aceleración
velocidad velocidad media
velocidad_media Año
anyo 4casas
Símbolos (operadores)
= - *
8
Elementos básicos de un lenguaje de alto nivel (3/5)
• Comentarios
// Esto es un programa que suma 2 numeros
/* Inicio de un comentario en varias lineas
Fin del comentario*/
• Directivas del compilador
#include <iostream>
//incluye el fichero de entrada y salida
9
Elementos básicos de un lenguaje de alto nivel (4/5)
• Constantes
Un valor almacenado en memoria que no se modifica
Necesidad de declarar y dar un valor y tipo
const int temperatura = 15;
• Variables
Una zona de memoria reservada para guardar algo
Necesidad de declarar y dar tipo
int velocidad;
10
Elementos básicos de un lenguaje de alto nivel (5/5)
• Asignación
n = 100;
n = n + 1;
hola = hola + 1;
• Asignación no es lo mismo que igualdad (==)
n = 100;
n == 100
hola = hola + 1;
hola == hola + 1 11
Tipos de Datos
• Lógicos
• Carácter
• Enteros
• Reales
• Enumerados
12
Lógicos (se volverán a ver más adelante)
Su valor es verdadero (true) o falso (false)
En C++: bool
Operaciones: && (AND), || (OR) , ! (NOT)
Ejemplo:
bool z;
Si se cumple la condición x > y z = true;
Si se cumple que (x > y) && (y < 7) z = false;
bool z;
int a;
z = a > 5; //posibles instrucciones
13
z = !(a > 15);
Carácter
Su valor es 1 carácter
Ocupan 8 bits de memoria
Se escriben con comillas simples
En C++: char
Ejemplo:
char x;
x = ‘A’;
14
Enteros (rango y formato dependen de compilador y HW)
TIPO RANGO FORMATO
(Codificación)
int [-2147483648,2147483647] 32 bits con signo
long '' 32 bits con signo
short [-32768,32767] 16 bits con signo
long long [-9223372036854775808, 64 bits con signo
9223372036854775807]
unsigned int [0,4294967295] 32 bits sin signo
unsigned short [0,65535] 16 bits sin signo
unsigned long long [0, 18446744073709551615] 64 bits sin signo
15
Enteros: operaciones
Aritméticas
+ - * / %
Cuidado. Entre enteros ‘/’ es la división entera
Relacionales
== != < > <= >=
16
Reales (rango y formato)
TIPO PRECISIÓN RANGO FORMATO
(Codificación)
float 7 cifras 1038..10-38 (E38..E-38) 32 bits con
signo
double 15 cifras 10300..10-300 (E300..E-300) 64 bits con
signo
long double 18 cifras 104932..10-4932 (E4932..E-4932) 96 bits con
signo
Nota importante:
• No se deben comparar directamente para ver si son iguales pues
pueden haber diferencias debido al redondeo
• No se deben hacer más operaciones de las necesarias, ya que en
cada operación se puede perder información 18
Reales: operaciones
Aritméticas
+ - * /
Cuidado. Entre enteros ‘/’ es la división entera
Relacionales
!= < > <= >= ==
19
Prioridad de operadores
¿Qué operación realizar primero?
2 * 3 + 5 6 + 5 11
2*3+5 2*8 16
Tipo de Operador Orden de prioridad
Unarios !, (Signos: -, +), ++, --
+
Multiplicativos *, /, %
Aditivos +, -
Nivel de prioridad
Relacionales >, <, >=, <=, ==, !=
And && -
Or ||
Sugerencia: usar paréntesis! 22
Conversión de tipos
Cuando se evalúa una expresión que incluye diferentes
tipos de datos, se transforman los operandos implicados al
mismo tipo (el de mayor capacidad) dando el resultado en
ese tipo
5.0 + 2 7.0
23
Conversión de tipos casting
Con el “casting” se obliga a almacenar una variable en un
tamaño que no era el suyo original
int x = 3
(float)x/2
24
26
Salida de datos por pantalla
cout << 5;
x = 7;
cout << x;
cout << “El valor de” << “x” << “=“ << x << endl;
Qué sale por pantalla?
27
Entrada de datos por teclado
cin >> a;
cout << a;
cin >> b;
s = a + b;
cout << s;
28