You are on page 1of 26

Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que

pueden ser llevados a cabo por máquinas como las computadoras.

Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una
máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.1

Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su
estructura y el significado de sus elementos y expresiones. Al proceso por el cual se
escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código
fuente de un programa informático se le llama programación.

También la palabra programación se define como el proceso de creación de


un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de
los siguientes pasos:

 El desarrollo lógico del programa para resolver un problema en particular.


 Escritura de la lógica del programa empleando un lenguaje de programación específico
(codificación del programa).
 Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
 Prueba y depuración del programa.
 Desarrollo de la documentación.

Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y
'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y
a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es
propiamente un lenguaje de programación, sino un conjunto de instrucciones que permiten
estructurar el contenido de los documentos).

Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo
deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de
circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al
lenguaje humano o natural. Una característica relevante de los lenguajes de programación es
precisamente que más de un programador pueda usar un conjunto común de instrucciones
que sean comprendidas entre ellos para realizar la construcción de un programa de forma
colaborativa.

[Escriba texto] Página 1


2.1 DATOS NUMERICOS:

Son aquellos que representan una cantidad o valor determinado. Su representación se


lleva a cabo en los formatos ya conocidos (enteros, punto y fracciones decimales si estas
existen).

Estos pueden representarse en dos formas distintas :

Tipo Numérico Entero (integer).

Tipo Numérico Real (real).

DATOS DE CARACTERES:

Los caracteres reconocidos por los diferentes computadores por lo general no son
estándar, pero la mayoría reconoce los tipos los siguientes tipos de caracteres:

Caracteres Alfabéticos: {A, B, C, … , Z} {a, b, c, … , z}

Caracteres Numéricos: {0, 1, 2, … , 9}

