Está en la página 1de 18

« Anterior | Siguiente »

Lógica de Programacion
1.1 Herramientas de Programación
INDICE

GENERALIDADES
Sistema de información: es un conjunto de elementos que interactúan entre sí con el fin de apoyar las actividades de una empresa o negocio[1].
T1: HERRAMIENTAS DE
PROGRAMACIÓN Procesamiento de Información: Es la capacidad de los Sistemas de Información para realizar cálculos con base en secuencias de operaciones preestablecidas. Estos cálculos pueden efectuarse con
1.1 Herramientas de Programación
datos introducidos recientemente en el sistema o bien con datos que están almacenados. Esta característica de los sistemas permite la transformación de datos fuente en información que puede ser
utilizada para la toma de decisiones, lo que hace posible, entre otras cosas, que un tomador de decisiones genere una proyección financiera a partir de los datos que contiene un estado de resultados o
1.2 Tablas de verdad
un balance general de un año base1.
1.3 Tipos de datos y jerarquía de
operadores
Procesamiento de Datos: es cualquier ordenación o tratamiento de datos, o los elementos básicos de información, mediante el empleo de un sistema. Procesar datos es generar información para la
toma de decisiones[2].
1.4 Algoritmos y Diagramas de Flujo
 
T2: ESTRUCTURAS BÁSICAS DE
PROGRAMACIÓN
1.1.1 Pasos del desarrollo de software.
T3: ESTRUCTURAS DE DATOS
Escribir un programa para resolver un problema involucra una serie de pasos desde su análisis hasta llegar a su implementación. Estos pasos se conocen como Desarrollo de Software y algunas veces
como Ingeniería de Software o Ciclo de Vida de un Sistema.

El desarrollo de software se puede definir como la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para
desarrollar, operar y mantenerlos. [Bohem, 1976].

1.1.2 Lenguajes de Programación.

Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que se utiliza para escribir los programas de computadoras. Un lenguaje de programación permite a uno o
más programadores especificar la forma precisa en que los datos van a ser operados en una computadora, cómo van a ser almacenados o transmitidos y qué acciones tomar ante ciertas  circunstancias
o problemas que se deben resolver. El programador debe ser capaz de seleccionar el lenguaje de programación apropiado para resolver un problema bajo ciertas circunstancias específicas, de manera
óptima. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas
entre ellos para realizar la construcción del programa de forma colaborativa.

[1] Tomado de http://www.slideshare.net/miniproject/sistemas-de-informacin-1708626.

[2] Tomado de fccea.unicauca.edu.co/old/procesamiento.htm

1.1.3  Intérpretes y Compiladores.


Los compiladores, los interpretes y ls ensambladores se encargan de traducir lo que haya escrito en los lenguajes de alto nivel (código fuente) y lo convierten en código objeto (casi ejecutable).

Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel:

Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la máquina). Su función es similar a la de un traductor humano,
que toma un libro lo analiza completamente y produce otro equivalente escrito en una lengua diferente.
Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningún código equivalente. Su acción equivale a la de un intérprete humano, que traduce las frases que oye
sobre la marcha, sin producir ningún escrito permanente. Intérpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios:
Con el intérprete es más fácil la búsqueda de errores, pues la ejecución del programa se puede interrumpir en cualquier momento para estudiar el entorno (valores de las variables, etc.).
El intérprete va analizando instrucción por instrucción y al momento en que detecta un error se detiene permitiendo su modificación o corrección. Además, el programa puede modificarse
sobre la marcha, sin necesidad de volver a comenzar la ejecución.
El compilador genera programas más rápidos y eficientes, pues este analiza todo el código de una sola vez y luego genera un archivo objeto, por lo cual el análisis del lenguaje fuente se
hace una sola vez, durante la generación del programa equivalente. Se tarda analizando solamente la primera vez, pero luego lo que se ejecuta es el código objeto, por lo cual las demás
ejecuciones son más rápidas. En cambio, un intérprete como no genera el código objeto, siempre se tarda realizando el análisis pues lo hace instrucción por instrucción hasta que termina
y no hayan más errores detectados. El tiempo de ejecución se irá reduciendo cuando se vayan depurando todos los errores encontrados.
Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. Usualmente, este
tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intérprete, se llaman
interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores. [1]

LENGUAJES COMPILADOS

Es un programa que traduce un programa escrito en un lenguaje de alto nivel, en un programa en lenguaje de máquina que la computadora es capaz de entender y ejecutar directamente.

Ejemplo de lenguajes que usan compilador:

Pascal
Cobol
Fortran
Ada
Modula 2
C , C++

Involucra dos pasos en su operación:

1. Convertir código fuente a objeto


2. Ejecutar el código objeto

Fases de compilación:
 

[1] Tomado de www.scribd.com/doc/37261651/Emulador-y-Simulador.

ENLAZADOR (LINKER)

El enlazador realiza la tarea de enlazar la funcionalidad de las teclas y funciones con el código objeto generado a través de la compilación de un programa.

