Вы находитесь на странице: 1из 26

Para empezar a entender lo que es la programación, primero tenemos que

tener ciertos conocimientos sobre todo lo que la rodea.

Empezaremos con unas definiciones un poco técnicas, pero que son imprescindibles
para el aprendizaje.

Tecnología

Dentro del campo que nos interesa a nosotros, la tecnología tiene el objetivo de
eliminar las tareas repetitivas, facilitando el trabajo y haciéndolo más eficiente así
como aumentando la productividad y los beneficios de la empresa.

Programación

La programación es una de las etapas más importantes del ciclo de vida de un


proyecto (explicaremos más adelante lo que es este termino), y requiere un
método de trabajo. La programación es el resultado de dicho trabajo.
La programación es el instrumento que permite la ejecución de las tareas
automatizadas de un sistema informático.
Las herramientas que utilizaremos para programar son los lenguajes de
programación, a través de las cuales codificaremos los programas.

Programa

Conjunto de instrucciones entendibles por el ordenador que permiten realizar un


trabajo o resolver un problema.
Un programa debe ser finito, es decir, tiene que tener un inicio y un fin. Tiene que
estar bien confeccionado para que, al introducir un dato, salga una solución y si se
volviese a introducir el mismo dato, saliese de nuevo la misma solución.

Metodología de la programación

Se entiende como metodología de la programación al conjunto de normas, métodos


y anotaciones que nos indican la forma de programar.
Cada lenguaje de programación sigue una metodología distinta.

Lenguaje de programación
Es un conjunto de reglas semánticas así como sintácticas que los programadores
usan para la codificación de instrucciones de un programa o algoritmo de
programación.
Existen varios lenguajes de programación.

Entorno de programación o entorno de desarrollo

Es el conjunto de herramientas utilizadas para la elaboración de un programa.

Recursos

Conjunto de componentes hardware que utilizaremos para la elaboración de un


programa (cpu, disco duro…..).

Una vez conocidos los conceptos básicos necesarios para el aprendizaje de la


programación podemos empezar a ver los diferentes tipos de lenguajes de
programación.
Explicamos el proceso más importante a la hora de hacer funcionar un
programa realizado en lenguajes de alto y medio nivel.

Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en


realidad es el código fuente de ese programa.

Este código fuente debe ser traducido a binario para que las instrucciones que
contienen puedan ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado
traductor del lenguaje.

Estos traductores pueden ser de dos tipos:

Ensambladores

Son los encargados de traducir los programas escritos en lenguaje ensamblador a


lenguaje máquina.

Compiladores

Son programas que leen el código fuente y lo traducen o convierten a otro


lenguaje. Estos programas te muestran los errores existentes en el código fuente.

Etapas del proceso de compilación:

1. Edición. Esta fase consiste en escribir el programa empleando algún


lenguaje y un editor. Como resultado nos dará el código fuente de nuestro
programa.
2. Compilación. En esta fase se traduce el código fuente obtenido en la fase
anterior a código máquina. Si no se produce ningún error se obtiene el
código objeto.
En caso de errores el compilador los mostraría para ayudarnos a corregirlos
y se procedería a su compilación de nuevo, una vez corregidos.
3. Linkado. Esta fase consiste en unir el archivo generado en la fase dos con
determinadas rutinas internas del lenguaje, obteniendo el programa
ejecutable.
Existen dos tipos de linkados:

o linkado estático: Los binarios de las librerías se añaden a nuestros


binarios compilados generando el archivo ejecutable.
o Linkado dinámico: no se añaden las librerías a nuestro binario sino
que hará que se carguen en memoria las librerías que en ese
momento se necesiten.

Una vez traducido, compilado y linkado el archivo esta listo para su ejecución
donde también podrán surgir problemas y fallos, para los cuales tendríamos que
volver a realizar todo el proceso anteriormente citado, de modo que puedan ser
corregidos.

Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución


antes de presentar el programa al cliente.

Otro sistema para la ejecución de nuestro código fuente es mediante el uso de


intérpretes (estos no se encontrarían dentro de los traductores).

Intérpretes

Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un


intérprete lee el código fuente y lo va ejecutando al mismo tiempo.

Las diferencias entre un compilador y un intérprete básicamente son:

 Un programa compilado puede funcionar por si solo mientras que un código


traducido por un intérprete no puede funcionar sin éste.
 Un programa traducido por un intérprete puede ser ejecutado en cualquier
máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
 Un archivo compilado es mucho más rápido que uno interpretado.

Importancia del manejo de los bits en el mundo de la programación.

Como bien es conocido un Byte es la agrupación de 8 bits respectivamente, cada bit