Caracteres Especiales: {+, -, *, /, ^, ., ;, <, >, $, …

Empecemos con un ejemplo

Antes de entrar en materia y explicar cada parte por separado, puedes ver el siguiente
ejemplo que te permite observar algunas cosas del código en Pascal. Aunque en estos
momentos no estas en disposición de entenderlo, puedes volver aquí más tarde para
comprobar tus avances.

En este sencillo ejemplo (lo es, aunque ahora no te lo creas) se presentan seis secciones
claramente diferenciadas. Como puedes ver, cada sección está caracterizada por alguna
palabra especial. Como por ejemplo, var para la sección de variables. Estas palabras
forman parte de un conjunto llamado palabras reservadas.

Muchas secciones no son obligatorias. Por tanto, en un programa no tienen por que
aparecer todas estas palabras. Por otro lado, como ciertos compiladores exigen que el

[Escriba texto] Página 2


orden de las secciones sea el que aparece aquí, y otros no ponen ninguna restricción, lo
mejor que puedes hacer es seguir siempre este orden.

A continuación tienes una tabla que empareja secciones con palabras reservadas. Además
aparecen en el orden correcto:

Partes de un programa Palabras reservadas

Cabecera (título) program

Declaración de unidades uses

Declaración de
const
constantes

Declaración de tipos type

Declaración de variables var

Declaración de
function o procedure
subprogramas

Cuerpo del programa begin, end y punto(.)

Cabecera de un programa

La cabecera es una sección obligatoria, debe figurar en todos los programas. Debe
comenzar con la palabra reservada program seguida del nombre del programa y un ";".
Con esto ya se cumplirían los requisitos mínimos que debe tener una cabecera, pero se
puede y es muy recomendable incluír también un comentario. Este comentario lo
utilizamos para documentar el programa, que es algo que la gente suele dejar en segundo
plano, pero es de lo más importante en programación. En el comentario se debe incluír el
mayor número de componentes de los que se citan a continuación:

 Autor del programa


 Versión actual
 Fecha de inicio del programa
 Fecha de la última modificación
 Qué se pretende que haga el programa
 Nombre del fichero fuente en el que se guarda
 Otras cosas que te ayuden a documentar tu programa

[Escriba texto] Página 3


Declaración de unidades

Nos encontramos en la parte correspondiente a la declaración del uso de unidades. En


este tutorial no se le dará importancia a esta sección, fundamentalmente por dos
motivos:

 Este tutorial pretende ser una iniciación a Pascal y a la programación; y tanto el


uso de unidades estándar del lenguaje, como la creación de unidades por el
usuario, no las considero aspectos básicos de Pascal.
 Además las unidades no forman parte de Pascal estándar, y por lo tanto, no
dispondrás de ellas en todos los compiladores.

Sin profundizar demasiado en el tema, comentar que la palabra reservada que comienza
la declaración de unidades es uses y que va seguida de los nombres de las unidades que se
quieran utilizar en el programa separados por ",". Se finaliza la sección con un punto y
coma ";". Evidentemente, esta sección no es obligatoria.

uses
nombre_unidad1,nombre_unidad2,...,nombre_unidad_n;

Cuerpo principal del programa

También se le llama bloque del programa, y es junto con la cabecera, la única sección
obligatoria en un programa Pascal. Debe comenzar y finalizar con las palabras reservadas
begin y end respectivamente.

Muy imortante: Después de la palabra end, siempre tiene que ir un punto que indica el
final del programa.

Entre begin y end se escriben una o más sentencias, ya sean simples o compuestas. Las
sentencias pueden ser varias: asignaciones, llamadas a procedimientos y funciones,
sentencias selectivas (sentencias if), sentencias iterativas (sentencias for, while). Veamos
un pequeño ejemplo:

[Escriba texto] Página 4


...

begin

i := 0;
while i<10 do
begin
writeln('El valor de i es ',i);
i := i + 1
end

end.

...

2.2 IDENTIFICADORES:
Los identificadores son las palabras con las que identificamos o llamamos a una variable o
constante. A la hora de dar nombre a una variable, o sea a la hora de identificar una
variable debemos de tener en cuenta unas reglas de nomenclatura, marcadas por el
lenguaje de programación en c

Reglas de nomenclatura para los identificadores

Los nombres de los identificadores pueden llevar caracteres alfa-numericos. Letras de la A


a la Z excluyendo la ñ que no vale. Y todos los números. Si es obligatorio que el nombre
del identificador empiece por una letra y no un numero u otro signo.

Los identificadores solo aceptan el signo_(guion bajo-subrayado), por tanto quedan


excluidos otros como el signo de interrogación, los paréntesis, etc.

Tampoco podemos usar como identificadores las palabras reservadas de un lenguaje,


palabras tales como: if, else, goto, etc

El numero de caracteres de un identificador nunca debe sobrepasar los 31. Algunos


compiladores solo reconocen los 8 primeros caracteres de los identificadores. Esto ya
depende del potencial del compilador. Recordemos que en C se distinguen entre

[Escriba texto] Página 5


mayúsculas y minúsculas con lo cual es distinto un identificador tal como, Suma que otro
como suma.(por convenio se ha decidido que los identificadores estén escritos en
minúsculas.)

lógicamente a la hora de dar nombre a una variable o constante, utilizaremos


identificadores que nos hagan referencia o semejanza al dato que almacenan. Con lo que
si necesitamos una variable para almacenar la cadena de caracteres: “Hola”, seria
conveniente llamar o identificar esta variable como saludo y no como “x”. los nombres de
variables y constantes o sea los identificadores es adecuado que si su valor almacenado
tiene relación unos con otros, los nombres de los identificadores también tengan esa
relación (de forma lexica).con todo esto se quiere decir que nunca escatimemos en el
tiempo de búsqueda para dar nombre a una variable o constante. Si le damos un nombre
cualquiera luego al repasar el código todo nos resultara mas confuso.

Palabras reservadas:

Hay ciertos identificadores, identificadores o palabras llamadas palabras reservadas(valga


la redundancia) que no se pueden usar como identificadores, puesto que ya son usadas
por el propio lenguaje para una finalidad determinada.

Estas palabras son por lo general en ingles. Lo bueno es que no hace falta tener mucho
nivel de ingles para comprenderlas. Algunas de estas palabras son:

(auto,break,case,char,const,continue,default,do,doublé,else,enum,extern,flota,for,goto,if,
int,long,registre,retum,short,signed,sizeof,static,struct,switch,typedef,unión,unsigned,voi
d,volatile,while)

2.3 Variables y Constantes

Una variable es un contenedor de información (datos), y su valor se


encuentra almacenado en memoria.
Para referirnos a los datos contenidos en la memoria utilizamos su
dirección
 no es práctico, porque una dirección no es significativa de su contenido
 Se hacen necesarios los identificadores
 Nombre simbólico para referirse a variables, funciones y cualquier otro objeto
definido por el usuario en un programa.

Todas las variables o funciones que usemos deben ser declarados y


deben tener un nombre (identificador): al comienzo del programa se deben
indicar los nombres de las variables y el tipo de los datos que almacenan

[Escriba texto] Página 6


Porque se debe hacer reserva de memoria para cada variable, y establecer la
correspondencia entre nombre de variable y posición de memoria asignada.Un
identificador debe cumplir las siguientes normas:

1. Longitud máxima: 32 caracteres. Debe comenzar por una letra o un


símbolo de subrayado (_) seguido por letras, números o subrayado.
Bien: cont, prueba25, a_3 Mal: 1cont, hola!, b...total
2. C distingue entre mayúsculas y minúsculas: a y A son <>.
3. No puede llamarse igual que una palabra clave, o que una función.
4. Es aconsejable elegir nombres que sean significativos.

No aconsejable: float funcion1(int a, int b)


Si aconsejable: float media(int teoria, int practica)

Una constante es un valor que no puede cambiar durante la ejecución


de un programa No pueden aparecer en la parte izquierda de una
asignación. Pueden ser:
 De cualquiera de los tipos vistos para las variables (excepto void):
- Constantes enteras: 25, -126, 0x7FC (hexadecimal), 0767 (octal).
- Constantes de Punto Flotante: 23.5, -0.05, -3.8E+17, 2.5E-4.
- Constantes carácter: ‘x’, ‘t’, ‘\n’, ‘\t’. (Su valor es su código ASCII).
 Una cadena de caracteres (conjunto de caracteres encerrado entre ” ”).
- Constantes de cadenas: “constante de cadena”, ”Bienvenidos

3.1 OPERADORES ARITMÉTICOS:


Estos operadores se aplican a todos los tipos numéricos definidos anteriormente. Estos
operadores son los que aparecen en la siguiente tabla:

Operador Descripción

El operador de asignación se utiliza para realizar asignaciones entre una


variable y el resultado de una expresión o un valor (otra variable). A la izquierda
=
de este operador debe aparecer un identificador (una variable) y a la derecha
del mismo puede aparecer un valor, una expresión o otra variable.

El operador de suma realiza la adición de las expresiones que tiene a su


+ izquierda y a su derecha. Este operador es aplicable a las cadenas de texto
("string").

[Escriba texto] Página 7


El operador de resta realiza la resta de la expresión que tiene a la derecha
-
sobre la expresión que tiene a su izquierda.

El operador de multiplicación realiza el producto entre la expresión que tiene a


*
su izquierda y a su derecha.

El operador de división realiza esta operación usando como dividendo la


/ expresión que tiene a su izquierda y como divisor la expresión que tiene a su
derecha.

El operador de módulo calcula el resto de una división siendo la expresión que


%
tiene a su izquierda el cociente y la expresión que existe a su derecha el divisor.

Operador Descripción

Este operador realiza la adición de la expresión sobre el contenido que tenga el


+=
identificador a su izquierda.

Este operador realiza la resta de la expresión sobre el contenido que tenga el


-=
identificador a su izquierda.

Este operador realiza el producto entre el contenido del identificador a su


*= izquierda y la expresión a su derecha. El resultado se almacena en el
identificador.

Este operador realiza la división tomando como dividendo el contenido del


/= identificador y como divisor el resultado de la expresión de la derecha. El
resultado de la división se almacena en el identificador.

Este operador calcula el módulo (resto) de la división, tomando como


dividendo el contenido del identificador y como divisor el resultado de la
%=
expresión de la derecha. El resultado de la división se almacena en el
identificador.

[Escriba texto] Página 8


Operador Descripción

++ Este operador incrementa en uno el contenido del identificador.

-- Este operador decrementa en uno el contenido del identificador.

Los operadores "++" y "--" se pueden usar tanto en una posición prefija al identificador
como postfija al mismo. Sin embargo existe una sutil diferencia entre ambos usos.
Supongamos que tenemos este operador en una expresión (variable++ o ++variable). Así,
si el operador está delante del identificador la expresión devolverá el nuevo valor (variable
+ 1) sin embargo, si tenemos el operador detrás del identificador entonces la expresión
devolverá el valor antiguo (variable). Esto puede hacer que cometamos errores difíciles de
detectar.

Operadores a nivel de bits


Un operador a nivel de bits es aquel que realiza una operación sobre los bits que
componen los parámetros que recibe. Los operadores booleanos que se definen en Vala
son los mismos que se definen en el álgebra de Boole o compuestos por varios básicos. Así
tendremos los siguientes operadores:

Operador Descripción

Este operador realiza la operación booleana OR de la expresión que tiene a su


|
izquierda y la expresión que tiene a su derecha.

Este operador realiza la operación booleana XOR de la expresión que tiene a su


^
izquierda y la expresión que tiene a su derecha.

[Escriba texto] Página 9


Este operador realiza la operación booleana AND de la expresión que tiene a su
&
izquierda y la expresión que tiene a su derecha.

Operador Descripción

Este operador realiza la operación booleana NOT de la expresión que tiene a su


~
derecha.

Operador Descripción

Este operador realiza la operación booleana OR entre el identificador y el


|= resultado de la expresión booleana. El resultado se almacena dentro del
identificador.

Este operador realiza la operación booleana XOR entre el identificador y el


^= resultado de la expresión booleana. El resultado se almacena dentro del
identificador.

Este operador realiza la operación booleana AND entre el identificador y el


&= resultado de la expresión booleana. El resultado se almacena dentro del
identificador.

Operador Descripción

Este operador realiza el movimiento de los bits de izquierda a derecha un


>> número de veces igual al valor devuelto por la expresión entera. Se
introducirán tantos 0 por la izquierda como indique la expresión entera.

[Escriba texto] Página 10


Este operador realiza el movimiento de los bits de derecha a izquierda un
<< número de veces igual al valor devuelto por la expresión entera. Se
introducirán tantos 0 por la derecha como indique la expresión entera.

Operador Descripción

Este operador realiza el movimiento de los bits de izquierda a derecha un


número de veces igual al valor devuelto por la expresión entera. Se
>>=
introducirán tantos 0 por la izquierda como indique la expresión entera. El
resultado se almacena en el identificador.

Este operador realiza el movimiento de los bits de derecha a izquierda un


número de veces igual al valor devuelto por la expresión entera. Se
<<=
introducirán tantos 0 por la derecha como indique la expresión entera. El
resultado se almacena en el identificador.

3.2 OPERADORES LÓGICOS:


Los operadores lógicos son aquellos que toman unos operandos y realizan alguna
operación de tipo lógico sobre ellos. Estos operadores se utilizan para comprobar si se
satisface una condición todos ellos devuelven un valor booleano (true o false) que
determina si esa condición es cierta o no.

Operadores lógicos I

Operador Descripción

El operador lógico NOT hace que la condición tome el valor


contrario al que tiene. Por ejemplo si una expresión lógica
!
devuelve true y aplicamos el operador NOT la expresión se
convierte en false.

&& El operador lógico AND comprueba dos expresiones lógicas

[Escriba texto] Página 11


sean ciertas. En ese caso el resultado será true, en cualquier
otro caso será false.

El operador lógico OR comprueba al menos una de las


expresiones lógicas sea cierta. En ese caso el resultado
||
será true, en caso de ambas expresiones sean falsas el
operador devolverá false.

El operador ternario evalúa una expresión de evaluación y


comprueba que sea cierta. En ese caso devuelve como
expresion_evaluacion? exp resultado el valor de la expresión A, en caso contrario
resion_A :expresion_B devuelve el contenido de la expresión B.

Este operador es equivalente a escribir la expresión "a !=


null ? a : b. Es decir, si la expresión es distinto de null devuelve
el valor de la expresión, en caso contrario devuelve el valor de
expresion_evaluacion?? Ex expresión. Este operador es útil para suministrar un valor por
presión defecto cuando una referencia en null.

Ejemplo:
stdout.printf("Hola, %s!\n", nombre ?? "Desconocido");
El operador in comprueba si la expresión B se encuentra
dentro de la expresión A. Este operador se utiliza sobre
conjuntos o listas de elementos, así si un conjunto de
elementos se encuentra dentro de otro entonces el operador
devolverá true; en caso contrario devuelve false. Este
expresion_A inexpresion_B operador es válido para las cadenas, realizando una búsqueda
de una cadena B dentro de la cadena A.

Ejemplo:
bool a = "Hola" in "Hola mundo"; // La variable a tendrá el
valor true

 OPETRADORES DE RELACION O COMPARACION:

Considera esta comparación sencilla:

[Escriba texto] Página 12


$respuesta = 10 > 3

Aquí, 10 se compara con 3 usando el operador «más grande que». El resultado de esta
operación, es decir, el valor lógico verdadero, se guarda en la variable $respuesta.

Todos los números y variables (que contengan números) pueden compararse entre sí
usando operadores de comparación.

Estos son todos los posibles operadores de comparación:

Tipos de preguntas

$A == $B igual a la respuesta es «verdadera» si $A es igual a $B

$A != $B no igual a la respuesta es «verdadera» si $A no es igual a $B

$A > $B mayor que la respuesta es «verdadera» si $A es mayor que $B

$A < $B menor que la respuesta es «verdadera» si $A es menor que $B

$A >= $B mayor o igual que la respuesta es «verdadera» si $A es mayor o igual que $B

$A <= $B menor o igual que la respuesta es «verdadera» si $A es menor o igual que B

Ten en cuenta que $A y $B tienen que ser números o variables que contengan números

3.3 EXPRESIONES:

Una expresión en C es cualquier combinación de operadores,


constantes y variables. En C existen distintos tipos de expresiones.

 Expresiones aritméticas: Formadas por variables y/o constantes, y distintos


operadores aritméticos e incrementales.

 Expresiones Lógicas: Formadas por variables y/o constantes, operadores lógicos


(| |, && y !), valores lógicos (true, distinto de 0 y false, igual a 0), así como
operadores relacionales. Estas
 expresiones devuelven siempre un valor 1 (true) o 0 (false).

[Escriba texto] Página 13


3.4 ASIGNACION DE DATOS:
Es aquí cuando estamos verdaderamente introduciendo un dato dentro de una
variable(dirección de memoria) una vez que tenemos una variable definida, esta ya esta
lista para albergar en su interior un dato pero esto solo podrá ser del tipo con el que se a
definido la variable. Cuando metemos en una variable un dato se dice que la estamos
declarando. Aunque el concepto y la diferencia entre definir y declarar no es muy claro.

Definir una variable es reservar el espacio en memoria y decir de que tipo va ser, y cuando
le metemos un dato ya estamos declarándola. Mas adelante esta definición se emplea a la
inversa para als funciones

Vamos a introducir valores a las variables definidas en el ejemplo anterior.

1) Suma=2
2) Resultado=10.5
3) Letra=”A”;

