programacion_1
TRANSCRIPT
UNIVERSIDAD AUTÓNOMA DE CHIHUAHUA FACULTAD DE INGENIERÍA
INGENIERÍA AEROESPACIAL
PROGRAMACIÓN
La programación estructurada es una forma de escribir programas de computadora de manera clara.
Se escribe de acuerdo a las siguientes reglas:
Tiene diseño modular
Los módulos son diseñados de modo descendente
Cada módulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección y repetición.
Es el conjunto de técnicas que incorporan: Recursos abstractos: descomponer una
determinada acción compleja en términos de un número de acciones más simples.
Diseño descendente (top-down): proceso en el cual un problema se descompone en una serie de niveles o pasos sucesivos.
Estructuras de control: son métodos de especificar el orden en que las instrucciones de un algoritmo se ejecutarán.
El teorema de Böhm‐Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres estructuras de control siguientes: i. Secuencia ii. Instrucción condicional. iii. Iteración (bucle de instrucciones) con condición al
principio. Solamente con estas tres estructuras se pueden
escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un
mayor repertorio de estructuras de control, éstas pueden ser construidas mediante las tres básicas.
Estructura secuencial. Una estructura de programa es secuencial si se
ejecutan instrucciones una tras otra a modo de secuencia, es decir que una instrucción no se ejecuta hasta que finaliza la anterior.
Acción 1
Acción 2
Acción n
Estructura selectiva La estructura selectiva permite la realización de una
instrucción u otra según un criterio, solo una de estas instrucciones se ejecutara.
Estructura iterativa Un bucle iterativo o iteración de una secuencia de
instrucciones, hace que se repitan mientras se cumpla una condición, en un principio el número de iteraciones no tiene porque estar determinado.
Ventajas: 1. Los programas son más fáciles de entender, ya que
pueden ser leídos de forma secuencial. Sin necesidad de hacer seguimiento a saltos de línea (GOTO)
dentro de los bloques de código para entender la lógica.
2. La estructura del programa es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.
3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa
("debugging") se facilita debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente.
4. Reducción de los costos de mantenimiento de los programas.
5. Programas más sencillos y más rápidos (ya que es más fácil su optimización).
6. Los bloques de código son auto explicativos, lo que facilita la documentación.
7. Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor estructura sino también una excelente presentación.
Inconvenientes: El principal inconveniente de este método de
programación es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo.
Esto se resuelve empleando la programación modular, definiendo módulos interdependientes programados y compilados por separado.
Un algoritmo se puede definir como:
Serie de pasos organizados, que describe el proceso que se debe seguir para dar solución a un problema especifico.
Secuencia finita de instrucciones cada una de las cuales tiene un significado claro y puede ser efectuada con una cantidad de esfuerzo en una longitud de tiempo también finito.
Los pasos para la resolución de un problema son:
Diseño del algoritmo, que describe la secuencia ordenada de pasos que conducen a la solución de problema dado (análisis del problema y desarrollo del algoritmo)
Expresar el algoritmo como un programa en un lenguaje de programación adecuado (fase de codificación)
Ejecución y validación del programa por la computadora.
Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo.
Los algoritmos son independientes tanto del lenguaje de programación como de la computadora que los ejecuta.
Características.
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
Un algoritmo debe estar definido. Si se sigue el algoritmo dos veces, se debe obtener el mismo resultado cada vez.
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.
La definición de un algoritmo debe describir tres partes: entrada, proceso y salida.
Ejemplo:
Se desea diseñar un algoritmo para saber si un numero es primo o no.
▪ Inicio
▪ Poner X igual a 2 ( X=2, X variable que representa a los divisores del numero que se busca N)
▪ Dividir N por X (N/X)
▪ Si el resultado de X/N es entero, entonces N no es un numero primo y bifurcar al punto 7; en caso contrario, continuar el proceso.
▪ Suma 1 a X (X<- X+1)
▪ Si X es igual a N, entonces N es un numero primo; en caso contrario bifurcar al punto 3.
▪ Fin
Realizar la suma de todos los números pares entre 2 y 1000.
Inicio
Establecer SUMA a 0
Establecer NUMERO a 2
Sumar NUMERO a SUMA, el resultado será el nuevo valor de SUMA
Incrementar NUMERO en 2
Si NUMERO =< 1000, bifurcar al paso 4; en caso contrario, escribir el ultimo valor de SUMA y terminar el proceso
Fin
Identificador, constantes y variables.
Los datos simples o estructurados deben ser almacenados en casillas de memoria para su posterior utilización. Estas celdas tienen un nombre que permite su identificación, este es el identificador.
Las constantes son datos que no cambian durante la ejecución de un programa. Para nombrarlas, utilizamos identificadores.
Existen tipos de constantes como tipos de datos (reales, enteros, carácter, cadenas de caracteres, etc).
Las variables son objetos que pueden cambiar su valor durante la ejecución de un programa. Para nombrarlas se utilizan identificadores.
Al igual que las constantes, existen tantos tipos de ellas, como tipos de datos.
Los nombres de las variables deben ser representativas de la función que cumplen en el programa.
Operaciones aritméticas. Estas requieren de operadores aritméticos para
realizarse. Al evaluar expresiones que contiene dichos
operadores, debemos respetar la jerarquía en el orden de aplicación y un par de reglas:
1. Si una expresión contiene subexpresiones entre paréntesis, éstas últimas serán evaluadas primero.
2. Si las subexpresiones se encuentran anidadas por paréntesis, primero se evalúan las subexpresiones que se encuentran en el último nivel de anidamiento.
Operador aritmetico Operación Ejemplo Resultado
** Potencia 4**3 64
* ultiplicación 8.25*7 57.75
/ División 15/4 3.75
+ Suma 200+62 262
- Resta 100-30 70
mod Modulo (residuo) 15 mod 2 1
div Division entera 17 div 3 5
Operadores aritmeticos
Operador Jerarquia Operación
** (mayor) Potencia
*, /, mod, div Multiplicación, división, módulo, división entera
+, - (menor) Suma, resta
Jerarquia de los operadores aritmeticos
EXPRESIONES LÓGICAS. Llamadas también booleanas, están constituidas
por números, contantes o variables y operadores lógicos o relacionales.
El valor que pueden tomar estas expresiones es verdadero o falso.
Se utilizan en estructuras selectivas (el resultado determina el camino a seguir) y en las repetitivas (el resultado dicta si se sigue el ciclo o se interrumpe).
Operador Operación Ejemplo Resultado
= Igual que 'hola' = 'lola'
< > Diferente a a' < > 'b'
< Menor que 7 < 5
> Mayor que 7 > 5
<= Menor o igual que 15 <= 22
>= Mayor o igual que 55 >= 20
Operaciones relacionales
Operador lógico Jerarquía Expresión lógica Significado
(mayor) No P
No es cierto que P
Es falso que P
P ^ Q
P sin embargo Q
P o Q
o P o Q o ambos
(menor) Mínimo P o Q
Operadoradores lógicos
NO
Y
O P o Q
P y Q
No P
P Q ~P ~Q P o Q P ̂Q
VERDADERO VERDADERO
VERDADERO FALSO
FALSO VERDADERO
FALSO FALSO
Tabla de verdad de los operadores lógicos
Operadores Jerarquía
( ) (mayor)
**
*, /, div, mod
=, < >, <, >, <=, >=
NO
Y
O (menor)
Jerarquía de los operadores
Notas: Cuando se utilizan los operadores de relación con
operandos lógicos, falso es menor que verdadero.
El operador ( ) es un operador asociativo que tiene la prioridad mas alta en cualquier lenguaje.
En ciertos lenguajes, las prioridades de los operadores se manejan en forma diferente.
No se puede resolver la comparación entre un valor lógico y un numérico, utilizando un operador relacional.
Escribir las siguientes expresiones algebraicas como expresiones algorítmicas:
a)𝑀
𝑁+ 𝑃
b) 𝑀 +𝑁
𝑃−𝑄
c)𝑀+
𝑁
𝑃
𝑄−𝑅
5
d)−𝑏+ 𝑏2−4𝑎𝑐
2𝑎
e)𝑥2+𝑦2
𝑧2
Ejercicios 1. 7+5-6 2. 9+7*8-36/5 3. 7*5**3/4div3 4. 7*8*(160mod3**3)div5*13-28 5. 15/2*(7+(68-15*33+(45**2/16)/3)/15)+19 6. Si A=5 y B=16; (A**2)>(B*2) 7. Si X=6 y B = 7.8; (X*5+B**3/4)<=(X**3divB) 8. ((1580mod6*2**7)>(7+8*3**4))>((15*2)=(60*2/4)) 9. NO(15>=7**2)O(43-8*2div4<>3*2div2) 10. (15>=7*3**2Y 8>3Y 15>6) O NO(7*3<5+12*2div3**2) 11. NO((7*3div2*4)>(15/2*6>=15*2/17=15))