forma parte del sistema de numeración Binario a quien debe su nombre, es decir de
base 2 en otras palabras puede almacenar valores comprendidos entre 0 y 1.

Si bien recordamos que un sistema de numeración se conforma de un conjunto de


reglas y principios que permite expresar o definir un número valido dentro del
mismo, podemos afirmar que la mayoría de ellos (Sistemas: binarios, octanos,
decimales hexadecimales, etc..) se pueden representar mediante un polinomio
sencillo que nos permitirá entender su lógica:

Número = N*basen + N*basen-1+ N*basen-2 hasta que base quede elevado a la 0


siempre y cuando no contenga decimales el "Número"
Donde Número es el valor expresado dentro del sistema, base como su nombre lo
indica la base del sistema (si es binario : 2 , octano: 8, decimal: 10, hexadecimal :
16, etc…) y n la posición que ocupa el digito "N" dentro del Número.

Ejemplos en sistema decimal (base: 10):

18598 1*10 4
+ 8*10 3
+ 5*10 2 + 9*10 1 + 8*10 0

Hemos descompuesto el valor expresado "18598" multiplicándolo por la base del


sistema (10) elevada a la posición del digito en la expresión.

El número 1 se encuentra iniciando la expresión y guarda en su interior 10 000


(Para comprobarlo: si eliminamos el 1 el resultado será (18598-10 000)) por lo
tanto 10 000 es igual a 10 4 (1*104)=10 000 + (8*103)= 8 000…

En el sistema de numeración binario la misma formula es aplicable:

10 (número binario) = 1*2 1


+ 0*2 0

Lo que indica que 10, en el sistema decimal es igual 2, en realidad en el sistema de


numeración binario se puede definir cualquier número entero mayor o igual a 0, sin
embargo la estructura de almacenamiento Byte solo fue diseñada desde su origen
para almacenar hasta 256 porque incluye como máximo 8 bits (28 = 256)
(recordemos que se toma en cuenta el 0 por lo cual 255 equivaldrá a 256) y se
escogió este valor como máximo porque es la totalidad de caracteres disponibles en
la tabla ASCII, que incluye todos los caracteres validos dentro de un computador,
para comprobar esto podemos guardar un carácter en un archivo sin formato y
como resultado tendremos que siempre ocupará 1 byte, si colocamos 2 caracteres
el tamaño del archivo será igual a 2 bytes. Lo que justifica que 1 byte = 8 bits =
puede almacenar hasta 256. y 1 bit es la mínima unidad en la que se puede
almacenar información, Ejemplo: el tipo booleano (bool) ocupa en memoria 1 bit,
por tanto TRUE = 1 FALSE=0.

Por esta razón la mayoría de los hardwares con capacidad de almacenamiento tales
como Discos duros, memorias, y otros dispositivos; su capacidad siempre será
divisible entre 2 , al igual que las demás estructuras de almacenamiento ( Kb, Mb,
Gb, Tb, etc)

Como refería anteriormente, la tabla ASCII incluye todos los caracteres validos
dentro del computador, desde todas las letras en minúsculas y mayúsculas,
números y otros especiales, estos últimos utilizados en su mayoría como
delimitadores o separadores guía dentro de un formato de archivo de contenido
binario (PDF, DOC, EXE, DLL, OCX, ENTRE OTROS) Ejemplo de delimitadores: La
dirección IP incluye 4 pares de cuyo valor máximo es 255 para poder representarlo
en decimal se hace más que necesario, obligatorio el uso de delimitadores por lo
cual se emplea un ". (Punto)" de modo tal que 255.255.255.255, para reducir esta
información a 4 bytes podremos acudir a la tabla ASCII.

Por ejemplo el carácter "A" dentro de la tabla ASCII en el sistema decimal ocupa
64, podemos ejecutar una función ampliamente reconocida por lenguajes de
programación entre ellos (Delphi, C++, VB, Php, etc) llamada ORD que producirá
como resultado de ord(64) "A" si por el contrario ejecutamos chr('A') es resultado
será 64 en decimal, el cual representado en binario equivaldría a "1000000" ,
auque 64 no ocupe físicamente los 255 (1 byte completo) su tamaño en disco
siempre será 1 byte, porque la mayoría de sistemas operativos y hardware desde
su ensamblaje esta orientados para reservar un mínimo de espacio en memoria y
en disco tomando en cuenta que ese valor puede ser modificado a 255 (máximo) ó
0 (mínimo) en cualquier momento.

Por tanto podemos decir que un bit tiene un valor de acuerdo a su posición ó
ubicación y para hallar ese valor solo tenemos que descomponer 255.

