Está en la página 1de 21

YAMIWIN

ALGORÍTMICA Y
PROGRAMACIÓN
TEORÍA
YAMIWIN
01/01/2018

 

Teoría de los trimestres 1 y 2


PLANTEAMIENTO Y SOLUCIÓN DE PROBLEMAS

La principal razón para que las personas aprendan lenguajes de programación es utilizar un ordenador como
una herramienta para la resolución de problemas.

MÉTODOS PARA SOLUCIONAR PROBLEMAS

Ensayo y error: Consiste en actuar hasta que algo funcione. Puede tomar mucho tiempo y no es seguro
Iluminación: Implica la súbita conciencia de una solución que sea viable. Es muy utilizado el modelo
Heurística: Se basa en la utilización de reglas empíricas para llegar a una solución.
Algoritmos: Consiste en aplicar adecuadamente una serie de pasos detallados que aseguran una solución
correcta.
Análisis de medios y fines : Se funda en la comparación del estado inicial con la meta que se pretende
alcanzar para identificar las diferencias.
Razonamiento analógico: Se apoya en el establecimiento de una analogía entre una situación que resulte
familiar y la situación problema. Requiere
Lluvia de ideas: Consiste en formular soluciones viables a un problema. El modelo propuesto por Mayer
(1992) plantea: definir el problema; generar muchas soluciones (sin evaluarlas); decidir los criterios
para estimar las soluciones generadas; y emplear esos criterios para seleccionar la mejor solución.
El pensamiento lateral: requiere que se exploren y consideren la mayor cantidad posible de
alternativas para solucionar un problema.
Modelo de procesamiento de información: consiste en plantear varios momentos para un problema (estado
inicial, estado final y vías de solución.

Solucionar un problema mediante la computadora conlleva un conjunto de fases que todo


programador realiza al momento de programar. Estas fases son básicamente 6:

1) Análisis del problema.


2) Diseño del algoritmo (Pseudocódigo. Independiente del lenguaje de programación en el que será
implementado).
3) Codificación en un Lenguaje de Programación.
4) Compilación y ejecución.
5) Verificación y depuración.
6) Documentación.
RESOLUCIÓN DEL
PROBLEMA

ANÁLISIS DEL DISEÑO DEL PROGRAMACIÓN DEL


PROBLEMA ALGORITMO ALGORITMO

PASOS DEL ANÁLISIS DEL PROBLEMA

El objetivo del análisis del problema, es ayudar al programador a llegar a una cierta comprensión de la naturaleza del
mismo. Este análisis supone, en particular, la superación de una serie de pasos.

 Leer el problema varias veces (Hasta estar seguro de entenderlo)


• Establecer los datos del problema (Datos de entrada)
• Aclarar lo que se va a resolver (¿Cuáles la pregunta?)
• Precisar el resultado que se desea lograr (Datos de salida)
• Determinar los procedimientos y cálculos a implementar (¿Cómo hacerlo?)
• Organizar la información
• Trazar una figura o diagrama. (No es el algoritmo)

DISEÑO DE ALGORITMOS
ALGORITMO (Matemático Persa Mohamed ibn Musa al Khwarizmi 780-850 d.C, tratado “Quitad Al Mugabala” entre 800 y 825.)
Un algoritmo es una secuencia ordenada de instrucciones, pasos o procesos que llevan a la solución
de un determinado problema. Los hay tan sencillos y cotidianos como seguir la receta para hacer una
arepa, abrir una puerta, lavarse los dientes, etc.; hasta los que conducen a la solución de problemas muy
complejos.

CARACTERÍSTICAS DE LOS ALGORITMOS


 Bien definido. Debe existir un procedimiento con instrucciones sin ambigüedades. Debe ser claro
lo que hace, de forma que quien ejecute los pasos sepa qué, cómo y cuándo hacerlo.
 Preciso. Los resultados de los cálculos deben de ser exactos, de manera rigurosa. No es válido un
algoritmo que sólo aproxime la solución.
 Finito. Debe tener un número determinado de pasos que permitan la culminación del algoritmo una
con la solución del problema.
ETAPAS DE UN ALGORITMO

 Entrada. La entrada hace referencia a la información proporcionada al algoritmo. Un algoritmo tiene


cero o más datos de entrada; estos valores le son dados por medio de una instrucción o mandato que
se debe cumplir al ejecutarse el algoritmo. Si no existen datos de entrada es porque una o más
instrucciones generan los valores de partida, de los que hará uso el algoritmo para producir los datos
o valores de salida.
 Proceso. Acciones, operaciones o cálculos necesarios para que a partir de un dato de entrada se
llegue a los resultados.
 Salida. La salida es la respuesta dada por el algoritmo al valor o conjunto de valores que se le
