Mathematics">
Concepto de Programa
Concepto de Programa
Concepto de Programa
Un programa de computadora es un conjunto de instrucciones que producirán la ejecución de una determinada tarea.
El proceso de programación es, por consiguiente, un proceso de solución de y el desarrollo de un programa requiere las
siguientes fases:
Tras la decisión de desarrollar un programa, el programador debe establecer el conjunto de especificaciones que debe contener
el programa: entrada, salida y algoritmos de resolución, que incluirán las técnicas para obtener las salidas a partir de las
entradas.
Conceptualmente un programa puede ser considerado como una caja negra, La caja negra o el algoritmo de resolución, es el
conjunto de códigos que transforman las entradas del programa (datos) en salidas (resultados).
El programador debe establecer de dónde provienen las entradas al programa. El proceso de introducir la información de
entrada en la memoria de la computadora se denomina entrada de datos, operación de lectura o acción de leer.
Las salidas de datos se deben presentar en dispositivos periféricos de salida: pantalla, impresoras, discos, etc. La operación de
salida de datos se conoce también como escritura o acción de escribir.
El proceso de diseño del algoritmo o posteriormente de codificación del programa consiste en definir las acciones o
instrucciones que resolverán el problema.
Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en el mismo orden en que han de
ejecutarse, es decir, en secuencia.
Un programa puede ser lineal o no lineal. Un programa es lineal si las instrucciones se ejecutan secuencialmente, sin
bifurcaciones, decisión ni comparaciones. En el caso del algoritmo las instrucciones se suelen conocer como acciones.
Tipos de instrucciones
Las instrucciones disponibles en un lenguaje de programación dependen del tipo de lenguaje. Las instrucciones básicas son
independientes del lenguaje. La clasificación más usual, desde el punto de vista anterior, es:
1. instrucciones de inicio/fin,
2. instrucciones de asignación,
3. instrucciones de lectura,
4. instrucciones de escritura,
5. instrucciones de bifurcación.
Instrucciones de lectura de datos (entrada)
NÚMERO ← 12325
HORAS ← 32
TASA ← 1200
Estas instrucciones se escriben en un dispositivo de salida. Explicar el resultado de la ejecución de las siguientes instrucciones:
A ← 100
B ← 200
C ← 300
Instrucciones de bifurcación
El desarrollo lineal de un programa se interrumpe cuando se ejecuta una bifurcación. Las bifurcaciones pueden ser, según el
punto del programa a donde se bifurca, hacia adelante o hacia atrás.
Las bifurcaciones en el flujo de un programa se realizarán de modo condicional en función del resultado de la evaluación de la
condición.
Bifurcación incondicional: la bifurcación se realiza siempre que el flujo del programa pase por la instrucción sin necesidad
del cumplimiento de ninguna condición.
Bifurcación condicional: la bifurcación depende del cumplimiento de una determinada condición. Si se cumple la
condición, el flujo sigue ejecutando la acción F2. Si no se cumple, se ejecuta la acción F1
En programación se debe separar la diferencia entre el diseño del algoritmo y su implementación en u lenguaje específico. Por
ello, se debe distinguir claramente entre los conceptos de programación y el medio en que ellos se implementan en un lenguaje
específico.
Los lenguajes de programación tienen elementos básicos que se utilizan 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.
Palabras Reservadas
Identificadores
Caracteres Especiales
Constantes,
Variables,
Expresiones,
Instrucciones.
Además de estos elementos básicos, existen otros elementos que forman parte de los programas, cuya comprensión y
funcionamiento será vital para el correcto diseño de un algoritmo y naturalmente la codificación del programa.
Bucles,
Contadores,
Acumuladores,
Interruptores,
Estructuras:
a) Secuenciales.
b) Selectivas.
c) Repetitivas.
El primer objetivo de toda computadora es el manejo de la información o datos. Estos datos pueden ser las cifras de ventas de
un supermercado o las calificaciones de una clase.
Un dato es la expresión general que describe los objetos con los cuales opera una computadora. La mayoría de las
computadoras pueden trabajar con varios tipos (modos) de datos.
Los algoritmos y los programas correspondientes operan sobre esos tipos de datos.
En el proceso de resolución de problemas el diseño de la estructura de datos es tan importante como el diseño del algoritmo y
del programa que se basa en el mismo.
Un programa de computadora opera sobre datos. En los lenguajes de programación los datos deben de ser de un tipo de dato
específico. El tipo de datos determina cómo se representan los datos en la computadora y los diferentes procesos que dicha
computadora realiza con ellos.
Los distintos tipos de datos se representan en diferentes formas en la computadora. A nivel de máquina, un dato es un conjunto
o secuencia de bits (dígitos 0 o 1).
Los lenguajes de alto nivel permiten basarse en abstracciones e ignorar los detalles de la representación interna. Aparece el
concepto de tipo de datos, así como su representación. Los tipos de datos básicos son los siguientes:
Complejos
Enumerados (Enumerated)
Subrango (Subrange).
Datos numéricos
El tipo numérico es el conjunto de los valores numéricos. Estos pueden representarse en dos formas distintas:
Es un subconjunto finito de los números enteros. Los enteros son números completos, no tienen componentes fraccionarios o
decimales y pueden ser negativos o positivos.
Los números enteros se pueden representar en 8, 16 o 32 bits, e incluso 64 bits, y eso da origen a una escala de enteros cuyos
rangos dependen de cada máquina
Consiste en un subconjunto de los números reales. Los números reales siempre tienen un pun- to decimal y pueden ser
positivos o negativos. Un número real consta de un entero y una parte decimal.
Los tipos de datos reales se representan en coma o punto flotante y suelen ser de simple precisión, doble precisión o cuádruple
precisión y suelen requerir 4 bytes, 8 bytes o 10-12 bytes, respectivamente.
El tipo lógico es aquel dato que sólo puede tomar uno de dos valores: cierto o verdadero (true) y falso (false).
Este tipo de datos se utiliza para representar las alternativas (sí/no) a determinadas condiciones. Por ejemplo, cuando se pide si
un valor entero es par, la respuesta será verdadera o falsa, según sea par o impar.
Un dato tipo carácter contiene un solo carácter. Los caracteres que reconocen las diferentes computadoras no son estándar; sin
embargo, la mayoría reconoce los siguientes caracteres alfabéticos y numéricos:
Caracteres Alfabéticos
Caracteres Numéricos
Caracteres Especiales
Una cadena (string) de caracteres es una sucesión de caracteres que se encuentran delimitados por una comilla (apóstrofo)
o dobles comillas, según el tipo de lenguaje de programación.
La longitud de una cadena de caracteres es el número de ellos comprendidos entre los separadores o limitadores. Algunos
lenguajes tienen datos tipo cadena.
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. De igual forma, existen otros valores que cambiarán durante la ejecución del programa; a estos
valores se les llama variables.
Una constante es un dato que permanece sin cambios durante todo el desarrollo del algoritmo o durante la ejecución del
programa.
Una constante tipo carácter o constante de caracteres consiste en un carácter válido encerrado dentro de apóstrofos; por
ejemplo, 'B', '+', '4', ';'
Una secuencia de caracteres se denomina normalmente una cadena y una constante tipo cadena es una cadena encerrada
entre apóstrofos.
La mayoría de los lenguajes de programación permiten diferentes tipos de constantes: enteras, reales, caracteres y boolean o
lógicas, y representan datos de esos tipos.
Una variable es un objeto o tipo de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecución del
programa.
Dependiendo del lenguaje, hay diferentes tipos de variables, tales como enteras, reales, carácter, lógicas y de cadena.
Una variable que es de un cierto tipo puede tomar únicamente valores de ese tipo. Si se intenta asignar un valor de un tipo a
una variable de otro tipo se producirá un error de tipo. Una variable se identifica por los siguientes atributos: nombre que lo
asigna y tipo que describe el uso de la variable.
Los nombres de las variables elegidas para el algoritmo o el programa deben ser significativos y tener relación con el objeto de
que representan, como pueden ser los casos siguientes:
Normalmente los identificadores de las variables y de las constantes con nombre deben ser declaradas en los programas antes
de ser utilizadas. La sintaxis de la declaración de una variable suele ser: <tipo_de_dato> <nombre_variable> [=<expresión>]
Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones
especiales. Las mismas ideas son utilizadas en notación matemática tradicional
Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de
las operaciones indicadas.
Una expresión consta de operandos y operadores. Según sea el tipo de objetos que manipulan, las expresiones se clasifican en:
Aritméticas,
Relacionales,
Lógicas,
Carácter.
El resultado de la expresión aritmética es de tipo numérico; el resultado de la expresión relacional y de una expresión lógica es
de tipo lógico; el resultado de una expresión carácter es de tipo carácter.
Expresiones aritméticas
Las expresiones aritméticas son análogas a las fórmulas matemáticas. Las variables y constantes son numéricas y las
operaciones son las aritméticas.
+ (suma)
- (resta)
(multiplicación)
/ (división)
↑, **, ^ (exponenciación)
div, / (división entera)
mod, % (módulo resto)
Los símbolos +, –, *, ^ (↑ o **) y las palabras clave div y mod se conocen como operadores aritméticos.
El símbolo / se utiliza para la división real y la división entera. El operador mod representa el resto de la división entera, y la
mayoría de los lenguajes utilizan el símbolo %.
A div B
Sólo se puede utilizar si A y B son expresiones enteras y obtiene la parte entera de A/B.
Los lenguajes de programación C/C++, Java y C# soportan los operadores unitarios (unarios) de incremento, ++, y
decremento, --.
El valor resultante dependerá de que el operador se emplee como prefijo o como sufijo Si actúa como prefijo, el operador
cambia el valor de la variable y devuelve este nuevo valor; en caso contrario, si actúa como sufijo, el resultado de la expresión
es el valor de la variable, y después se modifica esta variable.
Reglas de prioridad
Las expresiones que tienen dos o más operandos requieren unas reglas matemáticas que permitan determinar el orden de las
operaciones, se denominan reglas de prioridad o precedencia y son:
Un segundo tipo de expresiones es la expresión lógica o booleana, cuyo valor es siempre verdadero o falso. Recuerde que
existen dos constantes lógicas, verdadera (true) y falsa (false) y que las variables lógicas pueden tomar sólo estos dos valores.
Las expresiones lógicas se forman combinando constantes lógicas, variables y otras expresiones lógicas, utilizando los
operadores lógicos not, and y or y los operadores relacionales =, <, >, <=, >=, <>.
Operadores de relación
Los operadores relacionales o de relación permiten realizar comparaciones de valores de tipo numérico o carácter.
Los operadores de relación sirven para expresar las condiciones en los algoritmos. El formato general para las comparaciones
es:
expresión1 Operador De Relación expresión2
Operadores de relación
Operador Significado
< menor que
> mayor que
=, == igual que
<= menor o igual que
>= mayor o igual que
<>, != distinto de
Para realizar comparaciones de datos tipo carácter, se requiere una secuencia de ordenación de los caracteres similar al orden
creciente o decreciente.
Esta ordenación suele ser alfabética, tanto mayúsculas como minúsculas, y numérica, considerándolas de modo independiente.
Pero si se consideran caracteres mixtos, se debe recurrir a un código normalizado como es el ASCII.
Cuando se utilizan los operadores de relación, con valores lógicos, la constante false (falsa) es menor que el constante true
(verdadera).
Si se utilizan los operadores relacionales = y <> para comparar cantidades numéricas, es importante recordar que la mayoría de
los valores reales no pueden ser almacenados exactamente.
En consecuencia, las expresiones lógicas formales con comparación de cantidades reales con (=), a veces se evalúan como
falsas, incluso aunque estas cantidades sean algebraicamente iguales.
Operadores lógicos
Los operadores lógicos o booleanos básicos son not (no), and (y) y or (o).
Operadores lógicos
o (o), || p o q (p o q) disyunción de p y q
Los operadores aritméticos seguían un orden específico de prioridad cuando existía más de un operador en las expresiones. De
modo similar, los operadores lógicos y relaciones tienen un orden de prioridad.
Prioridad de operadores (lenguaje Pascal)
Operador Prioridad
+, -, o (or)
Operador Prioridad
+, - (suma, resta)
|| (o lógica, or)
Funciones Internas
Las operaciones que se requieren en los programas exigen en numerosas ocasiones, además de las operaciones de las
operaciones aritméticas básicas, ya tratadas, un número determinado de operadores especiales que se denominan funciones
internas, incorporadas o estándar.
Funciones internas
La Operación De Asignación
La operación de asignación es el modo de almacenar valores a una variable. La operación de asignación se represen- ta
con el símbolo u operador ← en la mayoría de los lenguajes de programación, como C, C++, Java, el signo de la
operación asignación es =.
La operación de asignación se conoce como instrucción o sentencia de asignación cuan- do se refiere a un lenguaje de
programación. El formato general de una operación de asignación es expresión es igual a expresión, variable o constante
La acción de asignar es destructiva, ya que el valor que tuviera la variable antes de la asignación se pierde y se reemplaza
por el nuevo valor. Así, en la secuencia de operaciones
Asignación Aritmética
Asignación lógica
La expresión que se evalúa en la operación de asignación es lógica. Supóngase que M, N y P son variables de tipo lógico.
M←8<5
N ← M o (7 <= 12) P ← 7 > 6
Tras evaluar las operaciones anteriores, las variables M, N y P tomarán los valores falso, verdadero, verdadero.
La acción de asignación anterior asigna la cadena de caracteres '12 de octubre de 1942' a la variable tipo cadena x.
Asignación múltiple
Todos los lenguajes modernos admiten asignaciones múltiples y con combinaciones de operadores, además de la
asignación única con el operador ←. Así se puede usar el operador de asignación (←) precedido por cualquiera de los
siguientes operadores aritméticos: +, –, *, /, %. La sintaxis es la siguiente:
Y es equivalente a:
Conversión de tipo
En las asignaciones no se pueden asignar valores a una variable de un tipo incompatible al suyo. Se presentará un error si
se trata de asignar valores de tipo carácter a una variable o un valor numéricos a una variable tipo carácter.
Los cálculos que realizan las computadoras requieren para ser útiles la entrada de los datos necesarios para ejecutar las
operaciones que posteriormente se convertirán en resultados, es decir, salida.
Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas variables. Esta entrada se
conoce como operación de lectura (read).
En la escritura de algoritmos las acciones de lectura y escritura se representan por los formatos siguientes:
Escritura De Algoritmos/Programas
La escritura de un algoritmo mediante una herramienta de programación debe ser lo más clara posible y estructurada, de
modo que su lectura facilite considerablemente el entendimiento del algoritmo y su posterior codificación en un lenguaje
de programación.
La cabecera de programa es una acción simple que comienza con la palabra algoritmo. Esta palabra estará seguida por el
nombre asignado al programa completo.
El bloque algoritmo es el resto del programa y consta de dos componentes o secciones: las acciones de declaración y
las acciones ejecutables.
Las declaraciones definen o declaran las variables y constantes que tengan nombres. Las acciones ejecutables son las
acciones que posteriormente deberá realizar la computación cuando el algoritmo convertido en programa se ejecute.
Todos los algoritmos y programas deben comenzar con una cabecera en la que se exprese el identificador o nombre
correspondiente con la palabra reservada que señale el lenguaje.
En los lenguajes de programación, la palabra reservada suele ser program. En Algorítmica se denomina algoritmo.
Declaración de variables
En esta sección se declaran o describen todas las variables utilizadas en el algoritmo, listándose sus nombres y
especificando sus tipos. Esta sección comienza con la palabra reservada var y tiene el formato
donde cada lista de variables es una variable simple o una lista de variables separadas por comas y cada tipo es uno de los
tipos de datos básicos (entero, real, char o boolean).
En esta sección se declaran todas las constantes que tengan nombre. Su formato es
Const
Pi = 3.141592
tamaño = 43
horas = 6.50
Las constantes de carácter simple y cadenas de caracteres pueden ser declaradas en la sección del programa const, al
igual que las constantes numéricas.
const
estrella = '*'
frase = '12 de
octubre' mensaje = 'Hola mi
nene'
Comentarios
La documentación de un programa es el conjunto de información interna externa al programa, que facilitará su posterior
mantenimiento y puesta a punto. La documentación puede ser:
La documentación externa es aquella que se realiza externamente al programa y con fines de mantenimiento y
actualización; es muy importante en las fases posteriores a la puesta en marcha inicial de un programa.
La documentación interna es la que se acompaña en el código o programa fuente y se realiza a base de comentarios
significativos. Estos comentarios se representan con diferentes notaciones, según el tipo de lenguaje de programación.
El método que seguiremos normalmente a lo largo del libro para escribir algoritmos será el descrito al comienzo del
Apartado
algoritmo identificador //cabecera
// sección de declaraciones
var tipo de datos: lista de identificadores
const lista de identificadores = valor
inicio
<sentencia S1>
<sentencia S2> // cuerpo del algoritmo
.
.
.
<sentencia Sn>
fin