Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Conceptos Básicos
de la Programación
GRADO EN INGENIERÍA
PROGRAMACIÓN I
1.Algoritmo. Codificación
TELEMÁTICA
●
Algoritmo. Conjunto ordenado y finito de
operaciones que permite hallar la solución de
un problema.
Datos de
Proceso Resultados
entrada
ALGORITMO
●
Diseño por analogía
●
Buscar un algoritmo que resuleva un problema
similar
●
Analizar las diferencias
●
Adaptarlo al problema actual
●
Diseño descendente
●
Dividir el problema en subproblemas más sencillos
●
Resolver cada uno de los subproblemas
●
Notación algorítmica. Conjunto de convenios
para expresar de forma no ambigua la
resolución de un problema
●
Notaciones algorítmicas:
●
Textual: pseudolenguaje.
●
Gráfica: diagramas de flujo, UML, etc.
●
Ejecutable: lenguaje de programación.
Lineas de flujo
Mostrar datos
●
Decodificación:
Decodificación Código -> Información
azul <---- 0 azul <---- 100
●
Código binario.
binario Cuando el sistema digital utilizado tiene
sólo 2 estados (0,1).
Grado en Ingeniería Telemática. Programación I 13/74
Tema 2. Conceptos básicos de la Programación
Bits y bytes
●
BIT (BInary
BI digiT): Unidad elemental
de información. Variable lógica que
sólo admite dos valores.
●
Agrupaciones de bits:
●
Para N valores hacen falta x bits 2 x-1 < N 2 x
●
BYTE u OCTETO:
OCTETO Agrupación de bits necesaria para
representar y almacenar un símbolo de escritura (8).
●
Medidas de la capacidad de almacenamiento:
KILOBYTE (KB) 210 bytes, MEGABYTE (MB) 210 KB,
GIGABYTE (GB) 210 MB, TERABYTE (TB) 210 GB.
Grado en Ingeniería Telemática. Programación I 14/74
Tema 2. Conceptos básicos de la Programación
Sistemas de numeración
●
Sistema de numeración posicional en base "b” :
Utiliza un alfabeto compuesto por b símbolos o cifras.
El valor de cada cifra depende de:
●
La cifra en sí.
●
La posición de la cifra en el número.
●
Ejemplo: El sistema decimal (b=10)
Alfabeto: {0,1,2,3,4,5,6,7,8,9}
3278.52 (10 = 3·103+2·102+7·101+8·100+5·10-1+2·10-2
●
Generalizando, para ...n3n2n1n0.n-1n-2... (b
●
Sistema de numeración hexadecimal.
hexadecimal
La base es 16 y el conjunto de símbolos es:
{0,1,2,3,4,5,6,7,8, 9,A,B,C,D,E,F}
+7 = 00000111
-3 en complemento a uno es 11111100
luego 00000111
11111100 +
100000011
1 +
00000100 = 4
• Código ASCII.
CARACTERES DE CONTROL
0 NUL (nulo) 16 DLE (escape de enlace de datos)
1 SOH (comienzo de cabecera) 17 DC1 (control de dispositivo 1)
2 STX (comienzo de texto) 18 DC2 (control de dispositivo 2)
3 ETX (fin de texto) 19 DC3 (control de dispositivo 3)
4 EOT (fin de transmisión) 20 DC4 (control de dispositivo 4)
5 ENQ (pregunta) 21 NAK (acuse de recibo negativo)
6 ACK (acuse de recibo) 22 SYN (sincronización)
7 BEL (campana sonora) 23 ETB (fin de bloque de transmisión)
8 BS (retroceso de un espacio) 24 CAN (anulación)
9 HT (tabulación horizontal) 25 EM (fin de medio físico)
10 LF (cambio de renglón) 26 SUB (carácter de sustitución)
11 VT (tabulación vertical) 27 ESC (escape)
12 FF (página siguiente) 28 FS (separador de ficheros)
13 CR (retroceso del carro) 29 GS (separador de grupos)
14 SO (fuera de código) 30 RS (separador de registros)
15 SI (en código) 31 US (separador de unidades)
32 SP 48 0 64 @ 80 P 96 ` 112 p
33 ! 49 1 65 A 81 Q 97 a 113 q
34 " 50 2 66 B 82 R 98 b 114 r
35 # 51 3 67 C 83 S 99 c 115 s
36 $ 52 4 68 D 84 T 100 d 116 t
37 % 53 5 69 E 85 U 101 e 117 u
38 & 54 6 70 F 86 V 102 f 118 v
39 ' 55 7 71 G 87 W 103 g 119 w
40 ( 56 8 72 H 88 X 104 h 120 x
41 ) 57 9 73 I 89 Y 105 i 121 y
42 * 58 : 74 J 90 Z 106 j 122 z
43 + 59 ; 75 K 91 [ 107 k 123 {
44 , 60 < 76 L 92 \ 108 l 124 |
45 - 61 = 77 M 93 ] 109 m 125 }
46 . 62 > 78 N 94 ^ 110 n 126 ~
47 / 63 ? 79 O 95 _ 111 o 127 DEL
ALGORITMO
CODIFICACIÓN
VARIABLES CÓDIGO
Grado en Ingeniería Telemática. Programación I 30/74
Tema 2. Conceptos básicos de la Programación
Otros elementos de un programa
en C++
●
Comentarios. No son parte del algoritmo. Documentan el código para el
programador.
// Comentario de una sola línea
/*
Comentario de más de
una línea
*/
●
Importación de bibliotecas. Añade funciones predefinidas a los programas.
#include <iostream>
// Declaración de tipos
// Declaración de subprogramas
// Función principal
int main( int argc, char* argv[] ){
// Declaración de variables locales
// Instrucciones
return 0;
}
Grado en Ingeniería Telemática. Programación I 32/74
Tema 2. Conceptos básicos de la Programación
Entrada/salida básica en C++
●
La biblioteca iostream proporciona dos flujos de
datos: cin y cout.
cout
●
cout es un flujo de salida. Envía datos a la unidad
de salida (terminal). Utiliza el operador << para
insertar datos en el flujo.
cout << expresión;
●
cin es un flujo de entrada. Extrae datos de la
unidad de entrada (teclado). Utiliza el operador >>
para extraer datos del flujo.
cin >> variable;
Grado en Ingeniería Telemática. Programación I 33/74
Tema 2. Conceptos básicos de la Programación
Funcionamiento del flujo cin
●
cin almacena todos los datos introducidos hasta un
retorno de carro en un buffer.
●
Los datos del buffer son troceados utilizando el espacio
como separador y almacenando cada parte de la
información en una variable
// Declaración de las variables a,b y c
int a, b, c;
Entrada: Lectura:
cin >> a >> b; 4 6 10 3↵ a=5
cin >> c; b=6
c = 10
Grado en Ingeniería Telemática. Programación I 34/74
Tema 2. Conceptos básicos de la Programación
Tema 2. Conceptos Básicos
de la Programación
GRADO EN INGENIERÍA
PROGRAMACIÓN I
1.Algoritmo. Codificación
TELEMÁTICA
●
Los algoritmos almacenan los datos que
procesan en objetos llamados variables
●
Una variable se identifica por su nombre. Se le
denomina identificador
●
Comienzan por una letra, seguida por una
secuencia de letras, digitos y ’_’ en cualquier
orden.
●
Ejemplos: contador, indice 1, PI,
N_ALUMNOS
Grado en Ingeniería Telemática. Programación I 36/74
Tema 2. Conceptos básicos de la Programación
Objetos variables
●
Su valor puede variar durante la ejecución del
programa
●
De entre todos los valores que especifica su
tipo, en un momento dado sólo tomar ́ uno de
ellos
●
Se puede especificar su valor inicial, en otro
caso, su valor queda INESPECIFICADO
●
Tiene asignado una zona de memoria donde se
almacena la representación del valor que toma
en un momento dado 37/74
Grado en Ingeniería Telemática. Programación I
Tema 2. Conceptos básicos de la Programación
Definición de variables
●
Las variables se definen precediendo su identificador con el nombre del tipo de dato que
contienen
●
Las variables se definen dentro del cuerpo del programa principal y del cuerpo de los
subalgoritmos. Su ámbito de visibilidad abarca el cuerpo (bloque) en el que están definidas.
// -- Principal --------
int main ()
{
bool logico;
char caracter = ’z’;
unsigned natural_1, natural_2;
int entero = 56;
float real;
string cadena = "pepe";
// Acciones
}
Grado en Ingeniería Telemática. Programación I 38/74
Tema 2. Conceptos básicos de la Programación
Sentencia de asignación
●
La sentencia de asignación permite asignar valor a una
variable
●
Ejemplo:
int main ()
{
int x;
int y = 5; // Asignación de un valor inicial
int z;
x = 2;
y = 7; // Asigna un valor sobreescribiendo el anterior
z = x + 2; // Asigna el resultado de una expresión
return 0;
}
Grado en Ingeniería Telemática. Programación I 39/74
Tema 2. Conceptos básicos de la Programación
Objetos contantes
●
Su valor no varía durante la ejecución del
programa
●
De entre todos los valores que especifica su
tipo, sólo tomará uno de ellos
●
Las constantes se definen en la zona de
constantes y su ámbito de visibilidad abarca
todo el programa
●
Las variables tiene asociado un tipo
●
Define el conjunto de valores que puede tomar
un determinado objeto (variable)
●
Determina las operaciones que se pueden
aplicar a un objeto
●
Define la interpretación del valor almacenado
en memoria.
●
Define el espacio que será necesario reservar
en memoria paraalbergar a un objeto.
Grado en Ingeniería Telemática. Programación I 42/74
Tema 2. Conceptos básicos de la Programación
Clasificación de los tipos
SIMPLES ESTRUCTURADOS
PREDEFINIDOS
●
Lógico: bool
●
Carácter: char
●
Natural: unsigned ●
Cadena: string
●
Entero: int
●
Real: float
Registro:
DEFINIDOS
●
●
Enumerado: struct TPErsona {
enum TColor { rojo,azul, string nombre;
verde }; unsigned edad;
●
Puntero: };
typedef Persona *TPPersona;
●
Array:
typedef int TArray[TAM];
●
Escalares:
●
Fomados por elementos indivisibles (simples)
●
Formados por elementos ordenados, es decir, le
son aplicables los operadores relacionales == , != ,
< , > , <= , >=
●
Ordinales: Además de las propiedades
anteriores:
●
Cada valor tiene un predecesor y un sucesor
únicos (excepto el primero y el último,
respectivamente)
Grado en Ingeniería Telemática. Programación I 44/74
Tema 2. Conceptos básicos de la Programación
Tipos escalares y ordinales
●
Lógico: bool
Carácter: char
ESCALARES
●
ORDINALES
●
Natural: unsigned
●
Entero: int
●
Enumerado:
enum TColor { rojo,azul,
Verde };
●
Real: float
●
Representa los valores de verdad: false y true
●
Resultado de expresiones relacionales y
lógicas
●
Operadores aplicables: operadores lógicos ! ,
&& , ||
x y !x X && y X || y
●
Tabla de Verdad:
F F T F F
F T T F T
T F F F T
T T F T T
1) x ∈ {3, 4, 5, 6, 7}
2) x ∈ {1, 2, 3, 7, 8, 9}
3) x ∈ {1, 3, 5, 7, 9}
4) x ∈ {2, 5, 6, 7, 8, 9}
5) x ∈ {3, 4, 6, 8, 9}, y ∈ {6, 7, 8, 3}
6) Ni x ni y sean mayores que 10
7) x no sea multiplo de y
8) c es una letra mayúsculau
9) c es una letra
10) c es un carácter alfanumérico
Grado en Ingeniería Telemática. Programación I 47/74
Tema 2. Conceptos básicos de la Programación
Tipo carácter
●
Representa los símbolos utilizados para la
entrada y salida de datos. Por ejemplo de
teclado y a pantalla
●
Los valores se representan en el lenguaje de
programación como el símbolo entre
apostrofes: ’a’, ’F’, ’5’, ’.’, ’+’, etc.
●
Necesitan de una tabla de conversión para la
representación interna. La más utilizada es la
tabla ASCII que asocia a cada carácter una
posición ordenada (número de orden)
Grado en Ingeniería Telemática. Programación I 48/74
Tema 2. Conceptos básicos de la Programación
Tipo carácter. Operadores
●
Relacionales: == , != , < , > , <= , >=
●
Conversión: Es posible convertirlos al tipo
Natural, obteniendo su posición en la tabla de
conversión (ASCII), y a la inversa
●
Incremento/Decremento: ++, --
●
Representa el concepto matemático de Número
Natural limitado a un rango de valores
●
Los valores se representan en el lenguaje de
programació́n como una secuencia de dígitos:
1245
●
Representación interna en binario puro para un
número de bits concreto que depende de la
palabra de CPU
●
Rango de valores representados: [0..2n-1]
Grado en Ingeniería Telemática. Programación I 50/74
Tema 2. Conceptos básicos de la Programación
Tipo natural. Operadores
●
Aritméticos: + , - , * , / , %
●
Relacionales: == , != , < , > , <= , >=
●
Conversion: Es posible convertirlos a otros
tipos escalares si y solo si están dentro del
rango correcto y a la inversa
●
Incremento/Decremento: ++, --
●
Aritméticos: + , - , * , / , %
●
Relacionales: == , != , < , > , <= , >=
●
Conversion: Es posible convertirlos a otros
tipos escalares si y solo si están dentro del
rango correcto y a la inversa
●
Incremento/Decremento: ++, --
●
Aritméticos: + , - , * , /
●
Relacionales: == , != , < , > , <= , >=
●
Conversion: Es posible convertirlos a los tipos
Natural y Entero si y solo si están dentro del
rango correcto y a la inversa
●
La parte decimal se pierde
●
Incremento/Decremento: ++, --
●
Es posibles convertir valores de un tipo a
escalar a otro
●
La conversión se realiza precediendo el valor a
convertir entre paréntesis por el tipo al que se
quiere convertir
●
Ejemplos:
int('a') float(10)
int(10.5) char(65)
1.Algoritmo. Codificación
TELEMÁTICA
●
Control de selección, alternativas.
●
Ejecutar un bloque de acciones dependiendo de la
evaluación de una expresión lógica o condición.
●
3 tipos de sentencias alternativas:
●
Sentencias de selección simple
●
Sentencias de selección binaria
●
Sentencias de selección múltiple
cin >> x;
if (x < 0){
cout << "El número debe ser positivo" << endl;
}
cout << x;
Grado en Ingeniería Telemática. Programación I 63/74
Tema 2. Conceptos básicos de la Programación
Diagrama de flujo
Falso
CondControl
Cierto
Acciones
●
Sintaxis:
if (condición_de_control)
condición_de_control {
acción_consecuente
} else {
Cierto Falso
acción_alternativa CondControl
} Accion Accion
consecuente alternativa
●
Necesarias en la mayoría de los
algoritmos.
●
Estructura repetitiva = bucle = lazo.
●
Iteración
●
Ejecutan un conjunto de acciones(cuerpo
del bucle) un número determinado o
indeterminado a priori de veces.
●
¿Cuantas veces se ejecutan las acciones?
Condición de control
Grado en Ingeniería Telemática. Programación I 69/74
Tema 2. Conceptos básicos de la Programación
Bucle Precondición
●
Sintaxis:
while (condición_de_control) {
acción;
}
CondControl
Cierto
Acciones
Falso
AccionSeguida
Grado en Ingeniería Telemática. Programación I 70/74
Tema 2. Conceptos básicos de la Programación
Bucle Postcondición
●
Sintaxis:
do {
acción; Acciones
} while (cond_control);
CondCont
rol Falso
Cierto
AccionSeguida
Grado en Ingeniería Telemática. Programación I 71/74
Tema 2. Conceptos básicos de la Programación
Bucle Determinista
●
Se implementa mediante la instrucción for de C+
+
●
Sintaxis:
Sintaxis
for( iniciación ; condición ; actualización ) {
acción;
}
●
Ejemplo:
Ejemplo
for ( int i = 1 ; i < 10 ; i++ ) {
cout << i << endl;
}
Grado en Ingeniería Telemática. Programación I 72/74
Tema 2. Conceptos básicos de la Programación
Bucle Determinista
●
La instrucción for de C++ es indeterminista.
●
Para una correcta programación estructurada
es necesario limitar su uso a casos
deterministas → Cuando el número de
iteraciones del bucle se conoce a priori.
●
La variable contadora del bucle no deberá ser
modificada dentro del mismo.
●
La vcb puede ser de cualquier tipo ordinal.