SlideShare una empresa de Scribd logo
1 de 62
2
Fundamentos de la programación
Instituto de Educación Superior Pedagógico
Público
“Gamaniel Blanco Murillo”
Computación e Informática
Lenguaje de Programación I
HéctorLópezSánchez
Programar
Actividad de escribir y probar programas.
Programa
Código que indica a la computadora exactamente lo que tiene
que hacer: secuencia de instrucciones.
La computadora sólo entiende un conjunto de instrucciones.
Lenguaje de programación
Describe cómo es el conjunto de instrucciones que se pueden
usar en los programas.
Reglas sintácticas que el código debe respetar.
Página 1Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Página 2Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Una computadora de un coche
Coche que acepta programas que le indiquen cómo llegar.
Instrucciones que entiende:
<instrucción> ::= <inst> ;
<inst> ::= Start | Stop | <avanzar>
<avanzar> ::= Go <dirección> <num> Blocks
<dirección> ::= North | East | South | West
<num> ::= 1 | 2 | 3 | 4 | 5
Ejemplos:
Start;
Go North 3 Blocks;
Stop;
Página 3Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
El problema a resolver
Estando el coche en la posición A,
conseguir llegar al Cine Tívoli (B).
¿Cuáles son los pasos que hay
que seguir para llegar al destino?
Arrancar
Ir un bloque al Norte
Ir dos bloques al Este
Ir cinco bloques al Norte
Ir dos bloques al Este
Parar
Página 4Fundamentos de la programación: Primeros pasos
B
A
N
Bloque:
HéctorLópezSánchez
El algoritmo
Secuencia de pasos que hay que
seguir para resolver el problema.
Página 5Fundamentos de la programación: Primeros pasos
1.- Arrancar
N
2.- Ir un bloque al Norte
3.- Ir dos bloques al Este
4.- Ir cinco bloques al Norte
5.- Ir dos bloques al Este
6.- Parar
Esos pasos sirven tanto para
una persona como para una computadora.

HéctorLópezSánchez
El programa
Para cada paso, una instrucción.
Escrita en el lenguaje
de programación.
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go East 2 Blocks;
Stop;
Página 6Fundamentos de la programación: Primeros pasos
B
A
N
HéctorLópezSánchez
El programa
Escribimos el código del programa
en un editor y lo guardamos
en un documento programa.prg.
Página 7Fundamentos de la programación: Primeros pasos
Stat;
Go North 1 Blocks
Go East Blocks;
Go Noth 5 Blocks;
Go West 2 Blocks;
Stop;
Copiamos el archivo
en una llave USB
y lo llevamos al coche.
HéctorLópezSánchez
La compilación
Introducimos la llave USB en el coche y pulsamos el botón
de ejecutar el programa en programa.prg.
Se compila el programa (comprobación sintáctica):
Página 8Fundamentos de la programación: Primeros pasos
Stat;
----^ Unknown word.
Go North 1 Blocks
-----------------^ ; missing.
Go East Blocks;
--------^ Number missing.
Go Noth 5 Blocks;
-------^ Unknown word.
Go West 2 Blocks;
Stop;
There are errors. Impossible to run the program.
Errores
de sintaxis
HéctorLópezSánchez
Depuración
Editamos el código para la ejecución.
Página 9Fundamentos de la programación: Primeros pasos
Start;
Go North 1 Blocks;
Go East 3 Blocks;
Go North 5 Blocks;
Go West 2 Blocks;
Stop;
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go West 2 Blocks;
Stop;
HéctorLópezSánchez
La ejecución
Se realiza lo que pide
cada instrucción.
Página 10Fundamentos de la programación: Primeros pasos
B
N
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Errores lógicos:
El programa se ejecuta, pero no obtiene el resultado deseado.
Go North 5 Blocks;
Go West 2 Blocks;
Stop;
?
HéctorLópezSánchez
Depuración
Editamos el código para arreglar el error lógico.
Página 11Fundamentos de la programación: Primeros pasos
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go West 2 Blocks;
Stop;
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go East 2 Blocks;
Stop;
HéctorLópezSánchez
La ejecución
Se realiza lo que pide
cada instrucción.
Página 12Fundamentos de la programación: Primeros pasos
N
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go East 2 Blocks;
Stop;

¡Conseguido!
HéctorLópezSánchez
Muchas instrucciones
Instrucciones para...
 Mostrar textos en la pantalla
 Leer datos del usuario
 Realizar cálculos
 Tomar decisiones
 Repetir operaciones
 Etcétera...
Página 13Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Página 14Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Operadores aritméticos
En los programas podemos realizar operaciones aritméticas.
Para cada operación utilizamos un símbolo concreto:
+ Suma
- Resta
* Multiplicación
/ División
Los cuatro son operadores binarios:
operando_izquierdo operador operando_derecho
Por ejemplo:
3 + 4 Resultado: 7
2.56 – 3 Resultado: -0.44
143 * 2 Resultado: 286
45.45 / 3 Resultado: 15.15
Página 15Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Cómo escribir operandos numéricos
Las cantidades pueden ser:
 Enteras: sin parte decimal
 Reales: con parte decimal
Cantidades enteras (sin decimales):
Signo negativo (opcional) seguido de una secuencia de dígitos.
3 143 -12 67321 -1234
Cantidades reales (con decimales):
Signo negativo (opcional) seguido de una secuencia de dígitos,
un punto decimal y otra secuencia de dígitos.
3.1416 357.5 -1.333 2345.6789 -404.1
Página 16Fundamentos de la programación: Primeros pasos
Punto decimal (3.1415), NO coma decimal (3,1415)
Valores literales
No se usan puntos de millares
HéctorLópezSánchez
¿División entera o división real?
El operador división (/) hace una división entera
(despreciando los decimales) si ambos operandos son enteros
y hace una división real (con decimales) si alguno es real.
500 / 3 Resultado: 166
500.0 / 3 Resultado: 166.667
500 / 3.0 Resultado: 166.667
500.0 / 3.0 Resultado: 166.667
Hay que usar algún operando real siempre que se quiera que
la división sea una división real.
Página 17Fundamentos de la programación: Primeros pasos
Comprueba siempre si la división que se va a realizar es la que quieres.
HéctorLópezSánchez
Página 18Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Datos que se mantienen en memoria
Una variable es un dato que se accede por medio de un nombre.
Un valor literal es un valor concreto que se escribe tal cual.
Una variable puede cambiar de valor siempre que se quiera.
edad = 19; // edad es una variable y 19 es un literal
Las variables deben ser declaradas antes de poder utilizarlas.
Cuando se declaran se reserva espacio suficiente en memoria
para el dato que se quiere almacenar.
¿Qué tipo de dato queremos mantener?
 Un valor numérico sin decimales (entero): int
 Un valor numérico con decimales (real): double