128 62 32 16 8 4 2 1
1 2 3 4 5 6 7 8(bits)
Como comentábamos anteriormente el bit se conforma de 0 y 1 respectivamente
por tanto afirmaremos a partir de ahora que 0 ES IGUAL A FALSO (false) Y 1 ES
IGUAL A VERDADERO (true) si tenemos un conjunto de 8 bits lo sumaremos según
su posición, siempre y cuando el bit sea VERDADERO es decir su contenido sea
igual a 1, ejemplo: dado los bits "10111011" para convertirlo a decimal aplicamos
la tabla:

128 62 32 16 8 4 2 1
1 0 1 1 1 0 1 1

Y posteriormente sumamos solo los valores que son "VERDADEROS" entonces:


128+32+16+8+2+1=187 ¡Enhorabuena 10111011=187!, entonces podemos decir
que para almacenar 256 necesitaremos que los 8 bits sean verdaderos es decir 8
bits y ya tendemos nuestro byte.

Para hacer el proceso contrario es decir de decimales a binario, solo tenemos que
descomponer el decimal dividiéndolo siempre entre 2 hasta que el valor sea igual a
1, la agrupación de los residuos obtenidos será nuestro valor binario; obviamente
los residuos siempre serán (0 ó 1).

Los bits son ampliamente utilizados para codificar datos, comprimir información,
etc. Por ejemplo el formato de imágenes diseñado por Microsoft (.BMP) calcula el
área de la imagen es decir base por altura ó lo que es igual a ancho por alto la cual
asume como la cantidad de puntos disponibles, estos puntos a su vez almacenan
un color hexadecimal de 3 pares conocido como RGB que almacena los colores
ROJOS, VERDE Y AZUL, por lo cual para el almacenamiento del color emplea 3
bytes (255,255,255) y los escribe con ASCII , por cada punto , lo que indica si una
imagen es de 10 px x 10 px empleará 300 bytes para almacenar los puntos y otros
adicionales que guardan información de propiedades y características de esencial
importancia. Utilizando bytes delimitadores o separadores en caso de no conocer el
final del valor, es decir si la cantidad de bytes a emplear por la cabecera del
formato (que contiene información) se desconoce ó puede variar dependiendo de
factores, se hace indispensable el uso de delimitadores (ASCII DEFINIDOS COMO
DELIMITADORES), si por el contrario siempre se situará entre los bytes 10 y 20 por
ejemplo (no será necesario). Por tal motivo cuando leemos un archivo (con un
programa desarrollado por nosotros) debemos especificar cuantos bytes leeremos
por cada secuencia, en el caso de los colores del formato (BMP) bastara con leer de
3 en 3, cabe destacar que un archivo se puede leer hasta 1024 es decir 1 KB de
secuencia que equivale a una línea de información, a partir de esa base se han
diseñado mecanismos de comprensión que agrupa los bits repetido en matrices o
arrays.

Para hacer posible este manejo existen algunos operadores similares a los de lógica
( OR, AND, NOT, XOR, ETC…) mejor conocidos como operadores bit a bit.

Desplazando bits:

Podemos definirlo como la acción de transportar bytes de un extremo de la


expresión a otro, como la expresión esta conformada por 2 solo puede hacerse en
dos sentidos, izquierda y derecha.

a. Desplazando bits a la izquierda (<<)


Consiste en mover la cantidad de bit indicada en la expresión, de la
izquierda a la derecha, esta operación equivale a multiplicar por 2.
Por ejemplo:
16 <<2 desplazaremos 2 bits de la izquierda a la derecha
16 en binario equivale a 00010000 por lo cual moveremos los dos primeros
bits a la parte de atrás del numero (derecha) de tal modo que quedará
01000000 lo cual equivale a 64.

Por tanto si multiplicamos

(16*2)=32 (32*2)=64
1 bit 2 bits

b.
c. Desplazando bits a la derecha (>>)
Consiste en mover la cantidad de bit indicada en la expresión, de la derecha
a la izquierda, esta operación equivale a dividir por 2.

Por ejemplo:

128 >>4 desplazaremos 4 bits de la derecha a la izquierda.


128 en binario es igual a: 10000000, moveremos los últimos 4 bits a la
parte inicial ( de derecha a izquierda) , el resultado será 00001000 cuyo
valor es igual a 8

por tanto si dividimos

(128 / 2)=64 (64/2)=32 (32/2)=16 (16/2)=8


1 bit 2 bits 3 bits 4 bits

d.
Se emplea 2 por ser la base del sistema de numeración binario.

Operador de lógica OR |

Recordemos que llamaremos 0 en binario False y 1 True, entonces el operador OR

Evaluara las expresiones y producirá TRUE es decir 1 solo si el uno de los 2 bits a
comparar es igual a 1. Ejemplo:

Expresión: 5 | 12
5 en binario es igual a 00000101
12 en binario = 00001100
Resultado : 00001101 = 13