1: aquí estamos introduciendo el numero 2 dentro de la variable suma. Con lo que


suma pasara a valer 2.

2: en el segundo paso, damos un numero decimal que introducimos dentro de la


variable de tipo decimal. Así pues , la variable resultado a hora vale 10.5.

3: por ultimo la variable de carácter “letra” le asignamos la letra “A”. desde entonces
siempre que sea nombrado o referida por su identificativo nos devolverá la letra “A”.

3.5 PRINCIPALES FUNCIONES MATEMÁTICAS MÁS IMPORTANTES

Las funciones más importantes relacionadas con las matemáticas que se pueden
encontrar en un compilador estándar de C/C++ son las que aparecen en la tabla siguiente.
Recuerda que debes poner

#include <math.h>

al principio en tu programa, y que debes añadir al compilar la opción -lm al final.

En todas estas funciones se espera que los argumentos sean de tipo double, y el resultado
también es de ese tipo. Los argumentos de estas funciones (a y b) pueden ser expresiones
más o menos complejas (que pueden incluir llamadas a otras funciones).

[Escriba texto] Página 14


Función Descripción

cos(a) Coseno del ángulo a (expresado en radianes)

sin(a) Seno de a

tan(a) Tangente de a

acos(a) Arcocoseno de a

asin(a) Arcoseno de a