proporcionen. Todo algoritmo, una vez se ha ejecutado la secuencia de pasos que lo conforman, debe
producir uno o más valores como resultado.

TIPOS DE ALGORITMOS

 Cualitativos. Son algoritmos en el que no se usan operaciones matemáticas o cálculos.


 Cuantitativos. Algoritmos donde los datos de entrada son utilizados para realizar operaciones
matemáticas.

REPRESENTACIÓN DE ALGORITMOS

Gráficos. Las operaciones descritas en el algoritmo se representen con símbolos y/o formas
geométricas. Los más conocidos son los
 DIAGRAMAS DE FLUJO

INICIO/FIN ENTRADA (LEER) PROCESO (HACER) DECISIÓN (SI)


CONDICIONAL

MOSTRAR CICLO (ITERACIÓN) SUBRUTINA CONECTORES

 DIAGRAMAS NASSI-SHNEIDERMAN (chapin)


No gráficos. Representan de forma descriptiva las instrucciones del algoritmo. Se usan el

 LENGUAJE NATURAL.
 PSEUDOCÓDIGO. El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una
descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas
convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y
condicionales, aunque no está regido por ningún estándar: INICIO, LEER, ESCRIBIR,
MOSTRAR, ASIGNAR, HACER, FIN. Los algoritmos descritos en pseudocódigo requieren menos
espacio para representar instrucciones complejas. El pseudocódigo está pensado para facilitar a las
personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son
necesarios en una implementación.

NOTA: Al escribir un algoritmo es conveniente usar identación.


Debe usarse el diseño TOP-DOWN

CODIFICACIÓN EN UN LENGUAJE DE PROGRAMACIÓN.


Una vez que el algoritmo está diseñado y representado gráficamente se pasa a la etapa de traducción a
un lenguaje de programación determinado. Cada lenguaje posee sus propias reglas gramaticales, por lo tanto
es fundamental conocer la sintaxis de los comandos que deben utilizar para resolver el problema. A mayor
dominio del lenguaje de programación, mayor posibilidad de llegar rápidamente a una solución
satisfactoria. A esta fase de traducción se le conoce comúnmente como codificación.
Tras la codificación del programa, éste deberá ejecutarse en un computador. El resultado de esta
primera ejecución es incierto, ya que existe una alta posibilidad de que aparezcan errores, bien en la
codificación bien en el propio algoritmo. Por tanto, el paso siguiente consiste en comprobar el correcto
funcionamiento del programa y en asegurarse, en la medida de lo posible, de la validez de los resultados
proporcionados por la máquina.

COMPILACIÓN Y EJECUCIÓN.
Hace falta software que transforme el código en el lenguaje de alto nivel en código entendible por el
ordenador en un proceso conocido como interpretación o compilación (dependiendo del lenguaje).

Es posible que al hacer la codificación se cometan errores de sintaxis gramaticales que riñan con las normas
establecidas en el lenguaje de programación elegido. Como se dijo antes, el compilador analiza, una a una,
las instrucciones del programa codificado para detectar si están bien escritas o no. Si existen errores se
producirá un listado de éstos indicando su localización y causa del error, para corregirlos e iniciar de nuevo la
fase de compilación. Cuando no existan errores el programa se traduce al lenguaje de máquina, único
lenguaje que la computadora entiende, lo cual da origen a lo que se conoce como programa objeto. En esta
fase se les asigna dirección de memoria a todos los campos y además se le da valor a los campos constantes.
EJECUCIÓN
Esta fase consiste en dar una orden para que sean ejecutadas, una a una, las instrucciones del programa
objeto; por lo tanto, es necesario suministrar datos de entrada cada vez que la computadora encuentre una
orden de este tipo, de igual manera como se hizo en la prueba de escritorio. En esta fase se le da valor a los
campos variables. Es necesario analizar los resultados obtenidos para darse cuenta si están de acuerdo con los
resultados reales que se desean conseguir; de lo contrario, hay que hacer modificaciones en las instrucciones
que causan el error o errores, en caso de que éstos sean leves. Si son errores graves de lógica es necesario
reanalizar el problema.

DEPURACIÓN
Después de traducir el algoritmo en un lenguaje de programación como Logo, el programa resultante debe
ser probado y validados los resultados. A este proceso se le conoce como depuración.

La corrección de fallas es una de las situaciones que mayor frecuencia tienen en el mundo profesional. Con
esta actividad se intenta identificar fallas sintácticas o lógicas en programas que no funcionan
adecuadamente; una vez aislada la falla, esta se soluciona y se vuelve a probar el programa y a validar los
resultados. Según Jonassen (2003), para corregir fallas efectiva y eficientemente se requiere conocimiento del
sistema (comprensión conceptual de cómo funciona el sistema), conocimiento procedimental (cómo llevar a
cabo tanto procedimientos de solución de fallas, como actividades de prueba) y conocimiento estratégico
(saber cuándo, dónde y por qué aplicar procedimientos de solución de fallas y actividades de prueba).

