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)
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
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.
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
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
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.
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
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.
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.
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 |
+---+---+
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
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
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”;
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)
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
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
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.
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
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.
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.
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
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.
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.
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
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; }
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: {
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).
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
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++)
{
Recopilado por: MSc. Leonardo Javier Malavé Quijada