atan(a) Arcotangente de a

atan2(a,b) Arcotangente de a/b

exp(a) El valor del número e elevado a a

log(a) Logaritmo neperiano de a

log10(a) Logaritmo en base 10 de a

pow(a,b) El valor de a elevado a b

sqrt(a) Raiz cuadrada de a

abs(a) El valor absoluto de a (para int)

fabs(a) El valor absoluto de a (para double)

floor(a) El valor entero por debajo de a

ceil(a) El valor entero por encima de a

rint(a) El valor entero más cercano a a

[Escriba texto] Página 15


Dentro del bloque de instrucciones de un programa se pueden diferenciar tres partes
fundamentales. En algunos casos, estas tres partes están perfectamente delimitadas, pero
en la mayoría sus instrucciones quedan entremezcladas a lo largo del programa, si bien
mantienen una cierta localización geométrica impuesta por la propia naturaleza de las
mismas.

 Entrada de datos: la constituyen todas aquellas instrucciones que toman datos de


un dispositivo externo, almacenándolos en la memoria central para que puedan
ser procesados.
 Proceso o algoritmo: está formado por las instrucciones que modifican los objetos
a partir de su estado inicial hasta el estado final, dejando éstos disponibles en la
memoria central.
 Salida de resultados: conjunto de instrucciones que toman los datos finales de la
