El documento habla sobre la sintaxis de programación. Explica que la programación debe separar el diseño de algoritmos de su implementación en un lenguaje específico. Luego describe los elementos básicos de un lenguaje de programación como comandos, variables, constantes, operadores y expresiones, y cómo se combinan siguiendo las reglas de sintaxis. Finalmente, detalla cada uno de estos elementos clave de la sintaxis de programación.
1. UNIVERSIDAD NACIONAL EXPERIMENTAL
“FRANCISCO DE MIRANDA”
Pág. 1/6
Sintaxis de programación
En programación se debe separar la diferencia entre el
diseño de un algoritmo y su implementación
(codificación en un lenguaje determinado). Por ello,
debe distinguirse claramente entre los conceptos de
programación y el medio en el que esta se implementa,
el lenguaje específico. Sin embargo, una vez que se
comprenden los conceptos de programación utilizando
elementos de codificación, la enseñanza del lenguaje
es relativamente fácil.
Los lenguajes de programación –como los restantes
lenguajes– tienen elementos básicos que se usan como
bloques constructivos, así como reglas para las que
esos elementos se combinan. Estas reglas se
denominan sintaxis del lenguaje. Solamente las
instrucciones sintácticamente correctas pueden ser
interpretadas por la computadora y los programas que
contengan errores de sintaxis son rechazados por la
máquina. Los elementos básicos constitutivos de un
programa/algoritmo son:
- Comandos o palabras reservadas.
- Variables (poseen un tipo de dato).
- Constantes (poseen un tipo de dato).
- Operadores.
- Expresiones.
Además de estos elementos de sintaxis, en
programación existen otros componentes más
abstractos denominados Estructuras de Control
(estructuras secuenciales, estructuras selectivas y
estructuras repetitivas), y la combinación de estos dos
tipos de elementos permite la formulación de
algoritmos y programas, es decir, la programación. A
continuación se estudiará del primer grupo de
elementos, relativos a la sintaxis de programación,
pero fundamentalmente orientada a pseudocódigo
(PSeInt).1
1. COMANDOS
Son un conjunto palabras con un papel ya definido en
la formulación del programa, lo cual quiere decir que no
pueden ser utilizados para otros propósitos, (ejemplo:
usarlos como variables). Por ello se dice que son
palabras reservadas. En PSeInt pueden identificarse
algunos comandos: Proceso, FinProceso, Escribir, Leer,
Definir, como, Entero, Real, Cadena, Carácter, Si, Sino,
Entonces, FinSi, Según, FinSegún, Mientras,
FinMientras, Para, FinPara, Repetir, etc.
La siguiente expresión es incorrecta: “Proceso = 27;”
dado que “Proceso” es un comando, no puede usarse
esa palabra para otra cosa, pues está reservada.
2. DATOS Y TIPOS DE DATOS
1 El estudio de las estructuras de control extralimita el
propósito de esta guía.
El primer objetivo de una computadora es el manejo de
datos e información. Estos pueden ser cifras de ventas
de supermercados, salarios, calificaciones de
estudiantes, etc. Un dato es la expresión general que
describe los objetos con los cuales opera una
computadora. Dentro del lenguaje de programación
formal, cada uno describe un tamaño de memoria RAM
invertible. Pueden ser: numéricos (entero o decimal),
alfanuméricos (carácter o cadena de caracteres) o
lógicos (véase tabla 1):
Tabla 1: Tipos de datos
Tipo de
dato
Ejemplos Comando
en PSeInt
Valores: Se hallan en:
Entero
0, 4, 12,
-9, 77,-
56, -1
Edad, cantidad,
día, mes, cedula,
nota, etc.
Entero
Decimal
0.35, 19.5,
1.17,
-90.9
Peso, estatura,
promedio, precio,
nota, etc.
Real
Carácter
“y”, “n”,
“8”, “_”,
“@”
“Ingrese una
letra (y/n)” Caracter
Cadena de
caracteres
“Juan
Pérez”,
“Hola”,
“23”, “Las
velitas”
Nombre, apellido,
dirección,
mensaje, etc. Cadena
Lógicos
Verdadero
Falso
Si (12 > 10)
[Verdadero]
Lógico
Se aprecia que los datos numéricos pueden ser enteros
o decimales (flotantes). Estos últimos se definen como
real en PSeInt, poseen precisión y los puntos decimales
se marcan con un punto “.” y no con coma “,”. Así 5.2
es correcto, en lugar de 5,2.
Los datos alfanuméricos pueden ser de tipo carácter, si
está conformado por sólo un carácter (‘y’, ‘m’, ‘f’) o de
tipo cadena, si son un conjunto de ellos (“Francisco de
Miranda”, “30 años”). Cuando se plantean como
literales dentro del código del programa, los datos
alfanuméricos se reconocen al estar entre comillas
(dobles o simples: “…”, ‘…’). Así, todo lo que esté
encerrado entre comillas se considera de tipo carácter
o cadena.
Finalmente, los datos tipo lógico sólo admiten dos
valores posibles: verdadero o falso y se producen a
menudo durante las instrucciones de comparación.
Ejemplo: (4 < 2) es falso. Este tipo de dato es muy
económico para el computador, por eso es
recomendable utilizarlo sin sustituir su función
arbitrariamente por otros tipos de datos. Se conocen
también como datos booleanos.
3. CONSTANTES Y VARIABLES
Los programas de computadora contienen ciertos
valores que no deben cambiar durante la ejecución del
programa. Tales valores se llaman constantes. Es un
principio similar al presente en las matemáticas, donde
PI (π = 3,14…), el número de Euler (e = 2,71…), el
Lcdo. MSc. Oniel Revilla Morón
2. Sintaxis de programación – Guía didáctica I (Lcdo. MSc. Oniel Revilla Morón) Pág. 2/6
número Áureo FI ( = 1,61…) y otros, son
constantes universales que pueden implementarse
en un programa. Normalmente identificamos las
constantes dependiendo del enunciado del
problema y en determinadas ocasiones podemos
deducir y asumir que algunos valores como el IVA y
muchos escalares y literales (½, 0.25, 13%, 4000,
‘y’) deben ser debidamente planteados y tratados
como constantes.
A su vez, las variables son objetos que pueden
contener un valor que puede cambiar durante la
ejecución del programa. Cada una de ellas debe ser
de un tipo de dato específico y en ello consiste la
definición o declaración de variables, que en
programación es una instrucción posible y una
práctica recomendable.
Para declarar una variable en PSeInt se usa el
comando “Definir”. Por ejemplo: “Definir nota1,
nota2, promedio como real;”, donde nota1, nota2 y
promedio son las variables declaradas de tipo
decimal. Hay que notar que durante la ejecución del
programa, una variable podrá cambiar su valor
(contenido), pero no su tipo de dato (definición),
pues es permanente tras la declaración. Por
ejemplo, la variable mencionada nota1 ha sido
definida de tipo real y si posteriormente se le
intenta asignar un valor tipo de carácter (nota1 =
“@”), se producirá un error por incompatibilidad de
tipos.
Para construir los nombres de las variables se
siguen las reglas de construcción de identificadores,
es decir, para su construcción sólo se admiten letras
(a-z), números (0-9) y guión bajo (_); no puede ser
una palabra reservada (comando), no puede
contener espacios en blanco y no puede empezar
con un número.
Las variables y las constantes son objetos que
representan un valor concreto en una posición
determinada de la memoria del computador. El
espacio ocupado por estos objetos depende del tipo
de dato con que se le definió dado que todos tienen
su respectivo peso. Por ello, para crear buenos
programas, es siempre recomendable pensar la
mejor forma de definir el tipo de los objetos, tanto
en términos de utilidad como de eficiencia.
4. OPERADORES
Son elementos del programa que permiten
relacionar en diferentes formas los valores de una o
más variables, constantes y otros objetos para así
construir expresiones. Básicamente, los hay
aritméticos, relacionales, lógicos y de asignación:
4.1 Operadores aritméticos:
Permiten manipular datos numéricos y realizar
operaciones análogas a las matemáticas aritméticas
(véase tabla 2):
Tabla 2: Operadores aritméticos
Operador Operación Ejemplo de expresión
+ Suma suma = a + b;
- Resta resta = sub - des
* Multiplicación producto = x * y
/ División div = 6 / 4;
^ Potencia cuadrado = 5 ^ 2;
Mod, %
Módulo,
residuo
residuoPar = 10 % 2;
Todos admiten operandos reales o enteros, excepto
mod, % (residuo), que sólo admite numéricos
enteros. Éste devuelve el residuo de una división.
Así, en la instrucción “res = 20 % 2;”, hace que res
valga cero (0), que es el residuo de dividir 20 por 2.
Es muy útil en problemas donde hay que encontrar
los múltiplos de un número. Asimismo, en algunos
lenguajes de programación algunos de estos
operadores también pueden manipular otros tipos
de datos, como las cadenas de caracteres.
4.2 Operadores relacionales:
Son aquellos que permiten comparar expresiones de
tipos compatibles, produciendo un resultado de
valor de verdad, es decir, verdadero o falso (véase
tabla 3).
Tabla 3: Operadores relacionales
Opera
dor
Operación Ejemplo de
expresión
> Mayor que (3 > 2) [V]
< Menor que (4.5 < 3.25)
[F]
==, = Igual que (4 == 3) [F]
>= Mayor o igual
que
(0 >= -1.5)
[V]
<= Menor o igual
que
(4 <= 5) [V]
<> Distinto que (‘a’ <> ‘b’)
[V]
Se pueden aplicar a cualquiera de los tipos vistos:
enteros, reales, carácter, cadena o lógicos, mientras
los operandos sean compatibles (todos numéricos,
todos alfanuméricos o todos lógicos). Hay que
observar que el operador de comparación de
igualdad es “==”, que es recomendable expresarlo
así para diferenciarlo del operador de asignación
“=”. En los lenguajes de programación esa
diferenciación es, de hecho, obligatoria.
4.3 Operadores lógicos:
Se utilizan para establecer relaciones únicamente
entre valores lógicos (V/F) aplicando las operaciones
3. Sintaxis de programación – Guía didáctica I (Lcdo. MSc. Oniel Revilla Morón) Pág. 3/6
lógicas de disyunción, conjunción o negación, lo cual
es sumamente útil para formular condiciones
compuestas (véase tabla 4).
Tabla 4: Operadores lógicos
Operador Operación Ejemplo de expresión
Y, & Conjunción (9 > 6) y (8 < 7.5) [F]
O, | Disyunción (10 < 6 o 6 >= 5) [V]
~ Negación ~ (4 == 3) [V]
Cada operación produce un valor de verdad en
función de su tabla de verdad, aspecto que se
aborda en el siguiente apartado.
4.4 Operadores de asignación:
Se utilizan para denotar la operación de asignación,
que es una de las estructuras secuenciales.
Tabla 5: Operadores de asignación
Operador Operación Ejemplo de expresión
=
Asignación
aux = a; a = b; b = aux;
<- x <- a;
Se observa que tanto “=” como “<-” son
equivalentes y en pseudocódigo pueden usarse
indistintamente. De hecho, en PSeInt es
recomendable usar “<-”, aunque en la mayoría de
los lenguajes de programación formales existe y
sólo se usa “=” para asignar.
5. EXPRESIONES
Son la combinación de constantes, variables,
símbolos de operación, paréntesis y nombre de
funciones especiales. Las mismas ideas son
utilizadas en notación matemáticas tradicional, por
ejemplo: a.(b + 3) - x2
. Aquí los paréntesis indican el
orden de realización de los cálculos y x2
representa
la función potencia dos.
No obstante, la nomenclatura algorítmica de
pseudocódigo resulta algo diferente, pues hay que
adaptar la notación más aproximada a la empleada
por los lenguajes de programación. De esta forma,
la expresión algebraica citada se traduce a
pseudocódigo así:
a * (b + 3) – x ^ 2, o también: a * (b + 3) – x * x.
Una expresión consta de operadores y operandos.
Los operandos son los valores, variables o
constantes a ser relacionados mediantes los
operadores. En el ejemplo dado, a, c, 3, x y 2 son los
operandos de los operadores presentes, a saber, *,
+, - y ^.
Según sea el tipo de objetos que manipulan, las
expresiones se clasifican en: expresiones
aritméticas, expresiones relacionales y expresiones
lógicas. La expresión del ejemplo corresponde a una
de tipo aritmético, puesto que sólo tiene presente
operadores aritméticos, pero es común encontrar
expresiones mixtas dentro de los códigos de los
programas. De este modo, la expresión (a + 3 > b +
3) y (6 <> c) puede considerarse mixta puesto que
la conforman operaciones aritméticas, relacionales y
lógicas.
5.1 Expresiones lógicas y tablas de verdad:
Existen expresiones que generan un valor de
verdad, esto es, verdadero o falso (como las
construidas con operadores relacionales). Estos
valores son evaluados por los operadores lógicos (y,
o, ~), que denotan ciertas operaciones lógicas
asociadas a determinadas tablas de verdad, que son
los resultados lógicos de cada operación produce en
función de las posibles combinaciones de valores de
verdad (véase tabla 6).
Tabla 6: Tablas de verdad
Conjunción Disyunción Negación
p q (p Y
q)
p q (p O q) ~p
V V V V V V F
V F F V F V V
F V F F V V
F F F F F F
En el caso de la operación lógica conjunción (Y), el
valor sólo será verdadero cuando sus operandos
sean verdaderos. Consideremos el enunciado:
“Será aceptado si pesa menos de 80 kg y mide más
de 1,75 cm.
Se evalúan las dos partes (proposiciones) y sólo si
se cumplen ambas el resultado será verdadero. Si
una falla, el resultado será falso:
a) Pesa menos de 80 (V), mide más de 1,75 (V)
Resultado: Aceptado (V).
b) Pesa menos de 80 kg (V), no mide más de 1,75
cm (F),
Resultado: No está aceptado (F).
c) No pesa menos de 80 kg (F), mide más de 1,75
cm (V),
Resultado: No está aceptado (F).
d) No pesa menos de 80 kg (F), no mide más de
1,75 cm (F),
Resultado: No está aceptado (F).
En el caso de la operación lógica disyunción (O), el
valor será siempre verdadero, excepto cuando sus
operandos sean falsos. Por ejemplo, dado el
enunciado:
“Iremos al cine si haces la asignación O si estudias
matemáticas”.
4. Sintaxis de programación – Guía didáctica I (Lcdo. MSc. Oniel Revilla Morón) Pág. 4/6
Se evalúan las dos partes (proposiciones) y sólo si
no se cumplen ambas el resultado será falso:
a) Hice la asignación (V) y estudié matemáticas
(V) Resultado: Iremos al cine (V).
b) Hice la asignación (V) pero no estudié
matemáticas (F)
Resultado: Iremos al cine (V).
c) No hice la asignación (F) pero sí estudié
matemáticas (V)
Resultado: Iremos al cine (V).
d) No hice la asignación (F) y no estudié
matemáticas (F)
Resultado: No iremos al cine (F).
Las mostradas son relaciones entre dos
preposiciones que generan un valor de verdad y
esto se estudia dentro de lo conocido como lógica
proposicional, lógica binaria y álgebra booleana,
asuntos de gran aplicabilidad en la informática. En
programación, esto puede plantearse
concretamente en la construcción de condiciones
compuestas basadas en expresiones lógicas (véase
tabla 7).
Tabla 7: Expresiones lógicas típicas programables
Expresión Evaluac
ión
Valor de
verdad
(4 > 0) Y (5 < 10) (V) y (V) Verdadero
(5 <= 18) Y (6 > 6) (V) y (F) Falso
(0 > 3) Y (4 < 5) (F) y (V) Falso
(‘n’ == ‘m’) Y (-8 <>-8) (F) y (F) Falso
(25 > 18 ) O (5 == 5) (V) o (V) Verdadero
(7 <> 1) O (1 > 12) (V) o (F) Verdadero
(6 == 4) O (‘f’ == ‘f’) (F) o (V) Verdadero
(5 <= -5) O (6 >=16) (F) o (F) Falso
Finalmente, está el caso de la operación lógica
negación (~), la cual simplemente arroja el valor de
verdad contrario al evaluado, es decir, la negación
de verdadero es falso y la negación de falso es
verdadero. En ocasiones puede ser muy útil para
expresar más acertadamente una condición.
5.2 Reglas de prioridad de evaluación de
expresiones:
Dado que las expresiones se construyen con objetos
como los operadores, para evaluarlas hay que
conocer las reglas de prioridad de operaciones que
son las pautas que hay que considerar para evaluar
(y también construir) una expresión. Aquí prioridad
se refiere a lo que se evaluará primero. En
pseudocódigo (PSeInt) las reglas de prioridad son:
1) Las expresiones entre paréntesis se evalúan
primero. Si existen diferentes paréntesis
anidados (interiores unos a otros), las
expresiones internas se evaluarán primero.
2) Los operadores con la misma prioridad se
evaluarán de izquierda a derecha cuando
coinciden en una operación aritmética.
3) Los operadores con mayor prioridad son los
aritméticos. De estos ^ (potenciación) tiene
más prioridad. Le siguen * y / (multiplicación
y división) con la misma prioridad. Le sigue
en prioridad: % (módulo). Le siguen + y -
(suma y resta) con la misma prioridad.
4) Luego de los operadores aritméticos, le
siguen en prioridad los operadores
relacionales: (>, <, >=, <=, ==, <>). Todos
estos tienen la misma prioridad entre sí.
5) Luego de los operadores relacionales, le
siguen en prioridad los operadores lógicos:
(~, Y, O). De estos ~ (negación) tiene la
más alta prioridad. Le sigue Y (conjunción) y
luego O (disyunción).
6) Finalmente, la más baja prioridad la tiene la
operación de asignación (=, <-).
Ejemplos:
Dadas las reglas de prioridad evaluar las siguientes
expresiones:
1) 4 + 3 * 2
Aquí primero se ejecuta la multiplicación (3 * 2)
por poseer más prioridad y luego se ejecuta la
suma, dando como resultado 10.
2) 8 + 12 * 4 / 2 + 5
Tanto la multiplicación (12 * 4) como la división
(4 / 2) tienen la misma prioridad y ambas son
más prioritarias que las sumas, por tanto se
evaluarán primero. De ellas dos primero se
evalúa (12 * 4) porque está más a la izquierda
dando como resultado 48 y la expresión
queda: “8 + 48 / 2 + 5”. Luego se evalúa la
división (48 / 2) resultando en 24 y quedando
la expresión en “8 + 24 + 5”. Ambas sumas
tienen la misma prioridad. Se ejecuta primero
la más a la izquierda (8 + 24), lo que da 32,
“32 + 5” y finalmente queda: 37.
3) (2 + 3) * (5 - 6)
Aquí los paréntesis demandan ser evaluados
primeros, lo cual reduce la expresión a “5 *
-1”, que resulta en -5.
4) 2 + 4 > 6 * 4
5. Sintaxis de programación – Guía didáctica I (Lcdo. MSc. Oniel Revilla Morón) Pág. 5/6
En este caso las expresiones aritméticas son
más prioritarias que las relacionales. Así la
multiplicación (6 * 4) será la primera en
efectuarse, luego la suma (2 + 4). Luego, la
expresión queda “6 > 24” y se evalúa el
relacional, lo cual arroja FALSO.
5) 1 < 2 y ‘a’ > ‘x’
Los relacionales son más prioritarios que los
lógicos así que se evaluarán primero. Se
comienza por la izquierda (1 < 2) que da
VERDADERO, luego se evalúa (‘a > ‘x’), lo que
da FALSO. La expresión queda “FALSO Y
VERDADERO”. Se evalúa la expresión lógica y
da FALSO.
6) 5 == 5 y 4 < 1 o 6 > 3
Primero se evalúan los relacionales: (5 == 5),
VERDADERO; (4 < 1), FALSO; y (6 > 3) que da
VERDADERO. Después queda una expresión
lógica así:
“VERDADERO y FALSO o VERDADERO”.
El operador de conjunción (Y) tiene más
prioridad, por tanto se evalúa la expresión
(VERDADERO y FALSO), lo cual da FALSO. La
expresión se reduce entonces a “FALSO o
VERDADERO”, lo cual da finalmente
VERDADERO.
Para evitar ambigüedades simplemente se
recomienda el uso de paréntesis para indicar
claramente el orden de realización de las
operaciones. De tal modo que la última expresión (la
sexta) puede plantearse así: (5 == 5 y 4 < 1) o (6
> 3), lo cual deja bastante claro en qué orden
resolver las operaciones y/o evaluar.
Es de hacer notar que hay diferencias entre los
diferentes lenguajes de programación respecto a las
reglas de prioridad de evaluación de expresiones,
pero las mostradas son las más difundidas y
convenientemente utilizadas en el pseudocódigo. De
hecho son las reglas del pseudo-intérprete PSeInt.
Conocer estas reglas es considerablemente
importante para la correcta formulación de las
expresiones, bien sean aritméticas, relacionales,
lógicas o mixtas, lo cual es útil a la hora de expresar
fórmulas matemáticas complejas o de construir
condiciones complicadas. El lenguaje humano es
muy flexible, pero la computadora no lo es tanto.
Ella evaluará las expresiones según estas reglas
caprichosamente.
Ejercicios propuestos
1. Determinar el tipo de dato de los siguientes
valores y señalar si alguno es inválido:
“O+” -0.99 “Edad:
2001 “1/2” “2014”
172.3 Xy NULL
‘?’ 01 19,25
“ var ’ “GNU” “Jesús
”
Verdadero 1.810 100,5
-58 ‘@’ “ ”
01.00 Falso 1980
“9:59” 25cm “0412”
> “entero
”
Apellid
o
2. Determinar el tipo de dato atribuible a las
siguientes variables en función de lo que
aluden sus nombres.
Cociente TasaDeIntere
s
Link
Rebaja Num_km CodArea
Cant_pc Res_boolean
o
Segundos
email Signo Modelo
Sueldobasico Dolares Tamano
Alias Twiter Simbolo
Digito Interruptor Temperatur
a
3. Identificar variables, constantes y tipos de dato
en los siguientes enunciados.
Determinar el volumen de un cilindro, (v = π.r2
.h).
Facturar compra de un artículo del que se adquiere una o
varias unidades, con IVA de 12% y descuento de 5% si
cuesta más de Bs. 50. Incluir nombre y RIF del cliente y
descripción del artículo.
Calcular costo de servicio telefónico conociendo la
cantidad de duración de llamadas (Bs 2 x min), megas de
internet (0.5 Bs x mb) y sms usados (Bs. 0.25 x sms). Hay
un descuento de 10% si el total de duración de llamada
dura más de2 horas.
4. Determinar las variables con nombres
construidos correcta e incorrectamente.
Resultado Cant_de_num Entero
1valor Signo? Fax
Salario neto Si x100pre
Nota3 Direccion P60%
_hora Nom y ape M,m
Numπ Leerr Invalido
K.g. Velocidad_1 X2
5. Escribir las siguientes expresiones
matemáticas en expresión algorítmica de
pseudocódigo (PSeInt).
6. Sintaxis de programación – Guía didáctica I (Lcdo. MSc. Oniel Revilla Morón) Pág. 6/6
v = π.r2
.h (2,5 – x1)2
(1
a)
3
+b
a
b
+
c
d
p=
m.25
4−a
w < x <
z
6. Calcular el valor asignado a res en las
siguientes expresiones aritméticas, con a =
3, b = 8, c = -2.
res = (a + b) * c ; res = res * res + (b * c);
res = (res + 8) / (b -
a);
res = res * (0.25);
7. Determinar el valor de verdad (V/F) de las
siguientes expresiones lógicas, asumiendo a
= 3 y b = -2.
(a * 2) > (b * 4) (a * b) == (a * 3) + b
(a * -b) <> (b *
-3)
(6 <> b * a) o (a > b)
(0 > b y 3 > b)
(2 > 0.5 y 5 < a * b) o (b < b *
-1)
( 9 / a >= 3) y (6 <= a * b * -1) y (a < b)
8. Traducir los siguientes enunciados
expresados en lenguaje natural a lenguaje
algorítmico de pseudocódigo (PSeInt).
“La suma de A entre B más A por C es menor a la suma de
cinco coma seis menos la división de A por C”.
“Salario más primer aumento es menor al salario más
primer aumento más segundo aumento”.
“El resultado es igual o menor a la suma entre cantidad de
notas y la cantidad de notas es diferente de 10 y mayor a
15”.
“La edad es igual a 19 o la edad es igual a 21 y diferente a
17”.
La inicial es diferente a A, B, C, D y E y el número de
letras es mayor a ,5 pero hasta un máximo de 10.