Solo si un par de los bits a comparar es 1 el resultado será 1, se comporta


exactamente igual a una condición: (true || false) es igual a true; (false || false) es
igual a false, su razón se debe a que la condición de dos o más argumentos se
transforma siempre a binarios para realizar la comparación utilizando el procesador
y la memoria de computador.

Operador de lógica AND &

Solo si el par de bits a comparar es igual a 1 el resultado será 1.


Expresión: 5 & 12
5 en binario es igual a 00000101
12 en binario = 00001100
Resultado : 00000100 = 4

Es similar a (TRUE && TRUE) es igual a true, (False && True) es igual a false.

Operador XOR ^

Solo si el par de bits a comparar es diferente será igual a 1.


Expresión: 5 ^ 12
5 en binario es igual a 00000101
12 en binario = 00001100
Resultado : 00001001 = 9

Similar a (TRUE XOR FALSE) es igual a true, ( TRUE XOR TRUE) es igual a false.

Operador Not ~

Solo si el bit a comparar es igual a 0 (False) será igual a 1.


Expresión: ~5
5 en binario es igual a 00000101
Resultado : 00000010 = 2

Similar a (!FALSE) es igual a true

Importancia del manejo de los bits

Como programador daré una opinión muy personal, se hace indispensable en la


construcción de aplicaciones a gran escala el desarrollo formatos personales
basados en esquemas que almacenan la información empleada de modo
comprimido para la utilización de un o unos recursos de nuestra aplicación,
permitiéndole al usuario final mayor comodidad y seguridad durante el transporte
de la información y ofreciéndole la capacidad de hacerlas compatibles con otras
aplicaciones, y dejar a un lado (dependiendo del objetivo) el típico uso de bases de
datos que requieren recursos adicionales del computador además de
interpretadores, etc. Considero que la información redactada contribuye
considerablemente a encaminar vuestros esfuerzos en esa dirección.

Concuclusión:

Podemos decir que el computador sin software solo tiene capacidades para hacer
operaciones aritméticas simples (sumas, restas, multiplicación, etc…)
Y es el software que valiéndose se esas simples operaciones con procesos como los
antes explicados puede crear la interfaz como de la que hoy disfrutamos en materia
de Sistemas Operativos, todos los lenguajes desde los más altos como Php hasta
los más bajos como Assembler pasan por binario, cada vez que movemos el Mouse
eso esta produciendo un procesamiento de datos binarios, en fin, orienta tus
esfuerzos como programador a reducir al máximo el consumo de recursos, seguro
lograras una suma consumiendo menor cantidad de recursos que lo habitual.
Existen varias clases de programación, dependiendo de los métodos
utilizados y las técnicas empleadas.

Los tipos o técnicas de programación son bastante variados, aunque puede que
muchos de los lectores sólo conozcan una metodología para realizar programas. En
la mayoría de los casos, las técnicas se centran en programación modular y
programación estructurada, pero existen otros tipos de programación. Los
explicaremos a lo largo del artículo.

Programación estructurada (PE)

La programación estructurada esta compuesta por un conjunto de técnicas que han


ido evolucionando aumentando considerablemente la productividad del programa
reduciendo el tiempo de depuración y mantenimiento del mismo.

Esta programación estructurada utiliza un número limitado de estructuras de


control, reduciendo así considerablemente los errores.

Esta técnica incorpora:

 Diseño descendente (top-dow): el problema se descompone en etapas o


estructuras jerárquicas.
 Recursos abstractos (simplicidad): consiste en descompones las acciones
complejas en otras más simples capaces de ser resueltas con mayor
facilidad.
 Estructuras básicas: existen tres tipos de estructuras básicas:
o Estructuras secuénciales: cada acción sigue a otra acción
secuencialmente. La salida de una acción es la entrada de otra.
o Estructuras selectivas: en estas estructuras se evalúan las
condiciones y en función del resultado de las mismas se realizan unas
acciones u otras. Se utilizan expresiones lógicas.
o Estructuras repetitivas: son secuencias de instrucciones que se
repiten un número determinado de veces.

Las principales ventajas de la programación estructurada son:

 Los programas son mas fáciles de entender


 Se reduce la complejidad de las pruebas
 Aumenta la productividad del programador
 Los programas queden mejor documentados internamente.

Un programa esta estructurado si posee un único punto de entrada y sólo uno de


salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por
último, que todas las instrucciones son ejecutables sin que aparezcan bucles
infinitos.

Programación modular

En la programación modular consta de varias secciones dividas de forma que


interactúan a través de llamadas a procedimientos, que integran el programa en su
totalidad.

En la programación modular, el programa principal coordina las llamadas a los