memoria central y los envían a los dispositivos externos.

Clasificación de las Instrucciones.

Una instrucción se caracteriza por un estado inicial y final del entorno. El estado final de
una instrucción coincide con el inicial de la siguiente. No siempre una instrucción modifica
el entorno, pues su cometido puede limitarse a una mera observación del mismo o a un
cambio en el orden de ejecución de otras. Las instrucciones pueden ser:

 Instrucciones de declaración: Se utilizan en aquellos lenguajes de programación


que no tienen declaración explícita de los objetos. Su misión consiste en indicar al
procesador que reserve espacio en la memoria para un objeto del programa,
indicando asimismo su nombre, tipo y características.
 Instrucciones primitivas: Son aquellas que ejecuta el procesador de modo
inmediato. Las principales son asignación, entrada y salida.
 Instrucción de asignación: Consiste en calcular el valor de una expresión y
almacenarlo en una variable. En algún lenguaje es preciso calcular previamente el
resultado de la expresión, pues la instrucción de asignación sólo permite el
movimiento de un valor simple.
 Instrucción de entrada: Toma un dato de un dispositivo de entrada y lo almacena
en un objeto. En algún lenguaje, los datos de entrada no provienen de un
dispositivo externo, sino que han sido colocados previamente en el mismo
programa.
 Instrucción de salida: Toma el valor de una expresión u objeto y lo lleva a un
dispositivo externo.
 Instrucciones compuestas: Son aquellas que el procesador no puede ejecutar
directamente, sino que realiza una llamada a un subprograma, subrutina o párrafo.
 Instrucciones de control: Son aquellas de controlar la ejecución de otras
instrucciones.

[Escriba texto] Página 16


 Instrucción alternativa: Controla la ejecución de unas u otras instrucciones según
una condición. Puede ser simple o doble (SI y SINO).
 Instrucción de salto incondicional: Altera la secuencia normal de ejecución de un
programa, continuando la misma en la línea indicada en la propia instrucción (IR
A).
 Instrucción de salto condicional: Altera la secuencia normal de ejecución de un
programa únicamente en el caso de cumplimiento de una condición asociada a la
propia instrucción (SI ... IR A).
 Instrucción repetitiva: Hace que se repitan una o varias instrucciones un número