LA DOCUMENTACIÓN

Tiene un carácter eminentemente comunicativo, con la documentación de un programa se pone a prueba la


capacidad del estudiante para informar a otras personas cómo funciona su programa y lo que significa cada
elemento utilizado. Esta actividad se puede llevar a cabo mediante comentarios introducidos al código o
por medio de documentación formal en un documento que se anexa al procedimiento elaborado.

La documentación es la etapa final en la elaboración de un programa y tiene lugar después de que se ha


almacenado y corregido. Documentar el programa se refiere a la recopilación, en un solo lugar, de toda
aquella información de importancia que se usó para elaborar el programa. En un solo lugar se recopilan las
descripciones de todas las tareas, los algoritmos, la codificación, y así por el estilo. Si en una fecha
posterior el programa revela algún error o tiene que ser modificado, esta documentación le facilitará a
cualquier otro programador saber qué se ha hecho y porqué.

También se elabora un manual de corrida (manual del operador) que contiene todas las instrucciones que
necesita el operador de la computadora para correr el programa, qué archivos de entrada se van a cargar,
qué tipos de salida se deben preparar, etcétera.
LA DOCUMENTACIÓN SE DIVIDE EN TRES PARTES:

1. Documentación Interna
2. Documentación Externa
3. Manual del Usuario

1. Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer más
claro el entendimiento de un proceso.

2. Documentación Externa: Se define en un documento escrito los siguientes puntos:

1. Descripción del Problema


2. Nombre del Autor
3. Algoritmo (diagrama de flujo o pseudocódigo)
4. Diccionario de Datos
5. Código Fuente (programa)

3. Manual del Usuario: Describe paso a paso la manera cómo funciona el programa, con el fin de que el
usuario obtenga el resultado deseado.

DOCUMENTACIÓN EXTERNA

Cuando a través de distintas pruebas se establece que el programa está a punto, es decir, funciona
produciendo resultados correctos, es necesario documentarlo, para que éste pueda ser utilizado por
distintos programadores o usuarios sin necesidad de recurrir directamente a su autor. La documentación
debe incluir aspectos relevantes del proceso como: enunciado del problema, narración de la solución,
método empleado, definición de campos variables utilizados, listado del programa fuente, dispositivos de
computación utilizados, listado de la salida producida. Si el programa utiliza subprogramas, éstos también
deben estar documentados.

El DF Sirve como elemento de documentación de la solución del problema.

DOCUMENTACIÓN DE SUBPROGRAMAS

Una de las grandes utilidades que tienen los subprogramas es que se construyen para que sean utilizados
por diferentes módulos, cada que se requiera la tarea específica que realiza el módulo subordinado. Debido
a esto, cada que se construye un subprograma se debe indicar la forma de su empleo. Esta documentación
debe incluir:
Nombre: es el nombre escogido por quien lo construye, para diferenciarlo de los demás subprogramas; por
lo tanto, debe ser único.

Función: es la redacción de lo que hace el subprograma.

Parámetros: Se deben describir cada uno y en el orden en que se encuentran en la lista; no importa el
nombre del parámetro, pero sí el tipo de dato de cada uno de ellos.

En algunos casos específicos es necesario describir otras características tales como:

Método usado: esta parte se describe en caso de que la solución de la tarea que hace el subprograma tenga
más de un modelo de solución; en consecuencia, se debe decir cuál de los métodos de solución se empleó.

Otros subprogramas usados: si el módulo activa otros subprogramas, es conveniente incluir la


documentación de éstos.

PROGRAMA

Una vez que el algoritmo está diseñado y representado gráficamente se pasa a la etapa de “traducción”
generando así un programa (programa fuente). Entonces un programa de ordenador no es más que una
secuencia de instrucciones escritos en un lenguaje (de programación) en particular, con un grupo de datos
específicos que el ordenador debe seguir para realizar una tarea. Lo anterior nos lleva al razonamiento de
que un programa nos sirve para solucionar un problema específico.

Las computadoras pueden ejecutar un gran número de operaciones a muy altas velocidades y con
intervención mínima de seres humanos. Sin embargo, a una computadora se le debe indicar exactamente qué
operaciones debe ejecutar y en qué orden. A estos conjuntos de instrucciones se les denomina programas
para computadora y son elaborados por programadores. Un programa es una serie de instrucciones escritas en
forma codificada que la computadora puede traducir a su propio lenguaje.