módulos secundarios y pasa los datos necesarios en forma de parámetros.

A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o
funciones.

Programación orientada a objetos (POO)

Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo


de los programas gracias a la reutilización de los objetos.

El elemento principal de la programación orientada a objetos es el objeto.


El objeto es un conjunto complejo de datos y programas que poseen estructura y
forman parte de una organización.
Un objeto contiene varios datos bien estructurados y pueden ser visibles o no
dependiendo del programador y las acciones del programa en ese momento.

El polimorfismo y la herencia son unas de sus principales características y por ello


dedicaremos más adelante un artículo exclusivamente a tratar estos dos términos.

En DesarrolloWeb.com hemos publicado anteriormente una explicación de lo que es


la programación orientada a objetos.

Programación concurrente

Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a
la vez.

Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de


forma simultanea.

Se trata de una programación más lenta y laboriosa, obteniendo unos resultados


lentos en las acciones.

Programación funcional

Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de


otras funciones.

Programación lógica

Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se


trata de una programación basada en el cálculo de predicados (una teoría
matemática que permite lograr que un ordenador basándose en hecho y reglas
lógicas, pueda dar soluciones inteligentes).
En este artículo y los sucesivos veremos las herramientas y técnicas que
nos ayudan a diseñar algoritmos para la resolución de los problemas en la
programación estructurada.

Estructuras de un programa

Un programa se va a dividir en 3 partes claramente diferenciadas:

 procesos de entrada
 proceso de datos
 procesos de salida

Todo programa esta constituido por un conjunto de instrucciones capaces de


gestionar un conjunto de datos.

Algoritmos

Un algoritmo es la descripción abstracta de todas las acciones que debe realizar un


ordenador, que nos conduce a la solución del problema.
Debe ser conciso y detallado, así como finito, pero sobre todo tiene que ser claro y
lo más sencillo posible.

Herramientas y técnicas para el diseño de algoritmos

Para el diseño de algoritmos lo que más se utiliza son los diagramas de flujos.

Diagramas de flujo

Los diagramas de flujo son representaciones gráficas que mediante el uso de


símbolos unidos mediante líneas de flujo, muestran la secuencia lógica que se debe
suceder para la solución del problema.
Los diagramas de flujo deber ser independientes del lenguaje de programación
empleado, deben ser flexibles y sencillos.
Por otro lado tienen que estar normalizados con algún estándar como puede ser el
ISO (a nivel mundial), ANSI (a nivel americano) o el IEEE ( a nivel europeo)

Existen 3 tipos de diagramas de flujos:

 Organigramas: Representación gráfica sencilla con los elementos que


representas las entradas y salida de datos del programa
 Ordinograma: Representación gráfica con secuencias lógicas y detalladas de
todos los pasos a seguir para la resolución del algoritmo.
 Pseudocódigo: Lenguaje intermedio entre el natural y el de programación
que representa mediante la palabra la solución del algoritmo.

Dentro de estos tres los más utilizados son los ordinogramas o pseudocódigos, ya
que son los que más ayudan a los programadores a la hora de pasar esos
algoritmos a los distintos lenguajes de programación.

En los siguientes artículos profundizaremos más en cada uno de ellos y


aprenderemos a construirlos y leerlos para su posterior paso al lenguaje de
programación requerido.
Explicamos lo que son, cómo se construyen y las representaciones gráficas
utilizadas para su construcción.

Un organigrama es una representación gráfica que presenta las entradas y salidas


de datos al programa.

Los organigramas se dividen en tres partes claramente diferenciadas:

 Entradas: que debe aparecer en la parte superior de la representación


grafica
 Proceso: que debe aparecer en la parte central de la representación grafica
 Salidas: que debe aparecer en la parte inferior

Símbolos para los dispositivos de entrada/salida

Dibujo Dispositivo Tipo

teclado entrada

pantalla salida

disquette Entrada/Salida

Impresora Salida

Discos magnéticos entrada/salida

Símbolos para los dispositivos de procesos

Símbolo Proceso

Cualquier proceso u operación que realicemos, salvo que operemos


con ficheros.
Clasificación de datos en un fichero

Extracción de datos de un fichero

Unión de varios ficheros en uno solo

Fechas utilizadas en los flujos de datos

Flechas Función

Lineas de teleproceso

Dirección del flujo de datos

Para entender major el organigrams tenemos estos tres ejemplos:

Organigrama que refleja la suma de 3 numeros leidos por teclado, el resultado


aparece por pantalla

Organigrama que refleja la actualización de un fichero de datos (nominas por


ejemplo)
Organigrama que refleja la unión de varios ficheros en uno solo.
Uno de los diagramas de flujos más utilizado. Muy parecido al Organigrama
pero más detallado y preciso.

