Professional Documents
Culture Documents
Qu es lo que observas?
Un nuevo semestre, cosas nuevas que aprender, cosas nuevas que hacer...que observas en el presente semestre?... Cmo te sientes?...Que te gustara? Todo depende de ti Video motivacional
Forma de Evaluacin
Actividades en Clase Tareas Examen Participacin Diagramas de flujo / programas
Entrada = Datos
Representacin de algn hecho, concepto o entidad real (los datos pueden tomar diferentes formas; por ejemplo palabras escritas o habladas, nmeros y dibujos).
PROCESADOR
Salida = Informacin
Datos procesados y organizados.
Algoritmo: Conjunto de instrucciones que especifica la secuencia de operaciones a realizar, en orden, para resolver un problema especifico, en otras palabras un algoritmo es una formula para la resolucin de un problema.
Memoria central
Qu entiende la computadora?
La computadora manipula nicamente informacin digital:
1.7
Lenguajes de Programacin
Sirven para escribir programas que permitan la comunicacin usuario y maquina. Unos programas especiales llamados traductores convierten las instrucciones escritas en lenguajes de programacin en instrucciones escritas en lenguajes de maquina que este pueda entender.
Estos lenguajes de programacin se clasifican en: Maquina: Cdigo maquina. Bajo Nivel: Ensamblador. Alto Nivel: Son los mas usados por los programadores, son los mas fciles de transportar a maquinas diferentes y la escritura de programas es mas sencilla.
Lenguaje mquina
Pasos
a = (b + c)/(d + e) x y
sumar b y c, y guardar el resultado en una direccin de memoria temporal X sumar d y e, y guardar el resultado en una direccin de memoria temporal Y dividir el contenido de X por el de Y y guardar el resultado en la direccin de memoria de a
0000 00001000 00001100 00001110 0000 00011000 00011100 00011110 0101 00011110 00001110 00000100 Direcc. Temporal Y
Cdigo de la divisin
1.9
Inconvenientes
Grandes posibilidades de error Portabilidad: mquina-dependiente
No se puede llevar el programa a otra mquina porque, entre otras cosas, el repertorio de instrucciones es distinto
1.10
Es muy complicado formular una solucin a problemas del mundo real con ese lenguaje tan especfico
Lenguaje Mquina
En los primeros tiempos del desarrollo de los ordenadores era necesario programarlos directamente de esta forma, sin embargo, eran mquinas extraordinariamente limitadas, con muy pocas instrucciones por lo que an era posible; en la actualidad esto es completamente irrealizable por lo que es necesario utilizar lenguajes ms fcilmente comprensibles para los humanos que deben ser traducidos a cdigo mquina para su ejecucin.
A B C D E F G H I J K
Lenguaje ensamblador
1.13
Lenguaje Ensamblador
Los lenguajes ensambladores son en esencia una versin simblica de los lenguajes mquina; por cada instruccin de la mquina o cada elemento capaz de almacenar datos se crea un smbolo que puede utilizar el programador; as, las instrucciones anteriores se escribiran como:
add. i c a b sub. f c a b
Cuestiones Cmo entiende la mquina el lenguaje ensamblador? Si las direcciones de memoria son simblicas en qu direcciones de memoria se colocan los datos?
Cdigo fuente (lenguaje ensamblador) Programa ensamblador Cdigo objeto (lenguaje mquina)
Programa ensamblador Traduccin a cdigo binario de cdigos simblicos de operacin Traduccin de las direcciones simblicas a direcciones reales de memoria Inconveniente: sigue siendo dependiente de la mquina
1.15
Lenguaje que permite representar el mecanismo de resolucin de los problemas usando instrucciones independientemente de la computadora Cercana conceptual al programador Pascal, C, Java, etc. son lenguajes de alto nivel
1.16
Lenguaje de Programacin
Un lenguaje de programacin es aquel elemento dentro de la informtica que nos permite crear programas mediante un conjunto de instrucciones, operadores y reglas de sintaxis; que pone a disposicin del programador para que este pueda comunicarse con los dispositivos hardware y software existentes. Algunos ejemplos son:
LENGUAJES DE PROGRAMACION
LENGUAJE DE ALTO NIVEL Diseados para que las personas
entiendan y escriban los programas de un modo mas fcil que usando lenguajes de maquina y ensamblador. Es independiente de la maquina pues las instrucciones no dependen del hardware o maquina en particular. Los programas escritos en lenguaje de alto nivel son portables o transportables, es decir que pueden ser ejecutados con poca o ninguna modificacin en diferentes tipos de maquinas.
LENGUAJES DE PROGRAMACION
{Lenguaje Pascal} program suma; var x,s,r:integer; {declaracin de las variables} begin {comienzo del programa principal} writeln('Ingrese 2 nmeros enteros');{imprime el texto} readln(x,s); {lee 2 nmeros y los coloca en las variables x y s} r:= x + s; {suma los 2 nmeros y coloca el resultado en r} writeln('La suma es ',r); {imprime el resultado} readln; end.{termina el programa principal}
;Lenguaje ensamblador, sintaxis Intel para procesadores x86 mov eax,1 ;mueve a al registro eax el valor 1 xor ebx, ebx ;pone en 0 el registro ebx int 80h ;llama a la interrupcin 80h (80h = 128 sistema decimal)
Lenguajes de Programacin
Lxico
Identificadores: nombres que se le darn a ciertos elementos de programacin (p.e. nombres de variables, tipos, mdulos, etc.). Constantes: datos que no cambiarn su valor a lo largo del programa. Operadores: smbolos que representarn operaciones entre variables y constantes. Instrucciones: smbolos especiales que representarn estructuras de procesamiento, y de definicin de elementos de programacin. Comentarios: texto que se usar para documentar los programas
Sintaxis
Consta de unas definiciones, denominadas reglas sintcticas o producciones que especifican la secuencia de smbolos que forman una frase del lenguaje. Estas reglas dicen si una frase est bien escrita o no.
Actividad
Dadas las siguientes expresiones, ordnelas, aplicando la sintaxis adecuada, de tal manera que el mensaje sea entendible.
orientarse Es saber importante iba el saco ladrn a meterla en El leccin El explica los nios a maestro la para tinta La escribir sirve prisa Ven tengo porque pronto
En base al texto proporcionado por el docente, escribe los signos de puntuacin segn corresponda, de tal manera que quede de acuerdo a lo que se indica: Escribe los signos de puntuacin segn corresponda, de tal manera que en la primera vez le quede al sobrino Juan, en el segundo intento le quede a Lus, en el tercero al Sastre, el cuarto a los Jesuitas y en el ltimo caso no le quede a ninguna persona.
Dejo mis bienes a mi sobrino Juan no a mi hermano Luis tampoco jams se pagar la cuenta al sastre nunca de ningn modo para los jesuitas todo lo dicho es mi deseo
Dejo mis bienes a mi sobrino Juan. No a mi hermano Luis. Tampoco, jams, se pagar la cuenta al sastre. Nunca, de ningn modo, para los jesuitas. Todo lo dicho es mi deseo
Dejo mis bienes a mi sobrino Juan? No. A mi hermano Luis!. Tampoco, jams, se pagar la cuenta al sastre. Nunca, de ningn modo, para los jesuitas. Todo lo dicho es mi deseo
Dejo mis bienes a mi sobrino Juan? No. A mi hermano Luis? Tampoco, jams. Se pagar la cuenta al sastre. Nunca, de ningn modo, para los jesuitas. Todo lo dicho es mi deseo
Dejo mis bienes a mi sobrino Juan? No. A mi hermano Luis? Tampoco, jams. Se pagar la cuenta al sastre? Nunca, de ningn modo. Para los jesuitas todo. Lo dicho es mi deseo
Dejo mis bienes a mi sobrino Juan? No. A mi hermano Luis? Tampoco. Jams se pagar la cuenta al sastre. Nunca, de ningn modo, para los jesuitas. Todo lo dicho es mi deseo
TRADUCTORES DE LENGUAJE
Traductores de lenguaje
Son los programas que traducen a su vez los programas fuente escritos en lenguajes de alto nivel a cdigo de maquina. Clasificacin:
Compiladores: Lenguaje de alto nivel --> Lenguaje de maquina. Interprete: Un traductor que toma un programa fuente, lo traduce y a continuacin lo ejecuta.
Traductores de Lenguaje
Para que un procesador ejecute un programa escrito en un lenguaje de alto nivel es necesario que lo transforme a su equivalente en lenguaje mquina. Para ello existen dos posibilidades, la interpretacin y la traduccin.
Interpretacin
Compilacin
Un intrprete puede ejecutar un programa directamente, incluso sin estar completo. Un compilador ha de traducirlo completamente antes de ejecutarlo. Un programa interpretado ocupa poca memoria. Un programa compilado es ms rpido. El compilador crea un ejecutable independiente del propio compilador. Un programa interpretado necesita siempre su intrprete.
OPERADORES
Son elementos que relacionan de forma diferente, los valores, es decir, los operadores nos permiten manipular valores. Existen tres operadores utilizados por las computadoras:
Aritmticos Relacionales Lgicos
Aritmticos
Operadores aritmticos: Los operadores aritmticos permiten la realizacin de operaciones matemticas con los valores a utilizar
Operadores lgicos
Operadores que permiten comparar dos valores o variables. Se dividen en operadores lgicos relacionales y operadores lgicos bolanos Operadores lgicos relacionales: Se utilizan para establecer una relacin entre dos valores. Compara estos valores entre si y esta comparacin produce un resultado de Verdadero o Falso. Los operadores relacinales comparan valores del mismo tipo, tienen el mismo nivel de prioridad en su evaluacin y tienen menor prioridad que los aritmticos. Los operadores relacinales son
Operadores Relacionales
OPERADORES LGICOS
Estos operadores se utilizan para establecer relaciones entre valores lgicos. Estos valores pueden ser resultado de una expresin relacional. Los operadores lgicos son:
Para resolver cualquier operacin o ejercicio se debe desarrollar teniendo en cuenta el siguiente orden: Todas las expresiones entre parntesis se evalan primero. Las expresiones con parntesis anidados se evalan desde el centro hacia fuera, el parntesis mas interno se evala primero. Dentro de una misma expresin los operadores se evalan en el siguiente orden.
1.
2.
3. 4.
Exponenciacin Multiplicacin, Divisin (Con decimales) Divisin Entera y Divisin Modular. Suma y resta
Para desarrollar cualquier operacin algortmica es necesario utilizar la jerarqua de los operadores, ya que ella indica el orden e importancia de cada uno de los operadores aritmticos
Jerarqua de operadores
Tomaremos como ejemplo la expresin 2*5+3=? Y si ponemos : 2+5*3=?
Jerarqua de Operadores
2*5+3 10 + 3 13 Resultado Correcto
Ejemplo
1. 2. 3. 4.
40 / 5 + 8 ^ 2 * 3 ------> 1 es la exponenciacin 40 / 5 + 64 * 3 ---------> Primero se resuelve la divisin (de izquierda a derecha) 8 + 64 * 3 --------------> Luego divisin (mismo nivel jerrquico de multiplicacin) 8 + 192-----------------> Por ltimo se realiza la suma
5.
200
Jerarqua de Operadores
51 / 2 + 3 ---> La divisin ( / ) indica que se manejan decimales. 51 / 2= 25.5 25.5 + 3 -----> Luego se realiza la suma de los dos valores 28.5 51 \ 2 + 3 ---> La divisin ( \ ) indica que slo se maneja la parte entera. 51 \ 2= 25
Jerarqua de operadores
25 + 3 -----> Luego se realiza la suma de los dos valores 28 51 mod 2 + 3 ---> (mod) indica que se usa el residuo de la divisin 51 mod 2 = 1 1 + 3 -----> Luego se realiza la suma de los dos valores 4
Observe lo distinto de los resultados. La divisin modular toma slo el residuo de la divisin: El 2 en el 51 est 25 veces. 25 x 2 = 50. Por lo tanto de 50 a 51 hay 1 (este es el residuo de la divisin). Para entender mejor observemos los siguientes Ejercicios
Los operadores relacionales son smbolos que se usan para comparar dos valores. Si el resultado de la comparacin es correcto la expresin considerada es verdadera, en caso contrario es falsa.
Ejemplo:
Por ejemplo, 8>4 (ocho mayor que cuatro) es verdadera, se representa por el valor true, 8<4 (ocho menor que cuatro) es falsa, false.
Ejemplos Sencillos
Operador nombre ejemplo resultado
< > == !=
<=
8<=10
Verdadero
>=
10>=12
Falso
5*5+10*5+20*3(+8*5/2+10) <= 5(*5+(10*50+12)) *3+8*5/2+10 5*2+(10*50+120*3+8*5)/2+10 != 8*5+(10*5+100) *3+(8*5/2+10+120) 3+10*50/2+10*3+(8*5/2+10) < 5*3+(5*3+12*2) *2+8*5/2+15+100 5*5+10*50+120*3+8*5/2+10 == 120/2*3+8*4+(10/5*3-10+85) 5*5+10*50+120*3+8*5/2+10 >= 5*5+(10*50+10) *3+(8*5/2+10)/10
Operadores Lgicos
Los operadores lgicos permiten unir valores o expresiones lgicas, obteniendo como resultado si es verdadera o falsa la expresin combinada. Son los siguientes:
&& (Y lgico - conjuncin) || (O lgico - disyuncin) ! (NO lgico)
Verdadero
Falso
6 >= 5 || 7 != 8 || 4<=6 V || V || V
Verdadero
6 >= 5 || 7 == 8 || 4>=6 V || F || F =
6 >= 5 || 7 != 8 || 4>=6 V || V || F =
Verdadero
Verdadero
Verdadero
FALSO
Ejemplo 1.
Cules son los pasos para que una persona pueda caminar adelante suponiendo que est sentado?
1. 2. 3. 4. 5.
Tomar impulso para levantarse Ponerse de pie Mover una pierna hacia adelante Mover la otra pierna delante de la primera Repetir pasos 3 y 4 hasta que ya no se quiera caminar
Ejercicio 1.
Escriba los pasos necesarios para hacer un agua de limn, considere que cuenta con los siguientes utensilios y alimentos:
Cuchillo, Jarra, Cuchara exprimidor Limones lavados enteros Azcar
Ejercicio 2.
Escriba la serie de pasos para llamar de un telfono pblico a un telfono celular. Suponga que ya se encuentra en el lugar donde est el telfono y ya cuenta con tarjeta.
Definicin de algoritmos
Problema
y del de
La definicin de un algoritmo debe describir tres partes: Entrada, proceso y salida. Ejemplo: La receta de un sancocho.
ax+b=0 a ? b x = -b / a
Algoritmo EC 1er Grado Variables a,b,x de tipo entero Inicio Escribir(Ingrese valores de EC) Leer (a,b) Si a = 0 entonces escribir (Error) sino Inicio x=-b/a Escribir (La solucin es:,x) Fin Escribir(Fin programa) Fin
#include <stdio.h> int a,b,x; main() { printf(Ingrese valores de EC); scanf(%d %d,&a,&b); if a ==0 printf (error); else { x = -b / a; printf(La solucin es %d:,x); } printf(Fin programa); }
73
Qu es un problema?
Es una situacin concreta sobre la cual se quiere implementar una solucin (ejemplos) Solucin: procedimiento que nos lleva a satisfacer ciertos requerimientos Esquema bsico para la resolucin de un problema a travs de un programa con un enfoque sistmico
Salida
Proceso
Informes Datos para otro programa Datos grabados en dispositivos externos de almacenamiento
Entrada
Datos Externos Datos auto generados Lectura de dispositivo de almacenamiento
74
Entender el problema
Datos y Variables
76
Qu es un Modelo?
Estructura para dar razn y abstraer una realidad Ejemplo:
Estudia
Plan de Estudios
Carrera
77
Qu es un algoritmo?
Procedimiento detallado para resolver un problema en pasos y en un tiempo finito. Se especifican en base a operaciones bsicas que controlan las variables y el flujo del algoritmo El algoritmo lleva desde un estado inicial a un estado final El algoritmo recibe Entradas y entrega Salidas
78
79
80
Llamada telefnica
Se desea conceptualizar el problema de efectuar una llamada telefnica en un telfono pblico que recibe monedas de $10, $50 y $100. El costo mnimo de la llamada es de $100 por 5 minutos. El proceso se inicia desde que se levanta el auricular y finaliza cuando se cuelga.
81
rboles de decisin
Herramienta til para describir algoritmos que involucran gran cantidad de decisiones
82
La forma en que se ejecutan las operaciones bsicas en un computador, es similar a lo que ocurre en nuestro cerebro. Por ejemplo, para sumar dos valores:
Primero debemos pedirle a alguien que nos diga el primer valor. Luego de que conocemos este valor, debemos almacenarlo (para recordarlo despus) en una neurona (Suponemos que un valor se puede almacenar en una neurona).
est
Ahora debemos pedir el segundo valor. Una vez conocido, lo almacenamos en otra neurona distinta de la anterior. Por qu? Ahora que conocemos los dos valores procedemos a sumarlos, y dicho resultado lo almacenamos en otra neurona distinta de las anteriores. Por ltimo, le decimos el resultado a la persona que nos entrego los nmeros.
Definimos tres neuronas Pedimos el primer valor Almacenamos ese valor en la neurona 1. Pedimos el segundo valor Almacenamos ese valor en la neurona 2. Almacenamos la suma de las neuronas 1 y 2 en la neurona 3 Entregamos el resultado que se encuentra en la neurona 3.
Sin embargo, en los lenguajes no se pueden usar neuronas, pero podemos definir variables (Recuerde que las variables pueden tomar cualquier valor) En lugar de usar neurona 1 y neurona 2, se utilizan espacios de memoria que llamaremos var 1 y var 2, y as sucesivamente. Tambin las podemos llamar x1 y x2 x e y .
La manera en que hemos detallado nuestros dos algoritmos se llama PSEUDO-CDIGO. Y este pseudo-cdigo fue escrito en lenguaje natural. Otra manera de poder detallar nuestros algoritmos es a travs de los diagrama de flujo. Un diagrama de flujo es una representacin simblica de la lgica del algoritmo.
Diagrama de Fujo
Nomenclatura:
Inicio del algoritmo Trmino del algoritmo Impresin de mensajes Receptor de datos Operacin de datos Bifurcacin (Decisin) Definicin de variables Conector
Inicio Termino
PSEUDO-CDIGO
Inicio
Inicio de Algoritmo
Inicio
Definicin de variables
Escribir Mensaje 1
Impresin de mensajes
Escribir (Mensaje 1)
Leer var1,x, y
Lectura de mensajes
Leer (var1, x, y)
a=3*x+ y b = a / var1
a=3*x+ y b = a / var1
F Si a > b
Conector
Fin
Fin de algoritmo
Fin
Se definen las variables var1, var2, var3 Se pide ingresar el primer valor Se asocia el nmero ingresado a var1 Se pide ingresar el segundo valor Se asocia el nmero ingresado a var1 Se asigna el resultado de la suma entre var1 y var2 a var3 Se muestra el resultado
var 1
var3=var1+var2
Diagrama de Flujo
Ejercicio: Cree el diagrama de flujo para el algoritmo que multiplica tres nmeros y muestre el resultado Ejercicio: Cree el diagrama de flujo para que divida dos nmeros y muestre el resultado
Preguntas?
Algoritmos
Ejercicio. Usando diagrama de Flujo. Cree un algoritmos donde una persona ingrese su edad y muestre por pantalla si es mayor de edad.
Algoritmos
Inicio Edad
Ingrese su edad
Edad
Fin
Algoritmos
Del ejemplo anterior podemos observar que la bifurcacin permite seguir el flujo adecuado dada una condicin. Las condiciones que se evalan en las bifurcaciones son siempre verdaderas o falsas. Por ende, hay que colocar las instrucciones adecuadas a los valores que se evaluan en las bifurcaciones.
Algoritmos
Tambin es posible que existan bifurcaciones contiguas. En las bifurcaciones o estructura de control, se evalan proposiciones utilizando:
Operadores lgicos
Operadores aritmticos Operadores Relacionales
Algoritmos
Operadores Aritmticos:
* / + %
5%2 es 1
4%2 es 0
Algoritmos
Operadores Lgicos:
Y, And, &&
Y V F
V V F
F F F
Algoritmos
Operadores Lgicos:
O, Or, ||
O V F
V V V
F V F
Algoritmos
Operadores Lgicos:
No, Not, !
No
Algoritmos
var4=(var1*var1)/var3
var4=1
Si
No
Algoritmos
var4=(var3%var1)
var4=0
No
Algoritmos
var4=(var4+var1)
var4=3
No
Algoritmos
Es importante notar que existen prioridades entre los operadores. Por lo tanto deben utilizarse parntesis en los casos que correspondan
Algoritmos
Ejercicio. Crear un algoritmo que muestre en forma ordenada tres nmero enteros ingresados desde teclado.
Inicio
No
No
No
Fin var2 El orden es var2,var3 var1 si Ingrese el tercer valor var2>var1 El orden es var3,var2 var1
var3
Diagrama de Flujo
Ejercicio: Cree el diagrama de flujo para el algoritmo que multiplica tres nmeros y muestre el resultado Ejercicio: Cree el diagrama de flujo para que divida dos nmeros y muestre el resultado Ejercicio: Cree el diagrama de flujo para que resuelva la ecuacin de primer grado y muestre el resultado Ejercicio: Cree el diagrama de flujo para que resuelva la ecuacin de segundo grado, para valores reales e imaginarios, y muestre el resultado Ejercicio: Cree el diagrama de flujo permita sumar tres nmeros ingresados por teclado y muestre el resultado Ejercicio: Cree el diagrama de flujo que permita sumar n nmeros y muestre el resultado. El valor de n debe ser ingresado por teclado al igual que los nmeros que se sumarn.
Algoritmos
Repaso de Bifurcaciones Aprendizajes Esperados
Algoritmos
Ejercicio. Crear un algoritmo que muestre en forma ordenada tres nmero enteros ingresados desde teclado
Inicio
No
No
No
Fin var2 El orden es var2,var3 var1 si Ingrese el tercer valor var2>var1 El orden es var3,var2 var1
var3
Algoritmos
Concepto de Ciclo
Un ciclo es la repeticin de un conjunto de instrucciones. Dicho ciclo culmina cuando se cumple una condicin de termino.
Algoritmos
Inicializacin
Estructura de un ciclo
F
Condicin de Termino
V Instruccin 1
Instruccin 2
Instruccin N
Incremento/ Decremento
Algoritmos
Inicio
N,var,cont, Suma=0
N
2
var
1 2
cont
1 2 3
suma
0
1 3
cont=1
var
Fin
cont=cont+1
Algoritmos
Ejemplo: Crear un algoritmo que encuentre el nmero mayor de N nmeros enteros positivos ingresados por teclado.
Inicio
N,var,cont, mayor = -1
cont=1
var
V mayor=var
cont=cont+1
Algoritmos
i
1