determinado o indeterminado de veces (PARA, MIENTRAS, HASTA e ITERAR).

Elementos auxiliares de un programa

Son variables que realizan funciones específicas dentro de un programa, y por su gran
utilidad, frecuencia de uso y peculiaridades, conviene hacer un estudio separado de las
mismas. Las más importantes son:

 Contadores: Un contador es un campo de memoria cuyo valor se incrementa en


una cantidad fija, positiva o negativa, generalmente asociado a un bucle. Toma un
valor inicial antes de comenzar su función, y cada vez que se realiza el suceso,
incrementa su valor. Se utiliza en los siguientes casos:
o Para contabilizar el número de veces que es necesario repetir una acción
(variable de control de un bucle).
o Para contar un suceso particular solicitado por el enunciado del problema
(asociado a un bucle o independientemente).
 Acumuladores: Un acumulador es un campo de memoria cuyo valor se incrementa
sucesivas veces en cantidades variables. Se utiliza en aquellos casos en que se
desea obtener el total acumulado de un conjunto de cantidades, siendo preciso
inicializarlo con el valor 0. También en las situaciones en que hay que obtener un
total como producto de distintas cantidades se utiliza un acumulador, debiéndose
inicializar con el valor 1.
 Interruptores (switches): Un interruptor es un campo de memoria que puede
tomar dos valores exclusivos (0 y 1, -1 y 1, FALSO y CIERTO, etc.). Se utiliza para:
o Recordar en un determinado punto de un programa la ocurrencia o no de
un suceso anterior, para salir de un bucle o para decidir en una instrucción
alternativa qué acción realizar.
o Para hacer que dos acciones diferentes se ejecuten alternativamente
dentro de un bucle.

Tipos de programas

Un programa, por lo general, estará compuesto por una secuencia de acciones, algunas de
las cuales serán alternativas o repetitivas. En determinados programas sencillos, no se da
esta mezcla de acciones, en cuyo caso se pueden clasificar como sigue:

[Escriba texto] Página 17


 Programas lineales: consisten en una secuencia de acciones primitivas (su
ejecución es lineal en el orden en que han sido escritas).
 Programas alternativos: consisten en el anidamiento de acciones alternativas (las
tablas de decisión se realizan mediante programas alternativos).
 Programas cíclicos: son aquellos en los que un conjunto de acciones se repiten un
número determinado o indeterminado de veces (un programa de este tipo se
denomina bucle).

Otra clasificación relativa a la aplicación desarrollada por el programa es:

 Programas de gestión: se caracterizan por el manejo de gran cantidad de datos


con pocos cálculos (resuelven problemas de gestión).
 Programas técnicos-científicos: al contrario que los anteriores, realizan gran
cantidad de cálculos con pocos datos (revuelven problemas matemáticos, físicos,
etc.).
 Programas de diseño (CAD): se caracterizan por la utilización de técnicas gráficas
para resolver problemas de diseño.
 Programas de simulación: intentan reflejar una situación real, para facilitar su
estudio.
 Programas educativos (EAO): utilizan las ventajas del ordenador para la docencia.
 Programas de inteligencia artificial: se utilizan para simular el razonamiento
humano.

Lenguajes de programación.

Un lenguaje de programación es una notación para escribir programas, es decir, para


describir algoritmos dirigidos al computador. Un lenguaje viene dado por una gramática o
conjunto de reglas que se aplican a un alfabeto. El primer lenguaje de programación que
se utilizó fue el lenguaje máquina, el único que entiende directamente el computador,
cuyo alfabeto es el binario, formado por los símbolos 0 y 1. El lenguaje ensamblador,
resultó de la evolución del lenguaje máquina, al sustituir las cadenas de símbolos binarios
por nemotécnicos. Posteriormente surgieron los lenguajes de alto nivel, cuya evolución
es:

 1955: FORTRAN.
 1960: LISP, ALGOL, COBOL.
 1965: APL, SNOBOL, PL/1, BASIC.
 1970: PROLOG, ALGOL68, SIMULA67.
 1975: C, PASCAL.
 1980: MODULA-2, LIS, EUCLID.
 1985: ADA.

[Escriba texto] Página 18


Este tipo de sentencias introducen uno o más identificadores en un bloque. Ejemplo:

void foo (int x, y z) {


float f = 3.14;
char c;
int x;
...
}

Bloques de intento

Estas sentencias deben estar seguidas de una sentencia catch y tienen la forma:

try {
...
}

Sentencias (Programación).

Son las unidades ejecutable más pequeña de un programa, en otras palabras una línea de
código escrita es una sentencia. Especifican y controlan el flujo y orden de ejecución del
programa. Una sentencia consta de palabras clave o reservadas como (cout, cin, for,
while, if ... else,etc.), expresiones, declaraciones, o llamadas a funciones. Si no existen
sentencias específicas de selección o salto, el programa se ejecuta de forma secuencial en
el mismo orden en que se ha escrito el código fuente (es el que podríamos considerar
orden "natural" de ejecución).