Se trata de otro diagrama de flujos que muestra la secuencia lógica y detallada de


las operaciones que necesitamos para la realización de un programa.

Al igual que el organigrama, este también debe ser independiente del lenguaje de
programación que utilicemos.

Estructura de un ordinograma

Todo ordinograma debe estar compuesto de:

 Un símbolo de inicio de ejecución del programa

 La secuencia de operaciones necesarias para el correcto funcionamiento del


programa. Las operaciones seguirán un orden (de arriba abajo y de
izquierda a derecha).
 Un símbolo que indique el final del programa.

Símbolos utilizados
Simbolo Descripción
Para inicio/fin o para una parada
indeterminada

Símbolo de entrada/salida genérico

Representa una operación o proceso general


con datos de memoria.

Símbolo de subprograma o subrutina. Se


utiliza para realizar una llamada a un
modulo del programa.

Símbolo de decisión para realizar una


pregunta con dos posibles respuestas. Es lo
que llamamos símbolo de selección simple.
Símbolo de selección múltiple

Símbolo de bucle definido.

Conector. Se utiliza para agrupar varias


líneas de flujo que salen del mismo origen.

Símbolo para poner comentarios

Reglas a la hora de hacer ordinogramas

Todos los símbolos utilizados deben estar unidos por líneas de flujo.
No se pueden cruzar las líneas de flujo
A un símbolo de proceso pueden llegarle varias líneas de flujo pero solo puede salir
una de él.
Al símbolo de inicio no puede llegarle ninguna línea de flujo
De un símbolo de fin no puede salir ninguna línea de flujo pero si le pueden llegar
varias.

Ejemplos
Este primer ejemplo te dice el mayor de dos números.
Este segundo te devuelve los grados introducidos en Kelvin y Fahrenheit.
Lenguaje intermedio entre nuestro lenguaje y el lenguaje de
programación.

El principal objetivo del pseudocódigo es el de representar la solución a un


algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al
lenguaje que posteriormente se utilizara para la codificación del mismo.

Las principales características de este lenguaje son:

 Se puede ejecutar en un ordenador


 Es una forma de representación sencilla de utilizar y de manipular.
 Facilita el paso del programa al lenguaje de programación.
 Es independiente del lenguaje de programación que se vaya a utilizar.
 Es un método que facilita la programación y solución al algoritmo del
programa.

Todo documento en pseudocódigo debe permitir la descripción de:

 Instrucciones primitivas
 Instrucciones de proceso
 Instrucciones de control
 Instrucciones compuestas
 Instrucciones de descripción

Estructura a seguir en su realización:

Cabecera:

 Programa:
 Modulo:
 Tipos de datos:
 Constantes:
 Variables:

Cuerpo:

 Inicio
 Instrucciones
 Fin

Para comentar en pseudocódigo se le antepone al comentario dos asteriscos (*)

Ejemplos

* Programa que calcula el área de un cuadrado a partir de un lado dado por


teclado.

Programa: area_cuadrado
Modulo: main **( también se puede llamar principal)
Variables:
lado: natural
area: natural
Inicio
Visualizar "Introduce el lado del cuadrado"
Leer lado
Area<- lado * lado
Visualizar "El área del cuadrado es", area
Fin

* Programa que visualice la tabla de multiplicar del numero introducido por teclado

Programa: Tabla multiplicar


Modulo: main
Variables:
t: entero
num : entero
Inicio
Visualizar "Introduce un número"
Leer num
Desde t=1 hasta t=10 repetir
Visualizar num, " X", t, "=", num*t
Fin desde
Fin

Una vez que tenemos preparado un diagrama de flujos (ordinograma u


organigrama) y un pseudocódigo ya podemos comenzar con la codificación del
programa en nuestro ordenador. A partir de aquí todo varía dependiendo del
lenguaje de programación que utilicemos, pero en todos los programas tendremos
que definir los tipos de datos que utilizaremos. De todo esto hablaré en el siguiente
artículo.
En este artículo hablaremos de los posibles tipos de datos que podemos
utilizar en la creación de nuestros programas.

Antes de meternos de lleno en los diferentes tipos de datos os paso la descripción


de dato para que todo quede claro desde el principio.

Dato

Elemento que no manejamos o almacenamos en un sistema informático. Los datos


manejados en un algoritmo deben llevar asociado un identificador, un tipo de dato
y su valor.

Datos básicos

Dentro de los datos básicos nos podemos encontrar con los datos estáticos,
derivados y estructurados.

Los datos estáticos son los siguientes:

 entero, real y natural para los números


 carácter
 cadena
 lógico
 enumerado

Cómo dato derivado nos encontramos con los punteros que hoy en día no se
utilizan casi, a no ser que se programe en C.

