Algoritmo y Programación
Algoritmo y Programación
Algoritmo y Programación
Semestre: 2017-2
Introducción a Lenguaje de
Programación
La solución de problemas mediante el uso de un computador nos lleva a
desarrollar programas o aplicaciones, la construcción de estos programas
debe ser realizada mediante una metodología, los pasos para la
construcción de programas son:
1. Diseñar el algoritmo, consiste en analizar el problema y describir los
instrucciones de forma ordenada que resuelven el problema.
2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.
3. Ejecutar y validar el programa en un computador (verificación)
¿Qué es un lenguaje de
programación?
Un lenguaje de programación es una técnica estándar de comunicación
que permite expresar las instrucciones que han de ser ejecutadas en una
computadora. Estas instrucciones permiten la construcción de programas
con los cuales podemos realizar operación de entrada y salida,
almacenamiento, cálculos y lógica de comparación.
Un lenguaje de programación permite a un programador especificar de
manera precisa: sobre qué datos una computadora debe operar, cómo
deben ser estos almacenados y transmitidos y qué acciones debe tomar
bajo una variada gama de circunstancias. Todo esto, a través de un
lenguaje que intenta estar relativamente próximo al lenguaje humano o
natural, tal como sucede con el lenguaje
Clasificación de los Lenguajes de
Programación
Según nivel de abstracción:
Lenguajes de bajo nivel: Son lenguajes de programación que se acercan al
funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia, el
código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en
ensamblador se trabajan con los registros de memoria de la computadora de forma
directa.
Lenguaje de medio nivel: Hay lenguajes de programación que son considerados por
algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C al tener
ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al
mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y,
por tanto, de alto nivel.
Lenguaje de alto nivel: Los lenguajes de alto nivel son normalmente fáciles de aprender
porque están formados por elementos de lenguajes naturales, como el inglés. En Visual
Basic, el lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR = 10
THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual
a 10. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante,
dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo
hacen en realidad de una forma rígida y sistemática.
Clasificación de los Lenguajes de
Programación
Según su Paradigma:
Imperativo
Declarativo
Estructurado
Orientado a Objetos
Funcional
Lógico
Clasificación de los Lenguajes de
Programación
Según la forma de ejecución:
Lenguajes compilados: Los compiladores son aquellos cuya función es traducir
un programa escrito en un determinado lenguaje a un idioma que la
computadora entienda (lenguaje máquina con código binario).
Lenguajes Interpretados: Un programa intérprete, almacenado en el sistema
operativo del disco, o incluido de manera permanente dentro de la máquina,
convierte cada proposición del programa fuente en lenguaje de máquina
conforme vaya siendo necesario durante el proceso de los datos. No se graba
el código objeto para utilizarlo posteriormente.
Y ¿Que es Programar?
• Si lo que queremos es conocer el valor que tiene una variable lo hacemos escribiendo el
nombre de la variable y pulsando “enter”.
Para recordar órdenes previas usamos las flechas del teclado ↑ y ↓. también podemos verlas en
la ventana command history, ventana situada en la parte inferior derecha:
Operaciones con Escalares
• Un sólo valor, llamado escalar, se representa en MATLAB como una
matriz 1 x 1.
• En la siguiente tabla se muestran las operaciones aritméticas más comunes
entre dos escalares:
Redondeo
Trigonometría
Funciones matemáticas básicas
Algunas Operaciones
Funciones matemáticas básicas
Números Complejos
Variables
A parte de crear vectores introduciendo cada uno de sus elemento, se pueden crear haciendo
uso de las siguientes sentencias:
(a:b) crea un vector que comienza en el valor a y acaba en el valor b aumentando de 1 en 1.
(a:c:b) crea un vector que comienza en el valor a y acaba en el valor b aumentando de c en c.
linspace (a,b,c) genera un vector linealmente espaciado entre los valores a y b con c elementos.
linspace (a,b) genera un vector linealmente espaciado entre los valores a y b con 100 elementos.
logspace (a,b,c) genera un vector logarítmicamente espaciado entre los valores 10^a y 10^b con c
elementos.
logspace (a,b) genera un vector logarítmicamente espaciado entre los valores 10^a y 10^b con 50
elementos.
Construcción de algunas matrices
Al igual que pasa con los vectores, existen unas sentencias que nos ayudan a crear algunas matrices que Matlab ya
tiene predefinidas (m y n deben tomar valores naturales):
zeros (n) crea una matriz cuadrada n x n de ceros.
zeros (m,n) crea una matriz m x n de ceros.
ones (n) crea una matriz cuadrada n x n de unos.
ones (m,n) crea una matriz m x n de unos.
rand (n) crea una matriz cuadrada n x n de números aleatorios con distribución uniforme (0,1).
rand (m,n) crea una matriz m x n de números aleatorios con distribución uniforme (0,1).
randn (n) crea una matriz cuadrada n x n de números aleatorios con distribución normal (0,1).
randn (m,n) crea una matriz m x n de números aleatorios con distribución normal (0,1).
eye (n) crea una matriz cuadrada n x n de unos en la diagonal y ceros el resto.
eye (m,n) crea una matriz m x n de unos en la diagonal y ceros el resto.
magic (n) crea una matriz cuadrada n x n de enteros de modo que sumen lo mismo las filas y las
columnas.
hilb (n) crea una matriz cuadrada n x n de Hilbert, es decir, los elementos (i,j) responden a la
expresión (1/(i+j-1)).
invhilb (n) crea una matriz cuadrada n x n que es la inversa de la matriz de Hilbert.
Operaciones básicas con matrices
Ejercicios
Crear un vector que comienza en 1, aumenta de 1 en 1 y acaba en 7
Crear un vector que comenzando en 1, aumenta de 3 en 3 hasta el 10
Crear un vector comenzando en 1, aumenta de 4 en 4 hasta el 10
Crear un vector que comenzando en 50, disminuye de 7 en 7 hasta el 1
Genera un vector desde el 2 al 6 con 4 elementos equidistantes
Genera un vector logarítmicamente espaciado entre 10^0 y 10^2 con 4 elementos
Crear una matriz cuadrada 3 x 3 de ceros
Crear una matriz 2 x 3 de unos
Crear matriz 2 x 4 de valores aleatorios entre 0 y 1 con distribución uniforme (0,1)
Crear matriz 2 x 5 de valores aleatorios con distribución normal (0,1)
Ejercicios
Crear una matriz cuadrada de 4 x 4 de unos en la diagonal y ceros el resto (matriz
identidad o unidad)
Crear una matriz mágica de 4 x 4
Se definen las siguientes Matrices:
A = [1 2; 3 4] B = [1 1; 0 1]
C = [1 + 1.0i 2 + 2.0i; 3 + 1.0i 4 + 7.0i]
Multiplicar las Matrices A x B
Multiplicar elemento a elemento de A x B
Realizar la transpuesta conjugada de C
Realizar la transpuesta de C
Se puede realizar la suma de un numero a una matriz?. Realizar la prueba con el numero 2 a la
matriz A
Funciones para operar con vectores
Ejemplos:
x = [1 2 3]; y = [4 5 6];
cross (x,y) % producto vectorial
dot (x,y) % producto escalar
Funciones para el análisis de matrices
Otras operaciones con Matrices
Gráficos Bidimensionales
La orden plot genera una gráfica. Los argumentos deben ser vectores de
la misma longitud.
Ejemplo:
x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9];
plot (x,y)
Gráficos Bidimensionales
Algoritmo:
Secuencia finita de instrucciones, reglas o pasos que describen en forma
precisa las operaciones que una computadora debe realizar para llevar a
cabo una tarea en tiempo finito [Knuth, 1968].
Descripción de un esquema de comportamiento expresado mediante un
repertorio finito de acciones y de informaciones elementales, identificadas,
bien comprendidas y realizables a priori. Este repertorio se denomina
léxico[Scholl, 1988].
Características de un algoritmo
Algoritmo en SEUDOCÓDIGO
Paso 1: Inicio
Paso 2: Asignar el número 2 a la constante "div"
Paso 3: Asignar el número 3 a la constante “base”
Paso 4: Asignar el número 4 a la constante “altura”
Paso 5: Guardar en la variable "área" el resultado de base*altura/div
Paso 6: Imprimir el valor de la variable "área"
Paso 7: Final
Ejemplo
Algoritmo en diagrama de flujo
Ejemplo 2
Elaborar un Algoritmo para calcular el área de cualquier triángulo
rectángulo y presentar el resultado en pantalla.
SEUDOCÓDIGO
• Paso 1: Inicio
• Paso 2: Asignar el número 2 a la constante "Div"
• Paso 3: Conocer la base del triángulo y guardarla en la variable "Base"
• Paso 4: Conocer la altura del triángulo y guardarla en la variable "Altura"
• Paso 5: Guardar en la variable "Area" el valor de multiplicar "Base“ por "Altura"
• Paso 6: Guardar en la variable "Area" el valor de dividir "Area“ entre "Div"
• Paso 7: Reportar el valor de la variable "Area"
• Paso 8: Final
Ejemplo 2
Algoritmo en diagrama de flujo
Ejercicios
Las variables globales son variables que, una vez creadas en MATLAB, son
reconocidas en cualquier parte, incluidos todos los script.
Cuando una variable se define en un script esta puede ser usada en Ia
Ventana de Comandos. En otras palabras, cualquier variable creada
existe, y por lo tanto puede ser manipulada tanto en scripts como en la
Ventana de Comandos.
Entrada y salida de datos – Valores de
entrada
1. Variable definida y asignada en el script
En este caso, la asignación del valor a la variable forma parte del script. Si el
usuario quiere ejecutar el script con un valor diferente para esa variable, el script
debe editarse para asignarle un nuevo valor.
Ejemplo: salida1.m
x =[1 2 3 4 5]; disp('Los valores en la matriz x son:');
disp(x);
Ejemplo: salida2.m
x =[1 2 3 4 5];
disp(['los valores en el arreglo x son: ' num2str(x)])
Ejemplo
Ejemplo: platica.m
disp('Hola, ¡Buenos días!');
disp('Soy el programa MATLAB');
nombre=input('¿Quién eres tu? ','s');
disp(['Hola ',nombre] );
respuesta=input('Las computadoras son adorables, ¿no? ', 's');
disp([respuesta, '?'] );
disp('Las computadoras son muy útiles.');
disp('Las vas a usar mucho durante tus estudios. ');
disp('Buena suerte con ellas.')
pause(2);
disp('Bye, bye')
Comando fprintf
Elementos de formato
El flag o bandera,
(signo menos) Justificación izquierda dentro del campo.
+ (signo más) Visualiza el signo (+ o -) delante del número
0 (cero) Añade ceros si el número es mas pequeño que el campo.
Comando fprintf
Si se desea introducir una comilla simple dentro del texto, debe teclearse
doblemente dentro de la cadena.
Si se desea introducir un símbolo de % dentro del texto, debe teclearse
doblemente dentro de la cadena.
El comando fprintf permite vectorización. Esto significa que cuando se
introduce una variable de tipo array para ser visualizada, el comando
muestra tantos elementos como haya en el array, utilizando incluso una
visualización apropiada, en forma de columnas y filas, para el caso de las
matrices.
Ejemplo
Ejemplo: impresion.m
voltaje = 3.1;
fprintf('El voltaje es %8.2f milivolts \n',voltaje);
fprintf('El voltaje es %8.2e milivolts \n',voltaje);
fprintf('El voltaje es %i milivolts \n',3);
a=1.2; b=3;c=0.0000000000123;
fprintf('ejemplo a=%g b=%i y c=%1.2e...', a, b, c);
x = 1:5;
fprintf('%8.2f \n' , x);
feet = 1:3;
inches = feet.*12;
table = [feet;inches];
fprintf('%4.0f %7.2f \n' , table);
Comando fprintf
Paso a:
El comando fopen, que crea un archivo nuevo vacío o abre un archivo ya
existente en disco para trabajar con el
f_id=fopen( 'nombre_archivo', 'permisos')
f_id es una variable denominada identificador de archivo.
El nombre del archivo se escribe junto con su extensión.
Los permisos corresponden a una serie de códigos que le dicen al sistema
cómo abrir el archivo.
'r' Indica que el archivo se abre para leer (por defecto).
'w' Indica que el archivo se abre (o crea) para escritura.
'a' Indica Io mismo que 'w', excepto que si el archivo existe entonces los datos
son añadidos al final del archivo.
Comando fprintf
Paso b:
Una vez que el archivo está abierto, se utiliza el comando fprintf para
escribir la salida en el archivo, sólo que es necesario poner el identificador
de archivo (f_id) antes del texto de Ia siguiente forma:
fprintf(f_id,'texto %-5.2f texto adicional', variable)
Paso c:
Cuando se ha terminado de escribir los datos en el archivo, este debe ser
cerrado utilizando el comando fclose. La sintaxis de este comando es la
siguiente:
fclose(f_id)
Ejemplo
escritura.m
arch1=fopen( 'ejemplo.txt', 'w');
feet = 1:3;
inches = feet.*12;
table = [feet;inches];
fprintf(arch1,'%4.0f %7.2f \n' , table);
fclose(arch1);
Operaciones Relacionales y Lógicas
IF-END
Un enunciado if simple tiene la siguiente forma:
if condicion
sentencias
end
Si la condición (una expresión lógica) es verdadera, se ejecutan las
sentencias y sigue a end.
Si la comparación es falsa, el programa salta inmediatamente al
enunciado que sigue a end
Estructuras de Control
IF-ELSE-END
El if simple le permite ejecutar una serie de enunciados si una condición es
verdadera y saltar dichos pasos si la condición es falsa.
La cláusula else le permite ejecutar un conjunto de enunciados si la
comparación es verdadera y un conjunto diferente de enunciados si la
comparación es falsa.
if condicion
bloque1
else
bloque2
end
Estructuras de Control
IF-ELSEIF-ELSE-END
Esta estructura incluye dos sentencias condicionales, lo que hace posible
ejecutar uno de entre tres grupos de instrucciones diferentes.
if condicion1
bloque1
elseif condicion2
bloque2
else
bloque3
end
Estructuras de Control
Ejemplo: ejemplo3.m
age = input('Ingrese su edad: ') ;
if age < 18
disp('Lo siento. Tendrá que esperar')
elseif age<70
disp('Puede obtener una licencia estándar')
else
disp('Los mayores de 70 requieren una licencia especial ')
end
Estructuras de Control
Switch y case
La estructura switch-case se usa con frecuencia cuando existe una serie
de opciones de ruta de programación para una variable dada,
dependiendo de su valor.
Switch-case es similar a if/else/elseif. De hecho, cualquier cosa que pueda
hacer con switch/case se podría hacer con if/else/elseif.
Se trata de una estructura que le permite elegir entre múltiples salidas, con
base en ciertos criterios. Los criterios pueden ser un escalar (un número) o
una cadena.
Estructuras de Control
switch variable
case opcion1
código a ejecutar si la variable es igual a opcion1
case opcion2
código a ejecutar si la variable es igual a opcion2 . . .
case opcionN
código a ejecutar si la variable es igual a opcionN
otherwise
código a ejecutar por default
end
Ejemplo
Ejemplo: ejemplo4.m
ciudad = input('Ingrese el nombre de una ciudad entre comillas simples: ')
switch ciudad
case ‘Piura'
disp('Costo del boleto: $95 ')
case ‘Huánuco'
disp('Costo del boleto: $99')
case ‘Tacna'
disp('Costo del boleto: $120')
otherwise
disp('No hay servicio de transporte a esa ciudad.')
end
Estructuras de Control
Estructura Repetitiva
Conocida también como estructuras iterativas, nos permite repetir una secuencia de
instrucciones, un numero determinado de veces. Todo bucle consta de tres partes
básicas
Decisión: aquí se evalúa la condición y en caso de ser cierta, se ejecuta el cuerpo del bucle.
Cuerpo del bucle: son las instrucciones que se ejecutaran rápidamente, un número
determinado de veces, cuando la decisión es verdadera.
Salida del bucle: es la condición que indica cuando terminan las iteraciones
Estructuras de Control