2.1. Representación algorítmica de las sentencias de entrada.


Para indicar en un organigrama una sentencia de entrada se necesitan dos cosas: una es el
símbolo que representa la sentencia y otra es el lugar donde se va a almacenar la

[Escriba texto] Página 19


información de entrada. El símbolo de la sentencia se representa en la figura y el lugar
donde se va a guardar la información se especifica por el nombre de una variable que está
dentro del símbolo.

Símbolo grafico

variable AÑOS

Si queremos realizar un organigrama que represente la suma de los valores de dos


variables podríamos realizarlo de la siguiente manera:
 leer un dato numérico en la variable a
 leer un dato numérico en la variable b
 sumar las variables a y b y el resultado almacenarlo en la variable c el organigrama
para representar esta secuencia de pasos sería

C=a+b

En un organigrama no se suele indicar el tipo de información que contendrá las variables


que están dentro del símbolo de entrada, así no se especifica que las variables a y b son de
tipo numérico; no obstante cuando realicemos el programa en C sí se deberá especificar
con anterioridad el tipo de variable que vamos a utilizar.

Casi todos los programadores denominan a las variables de una sentencia de entrada
"variables de entrada", de esta forma expresan que esas variables son las que contendrán
la información que necesita el programa para trabajar y sin ellas el programa no

[Escriba texto] Página 20


funcionará. Así en el ejemplo anterior las variables de entrada serían a y b; si no
introducimos valores a esas variables el programa no funcionaría puesto que no tendría
datos para realizar la suma. Ya que las variables de entrada son tan importantes, el
programa no continuará su ejecución hasta que se hayan introducido los valores que
demandan las sentencias de entrada. Así en el ejemplo anterior el programa realizaría los
siguientes pasos:

1. Se detendría en la primera sentencia (leer un dato numérico en la variable a) y no


continuaría hasta que alguien introdujera por teclado un valor y a continuación
pulsara la tecla "return

2. El ordenador almacena en la variable a el valor que se ha tecleado en el paso


anterior.

3. El ordenador se detendría de nuevo en la segunda sentencia (leer un dato numérico en


la variable b) y no continuaría hasta que alguien introdujera por teclado un valor numérico
y a continuación pulsara la tecla "return".

4. El ordenador almacena en la variable b el valor que se ha tecleado en el paso anterior.

5. Finalmente el ordenador realizaría la suma de los valores de las variables a y b y


los almacenaría en la variable c.

Es posible expresar varias sentencias de entrada como una sola; es decir, se puede poner
una única sentencia de entrada con varias variables.

a,b

C=a+b

Los pasos que realizaría un ordenador ante este nuevo algoritmo serían los mismos que en
el algoritmo anterior; es decir:

1. Se detendría en la primera sentencia (leer un dato numérico en la variable


a) y no continuaría hasta que alguien introdujera por teclado un valor y a continuación
pulsara la tecla "return"

[Escriba texto] Página 21


2. El ordenador almacena en la variable a el valor que se a teclado en el paso anterior

3. el ordenador se detendrá de nuevo en la segunda sentencia (leer un dato numérico en


la variable b) y no continuaría hasta que alguien introdujera por teclado un valor numérico
y a continuación pulsara la tecla “return”

4. El ordenador almacena en la variable b el valor que se ha tecleado en el paso anterior.

5. Finalmente el ordenador realizaría la suma de los valores de las variables a y b y los


almacenaría en la variable c.
Observa que la ejecución del organigrama es la misma, así pues es lo mismo expresar la
lectura de información en varias variables a través de una única sentencia de entrada que
expresar una sentencia distinta para cada variable.

Recuerda que: cuando se ejecuta una sentencia de entrada, el ordenador detiene su


ejecución y no continúa hasta que se haya introducido por teclado un valor y pulsado la
tecla "return" (también denominada "enter" ó "intro").

Decíamos que cuando un ordenador ejecuta una sentencia de entrada "espera" a que se
introduzca un valor. Pero, ¿Cómo sabemos cuando el ordenador está esperando a que se
introduzca un valor?. Normalmente el ordenador presenta un símbolo en pantalla que
indica que está esperando a que se introduzca un valor; es decir, está detenido en una
sentencia de entrada. Este símbolo varía de unos lenguajes de programación a otros.
Cuando aparece este carácter indica que está en una sentencia de entrada esperando a
que el usuario teclee algún valor.

Cuando el carácter - aparece en pantalla ya sabemos que el ordenador está esperando a


que dé un valor, pero ¿Cómo sabe el usuario del programa qué valor tiene que dar? En el
programa para sumar el valor de dos variables es fácil saber qué valor está pidiendo el
ordenador: cuando aparezca el primer - estaremos dando el valor del primer sumando y
cuando aparezca el segundo – estaremos dando el valor al segundo sumando. En la
pantalla del ordenador aparecería:

_ 5