Los más complejos son los estructurados y los principales son:

 array
 Estructuras
 Listas, pilas, colas y árboles ( muy utilizados en C)
 Clases y objetos
 Ficheros
 Base de datos

Los cuatro primeros son los internos mientras que los dos ultimos correspondes a
tipos de datos externos.

Constantes y variables

Se define como variable a una posición de memoria referenciada por un


identificador donde se puede almacenar un valor determinado (Tipo de dato).

Se define como constante a un valor que no se modifica a lo largo de toda la


ejecución del programa.
Pasamos a detallar los diferentes operadores que hay y su funcionamiento.

Los operadores se clasifican en aritméticos, alfanuméricos, relacionales, lógicos y


por último un pequeño grupo de operadores especiales que dependerá de los
diferentes lenguajes utilizados.

Operadores aritméticos:

 Para la suma y la resta se utilizan respectivamente los símbolos; "+" "-"


 Para la división y hallar el resto de la misma se utilizan respectivamente los
símbolos; "/" "%"
 Para multiplicar y elevar potencias se utilizan respectivamente los siguientes
símbolos; "*" "**"

Operadores alfanuméricos:
Son los utilizados para trabajar con cadenas.
Principalmente utilizamos el símbolo "+" para concatenar cadenas. Luego
dependiendo de el lenguaje puede funcionar o no el símbolo "-" para concatenar
cadenas eliminando los espacios en blanco.

Operadores relacionales:

 El símbolo "==" nos compara dos valores


 El símbolo "!=" significa distinto y nos devuelve verdadero si los valores
comparados son distintos.
 Luego tenemos lo demás signos como son; "<", ">", "<>", "<=", ">="

Operadores lógicos:
Como operadores lógicos nos encontramos con el símbolo "!" o "not" para la
negación y el símbolo "&&" o "and" para la conjunción.

Ejemplos

Aritméticos.
A=3
B=2
X=a**2 donde x valdría 9
X=a/2 donde x valdría 1.5
X= a*2 donde x valdría 6
X= a%b donde x valdría 1

Alfanuméricos:
A="Hola"
B=" Que tal"
X=a+b donde x valdría "Hola Que tal"

Relacionales:
Si x==a entonces
Instrucciones
Sino
Instrucciones
Fin si
Lógicas
Si !a entonces
La variable esta vacía
Fin si
Si a==3 and b==3 entonces
A y b son iguales
Fin si

Pasamos a describir estos dos términos aplicados a la programación y


ponemos algún ejemplo.

Expresiones

Como definición de expresiones entendemos que es un conjunto de operandos y


operadores, que después de ser evaluados devuelven un determinado resultado.

En función del resultado obtenido las podemos clasificar en:

 Expresiones numéricas
 Expresiones alfanuméricas
 Expresiones lógicas booleanas

Instrucciones

Como definición de instrucciones entendemos que es un hecho o suceso de


duración limitada que genera unos cambios en la ejecución del programa.
Existen varios tipos de instrucciones:

 Instrucciones de definición de datos


X: entero
 Instrucciones primitivas
o de entrada (leer x)
o de asignación (x<-3)
o de salida (visualizar x)
 Instrucciones compuestas:
Son aquellas instrucciones que son ejecutadas directamente por el
procesador y están constituidas por un conjunto de acciones agrupadas en
módulos.
 Instrucciones de control:
Son utilizadas para controlar la secuencia de ejecución del programa. Dentro
de este tipo de instrucciones se encuentran las instrucciones de salto que
son aquellas que alteran o rompen la secuencia de ejecución de un
programa. Este tipo de instrucciones no se utilizan en la programación
estructurada.
A su vez tenemos las instrucciones alternativas que controlan la ejecución o
no de una o más instrucciones en función de la condición. Están las
instrucciones de alternativa simple, doble y múltiple.
Por ultimo dentro de este grupo de instrucciones de control están las
instrucciones repetitivas que son aquellas que nos permiten alterar la
secuencia normal de la ejecución de un programa haciendo posible que un
grupo de instrucciones se puedan repetir mas de una vez.
Todo bucle esta compuesto de tres partes claramente diferenciadas:
o A: Parte de la condición, puede ser cualquier expresión.
o B: Cuerpo del bucle. Son el conjunto de instrucciones que se
repetirán.
o C Parte final del bucle. Es el ultimo en ejecutarse cuando no se
cumple la condición.

Los elementos que intervienen en la expresión que conforma la condición


deben estar siempre reflejados en el cuerpo del bucle de tal forma que
siempre exista la posibilidad de salir del mismo.

Existen dos tipos principales de bucles:

o Bucle mientras (do, while) Se repiten las instrucciones hasta que no