Una librería es la colección de varias teclas y sus funciones, las cuales son creadas por programadores expertos y almacenadas en lugares especiales para que se puedan utilizar por otros
programadores. También pueden ser algunas funciones estándar como raíz cuadrada, logaritmo, random y otras.  

Para poder utilizar estas funciones predefinidas que están guardadas en las librerías, el programador tiene que hacer referencia a dicha librería, que es un archivo que se llama en la cabecera del
programa.

El proceso de enlace es mostrado a continuación:

« Anterior | Siguiente »
« Anterior | Siguiente »

Lógica de Programacion
1.3 Tipos de datos y jerarquía de operadores
INDICE

GENERALIDADES
Uno de los propósitos de las computadoras es manejar información. La información está formada por datos.
T1: HERRAMIENTAS DE
PROGRAMACIÓN Un dato es toda aquella información característica de una entidad, que es susceptible de tratamiento en un programa informático. También es la expresión general que describe los objetos con los
1.1 Herramientas de Programación
cuales opera una computadora.

1.2 Tablas de verdad En un programa los datos de entrada se transforman por el programa hasta producir datos de salida. Para la solución de problemas, definir adecuadamente las estructuras de los datos es tan
importante como el diseño mismo de la solución del problema.
1.3 Tipos de datos y jerarquía de
operadores Todos los datos tienen un tipo asociado con ellos que nos servirá para poder conocer con qué información trabajaremos. Por ejemplo,  cuando ingresamos el sueldo de un trabajador necesitamos que
1.4 Algoritmos y Diagramas de Flujo este contenga decimales, o al solicitar la edad de una persona ésta tiene que estar con números enteros, etc. Además hay operaciones que no tienen sentido como la suma entre caracteres.

T2: ESTRUCTURAS BÁSICAS DE  


PROGRAMACIÓN
La asignación de tipos a los datos tiene dos objetivos principales:
T3: ESTRUCTURAS DE DATOS
Detectar errores de operaciones aritméticas en los programas
Determinar cómo ejecutar las operaciones.

Los tipos de datos son clasificados como sigue:

a)    Simples

b)    Estructurados

a)   Tipos de Datos Simples.

Los tipos de datos simples son los que ocupan sólo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez. Los datos simples pueden dividirse en:

1. Numéricos
2. Tipos de Datos Alfanuméricos
3. Tipos de datos Lógicos o booleanos

b)   Tipos de Datos Estructurados

Estos son un tipo de datos especial que tienen la ventaja de almacenar varios valores al mismo tiempo dentro de una misma variable.

Entre éstos tenemos: Arreglos (arrays), Registros (record), Archivos o Ficheros (File) y Punteros (pointer).

REGLAS DE LOS IDENTIFICADORES:

Deben comenzar por una letra.


Pueden estar constituidos por letras y dígitos, y en algunos casos por el signo del subrayado. Ejemplo: dato_1
No deben contener espacios en blanco.

Las letras no deben ser tildadas


El número máximo de caracteres dependerá del compilador utilizado. Se recomienda usar nombres cortos.
El nombre asignado debe tener relación con la información que contiene.

No podrá coincidir con palabras reservadas, propias del lenguaje algorítmico. Tampoco debe tener el mismo nombre de una función, ya sea definida por el usuario o de la biblioteca del lenguaje que se
utilice.

1.3.1 Operación de asignación.

Es el modo de darle valores a una variable. Se representa con el símbolo ß, el cual se conoce como instrucción o sentencia de asignación.

El formato general de una operación de asignación es:

La flecha de asignación se sustituye en algunos lenguajes de programación por el símbolo de =.

Ejemplo:

       A ß  15  significa que a la variable A se le ha asignado el valor 15.

La acción de asignar es destructiva, ya que cada vez que le asignamos un valor a una variable, éste le cae encima al anterior pues se está almacenando en un área de memoria. Por ejemplo, en la
secuencia de asignaciones

Aß5

A ß 123

Aß6

Cuando éstas se ejecutan, el último valor que toma A es 6 por lo tanto los otros dos han desaparecido.

Reglas de asignación.

Una variable o expresión que esta al lado derecho de una sentencia de asignación debe tener un valor antes de asignársele a la variable de la izquierda. Esto quiere decir que hasta que un
programa le da un valor a una variable, esa variable no tiene valor.

Ejemplos:

Si x no tiene un valor antes de realizar la operación y= 2x+10, se producirá un error pues el computador no sabrá qué valor le tiene que asignar a x.

Si a,b y c no tienen un valor antes de realizar la operación de x= a+b+c, también se producirá un error.

En la izquierda de una sentencia de asignación sólo puede existir una variable que reciba operaciones a la derecha, no operaciones en sí. Por consiguiente no es válido lo siguiente:

valor_neto – interes = 3.5

sueldo + comision = nuevo_sueldo (lo correcto sería hacer nuevo_sueldo = sueldo + comisión). Recuerde que la variable de la izquierda recibe las operaciones, variables o expresiones de la
derecha, siempre y cuando éstas generen un valor para ser asignado.

 
1.3.2 Operadores y expresiones

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.