Declaración: tipo nombre;
Página 19Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Declaración
Al declarar una variable establecemos el tipo de dato que puede
contener y el nombre que usaremos para acceder a ese dato.
Cantidad entero;
precio real;
Para cada variable se reserva espacio
suficiente en memoria para el tipo de valor.
Unos tipos de datos requieren más bytes que otros.
LAS VARIABLES NO SE INICIALIZAN
No se deben usar hasta que se les haya dado algún valor.
¿Dónde colocamos las declaraciones?
Siempre, antes del primer uso.
Normalmente, al principio de la función.
Página 20Fundamentos de la programación: Primeros pasos
Memoria
cantidad ?
precio ?
...
HéctorLópezSánchez
Capacidad de las variables
¿Qué valores podemos guardar en una variable int?
Cualquier entero entre -2.147.483.648 y 2.147.483.647.
Intervalo de valores del tipo int: -2147483648 .. 2147483647
¿Y en una variable double?
Números reales entre 2,23 x 10-308 y 1,79 x 10+308
y sus negativos -2,23 x 10-308 y -1,79 x 10+308
Intervalo de valores del tipo double:
+/- 2.23e-308 .. 1.79e+308
Con los números reales podemos experimentar
problemas de precisión.
Página 21Fundamentos de la programación: Primeros pasos
Notación científica en C++
HéctorLópezSánchez
Asignación de valores a las variables (operador =)
Instrucciones de asignación:
variable = expresión;
Se evalúa la expresión y se asigna el resultado a la variable:
cantidad = 12;
precio = 39.95;
total = cantidad * precio; // Toma el valor 479.4
Piensa en el = como en :
cantidad  12
La variable recibe el valor 12.
Ese valor se guarda en la memoria de la variable.
¡¡¡A la izquierda del = debe ir siempre una variable!!!
Página 22Fundamentos de la programación: Primeros pasos
Instrucción: termina en ;
HéctorLópezSánchez
Página 23Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Expresiones
Secuencias de operandos y operadores:
operando operador operando operador operando ...
Las expresiones se evalúan de izquierda a derecha.
Podemos usar paréntesis para forzar que se realicen unas
operaciones antes que otras:
total = cantidad * precio * 1.18; // +18% de IVA
total = (cantidad1 + cantidad2) * precio;
(Suponiendo que se han declarado las variables cantidad1 y
cantidad2.)
Con el nombre de una variable accedemos a su valor.
Unos operadores se evalúan antes que otros.
Página 24Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Precedencia de los operadores
cantidad1 = 10;
cantidad2 = 2;
precio = 40.0;
* y / tienen mayor precedencia que + y - (se evalúan antes).
total = cantidad1 + cantidad2 * precio;
Se evalúa antes * que +  10 + 2 * 40,0  10 + 80,0  90,0
Los paréntesis fuerzan a que se evalúe su contenido primero:
total = (cantidad1 + cantidad2) * precio;
Se evalúa antes + que *  (10 + 2) * 40,0  12 * 40,0  480,0
Hay que tener cuidado al escribir las expresiones,
de forma que el cálculo sea exactamente el que se requiere.
Página 25Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Página 26Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Problema
Dadas la base y la altura de un triángulo, calcular el área del triángulo.
El comportamiento deseado
Explicación detallada de lo que queremos que haga el programa:
Mostrar en la pantalla un texto que pida la base del triángulo. El usuario
introducirá el valor con el teclado. Mostrar en la pantalla un texto que pida la
altura del triángulo. El usuario introducirá el valor con el teclado. Se calculará el
área del triángulo y se mostrará en la pantalla.
Comenzaremos identificando los objetos que maneja el programa,
fijándonos en los sustantivos; nos indicarán los datos a manejar.
Luego nos fijaremos en las acciones (verbos);
nos indicarán las operaciones a realizar.
Página 27Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Datos que maneja el programa
Mostrar en la pantalla un texto que pida la base del triángulo. El usuario
introducirá la base con el teclado. Mostrar en la pantalla un texto que pida la
altura del triángulo. El usuario introducirá la altura con el teclado. Se calculará
el área del triángulo y se mostrará en la pantalla.
El usuario no es un dato que maneje el programa: es quien maneja
el programa. Por eso no lo tenemos en cuenta.
— pantalla: ya sabemos que se corresponde con cout.
— texto que pida la base del triángulo: una cadena de caracteres literal como
"Introduzca la base del triángulo: ".
— base: un número variable que debe recoger el valor introducido por el
usuario. Ha de indicarse cuál es su tipo: por ejemplo, double.
— teclado: ya sabemos que se corresponde con cin.
. . .
— área del triángulo: otro número variable que debe recoger el resultado.
Ha de indicarse cuál es su tipo: por ejemplo, double.
Página 28Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Datos que maneja el programa: tipos
Cada dato es de un determinado tipo, puede ser constante o variar, y si
varía ha de tener un nombre (estándar o elegido por nosotros):
Página 29Fundamentos de la programación: Primeros pasos
Objeto Tipo ¿Varía? Nombre
Pantalla Variable cout
"Introduzca la base del triángulo: " Constante ninguno
Base del triángulo Real Variable base
Teclado Variable cin
"Introduzca la altura del triángulo: " Constante ninguno
Altura del triángulo Real Variable altura
Área del triángulo Real Variable area
Se han obviado los tipos de los objetos del sistema y los literales.
Los valores literales son constantes, no se pueden cambiar.
Para que un dato pueda variar se necesita una variable con nombre.
HéctorLópezSánchez
Operaciones (acciones)
Mostrar en la pantalla un texto que pida la base del triángulo. El usuario
introducirá la base con el teclado. Mostrar en la pantalla un texto que
pida la altura del triángulo. El usuario introducirá la altura con el
teclado. Se calculará el área del triángulo y se mostrará en la pantalla.
Las operaciones se realizan por medio de operadores:
— mostrar en la pantalla:
— introducir por el teclado:
— calcular el área del triángulo: área = base por altura entre dos
area = base * altura / 2
Página 30Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Página 31Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Algoritmo
Secuencia de acciones que ha de realizar el programa
para conseguir resolver el problema:
1. Mostrar en la pantalla el texto que pida la base del triángulo.
2. Leer del teclado el valor para la base del triángulo.
3. Mostrar en la pantalla el texto que pida la altura del triángulo.
4. Leer del teclado el valor para la altura del triángulo.
5. Calcular el área del triángulo.
6. Mostrar el área del triángulo.
Página 32Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
El programa como transformador de entrada en salida
El estado inicial viene dado por los datos de entrada
y el estado final por los datos de salida:
Página 33Fundamentos de la programación: Primeros pasos
Programa
Datos
de entrada
Datos
de salida
Algoritmo
Estado
inicial
Estado
final
HéctorLópezSánchez
Página 34Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
El programa
...
int main()
{
return 0;
}
Página 35Fundamentos de la programación: Primeros pasos
1. Mostrar en la pantalla el texto que pida la base del triángulo.
2. Leer del teclado el valor para la base del triángulo.
3. Mostrar en la pantalla el texto que pida la altura del triángulo.
4. Leer del teclado el valor para la altura del triángulo.
5. Calcular el área del triángulo.
6. Mostrar el área del triángulo.
Algoritmo
traducido
a código
en C++
Declaraciones
HéctorLópezSánchez
Página 36Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Variabilidad de los datos
Página 37Fundamentos de la programación: Primeros pasos
Datos
Constantes
Literales
Con nombre
Variables
"Introduzca la base del triángulo: "
3.141592653589
base, altura, area
Pi = 3.141592653589
Identificadores
HéctorLópezSánchez
Página 38Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Identificadores Distintos de las palabras reservadas del lenguaje
Las variables y las constantes con nombre tienen un identificador
asociado que se usa para obtener su valor
(o para modificar su valor, en el caso de las variables).
— Un identificador es el nombre de un dato concreto.
— Se debe usar nombres descriptivos (autoexplicativos).
Sintaxis de los identificadores:
Página 39Fundamentos de la programación: Primeros pasos
Al menos
32 caracteres
significativos
(longitud mínima
para diferenciar
dos nombres).
¡No se admiten ni eñes ni vocales acentuadas!
0..9, a..z, A..Z, _
No pueden repetirse identificadores en un mismo ámbito (bloque).
a..z, A..Z, _
HéctorLópezSánchez
¿Qué identificadores son válidos y cuáles no?
balance interesAnual
_base_imponible años
EDAD12 salario_1_mes
__edad cálculoNómina
valor%100 AlgunValor
100caracteres valor?
_12_meses ____valor
Página 40Fundamentos de la programación: Primeros pasos




 






 
HéctorLópezSánchez
Página 41Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Tipos
Cada dato del programa es de un tipo concreto.
Cada tipo establece:
— El conjunto (intervalo) de valores válidos.
Las variables del tipo tomarán uno de esos valores cada vez.
— El conjunto de operaciones que se pueden realizar sobre los valores
del tipo. Los operadores que se pueden aplicar en las expresiones.
En las expresiones con datos de distintos tipos compatibles
se llevan a cabo transformaciones automáticas de tipos
(promoción de tipo).
Para consultar los detalles técnicos de los tipos de datos,
accede al Anexo de este Tema 2 que también se ha publicado.
Página 42Fundamentos de la programación: Primeros pasos
125
'a'
true
3.14159
"Hola"
HéctorLópezSánchez
Tipos de datos básicos
— entero: para números enteros (sin parte decimal).
1363, -12, 49
— flotante: para números reales (con parte –punto– decimal).
12.45, -3.1932, 1.16E+02
— real: para números reales; mayores intervalo y precisión.
(Usaremos habitualmente el tipo double para los números reales.)
— caracter: para caracteres.
'a' , '{', 't'
— lógico: para valores lógicos (verdadero/falso, sí/no).
verdadero, falso
— cadena: para cadenas de caracteres.
"Hola Mundo!"
(Requiere incluir la biblioteca string con espacio de nombres std.)
— anular: nada, ausencia de tipo, ausencia de dato (funciones).
Página 43Fundamentos de la programación: Primeros pasos


