Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TallerIIntroduccion2016 PDF
TallerIIntroduccion2016 PDF
Introduccin
Ao 2016
Presentacin
Terico/Prctico. Eso quiere decir que vamos a
presentar conceptos e inmediatamente vamos a
trabajarlos en la computadora.
Mircoles 16:00 a 20:00 Laboratorio. Es
necesario que cada alumno abra un cuenta que le
permitir guardar su trabajo durante la clase.
2 trabajos prcticos cada uno con coloquio. A
veces dejaremos ejercicios para la semana.
Promocional.
Docentes
Jefe de ctedra: Enrique Carlos Segura
(esegura@dc.uba.ar)
JTP: Andrea Manna
(amanna@dc.uba.ar)
Apuntes
Pgina web:
http://www.dc.uba.ar/materias/t1/2015/c2/
Objetivos
La intencin de la materia es dar una introduccin al uso de la
computadora para aplicaciones cientficas, que involucren el
manejo de volmenes de datos, clculos estadsticos,
visualizacin y simulacin numrica de procesos. Se buscar
dar una introduccin general a la programacin para
estudiantes de ciencias (en particular para estudiantes de
Geologa), de modo tal que comprendan las potencialidades y
limitaciones de la computadora.
Como objetivos formativos, se pretende que luego de cursar la
materia el estudiante:
entienda de qu se tratan las ciencias de la computacin,
entienda una publicacin cientfica interdisciplinaria entre su
carrera y computacin, y
logre relacionar un problema matemtico con problemas
computacionales.
Participacin en clase
Esperamos una activa participacin en clase:
No hay preguntas tontas.
Si una explicacin no responde a tu pregunta, por favor,
volver a preguntar.
Compart tus dudas. Tus certezas tambin.
Las interrupciones pertinentes no molestan, sobre todo si
son para marcar errores, hacer comentarios o
reencausar la clase.
Apreciamos la participacin en los debates (antes deca
No est permitido permanecer callado en los debates).
Resolucin de problemas
Requiere una descripcin del dominio de aplicacin y
de las caractersticas de las soluciones buscadas. Por ej.
Raz cuadrada.
Luego es necesario encontrar un algoritmo que lo
resuelva. Por ej. Aproximaciones Sucesivas.
Finalmente debemos programar el algoritmo.
Qu es un algoritmo?
Un algoritmo es una sucesin de pasos primitivos para
resolver un problema.
Un paso primitivo es aquel que se puede realizar
mecnica y finitariamente.
Qu problemas podemos resolver?
Con qu pasos primitivos contamos?
Cmo sabemos si el algoritmo que dimos resuelve el
problema?
Qu es programar?
Implementacin de un algoritmo en un lenguaje formal
que la Computadora (directa o indirectamente) pueda
ejecutar.
Eso requiere fijar representaciones/estructuras para los
datos de entrada, salida y temporarios, y un conjunto de
instrucciones para operar sobre las mismas.
Representacin de la informacin
Una computadora es una mquina capaz de
procesar informacin. Para realizar este
proceso se precisa informacin de dos tipos:
Las instrucciones del programa
Los datos a procesar
Caractersticas:
Est basado en ASCII (lo cual facilita la migracin)
Evita el problema de ASCII que slo cuenta con caracteres
latinos.
Actualmente cuenta con tres formas de codificar la
informacin: en 8, 16 o 32 bits.
Las tres formas de codificar tienen el mismo repertorio
de caracteres comunes y es posible cambiar una en
otra sin prdidas de datos.
Las tres formas son referidas como UTF-8, UTF-16 y
UTF-32
Link: http://www.unicode.org/charts/
Hardware y Software
Sistemas Operativos: Tiene por objetivo efectuar la interrelacin entre los elementos
fsicos de la mquina (hardware) con el entorno (usuario, perifricos, dispositivos, otros
programas, etc.), tendiendo a minimizar las operaciones humanas y maximizar la utilidad
del sistema en funcin del tiempo.
El sistema operativo ejecuta las tareas bsicas, como de reconocer entradas desde el
teclado, enviar mensajes a pantalla, manteniendo rastro de los archivos y directorios en el
disco, y controlar los dispositivos perifricos como las impresoras.
LINUX
Software: Tipos
Software de aplicacin: Son los
programas realizados por las personas con
un fin especfico.
Software: Tipos
Lenguajes de programacin: Tienen por objetivo
permitir a un ser humano generar software con un
fin especfico. Una definicin ms estricta sera: es
un conjunto de smbolos y reglas sintcticas y
semnticas que definen su estructura y el
significado de sus elementos y expresiones. Se
utiliza para controlar el comportamiento fsico y
lgico de una computadora.
Entrada Salida
Algoritmo
Un lenguaje de programacin
Un lenguaje de programacin interpretado
Un lenguaje de programacin interactivo
Suma: +, Resta
Multiplicacin: *, Divisin: /
Potencias: ^
Orden de prioridad: Potencias, divisiones y multiplicaciones y por ltimo sumas
y restas. Usar () para cambiar la prioridad
Lenguajes de Programacion
Algoritmo: Una secuencia paso a paso de instrucciones bien definidas
que describen como realizar un cmputo (ej. algoritmo de divisin de
Euclides).
Lenguaje de programacin: Lenguaje artificial diseado para
abstraer las instrucciones que puede ejecutar una computadora (ej.
Matlab).
Programa: La transcripcin de un algoritmo en un lenguaje de
programacin dado.
1
I+2
I + 2 * -3
(1 + 2) * -3
0 == 1 1
[1; 2; 3; 4]
2 * [1 0; 0 1]
Expresiones no vlidas
I (1
I32
+12
(1 + 2) ==
{3; 2}
( 3, 2 )
[0; 2; 4; 6; ....... ; 20]
[1 0; 0 1] (1)
Tipos
Los tipos son los conjuntos de los distintos valores
posibles.
Integer: 1, 2, 3, etc.
Float-Point: 0.5, 1.7, 42.0, pi, etc.
Logical: true, false.
Character: a, b, c, etc.
Matrix: [1.7], [ h, o, l, a]; [1 0; 0 1]; etc.
En general cada tipo de dato tiene asociadas
ciertas operaciones.
Variables
Las variables son nombres con los que podemos
referirnos al resultado de cmputos anteriores.
Tres_x_pi = 3.0 * pi
Booleana = false
cadenaHola = 'hello
Matriz_Identidad = [1 0; 0 1]
Las variables nos abstraen del manejo de la memoria de la
computadora. Los valores asignados en una variable son
almacenados en la memoria.
Matlab es case-sensitive por lo que la variable cadenaHola
es distinta que CADENAHola.
Asignacin
Es posible guardar el resultado de una operacin
cualquiera en una variable.
Para eso debemos escribir:
>> x = 2 + 2
x =4
Si una instruccin la finalizamos con punto y coma el
resultado de la misma no se muestra:
>> test=x^3;
>> test=x^3
test = 17.0000
Vectores
Vectores fila: elementos separados por blancos o comas
>> v =[2 3 4 7 9 8]
Vectores columna: elementos separados por punto y coma (;)
>> w =[2;3;4;7;9;8]
En MATLAB es posible transformar un vector fila en un vector columna y
viceversa (hallar su traspuesta) empleando una comilla simple:
>> vt = v
Dimensin de un vector w: length(w) numelem(w)
Generacin de vectores fila:
Especificando el incremento h de sus componentes v=a:h:b
Linealmente espaciados n: linspace(a,b,n) (por defecto n=100)
Componentes logartmicamente espaciadas logspace(a,b,n) (n puntos
logartmicamente espaciados entre 10a y 10b. Por defecto n=50)
Matrices
No hace falta establecer de antemano su tamao (se puede definir un
tamao y cambiarlo posteriormente).
Las matrices se definen por filas; los elementos de una misma fila
estn separados por blancos o comas. Las filas estn separadas por
punto y coma (;).
>> M=[3 4 5; 6 7 8; 1 -1 0]
Matriz vaca: M=[ ];
Informacin de un elemento: M(1,3), de una fila M(2,:), de una columna
M(:,3).
Cambiar el valor de algn elemento: M(2,3)=1;
Eliminar una columna: M(:,1)=[ ], una fila: M(2,:)=[ ];
El siguiente cdigo extrae una submatriz formada por elementos de las
filas 1 a 2 y las columnas 1 y 3:
>> B=M(1:2, [1,3])
Vectores y Matrices
Definicin de matrices:
Generacin de matrices:
Generacin de una matriz de ceros, zeros(n,m)
Generacin de una matriz de unos, ones(n,m)
Inicializacin de una matriz identidad eye(n,m)
Generacin de una matriz de elementos aleatorios
rand(n,m)
Aadir matrices: [X Y] columnas, [X; Y] filas
Operaciones con Vectores y Matrices
Operaciones con escalares:
v: vector, k: escalar:
v+k adicin o suma
v-k sustraccin o resta
v*k multiplicacin
v/k divide cada elemento de v por k
k./v divide k por cada elemento de v
v.^k potenciacin de cada componente de v a k
k.^v potenciacin k elevado a cada componente de v
Operaciones con Vectores y Matrices
+ adicin o suma
sustraccin o resta
* multiplicacin matricial
.* producto elemento a elemento
^ potenciacin
.^ elevar a una potencia elemento a elemento
\ divisin-izquierda
/ divisin-derecha
./ y .\ divisin elemento a elemento
matriz traspuesta: B=A (en complejos calcula la
traspuesta conjugada, slo la traspuesta es B=A.)
Funciones para Vectores y Matrices
sum(v) suma los elementos de un vector
prod(v) producto de los elementos de un vector
dot(v,w) producto escalar de vectores
cross(v,w) producto vectorial de vectores
mean(v) promedio o media del vector
diff(v) vector cuyos elementos son la resta de los elementos
de v
[y,k]=max(v) valor mximo de las componentes de un
vector (k indica la posicin), min(v) (valor mnimo). El valor
mximo de una matriz M se obtendra como
max(max(M)) y el mnimo min(min(M))
Aplicadas algunas de estas funciones a matrices, realizan
dichas operaciones por columnas.
Funciones para Vectores y Matrices
[n,m]=size(M) da el nmero de filas y columnas
matriz inversa: B=inv(M), rango: rank(M)
diag(M): retorna la diagonal de una matriz.
sum(diag(M)): calcula la traza de la matriz A.
diag(M,k): busca la k-sima diagonal.
norm(M): norma de una matriz (mximo de los valores singulares de
A)
flipud(M): invierte el orden de las filas de la matriz, hacindola
simtrica respecto de un eje horizontal.
fliplr(M) ): invierte el orden de las columnas de la matriz, hacindola
simtrica respecto de un eje vertical.
[V, lamda]=eig(M): da una matriz diagonal lamda con los
autovalores y otra V cuyas columnas son los autovectores de M
Resumen: Vectores y Matrices
MATLAB es un entorno interactivo que utiliza como tipos
de datos bsicos vectores y matrices de flotantes que no
requieren ser dimensionados.
MATLAB permite distinguir vectores fila de vectores
columna y calcular la transpuesta de un vector.
En MATLAB es posible sumar vectores, multiplicarlos por
un escalar, calcular su mdulo o calcular su producto
escalar.
MATLAB permite definir matrices y acceder a sus
componentes elementales; tambin es posible extraer
fcilmente submatrices as como multiplicar matrices y
vectores.
Funciones
Las funciones son procedimientos con nombres
que pueden requerir mltiples argumentos y
retornar distintos resultados dependiendo de los
valores de los argumentos.
Es una tarea independiente que puede o no
depender de variables externas. Lo ideal es que
funcione como caja negra, es decir, que se la
pueda invocar desde cualquier programa cada vez
que se la necesite y que realice una funcin bien
especfica
Funciones Internas
Ejemplos:
size( [1 0; 0 1] )
resul = or( true, false )
disp( [1 2 3 4])
sum( [1 2 3 4])
Ventajas de usar funciones
Solamente se escribe una vez. Esto evita errores involuntarios (pero
siempre presentes) de transcripcin.
Si una funcin es probada y funciona bien, funcionar bien cada vez
que se use (siempre y cuando el uso sea el correcto). Esta es una
ventaja importante cuando estamos buscando errores presentes en
nuestros programas, puesto que evaluamos pedazos cada vez ms
pequeos lo que facilita la deteccin de errores.
Son portables. Una misma funcin puede ser til para distintos casos,
distintos programas y distintos programadores
Cdigo ms limpio. Al usar funciones reducimos las lneas de cdigo
de nuestro programa y por lo tanto se hacen mucho ms fciles de leer
y validar su correctitud.
Parte un programa en varios subprogramas
Partes de una funcin
Se pueden observar dos lados de una funcin:
la invocacin y la definicin.
Espacio de trabajo
Ventana de Comandos
Historial de Comandos