Con base en el algoritmo terminado, se escribe una serie de instrucciones detalladas. Las que se denominan
programa fuente y suelen estar escritas en lenguaje simbólico. Un lenguaje simbólico es aquél que la mente
humana puede entender con relativa facilidad, pero que no puede entender una computadora. El sistema de
computación no puede entender directamente el lenguaje simbólico que usó el programador. Antes debe ser
traducido a lenguaje de máquina. El compilador efectúa esta traducción. El compilador es un programa
especial que única y exclusivamente traduce el lenguaje simbólico al lenguaje de máquina. Al programa
traducido se le denomina programa objeto.

PROGRAMACIÓN ESTRUCTURADA

En esta programación se utiliza una técnica que genera programas que sólo permiten utilizar tres
estructuras de control:
 Secuencias (instrucciones que se leen secuencialmente).
 Alternativas (sentencias SI).
 Iterativas (bucles condicionales).

PROGRAMACIÓN MODULAR

Completa la programación anterior permitiendo la definición de módulos independientes cada uno de los
cuales se encargará de una tarea del programa. De esta forma el programador se concentra en la
codificación de cada módulo haciendo más sencilla esta tarea. Al final se deben integrar los módulos para
dar lugar a la aplicación final.
El código de los módulos puede ser invocado en cualquier parte del código. Realmente cada módulo se
comporta como un subprograma que, a partir de unas determinadas entradas, obtienen unas salidas
concretas. Su funcionamiento no depende del resto del programa por lo que es más fácil encontrar los
errores y realizar el mantenimiento.

PROGRAMACIÓN ORIENTADA A OBJETOS

Es la más novedosa, se basa en intentar que el código de los programas se parezca lo más posible a la
forma de pensar de las personas. Las aplicaciones se representan en esta programación como una serie de
objetos independientes que se comunican entre sí.

Cada objeto posee datos y métodos propios, por lo que los programadores se concentran en programar
independientemente cada objeto y luego generar el código que inicia la comunicación entre ellos.
Es la programación que ha revolucionado las técnicas últimas de programación ya que han resultado un
importante éxito gracias a la facilidad que poseen de encontrar fallos, de reutilizar el código y de
documentar fácilmente el código.

CORRIDA EN FRIO O TRAZA

Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que realiza las tareas para
las que se ha diseñado y produce el resultado correcto y esperado. El modo más normal de comprobar un
algoritmo es mediante su ejecución manual, usando datos significativos que abarquen todo el posible
rango de valores y anotando en una hoja de papel las modificaciones que se den estos datos y en los del
resto del algoritmo, en las diferentes fases hasta la obtención de los resultados. Este proceso se conoce
como corrida en frio o traza.

DATOS

Los datos son la materia prima de trabajo de un programa. El programa toma los datos (de entrada) y los
convierte en información (salida) útil.
 Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los
números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.

 Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el
resultado de una comparación entre otros datos (numéricos o alfanuméricos).

 Datos Alfanuméricos (char/String): Es una secuencia de caracteres alfanuméricos que permiten


representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones,
etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática,
es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre
comillas.

int (entero 2 a 4 bytes)


Un int, abreviación de signed int, es para C un número sin punto decimal. El tamaño en bytes depende de
la arquitectura de la máquina. Igualmente ocurre con el tipo unsigned int. Por ejemplo, para una máquina
con un procesador de 16 bits el rango de valores es de:
-32768 a 32767 (-215 a 215-1) para el tipo int
0 a 65535 ( 0 a 216-1) para el tipo unsigned

short (entero formato corto 2 bytes)


El tipo short, abreviación de signed short int, proporciona un entero en el rango de valores:
-32768 a 32767 (-215 a 215-1) para el tipo int
0 a 65535 ( 0 a 216-1) para unsigned short

long (entero formato largo 4 u 8 bytes)


El tipo long, abreviación de signed long int, es idóneo para aplicaciones de gestión. Al igual que los tipos
anteriores, son números sin punto decimal. Para el caso de que tengan cuatro bytes de longitud, el rango de
valores es el siguiente:
-2147483648 a 2147483647 (231 a 231-1) para el tipo long
0 a 4294967295 ( 0 a232-l) para el tipo unsigned long

float (reales de precisión simple - 4 bytes)


Los datos reales de precisión simple son los más recurridos en un lenguaje de programación. Un valor real
de precisión simple es un número que puede tener un punto decimal (no tiene más de 7 dígitos
significativos) y que puede estar comprendido en el rango de:
-3.402823 E+38 a -1.175494 E-38 para números negativos
1.1754948 E-38 a 3.402823 E+38 para números positivos

double (reales de precisión doble - 8 bytes)