_ 6

Desgraciadamente los programas no son tan sencillos y tienen una gran cantidad de
sentencias de entrada y a menudo cuando aparece un - no sabemos qué valor debemos

[Escriba texto] Página 22


dar o para qué lo necesita el programa. Para evitar esto todos los programadores
profesionales ponen un texto indicativo que aparece antes del carácter - (esta acción se
denomina documentar la entrada).

Así para el caso de la suma de dos variables debería aparecer un texto indicativo antes de
cada símbolo - y la pantalla quedaría como sigue:

Introduce el primer sumando _ 5


Introduce el segundo sumando _ 6

La forma de expresar esto mediante organigramas es muy fácil, sencillamente pondremos


antes de la variable el texto que queremos que aparezca encerrado entre doble comillas, a
continuación una coma y después el nombre de la variable donde deseamos que se
almacene el valor. La figura indica la representación en el organigrama.

“introduce el valor del primer


sumando ”, a

“introduce el valor del segundo sumando ”, b

C=a+b

[Escriba texto] Página 23


Los pasos que realizaría el ordenador ante los organigramas de la figura serían los mismos
que los anteriores con la diferencia de que en lugar de aparecer un símbolo - cuando
tenemos que introducir un valor en la variable aparece el texto que precede a la variable y
el símbolo -.

Recuerda que: el carácter - (también denominado cursor) indica que el ordenador está
esperando por una información. Todos los progra-madores profesionales suelen poner un
texto antes de la variable de entrada para tener siempre referencias durante la ejecución
del programa de qué información debe suministrar al ordenador el usuario.

2.2. Representación algorítmica de las sentencias de salida.

Símbolo grafico

variable años

Para representar algorítmicamente una sentencia de salida se necesita (al igual que en las
sentencias de entrada) el símbolo que representa la sentencia y la información que se va a
enviar fuera del programa. El símbolo que representa una sentencia de salida es el que
muestra la figura nº 3.6. y la información que aparece dentro del símbolo es la que se
enviará fuera del programa.

La información que se puede enviar fuera del programa (por ejemplo a la pantalla) puede
ser cualquier tipo de expresión. Así la información puede ser una variable, en cuyo caso se
visualizará el contenido de la misma; puede ser una constante o una combinación de
ambas

Las sentencias de salida son importantes puesto que nos permiten ver los resultados de
los programas. Por ejemplo, el organigrama para realizar la suma de dos valores del
apartado anterior realizaría la suma y su valor lo almacenaría en la variable c pero el
usuario no vería el resultado de la suma por pantalla, sin embargo si al final del algoritmo
le añadimos una sentencia de salida para ver por pantalla el contenido de la variable c,
entonces sí podríamos ver el resultado de la suma. Las figuras nº 3.8. y 3.9. muestra esta
situación.

[Escriba texto] Página 24


El nuevo algoritmo sería el siguiente:
 leer un dato numérico en la variable a
 leer un dato numérico en la variable b
 sumar las variables a y b y el resultado almacenarlo en la variable c
 visualizar el contenido de la variable c

La mayoría de las sentencias de salida se emplean para que el usuario pueda ver la
información con la que está trabajando el programa, no obstante otras sentencias sirven
para enviar información de un programa a otro o entre diversas partes de un programa.

Las variables que están en una sentencia de salida se las suele denominar variables de
salida
en nuestro ejemplo c es una variable de salida

Al igual que las sentencias de entrada, es posible expresar varias sentencias de salida en
una sola, así si deseáramos escribir el contenido de las variables a, b y c lo podríamos
expresar en un solo símbolo algorítmico.
Recuerda que: Las sentencias de salida sirven para enviar información al exterior del
programa y su representación en un organigrama está compuesta por un símbolo que

[Escriba texto] Página 25


representa la sentencia de salida y dentro del símbolo la información que se va a enviar al
exterior del programa.
Anteriormente se decía que las sentencias de salida podían trabajar conjuntamente con
información variable y constante, este hecho se suele utilizar para documentar la salida. Si
un programa tiene muchas sentencias de salida puede llegar un momento que no
sepamos qué información es la que aparece por pantalla, por ejemplo al visualizar la
variable c en el organigrama de la suma aparecería un valor determinado (por ejemplo el
23), puede ser que el usuario del programa no sepa a qué se refiere ese valor; sin embargo
si en la pantalla aparece:

El valor de la suma de a y b es 23

En este caso se dice que la salida está documentada; es decir, indica cual es el origen del
valor. Esto se puede representar algorítmicamente en una misma sentencia de salida,
combinando la información variable y constante. La figura nº expresa los organigramas
empleados para obtener una salida documentada y sin documentar. La mayoría de los
programadores siempre documentan las variables de salida y es una práctica que se
aconseja que realice el lector.

Recuerda que: Las variables de salida se documentan para que en todo momento
sepamos el significado de la información que aparece por pantalla.

[Escriba texto] Página 26