HéctorLópezSánchez
caracter Caracteres
Intervalo de valores: Juego de caracteres (ASCII)
Literales:
'a', '%', 't'
Constantes de barra invertida (o secuencias de escape):
Caracteres de control.
't' = tabulador, 'n' = salto de línea, …
Juego de caracteres:
Página 44Fundamentos de la programación: Primeros pasos
ASCII (códigos 32..127)
ISO-8859-1
(ASCII extendido: códigos 128..255)
1 byte
HéctorLópezSánchez
Lógico Valores lógicos
Sólo dos valores posibles:
— Verdadero (true)
— Falso (false)
Literales:
true, false
En realidad, cualquier número distinto de 0 es equivalente a true
y el número 0 es equivalente a false.
Página 45Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
cadena Cadenas de caracteres
"Hola", "Introduce el numerador: ", "X142FG5TX?%A"
Son secuencias de caracteres.
Se asigna la memoria que se necesita para la secuencia concreta.
Requieren incluir la biblioteca string con el espacio de nombres std:
#include <string>
using namespace std;
Página 46Fundamentos de la programación: Primeros pasos
char" "
¡Ojo!
Las comillas tipográficas (apertura/cierre) “…” te darán problemas
al compilar. Asegúrate de utilizar comillas rectas: "…"
HéctorLópezSánchez
Página 47Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Operaciones sobre valores de los tipos
Las operaciones que se pueden realizar sobre valores de
un determinado tipo vienen dadas por los operadores definidos
para ese tipo de datos.
Tipos de datos numéricos (int, float y double, con sus variantes):
— Asignación
— Operadores aritméticos
— Operadores relacionales
Tipo de datos bool:
— Asignación
— Operadores lógicos
Tipo de datos char:
— Asignación, ++/--
— Operadores relacionales
Página 48Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Operadores para tipos de datos numéricos
Página 49Fundamentos de la programación: Primeros pasos
Operador Operandos Posición int float / double
- 1 (monario) Prefijo Cambio de signo
+ 2 (binario) Infijo Suma
- 2 (binario) Infijo Resta
* 2 (binario) Infijo Producto
/ 2 (binario) Infijo División entera División real
% 2 (binario) Infijo Módulo No aplicable
++ 1 (monario) Prefijo / postfijo Incremento
-- 1 (monario) Prefijo / postfijo Decremento
Operadores binarios: Operando_izquierdo Operador Operando_derecho
Operadores monarios:
Prefijo: Operador Operando
Postfijo: Operando Operador
a + b
-a --a ++a
a-- a++
HéctorLópezSánchez
Operadores monarios y operadores binarios
Operadores monarios (o unarios)
— El cambio de signo se puede aplicar a una variable, una constante
o una expresión entre paréntesis (en seguida hablamos de expresiones):
-saldo -RATIO -(3 * a – b)
— Los operadores de incremento y decremento sólo se aplican a variables:
++interes --meses j++
Operadores binarios
— Un operador binario se aplica entre un operando izquierdo y un operando
derecho. Los operandos pueden ser literales, constantes, variables o
expresiones:
2 + 3 a * RATIO -a + b 3 * a++
(a % b) * (c / d)
Página 50Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
¿División entera o división real?
Si ambos operandos son enteros, / hace un división entera:
int i = 23, j = 2;
cout << i / j; // Muestra 11
Si alguno de los operandos es real, / hace una división real:
int i = 23;
double j = 2;
cout << i / j; // Muestra 11.5
Página 51Fundamentos de la programación: Primeros pasos
/
HéctorLópezSánchez
Módulo (resto de la división entera)
Ambos operandos han de ser enteros:
int i = 23, j = 2;
cout << i % j; // Muestra 1
División entera:
No se obtienen decimales  Queda un resto
Página 52Fundamentos de la programación: Primeros pasos
%
123 5
243
123 % 5
HéctorLópezSánchez
Página 53Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Evaluación de expresiones
¿Cómo evaluamos una expresión como 3 + 5 * 2 / 2 – 1 ?
¿En qué orden se aplican los distintos operadores?
¿De izquierda a derecha?
¿De derecha a izquierda?
¿Unos operadores antes que otros?
Resolución de ambigüedades:
— Precedencia de los operadores (prioridad):
Unos operadores se han de evaluar antes que otros (mayor precedencia).
— Asociatividad de los operadores (orden a igual prioridad):
Los operadores de igual prioridad se evalúan de izquierda a derecha
o de derecha a izquierda de acuerdo con su asociatividad.
Paréntesis: rompen la precedencia y asociatividad
Siempre se evalúan en primer lugar las subexpresiones parentizadas.
Página 54Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Precedencia y asociatividad de los operadores
Página 55Fundamentos de la programación: Primeros pasos
Precedencia Operadores Asociatividad
Mayor prioridad ++ -- (postfijos) Izquierda a derecha
++ -- (prefijos) Derecha a izquierda
- (cambio de signo)
* / % Izquierda a derecha
Menor prioridad + - Izquierda a derecha
3 + 5 * 2 / 2 – 1
Misma precedencia:
Izquierda antes.
Misma precedencia:
Izquierda antes.
Mayor
precedencia
 3 + 10 / 2 – 1  3 + 5 – 1  8 – 1  7