Una expresión representa una unidad de datos simple, tal como un número o un carácter. También puede consistir en alguna combinación de entidades interconectadas por uno o más operadores. Las
expresiones también pueden representar condiciones lógicas que son verdaderas o falsas.

Cada expresión tiene un valor, que se determina tomando los valores de las variables y constantes implicadas ejecutando las operaciones indicadas.

Ejemplos:

X = 9 * 15 + 6

2.5 + 13 = 15.5

A+B = C+D

ELEMENTOS DE UNA EXPRESIÓN:

OPERANDOS
OPERADORES

Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre dos o más valores, llamados operandos.

Ejemplos:

OPERADORES

Los operadores especifican el tipo de cálculo que se quiere desarrollar en los elementos de una expresión. Los operadores se pueden clasificar en las siguientes categorías:

Aritméticos
Relacionales
Lógicos
Alfanuméricos
Asociativos

OPERADORES ARITMÉTICOS [1]

Los operadores aritméticos son usados para realizar cálculos matemáticos. Algunos de los operadores aritméticos se listan a continuación:

[1] Extracto tomado de Fundamentals of Programming. NIIT.

EJEMPLOS:

Supóngase que unas variables a y b tienen valores 10 y 3, respectivamente. Se muestran a continuación varias expresiones aritméticas en las
que aparecen estas variables, acompañadas del resultado.
 
 

Para resolver una expresión aritmética se deben seguir las siguientes reglas:

Primero se resuelven las expresiones que se encuentran entre paréntesis.


Todas las sub expresiones entre paréntesis se evalúan de adentro hacia afuera, desde el paréntesis más interno hasta ir desapareciéndolos todos. Se deben seguir ciertas reglas de prioridad
que veremos más adelante.

OPERADORES RELACIONALES
Usted puede comparar dos operandos utilizando operadores relacionales. El resultado es un valor de verdad ya sea Cierto o Falso.

Tenemos seis operadores relacionales. La siguiente tabla muestra dichos operadores:

Operador Relacional Descripción Ejemplo Explicación

= Compara los dos operandos y evalúa si son iguales x=y Devuelve verdadero si los valores son iguales y falso si no lo son

<>  Compara los dos operandos y evalúa si son diferentes x <> y Devuelve verdadero si los valores no son iguales y falso en caso
contrario

>  Evalúa si el operando izquierdo es mayor que el derecho x>y Devuelve verdadero si el primero es mayor que el segundo y falso
en caso contrario

<  Evalúa si el operando izquierdo es menor que el derecho x<y Devuelve verdadero si el primero es menor que el segundo y falso
en caso contrario

>= Evalúa si el operando izquierdo es mayor o igual que el x >= y Devuelve verdadero si el primero es mayor o es igual que el
derecho segundo y falso en caso contrario

<= Evalúa si el operando izquierdo es menor o igual que el x <= y Devuelve verdadero si el primero es menor o es igual que el
derecho segundo y falso en caso contrario

EJEMPLO

Supongamos que i,j y k son variables enteras con valores asignados 2,3 y 4 respectivamente. A continuación se presentan varias expresiones
lógicas en las que aparecen estas variables.
 
 

OPERADORES LÓGICOS O BOOLEANOS

Los operadores lógicos son usados para combinar el resultado de expresiones conteniendo operadores relacionales.

Existen tres operadores lógicos, que se describen en la siguiente tabla:

Operador Lógico Descripción Ejemplo

AND Operador lógico AND x < 7 AND y > 100

OR Operador lógico OR x < 7 OR y > 100

NOT Operador Lógico de negación NOT x = 10

1.3.3 Jerarquía de operadores

El resultado de evaluar una expresión aritmética es un número. Ahora bien, cuando aparecen dos o más expresiones aritméticas, ¿Cómo saber qué operaciones hay que realizar primero?

Por ejemplo, si tenemos una expresión 3 + 7 * 4. Cuál es la respuesta correcta?.

Veamos:

1)    3 + 7 = 10

10 * 4 = 40.  Si hacemos primero la suma el resultado será 40.

2)    7 * 4 = 28

3)    3 + 28 = 31. Si hacemos el producto y el resultado lo sumamos con el primer término, la respuesta es 31. 

Sabemos que la matemática es exacta, entonces ¿Si hay una única respuesta, cómo la obtenemos?.

 Veamos otro ejemplo.

Sea la expresión:  X2 + 1 / 2

Observe que esta expresión es totalmente diferente a esta otra (X2+1)/2, por lo que es importante codificar las expresiones aritméticas correctamente. Los paréntesis nos indican un orden para realizar
las operaciones. Pero no siempre nos darán los paréntesis, por lo se creó la jerarquía de operadores.

La jerarquía varía de lenguaje a lenguaje, por lo que es importante que cuando usted vaya a codificar en algún lenguaje, lo primero que debe revisar es la jerarquía que corresponde a ese lenguaje.
 