Un dato real de precisión doble es un valor que puede tener un punto decimal (puede tener hasta 16 dígitos
significativos, lo que da lugar a cálculos más exactos) y puede estar comprendido en el rango:

-1.79769 E+308 a -2.22507 E-308 para números negativos


2.22507 E-308 a 1.79769 E+308 para números positivos
long double (reales de precisión doble formato largo 10 bytes)
Los valores para este tipo (un número real de precisión doble formato largo puede tener hasta 19 dígitos
significativos) están comprendidos en el rango de:

-1.189731 E+4932 a -3.362103 E-4932 para números negativos


3.362103 E-4932 a 1.189731 E+4932 para números positivos

char(carácter-1byte)
Es el tipo básico alfanumérico, es decir que puede contener un carácter, un dígito numérico o un signo de
puntuación. Desde el punto de vista del ordenador, todos esos valores son caracteres. En C++ este tipo
siempre contiene un único carácter del código ASCII. El tamaño de memoria es de 1 byte u octeto.

Cadenas de caracteres
Una cadena de caracteres es una secuencia de caracteres delimitada por comillas ("). Dentro de la cadena,
pueden aparecer caracteres en blanco. El tipo cadena de caracteres es un caso especial de tipo de datos, ya
que algunos lenguajes lo incorporan como tipo elemental (con un tamaño fijo), mientras que en otros
lenguajes se define como un vector de caracteres (tipo char). Es una secuencia de caracteres alfanuméricos
que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas,
direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad
matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan
encerrados entre comillas.

bool (booleano)
Las variables de este tipo sólo pueden tomar dos valores "true" o "false". Sirven para evaluar expresiones
lógicas. Este tipo de variables se puede usar para almacenar respuestas.

OPERADORES

Un operador es un símbolo o grupo de símbolos que actúa sobre una, dos o más constantes o variables para
realizar una determinada operación con un determinado resultado.

Aritméticos: Posibilitan las operaciones entre datos de tipo numérico y dan como resultado otro valor de
tipo numérico. Los operadores matemáticos permiten realizar operaciones aritméticas básicas con los tipos
de datos que intervienen en un programa, bien números propiamente dichos, o variables cuyo contenido
sea numérico, o bien valores de retorno de funciones que sean numéricos.

 Todas las expresiones entre paréntesis se evalúan primero.


 Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se
evalúa primero.
 Dentro de una misma expresión los operadores se evalúan en el siguiente orden.
1º ^ ,** potenciación.
2º *, /, mod multiplicación, división, módulo.
3º +, - suma y resta.
 Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a
derecha.

Alfanuméricos: Permiten operar con datos de tipo carácter o cadenas. La mayoría de los lenguajes de
programación admiten el operador + para realizar la concatenación (unión) de caracteres o cadenas.
Relaciónales: Permiten la comparación entre datos del mismo tipo y dan como resultado uno de dos
valores posibles: Verdadero o Falso.
 Se utilizan para establecer una relación entre dos valores.
 Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad
(verdadero o falso).
 Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas).
 Tienen el mismo nivel de prioridad en su evaluación.
 Los operadores relaciónales tiene menor prioridad que los aritméticos.

Operadores Relaciónales
> Mayor que
< Menor que
> = Mayor o igual que
< = Menor o igual que
< > Diferente
= Igual

Lógicos: Posibilitan la evaluación lógica de dos expresiones de tipo lógico. Dan como resultado uno de
dos valores posibles: Verdadero o Falso.

 Estos operadores se utilizan para establecer relaciones entre valores lógicos.


 Estos valores pueden ser resultado de una expresión relacional.

Operadores Lógicos
And Y
Or O
Not Negación

AND OR NOT

IDENTIFICADORES

Identificadores son los nombres que se dan a las constantes simbólicas, variables, funciones,
procedimientos, u otros objetos que manipula el algoritmo. La regla para construir un identificador
establece que:

 Debe resultar significativo, sugiriendo lo que representa.


 No podrá coincidir con palabras reservadas, propias del lenguaje algorítmico
 Se admitirá un máximo de 32 caracteres.
 Comenzará siempre por un carácter alfabético y los siguientes podrán ser letras, dígitos o el
símbolo de subrayado.
 Podrá ser utilizado indistintamente escrito en mayúsculas o en minúsculas.

CONSTANTES

Son datos cuyo valor no cambia durante todo el desarrollo del programa. Las constantes podrán ser
literales o con nombres. Las constantes literales serán un valor propiamente dicho y las que tienen nombre
se identifican por su nombre y el valor asignado. Tendremos pues constantes:

Numéricas enteras: 12,34,-44,22234, -9837, m=12, n=44592....


Numéricas reales: 12.55, -3E3, PI=3.14159.....
Lógicas: solo existen dos constantes lógicas 0 y 1
Carácter: n=’a’, k=’1’,.....
Cadena: saludo=”hola”, s=”si”, n=”no”.....