HéctorLópezSánchez
Evaluación de expresiones
Suponiendo que la variable entera a
contiene en este momento el valor 3…
(3 + 5) * a++ + 12 / a++ – (a * 2)
Página 56Fundamentos de la programación: Primeros pasos
Programación con buen estilo:
Evita usar los operadores ++
y -- en expresiones compuestas.
8 * a++ + 12 / a++ – (3 * 2)
8 * a++ + 12 / a++ – 6
8 * 3 + 12 / 3 – 6 a pasa a valer 5
24 + 4 – 6
28 – 6
22
Primero, los paréntesis...
Ahora, los ++ (mayor prioridad)
HéctorLópezSánchez
Abreviaturas aritméticas
Cuando una expresión tiene la forma:
variable = variable operador op_derecho;
Se puede abreviar como: variable operador= op_derecho;
Ejemplos:
a = a + 12; a += 12;
a = a * 3; a *= 3;
a = a - 5; a -= 5;
a = a / 37; a /= 37;
a = a % b; a %= b;
Página 57Fundamentos de la programación: Primeros pasos
Operadores (prioridad) Asociatividad
++ -- (postfijos)
Llamadas a funciones
Izda. a dcha.
++ -- (prefijos) Dcha. a izda.
- (cambio de signo)
* / % Izda. a dcha.
+ - Izda. a dcha.
= += -= *= /= %= Dcha. a izda.
Igual precedencia que la asignación.
La misma
HéctorLópezSánchez
Espaciado y paréntesis
 Se deben usar espacios en el código para facilitar la legibilidad.
f = 3*x*x/5+6*x/7-3;
f = 3 * x * x / 5 + 6 * x / 7 - 3;
Un espacio antes y después de cada operador binario.
 Se pueden usar paréntesis, aunque resulten redundantes,
para dejar patentes las prioridades de las operaciones.
f = (3 * x * x) / 5 + (6 * x) / 7 - 3;
O si no se está seguro de la precedencia.
Los paréntesis no afectan a la velocidad del programa.
Página 58Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Página 59Fundamentos de la programación: Primeros pasos
HéctorLópezSánchez
Operadores relacionales
Permiten hacer comparaciones (condiciones):
Condición ::= Expresión Operador_relacional Expresión
Las expresiones deben arrojar resultados del mismo tipo (comparables).
El resultado es de tipo bool (true o false).
Página 60Fundamentos de la programación: Primeros pasos
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
== igual que
!= distinto de
Operadores (prioridad) Asociatividad
++ -- (postfijos)
Llamadas a funciones
Izda. a dcha.
++ -- (prefijos) Dcha. a izda.
- (cambio de signo)
* / % Izda. a dcha.
+ - Izda. a dcha.
< <= > >= Izda. a dcha.
== != Izda. a dcha.
= += -= *= /= %= Dcha. a izda.
HéctorLópezSánchez
Operadores relacionales
bool resultado;
int a = 2, b = 3, c = 4;
resultado = a < 5; // 2 < 5  true
resultado = a * b + c >= 12; // 10 >= 12  false
resultado = a * (b + c) >= 12; // 14 >= 12  true
resultado = a != b; // 2 != 3  true
resultado = a * b > c + 5; // 6 > 9  false
resultado = a + b == c + 1; // 5 == 5  true
Los operadores aditivos y multiplicativos tienen mayor prioridad.
Página 61Fundamentos de la programación: Primeros pasos
Error común de programación:
Confundir el operador de igualdad (==) con el operador de asignación (=).

Más contenido relacionado

La actualidad más candente

Fundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveFundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octave
Gabriel Romero
 

La actualidad más candente (20)

El lenguaje c
El lenguaje cEl lenguaje c
El lenguaje c
 
Funciones y procedimientos_propios_lpp
Funciones y procedimientos_propios_lppFunciones y procedimientos_propios_lpp
Funciones y procedimientos_propios_lpp
 
Lenguaje C_Curso Secap
Lenguaje C_Curso SecapLenguaje C_Curso Secap
Lenguaje C_Curso Secap
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
1.2.3.- Pseudocódigo
1.2.3.- Pseudocódigo1.2.3.- Pseudocódigo
1.2.3.- Pseudocódigo
 
Fundamentos de Lenguaje C
Fundamentos de Lenguaje CFundamentos de Lenguaje C
Fundamentos de Lenguaje C
 
Fundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveFundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octave
 
Tutorial sencillo manejo de pseint y free dfd
Tutorial sencillo manejo de pseint y free dfdTutorial sencillo manejo de pseint y free dfd
Tutorial sencillo manejo de pseint y free dfd
 
Clase1 algoritmos
Clase1 algoritmosClase1 algoritmos
Clase1 algoritmos
 
Clase no 01_definiciones_basicas
Clase no 01_definiciones_basicasClase no 01_definiciones_basicas
Clase no 01_definiciones_basicas
 
Programa 2
Programa 2Programa 2
Programa 2
 
Escuela
EscuelaEscuela
Escuela
 
Programación 1: cadenas en C
Programación 1: cadenas en CProgramación 1: cadenas en C
Programación 1: cadenas en C
 
PseInt
PseIntPseInt
PseInt
 
Programación 1: funciones en C
Programación 1: funciones en CProgramación 1: funciones en C
Programación 1: funciones en C
 
Manual lpp
Manual lppManual lpp
Manual lpp
 
Programación 1: introducción a C
Programación 1: introducción a CProgramación 1: introducción a C
Programación 1: introducción a C
 
Codeblocks ejercicios básicos
Codeblocks ejercicios básicos Codeblocks ejercicios básicos
Codeblocks ejercicios básicos
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 

Destacado

Universidades asia
Universidades asiaUniversidades asia
Universidades asia
ramon1369
 
Programacion visual
Programacion visualProgramacion visual
Programacion visual
shoper_93
 
Didáctica de la informática
Didáctica de la informáticaDidáctica de la informática
Didáctica de la informática
Dary Paredes
 
Mapa fisico mundial
Mapa fisico mundialMapa fisico mundial
Mapa fisico mundial
Yago
 
Proyecto 3
Proyecto  3Proyecto  3
Proyecto 3
dleon92
 
Mapa mental fuerza de trabajo (evolucion)
Mapa mental fuerza de trabajo (evolucion)Mapa mental fuerza de trabajo (evolucion)
Mapa mental fuerza de trabajo (evolucion)
lucialf
 
Trabajo de tic’s
Trabajo de tic’sTrabajo de tic’s
Trabajo de tic’s
Andy Steban
 
Tractament i reutelització d’aïgues residuals1
Tractament i reutelització d’aïgues residuals1Tractament i reutelització d’aïgues residuals1
Tractament i reutelització d’aïgues residuals1
jihanelhanouti
 

Destacado (20)

El tejido conjuntivo
El tejido conjuntivoEl tejido conjuntivo
El tejido conjuntivo
 
Universidades asia
Universidades asiaUniversidades asia
Universidades asia
 
Organizacion interpersonal
Organizacion interpersonalOrganizacion interpersonal
Organizacion interpersonal
 
Programacion visual
Programacion visualProgramacion visual
Programacion visual
 
Didáctica de la informática
Didáctica de la informáticaDidáctica de la informática
Didáctica de la informática
 
Mapa fisico mundial
Mapa fisico mundialMapa fisico mundial
Mapa fisico mundial
 
Proyecto 3
Proyecto  3Proyecto  3
Proyecto 3
 
Viveza Criolla
Viveza CriollaViveza Criolla
Viveza Criolla
 
Pregunta1
Pregunta1Pregunta1
Pregunta1
 
Mapa mental fuerza de trabajo (evolucion)
Mapa mental fuerza de trabajo (evolucion)Mapa mental fuerza de trabajo (evolucion)
Mapa mental fuerza de trabajo (evolucion)
 
Mapa conceptual proyectos7
Mapa conceptual proyectos7Mapa conceptual proyectos7
Mapa conceptual proyectos7
 
Dictamen del Proyecto de Ley 1923/2012-PE que propone la Ley que establece la...
Dictamen del Proyecto de Ley 1923/2012-PE que propone la Ley que establece la...Dictamen del Proyecto de Ley 1923/2012-PE que propone la Ley que establece la...
Dictamen del Proyecto de Ley 1923/2012-PE que propone la Ley que establece la...
 