REGLAS DE PRIORIDAD

Para resolver una expresión se deben seguir las siguientes reglas:

Primero se resuelven las expresiones que se encuentran entre paréntesis.


Se procede aplicando la jerarquía de operadores.
Al evaluar una expresión, si hay dos operadores con la misma jerarquía, se procede a evaluar de izquierda a derecha.
Si hay expresiones relacionales, se resuelven primero paréntesis, luego se encuentran los valores de verdad de las expresiones relacionales y por último se aplica jerarquía de operadores
lógicos. En caso de haber iguales, proceder de izquierda a derecha.
El orden correcto a seguir, es primero resolver operadores aritméticos, luego los relacionales y por último los lógicos.
Si solo hay operadores aritméticos, el resultado es un número. Si hay operadores aritméticos y relacionales, el resultado es un valor booleano.

  EJEMPLO 1

EJEMPLOS DE OPERADORES ARITMÉTICOS.

1. Se tiene la siguiente expresión aritmética:

X=3+4*6/3*2–6*8/3*4+5*3/2*2
 
       Cuál sería el valor que al final quedará almacenado en la variable X?

 
SOLUCIÓN

Lo primero que haría el computador es recorrer la expresión buscando paréntesis, luego expresiones de potencia (o sea el símbolo ^ para resolverlo de
primero debido a que este es el operador de mayor peso en la jerarquía). Como no encuentra ninguno, entonces vuelve al principio de la expresión y
comienza a buscar (y resolver a medida que los encuentre) multiplicaciones y divisiones.

 
X=3+4*6/3*2–6*8/3*4+5*3/2*2

X = 3 + 24 / 3 * 2 – 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2

X=3+8*2–6*8/3*4+5*3/2*2

X = 3 + 16 – 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2

X = 3 + 16 – 48 / 3 * 4 + 5 * 3 / 2 * 2

X = 3 + 16 – 16 * 4 + 5 * 3 / 2 * 2

X = 3 + 16 – 64 + 5 * 3 / 2 * 2

X = 3 + 16 – 64 + 15 / 2 * 2

X = 3 + 16 - 64 + 7.5 * 2

X = 3 + 16 – 64 + 15

X = 19 – 64 + 15

X = -45 + 15

X = -30   Respuesta.

 
Con lo cual hayamos que, luego de resuelta la expresión, el valor que quedará almacenado en la variable X será el valor –30. Es muy importante que
cuando tenga que resolver una expresión de estas, lo haga paso a paso, sin apresuramientos y verá como obtiene, sin mayores tropiezos, el mismo
resultado que le daría al computador.

  EJEMPLO 2

Se tiene la siguiente expresión aritmética:

A=5*2/2*2+6*4/2*2–4*6*2/2*3/2

 
SOLUCIÓN

Como en esta expresión no existen paréntesis, operaciones de potenciación ni signo, entonces se procede a resolver el siguiente nivel de la jerarquía,
de izquierda a derecha (multiplicaciones y divisiones)

 
A=5*2/2*2+6*4/2*2–4*6*2/2*3/2

A = 10 / 2 * 2 + 6 * 4 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2

A=5*2+6*4/2*2–4*6*2/2*3/2
A = 10 + 6 * 4 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2

A = 10 + 24 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2

A = 10 + 12 * 2 – 4 * 6 * 2 / 2 * 3 / 2

A = 10 + 24 – 4 * 6 * 2 / 2 * 3 / 2

A = 10 + 24 – 24 * 2 / 2 * 3 / 2

A = 10 + 24 – 48 / 2 * 3 / 2

A = 10 + 24 – 24 * 3 / 2

A = 10 + 24 – 72 / 2

A = 10 + 24 – 36

A = 10 + 24 – 36

A = 34 – 36

A = -2   Respuesta.

  EJEMPLO 3

Resolver la siguiente expresión, para A=5 y B=16.

(A ^ 2) > (B * 2)

 
SOLUCIÓN

   

 (A ^ 2) > (B * 2) El primer paso es sustituir los valores de A y B

(5 ^ 2) > (16 * 2) Efectuamos los paréntesis, primero el de más a la izquierda

25 > (16 * 2) Resolvemos el paréntesis de la derecha

25 > 32 Se evalúa la expresión relacional y el resultado es

Falso Respuesta

  EJEMPLO 4

Resolver la siguiente expresión, donde X=6 y B = 7.

(X ^ 3 \ B) <= (X * 5 + B ^ 3 / 4)

 
SOLUCIÓN

 
(X ^ 3 \ B) <= (X * 5 + B ^ 3 / 4) Sustituir los valores de X y B

(6 ^ 3 \ 7) <= (6 * 5 + 7 ^ 3 / 4) Evaluando potencia en paréntesis de más a la izquierda

(216 \ 7) <= (6 * 5 + 7 ^ 3 / 4) Resolviendo paréntesis de más a la izquierda, hacemos división


entera