VARIABLES

Una variable es un objeto cuyo valor puede cambiar durante el desarrollo del algoritmo. Se identifica
por su nombre (identificador) y por su tipo, es el que determina el conjunto de valores que podrá tomar
la variable. En los algoritmos se deben declarar las variables. Cuando se traduce el algoritmo a un
lenguaje de programación y se ejecuta el programa resultante, la declaración de cada una de las variables
originará que se reserve un determinado espacio en memoria etiquetado con el correspondiente
identificador. Dependiendo de su ubicación dentro del algoritmo (programa) pueden ser globales
o locales.

 Los nombres pueden estar formados por una combinación de letras y números.
 El primer carácter de un nombre debe ser una letra.
 La mayoría de los lenguajes de programación diferencian las mayúsculas de las minúsculas.
 Los nombres deben ser nemotécnicos, con solo leerlos se puede entender lo que contienen. Deben
ser muy descriptivos; no utilizar abreviaturas, a menos que se justifique plenamente.
 Es conveniente utilizar una sola palabra.
 No utilizar caracteres reservados (%, +, /, >, etc).
 Se debe tener en cuenta que algunos lenguajes de programación no admiten las tildes.
 No utilizar palabras reservadas por los lenguajes de programación.
 Para cumplir con convenciones ampliamente
 El carácter subrayado se considera como una letra más.
 Un identificador no puede contener espacios en blanco
 ANSI C permite definir identificadores de hasta 31 caracteres de longitud.

Para declarar variables utilizaremos el siguiente convenio: tipo identificador1, identificador2, …


CLASIFICACIÓN

Numéricas
Por su contenido Lógicas
Alfanuméricas

VARIABLES

De trabajo
Por su uso Contadores
Acumuladores

CONTADORES
Los contadores son una estructura de programación que consistente en almacenar en una variable (V) el
valor de ella misma (V) más un valor constante n (V=V + n). Es muy útil para controlar el número de
veces que debe ejecutarse un grupo de instrucciones (ciclo o bucle).

Los contadores deben declararse y muchas veces inicializarse (darle un valor antes de comenzar a usarse)
antes de activar el ciclo donde se necesite el contador, de lo contrario se repetirá el valor inicial cada vez
que se repite el ciclo.

X = x + 10; Se puede escribir como: x+=10;

Se permiten estas abreviaturas:

operador significado
+ = Suma y asigna
− = Resta y asigna
* = Multiplica y asigna
/ = Divide y asigna

ACUMULADORES
Estructura muy utilizada en programación (V =V + S) y que consiste en almacenar en una variable (V) el
valor de ella misma (V) más otro valor variable (S). Es muy útil para calcular sumatorias.
La diferencia con el contador radica en que el incremento o disminución de cada suma es variable en lugar
de constante, como en el caso del contador. Los contadores deben declararse y muchas veces inicializarse.

EXPRESIONES

Una expresión es una combinación de operadores y operandos. Los operandos podrán ser constantes,
variables u otras expresiones y los operadores de cadena, aritméticos, relacionales o lógicos. Las
expresiones se clasifican, según el resultado que producen, en:
• Numéricas. Los operandos que intervienen en ellas son numéricos, el resultado es también de tipo
numérico y se construyen mediante los operadores aritméticos. Se pueden considerar análogas a las
fórmulas matemáticas.
• Alfanuméricas. Los operandos son de tipo alfanumérico y producen resultados también de dicho tipo.
Se construyen mediante el operador de concatenación, representado por el operador ampersand (&) o
con el mismo símbolo utilizado en las expresiones aritméticas para la suma (+).
• Booleanas. Su resultado podrá ser verdad o falso. Se construyen mediante los operadores relacionales y
lógicos. Actúan sobre operandos del mismo tipo y siempre devuelven un resultado de tipo lógico
determinados por las tablas de verdad correspondientes a cada uno de ellos.


ESTRUCTURAS DE CONTROL

Llamaremos estructuras de control a las acciones que tienen por objeto marcar el orden de realización
de los distintos pasos de un programa o algoritmo. Cada estructura tiene un punto de entrada y uno de
salida, lo que facilita la depuración de posibles errores. Estas son de tres tipos: Una estructura se
define como un esquema con cierta distribución y orden que permite representar una idea de forma
simplificada y que bajo ciertas condiciones es constante (Trejos, 1999).

ESTRUCTURA SECUENCIAL