Trabajo de tic’s
Trabajo de tic’sTrabajo de tic’s
Trabajo de tic’s
 
Tractament i reutelització d’aïgues residuals1
Tractament i reutelització d’aïgues residuals1Tractament i reutelització d’aïgues residuals1
Tractament i reutelització d’aïgues residuals1
 
Practica 5
Practica 5Practica 5
Practica 5
 
Presentacion 1
Presentacion 1Presentacion 1
Presentacion 1
 
Guia 4 ambientes
Guia 4 ambientesGuia 4 ambientes
Guia 4 ambientes
 
programación de 4º de eso
programación de 4º de esoprogramación de 4º de eso
programación de 4º de eso
 
Planeación unidad 1
Planeación unidad 1Planeación unidad 1
Planeación unidad 1
 
Variables de scratch
Variables de scratchVariables de scratch
Variables de scratch
 

Similar a Fp02

Programación modular estructurada.ppt
Programación modular estructurada.pptProgramación modular estructurada.ppt
Programación modular estructurada.ppt
Leydi Hernandez
 

Similar a Fp02 (20)

Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Manual p se int
Manual p se intManual p se int
Manual p se int
 
Manual p se int
Manual p se intManual p se int
Manual p se int
 
Manual p se int (1)
Manual p se int (1)Manual p se int (1)
Manual p se int (1)
 
Trabajo tecnologia estructuras basicas
Trabajo tecnologia estructuras basicasTrabajo tecnologia estructuras basicas
Trabajo tecnologia estructuras basicas
 
Trabajo tecnologia estructuras basicas
Trabajo tecnologia estructuras basicasTrabajo tecnologia estructuras basicas
Trabajo tecnologia estructuras basicas
 
Representación de Algoritmos
Representación de AlgoritmosRepresentación de Algoritmos
Representación de Algoritmos
 
PSeInt.
PSeInt.PSeInt.
PSeInt.
 
Tecnología Periodo 2.pdf
Tecnología Periodo 2.pdfTecnología Periodo 2.pdf
Tecnología Periodo 2.pdf
 
Tarea 6
Tarea 6Tarea 6
Tarea 6
 
Video Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaVideo Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia Abierta
 
Algoritmos y programas ing civil
Algoritmos y programas ing civil Algoritmos y programas ing civil
Algoritmos y programas ing civil
 
cumputacion especifica para los amantes de lo actual
cumputacion especifica para los amantes de lo actualcumputacion especifica para los amantes de lo actual
cumputacion especifica para los amantes de lo actual
 
Programacion c
Programacion cProgramacion c
Programacion c
 
Programación modular estructurada.ppt
Programación modular estructurada.pptProgramación modular estructurada.ppt
Programación modular estructurada.ppt
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
Estructuras basicas tecnologia
Estructuras basicas  tecnologiaEstructuras basicas  tecnologia
Estructuras basicas tecnologia
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
 