30 <= (6 * 5 + 7 ^ 3 / 4) Procediendo con el paréntesis de la derecha, potencia tiene mayor


prioridad

30 <= (6 * 5 +343 / 4) Producto y división real tienen misma prioridad, pero producto está
más a la izquierda

30 <= (30 +343 / 4) Luego sigue la división real

30 <= (30 +85.75) Efectuamos la suma

30 <= 115.75 Ya eliminamos los paréntesis, procedemos a evaluar el operador


relacional

Verdadero Respuesta

  EJEMPLO 3

Resolver la siguiente expresión

NOT((15 > = 7 ^ 2) and ( (43 – 8 * 2) mod 4 < > 3 * 2 div 2 ) or 3 > = 3 )

 
SOLUCIÓN

 
NOT((15 >= 7 ^ 2) and ( (43 – 8 * 2) mod 4 < > 3 * 2 div 2)Resolviendo paréntesis de adentro hacia afuera y el de
or 3 >= 3) más a la izquierda. Potencia tiene mayor prioridad.
 

Not ((15 >= 49) and ((43 – 8 * 2) mod 4 < > 3 * 2 div 2 ) or 3Pasamos al paréntesis de la derecha pues ya no hay
>=3) operadores aritméticos en el primer paréntesis

Not ((15>=49) and ((43 – 16) mod 4 < > 3 * 2 div 2 ) or 3 > Efectuamos la resta para quitar el paréntesis
=3)

Not ((15>=49) and (27 mod 4 <> 3 * 2 div 2 ) or 3 > = 3 ) Seguimos con el producto

Not ((15>=49) and (27 mod 4 <> 6 div 2 ) or 3 > = 3 ) Div y mod tienen igual prioridad, el de más a la izquierda es
mod.

Not ((15>=49) and (3 <> 6 div 2 ) or 3 > = 3 ) Luego efectuamos el div

Not ((15>=49) and (3 <> 3 ) or 3 > = 3 ) Ya no hay operadores aritméticos, seguimos con los
relacionales, el paréntesis de más a la izquierda

Not (Falso and (3 <> 3 ) or 3 > = 3 ) Luego con el de la derecha

Not (Falso and Falso or 3 > = 3 ) Quitamos el último operador relacional

Not (Falso and Falso or Verdadero) And tiene mayor prioridad que Or

Not(Falso or Verdadero) Efectuamos Or

Not(Verdadero) Evaluamos Negación

False Respuesta

1.3.4 Escritura de formulas

Las fórmulas matemáticas se deben escribir en formato lineal. Esto obliga al uso frecuente de paréntesis que indiquen el orden de evaluación correcto de las operaciones. Linealizar una expresión
significa, convertir una expresión algebraica en expresión aritmética o algorítmica.

 
EJEMPLOS 1:

Linealizar las siguientes expresiones: (no se olvide que linealizar significa escribir una expresión algebraica en una sola línea).

 
 
 

   

Sabemos que la división real se representa por /  y que usamos paréntesis para que se realicen las operaciones en el orden correcto.

Respuesta:

X =  ( a + b / c ) / ( a / b + c )

 
EJEMPLOS 1:

Linealizar las siguientes expresiones: (no se olvide que linealizar significa escribir una expresión algebraica en una sola línea).

  Recuerde que los paréntesis ayudan a separar las expresiones para que se evalúen en el orden correcto, debemos poner los que sean necesarios pero
tratando de que no vayan más de la cuenta.

Respuesta:

X =  ( a / (a + b)) / (a / (a - b))

« Anterior | Siguiente »
« Anterior | Siguiente »

Lógica de Programacion
1.4 Algoritmos y Diagramas de Flujo
INDICE

GENERALIDADES

T1: HERRAMIENTAS DE 1.4.1 Introducción a los algoritmos


PROGRAMACIÓN
CONCEPTO DE ALGORITMO:
1.1 Herramientas de Programación
Es un conjunto de pasos secuenciales y ordenados que permiten lograr un objetivo. Que sean pasos secuenciales significa que deben ser ejecutados uno después de otro y que sean pasos ordenados
1.2 Tablas de verdad
quiere decir que deben llevar un orden casi obligatorio (u obligatorio en la mayoría de los casos). Como puede notar el algoritmo permite lograr un objetivo. O sea que la clave para hacer buenos
1.3 Tipos de datos y jerarquía de algoritmos y llegar a la solución de un problema es tener claro el objetivo y no perderlo nunca de vista.[1]
operadores
Debe ser independiente de la sintaxis de un lenguaje de programación puesto que es la concreción de un plan y un medio para comunicar ideas entre personas. Lo que sí es importante notar, es que de
1.4 Algoritmos y Diagramas de Flujo un algoritmo sale el código en un lenguaje de programación. Por cada línea del algoritmo se corresponden una o varias líneas de código en un lenguaje de programación.[2]
T2: ESTRUCTURAS BÁSICAS DE
 
PROGRAMACIÓN

T3: ESTRUCTURAS DE DATOS