La estructura de control secuencial es la más sencilla. También se la conoce como estructura lineal. Se
compone de instrucciones que deben ejecutarse en forma consecutiva, una tras otra, siguiendo
una línea de flujo. Solamente los problemas muy sencillos pueden resolverse haciendo uso
únicamente de esta estructura. Normalmente, la estructura secuencial hace parte de soluciones a
problemas complejos en las que se la utiliza mezclada con estructuras iterativas (repetir varias
veces un conjunto de instrucciones) y condicionales (tomar decisiones)
ESTRUCTURA CONDICIONAL

Es fundamental que los estudiantes presten atención especial a las estructuras que utilizan para
resolver problemas y las reconozcan para lograr mayor control sobre la solución planteada. De
esta manera, la programación de computadores les ayuda a planear conscientemente las
secuencias de acciones que resuelven un problema planteado y las estructuras involucradas en una
solución dada.

La estructura condicional se utiliza para indicarle al computador que debe evaluar una condición
y, a partir del resultado, ejecutar el bloque de instrucciones correspondiente. La forma más
común está compuesta por una proposición (condición) que se evalúa y dos bloques de
instrucciones que se ejecutan, uno cuando la condición es verdadera (selección simple y doble) y otro
cuando ésta es falsa (únicamente en la selección doble). Algunos autores se refieren a este tipo de
estructura como estructura de selección, estructura selectiva o estructura de decisión; en esta guía,
todas estas denominaciones son consideradas sinónimas.

Para que una proposición (frase declarativa) sea válida, debe poder afirmarse que es verdadera o
falsa. Adicionalmente, las proposiciones pueden ser sencillas o compuestas. Las proposiciones
compuestas se forman con dos o más proposiciones sencillas unidas por operadores lógicos (y, o,
no). Cuando se unen dos proposiciones por medio del operador lógico “y”, significa que ambas
proposiciones deben ser verdaderas (conjunción). Cuando se unen dos proposiciones por medio del
operador lógico “o”, significa que por lo menos una de las dos proposiciones debe ser verdadera
(disyunción).

Por su parte, un bloque de instrucciones puede contener una o varias instrucciones que se ejecutan una
detrás de otra. La estructura condicional tiene tres variantes:

• Selección simple.
• Selección doble.
• Selección múltiple.

Las estructuras condicionales simple y doble evalúan una proposición (condición) que devuelve
como resultado únicamente dos valores posibles y excluyentes: verdadero o falso. En cambio, la
estructura condicional de selección múltiple permite que la condición devuelva más de un valor
posible y que para cada uno de esos valores se ejecute el bloque de instrucciones
correspondiente.

SELECCIÓN SIMPLE

La estructura condicional de selección simple ejecuta un


bloque de instrucciones cuando la proposición (condición)
es verdadera; si esta es falsa, no hace nada.
SELECCIÓN DOBLE

La estructura condicional de selección doble ejecuta un bloque de instrucciones (A) cuando la


proposición (condición) es verdadera y un bloque diferente (B) cuando esta es falsa.

SELECCIÓN MÚLTIPLE (SWITCH)

Se ejecutarán unas acciones u otras según el resultado que se obtenga al evaluar una expresión. Se
considera que dicho resultado ha de ser de un tipo ordinal, es decir de un tipo de datos en el que cada uno
de los elementos que constituyen el tipo, excepto el primero y el último, tiene un único predecesor y un único
sucesor.
Cada grupo de acciones se encontrará ligado con: un valor, varios valores separados por comas, un
rango, expresado como valor_inicial.., valor_final o una mezcla de valores y rangos.
Se ejecutarán únicamente las acciones del primer grupo que, entre los valores a los que está ligado, cuente
con el obtenido al evaluar la expresión. Cuando el valor obtenido al evaluar la expresión no esté presente en
ninguna lista de valores se ejecutarían las acciones establecidas en la cláusula si_no, si existiese dicha cláusula.
ESTRUCTURA ITERATIVA (REPETICIÓN)

La estructura iterativa o de repetición permite ejecutar una o varias instrucciones, un número


determinado de veces o, indefinidamente, mientras se cumpla una condición. Esta estructura
ayuda a simplificar los algoritmos, ahorrando tiempo valioso a quien resuelve problemas con
ayuda del computador.

En programación existen al menos dos tipos de estructuras repetitivas, las cuales a su vez
tienen variantes en los diferentes lenguajes de programación. La característica común es que ambos
tipos permiten ejecutar una o varias instrucciones:
• un número determinado de veces.
• Mientras se cumpla una condición.

Debido a que esta guía está diseñada para educación básica, solo se cubre aquí el primer tipo
de estructura repetitiva: Ejecutar una o varias instrucciones un número determinado de veces.

ESTRUCTURA mientras ("while")