Fp02

  • 1. 2 Fundamentos de la programación Instituto de Educación Superior Pedagógico Público “Gamaniel Blanco Murillo” Computación e Informática Lenguaje de Programación I
  • 2. HéctorLópezSánchez Programar Actividad de escribir y probar programas. Programa Código que indica a la computadora exactamente lo que tiene que hacer: secuencia de instrucciones. La computadora sólo entiende un conjunto de instrucciones. Lenguaje de programación Describe cómo es el conjunto de instrucciones que se pueden usar en los programas. Reglas sintácticas que el código debe respetar. Página 1Fundamentos de la programación: Primeros pasos
  • 3. HéctorLópezSánchez Página 2Fundamentos de la programación: Primeros pasos
  • 4. HéctorLópezSánchez Una computadora de un coche Coche que acepta programas que le indiquen cómo llegar. Instrucciones que entiende: <instrucción> ::= <inst> ; <inst> ::= Start | Stop | <avanzar> <avanzar> ::= Go <dirección> <num> Blocks <dirección> ::= North | East | South | West <num> ::= 1 | 2 | 3 | 4 | 5 Ejemplos: Start; Go North 3 Blocks; Stop; Página 3Fundamentos de la programación: Primeros pasos
  • 5. HéctorLópezSánchez El problema a resolver Estando el coche en la posición A, conseguir llegar al Cine Tívoli (B). ¿Cuáles son los pasos que hay que seguir para llegar al destino? Arrancar Ir un bloque al Norte Ir dos bloques al Este Ir cinco bloques al Norte Ir dos bloques al Este Parar Página 4Fundamentos de la programación: Primeros pasos B A N Bloque:
  • 6. HéctorLópezSánchez El algoritmo Secuencia de pasos que hay que seguir para resolver el problema. Página 5Fundamentos de la programación: Primeros pasos 1.- Arrancar N 2.- Ir un bloque al Norte 3.- Ir dos bloques al Este 4.- Ir cinco bloques al Norte 5.- Ir dos bloques al Este 6.- Parar Esos pasos sirven tanto para una persona como para una computadora. 
  • 7. HéctorLópezSánchez El programa Para cada paso, una instrucción. Escrita en el lenguaje de programación. Start; Go North 1 Blocks; Go East 2 Blocks; Go North 5 Blocks; Go East 2 Blocks; Stop; Página 6Fundamentos de la programación: Primeros pasos B A N
  • 8. HéctorLópezSánchez El programa Escribimos el código del programa en un editor y lo guardamos en un documento programa.prg. Página 7Fundamentos de la programación: Primeros pasos Stat; Go North 1 Blocks Go East Blocks; Go Noth 5 Blocks; Go West 2 Blocks; Stop; Copiamos el archivo en una llave USB y lo llevamos al coche.
  • 9. HéctorLópezSánchez La compilación Introducimos la llave USB en el coche y pulsamos el botón de ejecutar el programa en programa.prg. Se compila el programa (comprobación sintáctica): Página 8Fundamentos de la programación: Primeros pasos Stat; ----^ Unknown word. Go North 1 Blocks -----------------^ ; missing. Go East Blocks; --------^ Number missing. Go Noth 5 Blocks; -------^ Unknown word. Go West 2 Blocks; Stop; There are errors. Impossible to run the program. Errores de sintaxis
  • 10. HéctorLópezSánchez Depuración Editamos el código para la ejecución. Página 9Fundamentos de la programación: Primeros pasos Start; Go North 1 Blocks; Go East 3 Blocks; Go North 5 Blocks; Go West 2 Blocks; Stop; Start; Go North 1 Blocks; Go East 2 Blocks; Go North 5 Blocks; Go West 2 Blocks; Stop;
  • 11. HéctorLópezSánchez La ejecución Se realiza lo que pide cada instrucción. Página 10Fundamentos de la programación: Primeros pasos B N Start; Go North 1 Blocks; Go East 2 Blocks; Errores lógicos: El programa se ejecuta, pero no obtiene el resultado deseado. Go North 5 Blocks; Go West 2 Blocks; Stop; ?
  • 12. HéctorLópezSánchez Depuración Editamos el código para arreglar el error lógico. Página 11Fundamentos de la programación: Primeros pasos Start; Go North 1 Blocks; Go East 2 Blocks; Go North 5 Blocks; Go West 2 Blocks; Stop; Start; Go North 1 Blocks; Go East 2 Blocks; Go North 5 Blocks; Go East 2 Blocks; Stop;
  • 13. HéctorLópezSánchez La ejecución Se realiza lo que pide cada instrucción. Página 12Fundamentos de la programación: Primeros pasos N Start; Go North 1 Blocks; Go East 2 Blocks; Go North 5 Blocks; Go East 2 Blocks; Stop;  ¡Conseguido!
  • 14. HéctorLópezSánchez Muchas instrucciones Instrucciones para...  Mostrar textos en la pantalla  Leer datos del usuario  Realizar cálculos  Tomar decisiones  Repetir operaciones  Etcétera... Página 13Fundamentos de la programación: Primeros pasos
  • 15. HéctorLópezSánchez Página 14Fundamentos de la programación: Primeros pasos
  • 16. HéctorLópezSánchez Operadores aritméticos En los programas podemos realizar operaciones aritméticas. Para cada operación utilizamos un símbolo concreto: + Suma - Resta * Multiplicación / División Los cuatro son operadores binarios: operando_izquierdo operador operando_derecho Por ejemplo: 3 + 4 Resultado: 7 2.56 – 3 Resultado: -0.44 143 * 2 Resultado: 286 45.45 / 3 Resultado: 15.15 Página 15Fundamentos de la programación: Primeros pasos
  • 17. HéctorLópezSánchez Cómo escribir operandos numéricos Las cantidades pueden ser:  Enteras: sin parte decimal  Reales: con parte decimal Cantidades enteras (sin decimales): Signo negativo (opcional) seguido de una secuencia de dígitos. 3 143 -12 67321 -1234 Cantidades reales (con decimales): Signo negativo (opcional) seguido de una secuencia de dígitos, un punto decimal y otra secuencia de dígitos. 3.1416 357.5 -1.333 2345.6789 -404.1 Página 16Fundamentos de la programación: Primeros pasos Punto decimal (3.1415), NO coma decimal (3,1415) Valores literales No se usan puntos de millares
  • 18. HéctorLópezSánchez ¿División entera o división real? El operador división (/) hace una división entera (despreciando los decimales) si ambos operandos son enteros y hace una división real (con decimales) si alguno es real. 500 / 3 Resultado: 166 500.0 / 3 Resultado: 166.667 500 / 3.0 Resultado: 166.667 500.0 / 3.0 Resultado: 166.667 Hay que usar algún operando real siempre que se quiera que la división sea una división real. Página 17Fundamentos de la programación: Primeros pasos Comprueba siempre si la división que se va a realizar es la que quieres.
  • 19. HéctorLópezSánchez Página 18Fundamentos de la programación: Primeros pasos
  • 20. HéctorLópezSánchez Datos que se mantienen en memoria Una variable es un dato que se accede por medio de un nombre. Un valor literal es un valor concreto que se escribe tal cual. Una variable puede cambiar de valor siempre que se quiera. edad = 19; // edad es una variable y 19 es un literal Las variables deben ser declaradas antes de poder utilizarlas. Cuando se declaran se reserva espacio suficiente en memoria para el dato que se quiere almacenar. ¿Qué tipo de dato queremos mantener?  Un valor numérico sin decimales (entero): int  Un valor numérico con decimales (real): double Declaración: tipo nombre; Página 19Fundamentos de la programación: Primeros pasos
  • 21. HéctorLópezSánchez Declaración Al declarar una variable establecemos el tipo de dato que puede contener y el nombre que usaremos para acceder a ese dato. Cantidad entero; precio real; Para cada variable se reserva espacio suficiente en memoria para el tipo de valor. Unos tipos de datos requieren más bytes que otros. LAS VARIABLES NO SE INICIALIZAN No se deben usar hasta que se les haya dado algún valor. ¿Dónde colocamos las declaraciones? Siempre, antes del primer uso. Normalmente, al principio de la función. Página 20Fundamentos de la programación: Primeros pasos Memoria cantidad ? precio ? ...
  • 22. HéctorLópezSánchez Capacidad de las variables ¿Qué valores podemos guardar en una variable int? Cualquier entero entre -2.147.483.648 y 2.147.483.647. Intervalo de valores del tipo int: -2147483648 .. 2147483647 ¿Y en una variable double? Números reales entre 2,23 x 10-308 y 1,79 x 10+308 y sus negativos -2,23 x 10-308 y -1,79 x 10+308 Intervalo de valores del tipo double: +/- 2.23e-308 .. 1.79e+308 Con los números reales podemos experimentar problemas de precisión. Página 21Fundamentos de la programación: Primeros pasos Notación científica en C++
  • 23. HéctorLópezSánchez Asignación de valores a las variables (operador =) Instrucciones de asignación: variable = expresión; Se evalúa la expresión y se asigna el resultado a la variable: cantidad = 12; precio = 39.95; total = cantidad * precio; // Toma el valor 479.4 Piensa en el = como en : cantidad  12 La variable recibe el valor 12. Ese valor se guarda en la memoria de la variable. ¡¡¡A la izquierda del = debe ir siempre una variable!!! Página 22Fundamentos de la programación: Primeros pasos Instrucción: termina en ;
  • 24. HéctorLópezSánchez Página 23Fundamentos de la programación: Primeros pasos
  • 25. HéctorLópezSánchez Expresiones Secuencias de operandos y operadores: operando operador operando operador operando ... Las expresiones se evalúan de izquierda a derecha. Podemos usar paréntesis para forzar que se realicen unas operaciones antes que otras: total = cantidad * precio * 1.18; // +18% de IVA total = (cantidad1 + cantidad2) * precio; (Suponiendo que se han declarado las variables cantidad1 y cantidad2.) Con el nombre de una variable accedemos a su valor. Unos operadores se evalúan antes que otros. Página 24Fundamentos de la programación: Primeros pasos
  • 26. HéctorLópezSánchez Precedencia de los operadores cantidad1 = 10; cantidad2 = 2; precio = 40.0; * y / tienen mayor precedencia que + y - (se evalúan antes). total = cantidad1 + cantidad2 * precio; Se evalúa antes * que +  10 + 2 * 40,0  10 + 80,0  90,0 Los paréntesis fuerzan a que se evalúe su contenido primero: total = (cantidad1 + cantidad2) * precio; Se evalúa antes + que *  (10 + 2) * 40,0  12 * 40,0  480,0 Hay que tener cuidado al escribir las expresiones, de forma que el cálculo sea exactamente el que se requiere. Página 25Fundamentos de la programación: Primeros pasos
  • 27. HéctorLópezSánchez Página 26Fundamentos de la programación: Primeros pasos
  • 28. HéctorLópezSánchez Problema Dadas la base y la altura de un triángulo, calcular el área del triángulo. El comportamiento deseado Explicación detallada de lo que queremos que haga el programa: Mostrar en la pantalla un texto que pida la base del triángulo. El usuario introducirá el valor con el teclado. Mostrar en la pantalla un texto que pida la altura del triángulo. El usuario introducirá el valor con el teclado. Se calculará el área del triángulo y se mostrará en la pantalla. Comenzaremos identificando los objetos que maneja el programa, fijándonos en los sustantivos; nos indicarán los datos a manejar. Luego nos fijaremos en las acciones (verbos); nos indicarán las operaciones a realizar. Página 27Fundamentos de la programación: Primeros pasos
  • 29. HéctorLópezSánchez Datos que maneja el programa Mostrar en la pantalla un texto que pida la base del triángulo. El usuario introducirá la base con el teclado. Mostrar en la pantalla un texto que pida la altura del triángulo. El usuario introducirá la altura con el teclado. Se calculará el área del triángulo y se mostrará en la pantalla. El usuario no es un dato que maneje el programa: es quien maneja el programa. Por eso no lo tenemos en cuenta. — pantalla: ya sabemos que se corresponde con cout. — texto que pida la base del triángulo: una cadena de caracteres literal como "Introduzca la base del triángulo: ". — base: un número variable que debe recoger el valor introducido por el usuario. Ha de indicarse cuál es su tipo: por ejemplo, double. — teclado: ya sabemos que se corresponde con cin. . . . — área del triángulo: otro número variable que debe recoger el resultado. Ha de indicarse cuál es su tipo: por ejemplo, double. Página 28Fundamentos de la programación: Primeros pasos
  • 30. HéctorLópezSánchez Datos que maneja el programa: tipos Cada dato es de un determinado tipo, puede ser constante o variar, y si varía ha de tener un nombre (estándar o elegido por nosotros): Página 29Fundamentos de la programación: Primeros pasos Objeto Tipo ¿Varía? Nombre Pantalla Variable cout "Introduzca la base del triángulo: " Constante ninguno Base del triángulo Real Variable base Teclado Variable cin "Introduzca la altura del triángulo: " Constante ninguno Altura del triángulo Real Variable altura Área del triángulo Real Variable area Se han obviado los tipos de los objetos del sistema y los literales. Los valores literales son constantes, no se pueden cambiar. Para que un dato pueda variar se necesita una variable con nombre.
  • 31. HéctorLópezSánchez Operaciones (acciones) Mostrar en la pantalla un texto que pida la base del triángulo. El usuario introducirá la base con el teclado. Mostrar en la pantalla un texto que pida la altura del triángulo. El usuario introducirá la altura con el teclado. Se calculará el área del triángulo y se mostrará en la pantalla. Las operaciones se realizan por medio de operadores: — mostrar en la pantalla: — introducir por el teclado: — calcular el área del triángulo: área = base por altura entre dos area = base * altura / 2 Página 30Fundamentos de la programación: Primeros pasos
  • 32. HéctorLópezSánchez Página 31Fundamentos de la programación: Primeros pasos
  • 33. HéctorLópezSánchez Algoritmo Secuencia de acciones que ha de realizar el programa para conseguir resolver el problema: 1. Mostrar en la pantalla el texto que pida la base del triángulo. 2. Leer del teclado el valor para la base del triángulo. 3. Mostrar en la pantalla el texto que pida la altura del triángulo. 4. Leer del teclado el valor para la altura del triángulo. 5. Calcular el área del triángulo. 6. Mostrar el área del triángulo. Página 32Fundamentos de la programación: Primeros pasos
  • 34. HéctorLópezSánchez El programa como transformador de entrada en salida El estado inicial viene dado por los datos de entrada y el estado final por los datos de salida: Página 33Fundamentos de la programación: Primeros pasos Programa Datos de entrada Datos de salida Algoritmo Estado inicial Estado final
  • 35. HéctorLópezSánchez Página 34Fundamentos de la programación: Primeros pasos
  • 36. HéctorLópezSánchez El programa ... int main() { return 0; } Página 35Fundamentos de la programación: Primeros pasos 1. Mostrar en la pantalla el texto que pida la base del triángulo. 2. Leer del teclado el valor para la base del triángulo. 3. Mostrar en la pantalla el texto que pida la altura del triángulo. 4. Leer del teclado el valor para la altura del triángulo. 5. Calcular el área del triángulo. 6. Mostrar el área del triángulo. Algoritmo traducido a código en C++ Declaraciones
  • 37. HéctorLópezSánchez Página 36Fundamentos de la programación: Primeros pasos
  • 38. HéctorLópezSánchez Variabilidad de los datos Página 37Fundamentos de la programación: Primeros pasos Datos Constantes Literales Con nombre Variables "Introduzca la base del triángulo: " 3.141592653589 base, altura, area Pi = 3.141592653589 Identificadores
  • 39. HéctorLópezSánchez Página 38Fundamentos de la programación: Primeros pasos
  • 40. HéctorLópezSánchez Identificadores Distintos de las palabras reservadas del lenguaje Las variables y las constantes con nombre tienen un identificador asociado que se usa para obtener su valor (o para modificar su valor, en el caso de las variables). — Un identificador es el nombre de un dato concreto. — Se debe usar nombres descriptivos (autoexplicativos). Sintaxis de los identificadores: Página 39Fundamentos de la programación: Primeros pasos Al menos 32 caracteres significativos (longitud mínima para diferenciar dos nombres). ¡No se admiten ni eñes ni vocales acentuadas! 0..9, a..z, A..Z, _ No pueden repetirse identificadores en un mismo ámbito (bloque). a..z, A..Z, _
  • 41. HéctorLópezSánchez ¿Qué identificadores son válidos y cuáles no? balance interesAnual _base_imponible años EDAD12 salario_1_mes __edad cálculoNómina valor%100 AlgunValor 100caracteres valor? _12_meses ____valor Página 40Fundamentos de la programación: Primeros pasos              
  • 42. HéctorLópezSánchez Página 41Fundamentos de la programación: Primeros pasos
  • 43. HéctorLópezSánchez Tipos Cada dato del programa es de un tipo concreto. Cada tipo establece: — El conjunto (intervalo) de valores válidos. Las variables del tipo tomarán uno de esos valores cada vez. — El conjunto de operaciones que se pueden realizar sobre los valores del tipo. Los operadores que se pueden aplicar en las expresiones. En las expresiones con datos de distintos tipos compatibles se llevan a cabo transformaciones automáticas de tipos (promoción de tipo). Para consultar los detalles técnicos de los tipos de datos, accede al Anexo de este Tema 2 que también se ha publicado. Página 42Fundamentos de la programación: Primeros pasos 125 'a' true 3.14159 "Hola"
  • 44. HéctorLópezSánchez Tipos de datos básicos — entero: para números enteros (sin parte decimal). 1363, -12, 49 — flotante: para números reales (con parte –punto– decimal). 12.45, -3.1932, 1.16E+02 — real: para números reales; mayores intervalo y precisión. (Usaremos habitualmente el tipo double para los números reales.) — caracter: para caracteres. 'a' , '{', 't' — lógico: para valores lógicos (verdadero/falso, sí/no). verdadero, falso — cadena: para cadenas de caracteres. "Hola Mundo!" (Requiere incluir la biblioteca string con espacio de nombres std.) — anular: nada, ausencia de tipo, ausencia de dato (funciones). Página 43Fundamentos de la programación: Primeros pasos  
  • 45. HéctorLópezSánchez caracter Caracteres Intervalo de valores: Juego de caracteres (ASCII) Literales: 'a', '%', 't' Constantes de barra invertida (o secuencias de escape): Caracteres de control. 't' = tabulador, 'n' = salto de línea, … Juego de caracteres: Página 44Fundamentos de la programación: Primeros pasos ASCII (códigos 32..127) ISO-8859-1 (ASCII extendido: códigos 128..255) 1 byte
  • 46. HéctorLópezSánchez Lógico Valores lógicos Sólo dos valores posibles: — Verdadero (true) — Falso (false) Literales: true, false En realidad, cualquier número distinto de 0 es equivalente a true y el número 0 es equivalente a false. Página 45Fundamentos de la programación: Primeros pasos
  • 47. HéctorLópezSánchez cadena Cadenas de caracteres "Hola", "Introduce el numerador: ", "X142FG5TX?%A" Son secuencias de caracteres. Se asigna la memoria que se necesita para la secuencia concreta. Requieren incluir la biblioteca string con el espacio de nombres std: #include <string> using namespace std; Página 46Fundamentos de la programación: Primeros pasos char" " ¡Ojo! Las comillas tipográficas (apertura/cierre) “…” te darán problemas al compilar. Asegúrate de utilizar comillas rectas: "…"
  • 48. HéctorLópezSánchez Página 47Fundamentos de la programación: Primeros pasos
  • 49. HéctorLópezSánchez Operaciones sobre valores de los tipos Las operaciones que se pueden realizar sobre valores de un determinado tipo vienen dadas por los operadores definidos para ese tipo de datos. Tipos de datos numéricos (int, float y double, con sus variantes): — Asignación — Operadores aritméticos — Operadores relacionales Tipo de datos bool: — Asignación — Operadores lógicos Tipo de datos char: — Asignación, ++/-- — Operadores relacionales Página 48Fundamentos de la programación: Primeros pasos
  • 50. HéctorLópezSánchez Operadores para tipos de datos numéricos Página 49Fundamentos de la programación: Primeros pasos Operador Operandos Posición int float / double - 1 (monario) Prefijo Cambio de signo + 2 (binario) Infijo Suma - 2 (binario) Infijo Resta * 2 (binario) Infijo Producto / 2 (binario) Infijo División entera División real % 2 (binario) Infijo Módulo No aplicable ++ 1 (monario) Prefijo / postfijo Incremento -- 1 (monario) Prefijo / postfijo Decremento Operadores binarios: Operando_izquierdo Operador Operando_derecho Operadores monarios: Prefijo: Operador Operando Postfijo: Operando Operador a + b -a --a ++a a-- a++
  • 51. HéctorLópezSánchez Operadores monarios y operadores binarios Operadores monarios (o unarios) — El cambio de signo se puede aplicar a una variable, una constante o una expresión entre paréntesis (en seguida hablamos de expresiones): -saldo -RATIO -(3 * a – b) — Los operadores de incremento y decremento sólo se aplican a variables: ++interes --meses j++ Operadores binarios — Un operador binario se aplica entre un operando izquierdo y un operando derecho. Los operandos pueden ser literales, constantes, variables o expresiones: 2 + 3 a * RATIO -a + b 3 * a++ (a % b) * (c / d) Página 50Fundamentos de la programación: Primeros pasos
  • 52. HéctorLópezSánchez ¿División entera o división real? Si ambos operandos son enteros, / hace un división entera: int i = 23, j = 2; cout << i / j; // Muestra 11 Si alguno de los operandos es real, / hace una división real: int i = 23; double j = 2; cout << i / j; // Muestra 11.5 Página 51Fundamentos de la programación: Primeros pasos /
  • 53. HéctorLópezSánchez Módulo (resto de la división entera) Ambos operandos han de ser enteros: int i = 23, j = 2; cout << i % j; // Muestra 1 División entera: No se obtienen decimales  Queda un resto Página 52Fundamentos de la programación: Primeros pasos % 123 5 243 123 % 5
  • 54. HéctorLópezSánchez Página 53Fundamentos de la programación: Primeros pasos
  • 55. HéctorLópezSánchez Evaluación de expresiones ¿Cómo evaluamos una expresión como 3 + 5 * 2 / 2 – 1 ? ¿En qué orden se aplican los distintos operadores? ¿De izquierda a derecha? ¿De derecha a izquierda? ¿Unos operadores antes que otros? Resolución de ambigüedades: — Precedencia de los operadores (prioridad): Unos operadores se han de evaluar antes que otros (mayor precedencia). — Asociatividad de los operadores (orden a igual prioridad): Los operadores de igual prioridad se evalúan de izquierda a derecha o de derecha a izquierda de acuerdo con su asociatividad. Paréntesis: rompen la precedencia y asociatividad Siempre se evalúan en primer lugar las subexpresiones parentizadas. Página 54Fundamentos de la programación: Primeros pasos
  • 56. HéctorLópezSánchez Precedencia y asociatividad de los operadores Página 55Fundamentos de la programación: Primeros pasos Precedencia Operadores Asociatividad Mayor prioridad ++ -- (postfijos) Izquierda a derecha ++ -- (prefijos) Derecha a izquierda - (cambio de signo) * / % Izquierda a derecha Menor prioridad + - Izquierda a derecha 3 + 5 * 2 / 2 – 1 Misma precedencia: Izquierda antes. Misma precedencia: Izquierda antes. Mayor precedencia  3 + 10 / 2 – 1  3 + 5 – 1  8 – 1  7
  • 57. HéctorLópezSánchez Evaluación de expresiones Suponiendo que la variable entera a contiene en este momento el valor 3… (3 + 5) * a++ + 12 / a++ – (a * 2) Página 56Fundamentos de la programación: Primeros pasos Programación con buen estilo: Evita usar los operadores ++ y -- en expresiones compuestas. 8 * a++ + 12 / a++ – (3 * 2) 8 * a++ + 12 / a++ – 6 8 * 3 + 12 / 3 – 6 a pasa a valer 5 24 + 4 – 6 28 – 6 22 Primero, los paréntesis... Ahora, los ++ (mayor prioridad)
  • 58. HéctorLópezSánchez Abreviaturas aritméticas Cuando una expresión tiene la forma: variable = variable operador op_derecho; Se puede abreviar como: variable operador= op_derecho; Ejemplos: a = a + 12; a += 12; a = a * 3; a *= 3; a = a - 5; a -= 5; a = a / 37; a /= 37; a = a % b; a %= b; Página 57Fundamentos de la programación: Primeros pasos Operadores (prioridad) Asociatividad ++ -- (postfijos) Llamadas a funciones Izda. a dcha. ++ -- (prefijos) Dcha. a izda. - (cambio de signo) * / % Izda. a dcha. + - Izda. a dcha. = += -= *= /= %= Dcha. a izda. Igual precedencia que la asignación. La misma
  • 59. HéctorLópezSánchez Espaciado y paréntesis  Se deben usar espacios en el código para facilitar la legibilidad. f = 3*x*x/5+6*x/7-3; f = 3 * x * x / 5 + 6 * x / 7 - 3; Un espacio antes y después de cada operador binario.  Se pueden usar paréntesis, aunque resulten redundantes, para dejar patentes las prioridades de las operaciones. f = (3 * x * x) / 5 + (6 * x) / 7 - 3; O si no se está seguro de la precedencia. Los paréntesis no afectan a la velocidad del programa. Página 58Fundamentos de la programación: Primeros pasos
  • 60. HéctorLópezSánchez Página 59Fundamentos de la programación: Primeros pasos
  • 61. HéctorLópezSánchez Operadores relacionales Permiten hacer comparaciones (condiciones): Condición ::= Expresión Operador_relacional Expresión Las expresiones deben arrojar resultados del mismo tipo (comparables). El resultado es de tipo bool (true o false). Página 60Fundamentos de la programación: Primeros pasos < menor que <= menor o igual que > mayor que >= mayor o igual que == igual que != distinto de Operadores (prioridad) Asociatividad ++ -- (postfijos) Llamadas a funciones Izda. a dcha. ++ -- (prefijos) Dcha. a izda. - (cambio de signo) * / % Izda. a dcha. + - Izda. a dcha. < <= > >= Izda. a dcha. == != Izda. a dcha. = += -= *= /= %= Dcha. a izda.
  • 62. HéctorLópezSánchez Operadores relacionales bool resultado; int a = 2, b = 3, c = 4; resultado = a < 5; // 2 < 5  true resultado = a * b + c >= 12; // 10 >= 12  false resultado = a * (b + c) >= 12; // 14 >= 12  true resultado = a != b; // 2 != 3  true resultado = a * b > c + 5; // 6 > 9  false resultado = a + b == c + 1; // 5 == 5  true Los operadores aditivos y multiplicativos tienen mayor prioridad. Página 61Fundamentos de la programación: Primeros pasos Error común de programación: Confundir el operador de igualdad (==) con el operador de asignación (=).