METODOLOGÍA A SEGUIR:

Establecer el problema.
Analizar el problema. Para ello nos hacemos las siguientes preguntas:
¿Qué información tenemos?
¿Qué necesitamos conocer?
¿Qué queremos obtener?
Diseñar el algoritmo para su solución.
Codificar.

[1] Tomado de webdelprofesor.ula.ve/ingenieria/eladio/Material/UNIDAD_III.pdf

[2] Tomado de http://www.cyta.com.ar/biblioteca/bddoc/bdlibros/construccion_programas/programar.pdf

CARACTERÍSTICAS QUE DEBEN DE CUMPLIR LOS ALGORITMOS OBLIGATORIAMENTE:

♦ Un algoritmo debe resolver el problema para el que fue formulado.

Lógicamente no sirve un algoritmo que no resuelve ese problema. En el caso de los programadores, a veces crean algoritmos que resuelven problemas diferentes al planteado. Los algoritmos deben
mostrar claramente cuáles son los datos iniciales y cuáles son los resultados.

♦ Los algoritmos son independientes del computador. Los algoritmos se escriben para poder ser utilizados en cualquier máquina.

♦ Los algoritmos deben de ser precisos. 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. Debe constar de pasos
claros, precisos y no ambiguos.

♦ Los algoritmos deben de ser finitos. Deben alcanzar la solución correcta en un tiempo finito. No es un algoritmo válido aquel que produce situaciones en las que el algoritmo no termina.

♦ Los algoritmos deben de poder repetirse. Deben de permitir su ejecución las veces que sea necesario. No son válidos los que tras ejecutarse una vez, ya no pueden volver a hacerlo por la razón
que sea. Debe tener la capacidad de resolver el problema aun cuando cambiemos los datos de entrada.

CARACTERÍSTICAS ACONSEJABLES PARA LOS ALGORITMOS[1]

♦ Validez. Un algoritmo es válido si carece de errores. Un algoritmo puede resolver el problema para el que se planteó y sin embargo no ser válido debido a que posee errores.

♦ Eficiencia. Un algoritmo es eficiente si obtiene la solución al problema en poco tiempo. No lo es si es lento en obtener el resultado.

♦ Óptimo. Un algoritmo es óptimo si es el más eficiente posible y no contiene errores. La búsqueda de este algoritmo es el objetivo prioritario del programador. No siempre podemos garantizar que el
algoritmo hallado es el óptimo, a veces sí.

[1] Tomado de www.conocimientosweb.net/.../article1382.html

ESTRUCTURA GENERAL DE UN ALGORITMO.

Aunque no existe una única forma de representar un algoritmo, la estructura general de éste debería ser como la siguiente:

 
 

REPRESENTACIÓN DE ENTRADAS Y SALIDAS DE UN ALGORITMO.

ENTRADAS

Entradas son los datos proporcionados al computador para procesar y generar la salida. Para que los resultados sean correctos, se tienen que dar los datos de entrada correctos. La entrada se puede
representar de varias formas. Flujogramas y pseudocódigo tienen diferentes métodos de representar la instrucción de aceptar una entrada. Algunos ejemplos de representación de entradas son los
siguientes:

En un Flujograma, la instrucción es representada usando el símbolo llamado “Entrada de datos”. Existe un símbolo para entrada por tarjeta perforada que ya está en desuso por haber desaparecido las
mismas (Ver imágen 1).

Los símbolos utilizados en flujogramas para representar las entradas son los siguientes: En un pseudocódigo, la instrucción se da a través de teclado.

Existen varias formas de representar el pseudocódigo. Por ejemplo, para leer la edad de un estudiante en una variable llamada edad (Ver imágen 2).

Un computador requiere entradas para generar las salidas. Después de aceptar la entrada, el computador la procesa y luego despliega el resultado. Este resultado es llamado la salida.

SALIDAS:

Al igual que las entradas, hay diferentes formas de representar la salida.


En un Flujograma, se utiliza el símbolo “desplegar”.


Los símbolos utilizados en flujogramas para representar las salidas se ven en la imagen 3:

En pseudocódigo, la instrucción “desplegar salida” es representada usando salida a pantalla o a papel que se ve en la imagen 4.


Representación de entradas en algoritmos.

Seleccione una imágen para agrandarla.

1.4.2 Representación de algoritmos.

Los comentarios en un algoritmo se usan como una referencia para explicar la lógica del mismo. Es una forma de documentar el proceso, estos no tienen efecto en el código del programa (el
computador los ignora), sino que sirven para que el programador comprenda mejor lo que se está representando en el algoritmo. Los comentarios se pueden representar ya sea en una sola línea o en
varias líneas.

Para representar comentarios en una sola línea, se utilizan dos barras:

//Este es un comentario.

Para representar un comentario en varias líneas se utiliza la siguiente simbología:

/* Este

es un

comentario

en varias

Líneas */

NOTACIONES PARA EL DISEÑO DE ALGORITMOS