La estructura repetitiva mientras (en inglés while) es aquella en que el cuerpo del bucle se repite
mientras se cumple una determinada condición. Cuando se ejecuta la instrucción mientras, la primera
cosa que sucede es que se evalúa la condición (una expresión booleana). Si se evalúa falsa, no se toma
ninguna acción y el programa prosigue en la siguiente instrucción del bucle. Si la expresión booleana es
verdadera, entonces se ejecuta el cuerpo del bucle, después de lo cual se evalúa de nuevo la expresión
booleana. Este proceso se repite una y otra vez mientras la expresión booleana (condición) sea
verdadera

mientras (condición)
acción S1
acción S2
.
.
acción Sn
fin _ mientras

ESTRUCTURA hacer-mientras (do… while)

El bucle hacer-mientras es análogo al bucle mientras y el cuerpo del bucle se ejecuta una y otra vez
mientras la condición (expresión booleana) sea verdadera. Existe, sin embargo, una gran diferencia y es
que el cuerpo del bucle está encerrado entre las palabras reservadas hacer y mientras, de modo que las
sentencias de dicho cuerpo se ejecutan, al menos una vez, antes de que se evalúe la expresión booleana.
En otras palabras, el cuerpo del bucle siempre se ejecuta, al menos una vez, incluso aunque la expresión
booleana sea falsa.
hacer
acción
acción
acción

mientras (expresión)

ESTRUCTURA desde/para (for)

En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar las acciones d e
un bucle. En estos casos, en el que el número de iteraciones es fijo, se debe usar la estructura desde o
para. La estructura para ejecuta las acciones del cuerpo del bucle un número especificado de veces y
de modo automático controla el número de iteraciones o pasos a través del cuerpo del bucle.

para (v = vi hasta v = vf ; [incremento] )


acción
acción
acción
.
fin_para

vi: valor inicial


vf: valor final
incremento: contador
DATOS ESTRUCTURADOS

Una estructura de datos es una colección de datos que pueden ser caracterizados por su organización y
las operaciones que se definen en ella. Las estructuras de datos son muy importantes en los sistemas de
computadora. Los tipos de datos más frecuentes utilizados en los diferentes lenguajes de programación
son

ARRAYS (ARREGLOS)

Arreglo: Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (identificador
/variable) una colección de datos del mismo tipo.

Un array es una colección de elementos que se disponen en memoria consecutivamente y que poseen el
mismo tipo y el mismo nombre y que permite acceder a cada elemento individual de la colección a través
de un número entero que se le llama índice. Para que el ordenador asigne la cantidad exacta de memoria
que necesita el array, hay que declararle. En la declaración se indica el tipo de datos que contendrá el
array y la cantidad de elementos.
Los elementos se numeran y referencian con un índice que va desde 0 hasta (número elementos-1).
Un array o arreglo (vector o matriz) es un conjunto finito y ordenado de elementos homogéneos. La
propiedad “ordenado” significa que el elemento primero, segundo, tercero,..., enésimo de un array puede
ser identificado. Y homogéneos porque todos son del mismo tipo de dato.

ARRAY UNIDIMENSIONAL (VECTOR)

Un vector es un arreglo donde los elementos que lo conforman están dispuestos linealmente (en
fila o columna), es decir, los datos están organizados de una manera lineal, por lo que para referenciar
un elemento del arreglo es necesario un índice, que indique la posición relativa del elemento en el
arreglo: ai

Sintaxis: tipo identificador [ n ]


Ejemplo: int vector [8] vector=
ARRAY BIDIMENSIONAL (MATRIZ)
Las matrices son estructuras de datos que organizan su información en forma de tablas; es decir,
los elementos que la conforman están dispuestos bajo dos conceptos de clasificación (fila y columna).
Para poder indicar el lugar donde se encuentra un determinado elemento, es necesario utilizar dos
índices: uno (el primero) para indicar la fila (i) y otro (el segundo) para indicar la columna (j): aij
Un array bidimensional se puede considerar como un vector de vectores.

Sintaxis: tipo identificador [m],[n] o tipo identificador [m,n]

Ejemplo: char matriz [5],[6] o char matriz [5,6]

matriz =

ARRAYS MULTIDIMENSIONALES

Un array puede ser definido de tres dimensiones, cuatro dimensiones, hasta de n-dimensiones. Los
conceptos de rango de subíndices y número de elementos se pueden ampliar directamente desde arrays
de una y dos dimensiones a estos arrays de orden más alto. En general, un array de n-dimensiones
requiere que los valores de los n subíndices puedan ser especificados a fin de identificar un elemento
individual del array. Si cada componente de un array tiene n subíndices, el array se dice que es sólo de n-
dimensiones.

Sintaxis: tipo identificador [m],[n],[p] o tipo identificador [m,n,p]

Ejemplo: char matriz [5],[6],[4] o char matriz [5,6,4]

También podría gustarte