se cumpla la condición
Mientras <<condición>> hacer
Instrucciones
Fin mientras
o Bucle para (for) se repiten las instrucciones un número determinado
de veces.
Para v<-0 hasta vf[con i de incremento] hacer
Instrucciones
Fin para
Comenzamos con los conceptos básicos para conocer lo que es una base de
datos.

Las bases de datos se ingeniaron gracias a la necesidad de las grandes empresas


de almacenar ingentes cantidades de información de una forma rápida, sencilla y
fiable, y que a su vez pudieran acceder a ella en cualquier momento sin necesidad
de desplazarse a salas dedicadas a archivar documentación, como hasta hace poco
se venia haciendo.

Cuando comenzó el despegue de los programas informáticos se empezaron a


almacenar datos en los archivos de los programas, lo cual era más cómodo pero
aun así tenían grandes dificultades a la hora de querer modificar registros,
estructuras o simplemente buscar información.

A finales de los años sesenta nacen las bases de datos. En estas bases de datos se
guardan los datos utilizados por los usuarios, empresas, etc. Y los programas que
los utilizan no se tienen que preocupar de su mantenimiento ni almacenaje por lo
que un cambio en la base de datos no tiene porque afectar en principio a los
programas que la utilizan.

Como definición de base de datos entendemos que se trata de un conjunto de datos


interrelacionados y almacenados sin redundancias innecesarias, los cuales sirven a
las aplicaciones sin estar relacionados de una manera directa entre ellos.

Una base de datos puede ser utilizada por varias aplicaciones y usuarios. Toda base
de datos debe permitir insertar, modificar y borrar datos por lo que en las bases de
datos se guarda información de dos tipos:

 Los datos de usuarios (datos usados por las aplicaciones)


 Los datos de sistema (datos que la base de datos utiliza para su gestión. Ej.
Datos de los usuarios que tienen acceso a la base de datos)

Organización de una base de datos

Para considerar a una base de datos organizada debe cumplir los siguientes
objetivos:

 Tiene que ser versátil: esto quiere decir que, dependiendo de los usuarios o
las aplicaciones, puedan hacer diferentes cosas o traten a los datos de
formas distintas.
 Tiene que atender con la rapidez adecuada a cada aplicación o empresa,
atendiendo a lo que se la requiera.
 Tiene que tener un índice de redundancia lo más bajo posible.
 Tener una alta capacidad de acceso para ganar el mayor tiempo posible en
la realización de consultas.
 Tener un alto índice de integridad, esto significa que al tener muchos
usuarios atacando a una misma base de datos no puede haber fallos en la
inserción de datos, errores por redundancia o lenta actualización.
 Por supuesto tienen que tener un nivel altísimo de seguridad y privacidad ya
que los datos que se pueden almacenar en una base de datos pueden ser
altamente confidenciales o importantes. En este punto también entran los
medios físicos de protección contra fuego, robo, etc.
 Por ultimo tiene que ser posible su constante actualización para no dejar a la
base de datos anticuada e inservible. Cuando hacemos un cambio en la
organización física de los datos no debe afectar a los programas por lo que
también tiene que tener una independencia física de los datos. Al igual que
tiene que tener total independencia lógica con los datos, esto quiere decir
que si hacemos cambios en la estructura lógica de los datos (agregar nuevos
campos a una tabla) no deben afectar a las aplicaciones que utilicen esos
datos.

Mostramos los tres principales niveles que presentan las bases de datos.

Los usuarios no tienen porque conocer como están organizados y almacenados los
datos.

Por este motivo una base de datos debe presentar los datos de forma que el
usuario pueda interpretarlos y modificarlos. Evidentemente esto no lo podemos
aplicar a un informático que necesite saber donde se encuentran físicamente los
datos para poder tratarlos.

Podemos destacar tres niveles principales según la visión y la función que realice el
usuario sobre la base de datos:

 Nivel Interno: es el nivel más cercano al almacenamiento físico de los datos.


Permite escribirlos tal y como están almacenados en el ordenador. En este
nivel se diseñan los archivos que contienen la información, la ubicación de
los mismos y su organización, es decir se crean los archivos de
configuración.
 Nivel conceptual: En este nivel se representan los datos que se van a utilizar
sin tener en cuenta aspectos como lo que representamos en el nivel interno.
 Nivel externo: es el más cercano al usuario. En este nivel se describen los
datos o parte de los datos que más interesan a los usuarios.

Estos tres niveles de visión de usuarios los proporcionan los sistemas gestores de
base de datos (ya veremos más adelante que significa esto).

Una base de datos especifica tiene un único nivel interno y un único nivel
conceptual pero puede tener varios niveles externos.

Вам также может понравиться