Los algoritmos pueden ser representados en diferentes formas, entre las cuales tenemos:

 
Representación en pseudocódigo

PSEUDO: Falso, imitación

CODIGO: instrucciones escritas en un lenguaje de programación

El pseudocódigo no es propiamente un código sino un tipo de descripción que incluye un poco de lenguaje natural y de instrucciones estandarizadas para los lenguajes de programación. Podemos decir
que es un lenguaje intermedio entre el lenguaje natural (nuestra forma normal de expresarnos) y cualquier lenguaje de programación específico, como por ejemplo C, Fortran, Pascal, etc.

Es una mezcla de  lenguaje natural, símbolos, términos y otras características comúnmente utilizadas en los lenguajes de programación. Además es una técnica para diseño de programas que permite
definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema.

No existe una notación formal o estándar de pseudocódigo, sino que, cada programador puede utilizar la suya propia.

Usted puede detectar errores cuando escribe pseudocódigo porque cada paso del pseudocódigo puede ser revisado durante la creación.

Se concibió para superar las dos principales desventajas de los flujogramas: requiere mucho trabajo para elaborarlo y que no se puede modificar tan fácilmente sin tener que hacer un nuevo redibujo.

VENTAJAS DEL PSEUDOCÓDIGO.

Es más fácil y rápido de elaborar en comparación con el Flujograma.


Es más fácil detectar errores y hacer cambios.
No necesita ser reescrito si se hacen cambios, ya que cada paso es independiente y puede ser modificado sin
alterar los otros pasos.
Es fácil su traducción a cualquier lenguaje de programación. Esto no se logra con los flujogramas y tablas de
decisión, ya que el formato usado por el pseudocódigo es similar a un programa. Ambos contienen un grupo de
instrucciones secuenciales usando un grupo de instrucciones definidas.
Es un lenguaje algorítmico similar al español u otro idioma
Es una imitación de las instrucciones reales para una computadora
Permite representar en forma fácil operaciones repetitivas complejas.
Al seguir las reglas se pueden observar claramente los niveles que tiene cada operación.

DESVENTAJAS DEL PSEUDOCÓDIGO.

No provee una representación gráfica del algoritmo, por lo que puede ser difícil entender la lógica compleja de
un pseudocódigo.

Si el pseudocódigo contiene demasiadas condiciones anidadas puede ser difícil de entender.

El pseudocódigo puede ser diseñado en español o en inglés. Cuando se diseña en inglés, se tiene un grupo de instrucciones más parecidas a un lenguaje de programación.

Entre las instrucciones utilizadas en el pseudocódigo inglés tenemos las siguientes:

Begin …. End/ Start…. Stop.  Estas instrucciones son usadas para iniciar y finalizar.
Accept, read, input: Estas instrucciones son usadas para obtener una entrada de un usuario.
Display, write, print: Estas son usadas para presentar un resultado o una salida.
If… else: Son usadas para hacer decisiones.

EJEMPLO

Elaborar el pseudocódigo para encontrar la superficie de un círculo para un radio cualquiera.


 
 

1.4.3 Diseño de flujogramas

Continuando con el estudio de algoritmos, estudiaremos la representación en Diagramas de Flujo o llamados también Flujogramas.
 

FLUJOGRAMAS

Son la representación gráfica de la secuencia de actividades de un proceso en los algoritmos. Consiste en símbolos para representar los pasos de un algoritmo. Cada símbolo tiene un significado que
 representa una acción a ser seguida, correspondiente a un paso del algoritmo. Cada símbolo se conecta a través de flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben
ser ejecutados.

Puesto que un Flujograma es la representación gráfica de un algoritmo, también debe tener: ENTRADA – PROCESO – SALIDA.

Para comprender mejor los diagramas de flujo, se tiene que respetar las reglas de construcción. Al realizar una prueba manual, se debe tomar un conjunto de datos significativos de entrada y comenzar
a recorrer el Flujograma de arriba hacia abajo y de izquierda a derecha; según sea la forma representada, para ver cómo se comporta el Flujograma y si los resultados obtenidos son correctos y
coherentes.

EJEMPLO 1.

En ejemplos anteriores, diseñamos un pseudocódigo para encontrar la superficie de un círculo para un radio cualquiera.

El Flujograma que representa a dicho ejemplo es el siguiente:


 
 

« Anterior | Siguiente »
Introducción
Programación
2

Algoritmo Algoritmo

Un algoritmo constituye una lista bien definida, ordenada y finita de Un algoritmo puede ser expresado en:
operaciones, que permite encontrar la solución a un problema
● Lenguaje natural (a veces, este no resulta muy claro, pero es
determinado.
muy útil para problemas simples)
Dado un estado inicial y una entrada, es a través de pasos sucesivos
● Pseudocódigo
y bien definidos que se llega a un estado final, en el que se obtiene
una solución (si hay varias) o la solución (si es única). ● Diagramas de flujo
● Programas

3 4
Algoritmo Algoritmo

