Tema N°1.- Algoritmo y Programas

30  100 

Texto completo

(1)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 1 Al hablar de Algoritmos y Programas nos sumergimos en el mundo de de la lógica y en donde los supuestos problemas que al principio se

piensan que no tienen solución, con un algoritmo bien definido y conducente a una posible aproximación hace que el mismo sea sujeto de una discusión en los términos de dar cabida a múltiples discusiones válidas para definir un rumbo definitivo de solución.

Aquí desarrollaremos los siguientes ítems:

Conceptos Básicos

Lenguaje algorítmico y de programación

Partes de un Algoritmo

Características y elementos para construir un algoritmo

Formas de representar un algoritmo: Lenguaje Natural,

Pseudocódigo y diagrama de Flujo.

Traza de un algoritmo (Corrida en Frio)

Introducción a los estándares de calidad

Forma de trazabilizar un algoritmo

Formas y técnicas de documentar algoritmos y programas

Técnicas de escritura y pruebas de algoritmos y programas

Los operadores: Concepto y tipos de operadores

La Expresión: conceptos, tipos y evaluación de expresiones, los

identificadores: Concepto, Reglas de escritura, las variables:

clasificación de variables según su contenido (numéricas,

lógicas y alfanuméricas) y su uso (de trabajo, contador y

acumulador), constantes.

Estructuras Decisionales (Simples, Dobles y Múltiples)

(2)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 2

Conceptos Básicos

Un Algoritmo es una serie de pasos organizados que describe el

proceso que se debe seguir, para dar solución a un problema específico.

Otra definición pudiese ser: Es una fórmula para resolver un problema. La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.

Tipos de Algoritmos

Cualitativos: Son aquellos en los que se describen los pasos

utilizando palabras.

Cuantitativos: Son aquellos en los que se utilizan cálculos

numéricos para definir los pasos del proceso.

Lenguaje Algorítmico y de Programación

Cuando se habla de Lenguaje Algorítmico es equivalente decir también pseudocódigo.

Lenguaje Algorítmico no es más que una herramienta algorítmica

(3)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 3 no), términos (Leer, Imprimir, Abrir, Cerrar, Hacer...Mientras, Mientras...Hacer, Para...Mientras, etc.) y otras características comúnmente

utilizadas en uno o más lenguajes de alto nivel.

No existen reglas que determinen que es o no es un pseudocódigo, sino que varía de un programador a otro. El objetivo del pseudocódigo es

permitir al programador centrarse en los aspectos lógicos de la solución evitando las reglas de sintaxis de un lenguaje de programación.

Posteriormente el pseudocódigo debe ser traducido a programa

usando un lenguaje de programación de alto nivel como Java, C++, C, etc.

Otras definiciones que pueden manejarse serían:

• Mezcla de lenguaje de programación y español (o inglés o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos.

• Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a realizar.

Ventajas del Uso de Pseudocódigo:

• Ocupa menos espacio en una hoja de papel.

(4)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 4

• Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje de programación.

• Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.

Tipos de Lenguajes Algorítmicos

Gráficos: Es la representación gráfica de las operaciones

que realiza un algoritmo (diagrama de flujo).

No Gráficos: Representa en forma descriptiva las

operaciones que debe realizar un algoritmo

(pseudocódigo).

Lenguaje de Programación: Es un conjunto de símbolos, caracteres y

reglas (programas) que le permiten a las personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación.

Los lenguajes de programación, como el nombre lo indica, sirven para escribir programas (instrucciones). Las instrucciones escritas en la

(5)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 5 traducción puede hacerse mediante un compilador, un interpretador o con una combinación de los dos.

Lenguaje Maquina: Son aquellos cuyas instrucciones son

directamente entendibles por la computadora y no necesitan

traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria más pequeña el bit (dígito binario 0 o 1). Todos los programas

ejecutables están en lenguaje máquina. Un programa ejecutable tiene, normalmente, millones de instrucciones máquina. Por otro lado, cada tipo de procesador tiene su propio lenguaje máquina (su propio juego de instrucciones). De manera que un programa ejecutable que corre en una

computadora equipada con un procesador Pentium no podría ejecutarse, por ejemplo, en una Apple Macintosh. Como ejemplo, observe la siguiente instrucción escrita en lenguaje máquina. 1001111110111101

Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las

instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones

simbólicas. Generalmente cada instrucción corresponde directamente a un código de máquina. Los lenguajes de bajo nivel representan un paso hacia la humanización de los lenguajes de programación, son más fáciles que los lenguajes máquina pero al igual que ellos son dependientes de la

(6)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 6 siendo el más importante el lenguaje ensamblador. En el lenguaje ensamblador las instrucciones se expresan utilizando

nemotécnicos. Por ejemplo, ADD para la suma, SUB para la resta, etc. Como ejemplo, observe la siguientes instrucciones escritas en el lenguaje ensamblador:

MOV AX,

A ADD AX,

B MOV C, AX

Lenguaje de Alto Nivel: Los lenguajes de

programación de alto nivel (BASIC, Pascal, COBOL, FORTRAN, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensión del programa. Cada línea de

programa corresponde a miles de instrucciones en lenguaje de máquina. Los lenguajes de alto nivel son lenguajes humanizados en los que las instrucciones se escriben utilizando frases del inglés cotidiano (o una mezcla de inglés y otro

idioma) y contienen notaciones matemáticas de uso común, facilitando así el aprendizaje del lenguaje y la escritura de programas. Por ejemplo, la instrucción: C = A + B. Existen muchos lenguajes de alto nivel entre los que podemos mencionar los siguientes: BASIC, C, C++, Java, Pascal, Eiffel,

Clipper, Ada, Smalltalk, Visual Basic, etc. Al programa escrito en un lenguaje de programación de alto nivel se conoce como código fuente o programa fuente.

(7)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 7 lenguaje máquina. Este proceso de traducción puede llevarse a cabo de una de las siguientes formas enunciadas a continuación, de- pendiendo

del lenguaje de programación:

• Traduciendo previamente todo el código fuente a código máquina obteniéndose un código denominado código

ejecutable o programa ejecutable. Este programa ejecutable puede cargarse a la memoria y ejecutarse sin requerir ya del código fuente. Este proceso de traducción lo realiza un programa especializado denominado compilador, que es propio del

lenguaje de programación que se está utilizando. Así, existen compiladores para el lenguaje C, compiladores para el lenguaje C++, compiladores para el lenguaje Pascal, compiladores para el lenguaje Ada, etc. Desde el punto de vista de la forma de ejecución, a este tipo de lenguajes se denominan lenguajes

compilados.

• Leyendo el código fuente instrucción por instrucción y convirtiéndolo a código máquina cada vez que se vaya a ejecutar el programa. Este proceso de traducción lo realiza un

programa especializado denominado intérprete, que es propio del lenguaje de programación que se está utilizando. Un ejemplo de lenguaje interpretado es el lenguaje Basic. Desde el punto de vista de la forma de ejecución. A este tipo de lenguajes se denominan lenguajes interpretados. Cuando se usa un intérprete

(8)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 8

• Una tercera forma es una forma híbrida y usa tanto un compilador como un intérprete. En esta, el código fuente se compila

generándose un cierto código intermedio (p-code en Visual Basic, bytecode en Java). Luego, el código intermedio generado es ejecutado por el intérprete. Desde el punto de vista de la forma de ejecución, a este tipo de lenguajes se denominan lenguajes

híbridos.

Programa fuente (Editor)

Compilador

Error

Programa objeto Librerias

Linkador

Ejecutables

Características, Partes y Elementos que conforman a un algoritmo

Características:

• Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.

(9)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 9

• Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algún momento; o sea, debe tener un numero

finito de pasos.

Partes:

Entrada: La entrada de los datos, corresponde a los insumos o

datos necesarios para ofrecer los resultados esperados.

Proceso: Son los pasos necesarios para obtener la solución al

problema o la situación planteada.

Salida: Son los resultados arrojadas por el proceso como la

solución.

Elementos:

• Variables

• Constantes

• Expresiones

• Operadores

• Sentencias de Entrada

• Sentencias de Escritura

• Funciones propias o diseñadas por el programador

Traza de un Algoritmo

La traza de un Algoritmo se puede definir como la ejecución manual de forma secuencial de las sentencias que lo componen. Así, la traza del siguiente algoritmo es el valor que van adoptando las variables a medida que se va ejecutando un programa.

(10)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 10

|

| Variable entera a,b

|

| Escribir "Indique el primer sumando"

| Leer a

| Escribir "Indique el segundo sumando"

| Leer b

| c=a+b

| Escribir "El resultado es: ";c

|

+-Final

+---+

| T R A Z A |

+---+---+

| Comentario | Valores |

+---+---+

(11)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 11

| Leemos b: | b <- 5 |

| Calcula c: | c <- a+b <- 9 |

| Escribe c: | c <- 9 |

+---+---+

La función principal que posee realizar la traza de un algoritmo es la de comprobar que éste funciona correctamente o para realizar la etapa de depuración en la que se intenta corregir errores, simplificar el algoritmo al máximo e incrementar su eficacia y velocidad.

Introducción a los Estándares de Calidad

Estándares de Calidad: se habla de normas y protocolos

internacionales que deben cumplir productos de cualquier índole para su distribución y consumo por el cliente final.

En el área de programación cuando se habla de dichas normas y protocolos es consolidar un piso de referencia que pueda ser cumplidos tanto por el programador como todos aquellos que sean evaluadores de dichos programas, para así lograr una unificación de criterios que permita

desarrollar software de calidad.

Forma de trazabilizar un algoritmo

Como se mencionó anteriormente la trazabilidad permite ejecutar el algoritmo dándole valores y de alguna u otra manera nos dá un panorama del programa que estamos desarrollando. NO existe una receta única a la

(12)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 12

una aproximación o guía que permita establecer como un patrón de referencia.

Veamos un ejemplo de una traza de un algoritmo, teniendo previamente un algoritmo desarrollado

Algoritmo Edades; Inicio

Variables Enteras i,Edad, Cont_MayEd, Cont_MenEd; i=1, Edad=0, Cont_MayEd=0, Cont_MenEd=0;

Mientras i<=10 hacer Leer Edad;

Si Edad >= 18 entonces

Cont_MayEd = Cont_MayEd + 1; Sino

Cont_MenEd = Cont_MenEd + 1; Fin_si

i = i+1; fin_Mientras

Imprimir “Hay:”, Cont_MayEd, “con edades superiores o iguales a 18 años”; Imprimir “Hay:”, Cont_MenEd, “con edades por debajo a 18 años”;

Fin

Veamos un ejemplo de una traza de un algoritmo, teniendo previamente un algoritmo desarrollado

Iteracion

Valores

i i<=10 Edad Edad >= 18 Cont_MayEd Cont_MenEd

Si No Si No

1 1 x 10 x 0 0+1=1

2 2 x 20 x 0+1=1 1

3 3 x 18 x 1+1=2 1

4 4 x 13 x 2 1+1=2

5 5 x 26 x 2+1=3 2

6 6 x 30 x 3+1=4 2

7 7 x 11 x 4 2+1=3

8 8 x 12 x 4 3+1=4

(13)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 13

10 10 x 17 x 5 4+1=5

11 11 x - 5 5

De allí se desprende que se introdujeron 10 edades y que las variables

Cont_MayEdad y Cont_MenEdad tienen ambas valores finales de 5, queriendo esto decir que hay cinco (5) edades por encima o iguales a 18 años como también hay cinco (5) edades por debajo de 18 años.

Formas y técnicas para documentar algoritmos y programas

La idea de documentar algoritmos y programas es simplemente

poder establecer un marco de referencia en el sentido de complementar en forma escrita que realiza cada línea de código del programa que se ejecuta de alguna u otra manera. Un ejemplo puede ser el siguiente:

Algoritmo Edades; /* El algoritmo se denomina Edades*/

Inicio/* Comienzo del Algoritmo*/

Variables Enteras i,Edad, Cont_MayEd, Cont_MenEd; /* Declaración de las Variables*/

i=1, Edad=0, Cont_MayEd=0, Cont_MenEd=0; /* Inicialización de las Variables*/

Mientras i<=10 hacer/* Comienzo de la Estructura Cíclica Mientras*/

Leer Edad; /* Lectura de la Variable Entera Edad*/

Si Edad >= 18 entonces

Cont_MayEd = Cont_MayEd + 1; /* Se incrementa progresivamente de uno en uno el contador de Mayores de Edad*/

Sino

Cont_MenEd = Cont_MenEd + 1; /* Se incrementa progresivamente de uno en uno el contador de Menores de Edad*/

Sino

Fin_si

i = i+1; /* Se incrementa progresivamente de uno en uno el contador i que controla el ciclo Mientras*/

fin_Mientras

Imprimir “Hay:”, Cont_MayEd, “con edades superiores o iguales a 18 años”; Imprimir “Hay:”, Cont_MenEd, “con edades por debajo a 18 años”;

(14)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 14

Hay quienes tienen un método diferente el cual no variará en mucho del mostrado porque a la final lo que se persigue a la final es simplemente

documentar lo que realiza el programa con la idea de poder ilustrar en forma representativa el programa.

Técnicas de Escritura y Pruebas de Algoritmos y Programas

Habría que considerar los siguientes aspectos a la hora de escribir un algoritmo independiente del Lenguaje de Programación a Usar:

1. Debe tener un nombre el algoritmo por tanto deberá colocársele un nombre.

2. Deberá usarse la identación respectiva de acuerdo al nivel en

que estemos trabajando. Eso indica que dependiendo las instrucciones que estemos trabajando y su importancia deberán guardarse la respectiva identación.

3. Deberá respetarse el uso de las palabras reservadas de

acuerdo al lenguaje o pseudolenguaje empleado.

4. Deberá respetarse una convención para establecer nombres adecuados para las variables, constantes y otros elementos necesarios en la elaboración de algoritmos y programas.

5. A la hora de declarar variables y/o constantes, se deben usar simplemente las necesarias no declarar por declarar.

6. Al igual que en la declaración de variables deberá inicializarse aquellas variables y/o constantes que sean verdaderamente necesarias.

Algoritmo Edades; (1)

Inicio (2)

(15)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 15

i=1, Edad=0, Cont_MayEd=0, Cont_MenEd=0; (6)

Mientras i<=10 hacer (3)

Leer Edad; (2)

Si Edad >= 18 entonces(3)

Cont_MayEd = Cont_MayEd + 1; (2)

Sino

Cont_MenEd = Cont_MenEd + 1; (2)

Fin_si(2)

i = i+1;

fin_Mientras(3)

Imprimir “Hay:”, Cont_MayEd, “con edades superiores o iguales a 18 años”; (3)

Imprimir “Hay:”, Cont_MenEd, “con edades por debajo a 18 años”; (3)

Fin

En cuanto a las pruebas a implementar se puede utilizar las convenciones adoptadas para realizar una trazabilidad de algoritmos.

Los operadores: Concepto y tipos de operadores

Previamente debemos de conocer que tipos de datos pueden

soportar en su mayoría los lenguajes de programación:

Dato: Es un objeto o elemento que tratamos a lo largo de

diversas operaciones.

Características:

a. Un nombre que los diferencia del resto.

b. Un tipo que nos determina las operaciones que podemos hacer con ese dato.

c. Un valor que puede variar o no a lo largo de la operación.

Tipos: Cada tipo se representa o almacena de forma diferente

(16)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 16

que hacen las mismas operaciones. Si tiene definida una relación de orden es un tipo escalar.

Cardinalidad de un tipo: Número de valores distintos que puede

tomar un tipo. Pueden ser finitos (caracteres), y si son infinitos el ordenador los toma como finitos porque esta limitado por el tamaño de los bytes en el

que la cifra es almacenada.

Los datos pueden ser:

Simples: Un elemento.

Compuestos: Varios elementos.

Los tipos pueden ser:

Estandar: Que vienen en el sistema por defecto.

No estandar: Son los que crea el usuario.

Los tipos simples más importantes son:

Numéricos: (a) Entero: Subconjunto finito del conjunto

matemático de los numéros enteros. No tiene parte decimal. El rango de los valores depende del tamaño que se les da en

memoria. (b) Real: Subconjunto finito del conjunto matemático de los números reales. Llevan signo y parte decimal. Se almacenan en 4 Bytes (dependiendo de los modificadores). Si se utilizan números reales muy grandes, se puede usar notación

(17)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 17

Lógicos o booleanos: Aquel que sólo puede tomar uno de los

dos valores, verdadero o falso (1/0).

Caracteres: Abarca al conjunto finito y ordenado de

caracteres que reconoce la computadora (letras, dígitos, caracteres especiales, ASCII). Tipo de cadena o String: Conjunto de caracteres, que van a estar entre “”.

El propio lenguaje puede añadir más tipos, o se pueden añadir modificadores.

Entero : Int Long int

En algunos lenguajes se definen tipos especiales de fecha y hora,

sobre todo en los más modernos.

Un operador es un elemento de programa que se aplica a uno o

varios operandos en una expresión o instrucción. Los operadores que requieren un operando, como el operador de incremento se conocen como operadores unarios. Los operadores que requieren dos operandos, como los operadores aritméticos (+, - , *, / ) se conocen como operadores

binarios.

(18)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 18

Operadores Aritméticos

Operadores Incremento y Decremento

Operador Acción Ejemplo Resultado

++ PreIncremento J = 1 ; ++J 2 y se mantiene 2

PostIncremento J = 1 ; J++ 1 y luego pasa a 2

-- Predecremento J = 1 ; --J 0 y se mantiene 0

Postdecremento J = 1 ; J-- 1 y luego pasa a 0

Operadores Relacionales

(19)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 19

Operadores Lógicos

La Expresión: conceptos, tipos y evaluación de expresiones, los

identificadores: Concepto, Reglas de escritura, las variables: clasificación

de variables según su contenido (numéricas, lógicas y alfanuméricas) y su

uso (de trabajo, contador y acumulador), constantes.

Antes de definir expresiones y su posterior evaluación, manejaremos los conceptos de Constantes y Variables.

Constantes: Tienen un valor fijo que se le da cuando se define la

constante y que ya no puede ser modificado durante la ejecución.

Variables: El valor puede cambiar durante la ejecución del

algoritmo, pero nunca varía su nombre y su tipo.

Antes de usar una variable hay que definirla o declararla, al hacerlo hay que dar su nombre y su tipo. El nombre que le damos tiene que ser un

nombre significativo, va a ser un conjunto de caracteres que dependiendo del lenguaje hay restricciones. Tiene que empezar por una letra, y el tamaño depende del lenguaje.

(20)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 20

El valor de la variable si al declararla no se la inicializa, en algunos lenguajes toma una por defecto. En cualquier caso el valor de la variable

podemos darle uno incial o podemos ir variandolo a lo largo de la ejecución. Las constantes pueden llevar asociados un nombre o no, si no lo llevan, se llaman literales. Su valor hay que darlo al definir la constante y ya no puede cambiar a lo largo de la ejecución, y en cuanto al tipo,

dependiendo de los lenguajes en algunos hay que ponerlo, y en otros no hace falta ponerlo porque toma el tipo del dato que se le asigna. Const PI=3,1416. Hay que inicializar todas las variables.

< > Hay que poner algo obligatoriamente. [ ] Puede llevar algo o no llevarlo.

La ventaja de usar constantes con nombre es que en cualquier lugar donde quiera que vaya la constante, basta con poner su nombre y luego el compilador lo sustituirá por su valor. Las constantes sin nombres son de valor constante: 5, 6, ‘a’, “hola”. Cuando una cadena es de tipo carácter,

se encierra entre ‘’ ‘a’.

Relación entre variables y constantes en memoria:

Al detectar una variable o una constante con nombre, automáticamente se reserva en memoria espacio para guardar esa

variable o constante. El espacio reservado depende del tipo de la variable. En esa zona de memoria es en la que se guarda el valor asociado a la variable o constante y cuando el programa use esa variable, ira a esa zona de memoria a buscar su valor.

(21)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 21

Una expresión es una combinación de constantes, variables, signos

de operación, paréntesis y nombres especiales (nombres de funciones

estandar), con un sentido unívoco y definido y de cuya evaluación resulta un único valor. Toda expresion tiene asociada un tipo que se corresponde con el tipo del valor que devuelve la expresion cuando se evalua, por lo que habrá tantos tipos de expresiones como tipos de datos. Habra

expresiones numéricas y lógicas.

Expresiones Numéricas: Operadores aritméticos: Son los que se

utilizan en las expresiones numéricas (una combinación de variables y/o constantes numéricas con operadores aritméticos y que al evaluarla devuelve un valor numérico. Todos estos operadores

aritméticos son binarios (el operador se situa en medio), el menos tambien puede ser unario (lleva un único operando) y significa signo negativo.

o Reglas de precedencia: El problema es cuando una expresión

entera según como la evalue pueda dar diferentes valores. 7*3+4 25

La solución es aplicar prioridad entre los operadores, de modo que ante la posibilidad de usar varios siempre aplicaremos

primero el de mayor prioridad. Cada lenguaje puede establecer sus propias reglas de prioridad o precedencia de operadores. Si no nos acordamos, siempre podemos poner ( ).

1ª) Potencia

(22)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 22

Entre dos operaciones que tienen la misma precedencia para resolver la ambigüedad, hay que usar la regla de la

asociatividad. La más normal es la de la asociatividad a izquierdas (primero lo de la izquieda).

Expresiones lógicas: Operadores relacionales y lógicos: Una

expresión lógica es aquella que sólo puede devolver dos valores (Verdadero o Falso). Los valores que pueden aparecer en una expresión lógica son de 2 tipos: lógicos y relacionales.

La particularidad de las expresiones lógicas es que mientras en una expresión numérica por devolver un valor numérico los operandos solo pueden ser números, en una expresión lógica los operandos no

tienen porque ser booleanos aunque se devuelva un valor booleano. Esto es lo que ocurre cuando en la expresión lógica utilizamos operadores relacionales con lo cual se obtienen valores lógicos o booleanos a partir de otros que no lo son. En cambio cuando los

operadores son lógicos los operandos obligatoriamente tambien tienen que ser lógicos. ¿Cómo se evalúa una expresión relacional o lógica?

o Primero se evalua el primer operando y se sustituye por su

valor.

o Luego se evalua el seguno operando y se sustituye por su valor. o Finalmente se aplica el operador relacional y se devuelve el

valor booleano correspondiente.

(23)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 23

Cuando se requiere evaluar varias expresiones condicionales, se apela a usar los operadores lógicos (and, or y not) para poder

hacerlo.

ENTRADA Y SALIDA DE LA INFORMACIÓN

Las dos operaciones básicas en todo lenguaje de programación: son las de lectura y de escritura. La lectura es equivalente a la asignación en cuanto que va a haber una variable que recibe un valor, pero este valor no resulta de evaluar ninguna expresión, sino que el valor lo vamos a leer de un dispositivo externo de entrada. Sintaxis: Leer (nombre de la variable) en Lenguaje C es a

través de la sentencia scanf, sus parámetros son el tipo de dato asociada a la variable y luego se coloca o no dependiendo el operador & y por último la variable. El valor introducido por el dispositivo externo, tiene que ser del mismo tipo del que la variable

que se le asigne.

La operación de escritura lo que hace es mostrar el valor de una variable en un dispositivo externo de salida. Sintaxis: Escribir (variable), en el caso de Lenguaje C la sentencia empleada es printf colocando el tipo de dato asociado a la variable y luego la variable

a mostrar. La operación de escritura no es una operación destructivo en memoria. Al pedir un valor al usuario hay que decirle que es lo que se le quiere pedir escribiendo un mensaje.

(24)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 24

/*comentarios sobre lo que el programa realiza */

/*declaración de archivos de encabezado*/

#include <archivo.h>

/*constantes*/

nombre_constantes;

/*plantillas de estructuras */

struct nombre{declaradores}

/*declaración de funciones */

tipo nombre_funcion1(parametros); ...

/*variables globales*/

tipo nombre_variable;

/*función principal */

void main(void) {

/*Declaración de variables locales */

tipo nombre_variable;

/*contenido interno */

nombre_funcion1(argumentos); ...

... ... }

/*cuerpo de las funciones */

tipo nombre_funcion1(argumentos) {

/*variables locales a la función */

tipo nombre_variable;

/*contenido interno*/

... }

Estructuras Decisionales (Simples, Dobles y Múltiples)

Las estructuras de decisión son aquellas que plantean una

(25)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 25

Estas estructuras de decisión (simples, dobles o múltiples) se apoyan con las sentencias if, if..else y switch, respectivamente

o Simples: Evaluamos la condición y si es verdadera ejecutamos el

conjunto de condiciones asociadas al entonces, y si es falso, no hacemos nada. Sintácticamente hablando y empleando la

sentencia if, quedaría así:

if (expresión condicional){

acciones; }

Ejm:

If (edad >=18)

{

printf (“Mayor de Edad”); }

o Dobles: Evaluamos la condición y si es verdadera ejecutamos el

conjunto de condiciones asociadas cuando la expresión resulta verdadera y si es falso se realizaran otras acciones que deberían ser totalmente distintas a las de verdadero. Sintácticamente hablando y empleando la sentencia if, quedaría así:

if (expresión condicional){

acciones; }

else {

acciones; }

(26)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 26

If (edad >=18) {

printf (“Mayor de Edad”); }

else {

printf (“Mayor de Edad”); }

o Múltiples: Evaluamos la variable y dependiendo del valor tendremos

una acción que ejecutar, en esencia debería ser acciones totalmente diferentes. Sintácticamente hablando y empleando la

sentencia switch, quedaría así: switch(variable)

{

case const1: acciones; break; case const2:

acciones; break; ...

default: acciones; }

Ejm:

int valor; switch(valor) {

case 0: {

(27)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 27

case 5: {

cont--; break; }

default: cont=-10; /* Se ejecuta si valor no es 0 o 5 */ }

char d; int cont=0; switch(d) {

case ‘\r’: {

cont++; /* Si d es un retorno de carro, se */ /* ejecuta este cont++ y el siguiente*/ /* al no aparecer un break */

}

case ‘\x1B’: {

cont++; break; }

default: cont=-1; }

Estructuras de Repetición (While, Do..While, For)

Las estructuras de repetición permiten realizar las acciones un número de veces (ya sea en forma finita o no). Dependiendo de cómo sea

la estructura de repetición o ciclo como también se le conoce, la evaluación de la expresión se realiza ya sea al principio (ciclo while y ciclo for)o se hace al final (ciclo do..while).

(28)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 28

o While: Este ciclo se considera cerrado, porque primero se

evalúa la expresión si es verdadera, entra al ciclo y se realizan

las acciones el número de veces que determine la constante evaluación de la condición inicial de control del ciclo while. ¿Cuándo se detiene? Cuando la expresión toma el valor falso, ¿Cuándo no se realiza el ciclo while? Cuando se evalúa la

expresión y esta es falsa. Sintácticamente hablando el while queda así:

while (expresion) {

acciones; }

Ejm:

int contador = 0;

while (contador <=100) {

printf(“%d”, contador); contador++;

}

o Do.. While: Este ciclo se considera abierto, porque primero se

ejecutan las acciones y por último se evalúa la expresión de control, si es verdadera puede realizarse de nuevo el ciclo ¿Cuándo se detiene? Cuando la expresión toma el valor falso, ¿Cuándo no se realiza el ciclo do..while? La primera vez se

(29)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Unidad Curricular: Intensivo 2016.- Algorítmica y Programación – Trayecto I Página 29

do {

acciones; } while (expresion);

Ejm:

int contador = 1;

do {

printf(“%d”, contador); contador++;

} while (contador <=100);

o For: Este ciclo se considera cerrado, porque se inicializa la

variable de control, luego se evalúa la expresión donde esta inmersa la variable de control y por último la sentencia de incremento o decremento de la variable de control ¿Cuándo se detiene? Cuando la expresión toma el valor falso, ¿Cuándo

no se realiza el ciclo for? Cuando la expresión es falsa

for(variable=valorinicial;expresión; incremento o decremento)

{

acciones;

}

Ejm:

int contador;

for(contador=1; contador <=100; contador++)

{

(30)

Recopilado por: MSc. Leonardo Javier Malavé Quijada

Figure

Actualización...

Referencias

Actualización...