Ejemplo Ejemplo
Indicar los pasos para resolver la siguiente ecuación: Indicar los pasos para obtener el área sombreada:

5 6

Algoritmo Análisis y comprensión de un problema

Ejemplo Por lo general, un problema se descompone en subproblemas; por tanto,


Indicar los pasos para calcular: un algoritmo expresa la resolución de un problema (elemental o no).
Las etapas de desarrollo de un algoritmo, con base en la lógica, son las
siguientes:
1. Definición. En esta etapa se especifi ca el propósito del algoritmo
y se ofrece una definición clara del problema por resolver. Además,
aquí también se establece lo que se pretende lograr con su solución.

7 8
Análisis y comprensión de un problema Análisis y comprensión de un problema

2. Análisis. En este punto se analiza el problema y sus 3. Diseño. Aquí es donde se plasma la solución del problema. Con
Características, y se determinan las entradas y salidas del problema. ese fi n, se emplea una herramienta de diseño, que consiste en el
diagrama de flujo y el pseudocódigo.
De igual modo, también se realiza una investigación sobre si ya se
conoce alguna o varias soluciones de este. 4. Implementación. En este último paso es donde se realiza o se ve
concretado el programa y, por ende, se hacen varias pruebas.
En el caso de que ya se conozcan varias soluciones, entonces se
determina cuál es la más conveniente para el problema que estamos
tratando. Si no se conoce ninguna, o no nos satisfacen las soluciones
existentes, se propone una nueva.

9 10

Programas y lenguajes de programación Programas y lenguajes de programación

Un programa informático se define como un conjunto de instrucciones Un programa se escribe con instrucciones en un lenguaje de
que, una vez ejecutado, realiza una o varias tareas en una computadora. programación, el cual, a su vez, está definido por su sintaxis, que
establece e indica las reglas de escritura (la gramática), y por la
De esta forma, sin programas, una computadora no puede realizar las
actividades para las que fue diseñada y creada. semántica de los tipos de datos, instrucciones, definiciones, y todos los
otros elementos que constituyen un programa.
El conjunto general de programas que posee una computadora se
denomina software, término que se utiliza para definir al equipamiento o Un lenguaje de programación es un caso particular del lenguaje
soporte lógico de una computadora. informático; este último permite hacer programas, pero también describir
datos, configuraciones físicas y protocolos de comunicación entre
equipos y programas.
11 12
Variables, tipos y expresiones
Programación
2

Introducción Variables

El objetivo general de un programa es transformar datos en El formato de representación y de estructuración de los datos
resultados útiles para el usuario. Los datos están almacenados en la depende del paradigma del lenguaje de programación y de la opción
memoria principal o en la memoria secundaria, ya sea de manera que el programador ha elegido para representar los datos.
temporal (durante toda la ejecución del programa o durante una parte
La ventaja de las variables es que almacenan datos de entrada, de
del tiempo de ejecución) o de manera permanente.
salida o intermedios.
En la mayoría de los lenguajes de programación, los datos son de
El nombre de una variable debe ser único y no ambiguo.
diferentes tipos, aparecen en expresiones o en las llamadas de
funciones y se manejan a través del uso de variables.

3 4
Tipos de Variables Tipos de Variables

Las variables son de varios tipos; en la mayoría de los lenguajes de


programación imperativa predominan los siguientes tipos:
Entero (int)

● Variables simples. Son propias de los tipos básicos, para los datos Real (float)
enteros, flotantes, caracteres y lógicos.
Complejo (complex)
● Variables compuestas. La definición del tipo de una variable compuesta
depende de la sintaxis del lenguaje de programación y de su poder Booleano (bool)
semántico. Texto (str)
● Arreglos de variables de tipo simple o tipo compuesto. Los arreglos
sirven para almacenar una sucesión de valores del tipo indicado.
(A) Conjuntos de números (B) Tipos simples en Python
5 6

Tipos de Variables Expresiones

Ejemplo: En programación, una expresión es la traducción en lenguaje


informático de un cálculo aritmético, lógico o de otra naturaleza.
● El lado de un cuadrado?
● La temperatura de un día?
La noción de la expresión fue inspirada de la noción de expresión
● El ángulo interno de un triángulo?
● La cantidad de hijos de una persona?
matemática, por lo que su semántica es similar: la evaluación de una
● La raíz discriminante en la ecuación de Baskara? expresión se hace tomando en cuenta los valores que intervienen y
● El promedio de la estatura de un grupo de persona? aplicando los operadores.
● El IMC de una persona?

7 8
Expresiones Operadores

En las expresiones, los operadores tienen un orden de evaluación y ● Numéricas:


prioridades. Una expresión contiene, entonces: ○ Suma +
○ Resta o negación -
● Valores constantes
○ Multiplicación *
● Variables
○ División /
● Operadores
○ División Entera //
● Paréntesis
○ Resto o módulo %
○ Exponente **

9 10

Funciones matemáticas

● Redondeo
● Logaritmos
● Constantes matemáticas
● Trigonométricas

11

También podría gustarte