Sunteți pe pagina 1din 53

Taller de Informtica I

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

PeroCmo le brindamos esta


informacin?

Representacin de la informacin
Normalmente un operador le da a la
computadora los datos en un lenguaje
conocido, utilizando los smbolos del
lenguaje diario. Estos smbolos pueden ser:
Nmeros
Letras
Smbolos

Alfanumricos

Obviamente estos smbolos no son los que


utiliza internamente una computadora

Representacin de la informacin
Por lo tanto tenemos dos niveles de representacin
de la informacin:
Externa: Utilizada por las personas e inadecuada para la
computadora
Interna: Utilizada por la computadora y no legible
fcilmente por un ser humano

De aqu se desprende que hay una transformacin de


la informacin que otorga una persona a la
computadora, a elementos que una computadora
puede ser capaz de almacenar

Representacin de la informacin
Despues de multiples procesos y maduraciones, se
lleg a adoptar universalmente, para almacenar la
informacion en una computadora, el sistema binario, o
sea basado en 1 y 0.
Una de las ventajas es que podemos adaptar fcilmente
el sistema electrico, usando presencia y ausencia de
voltaje para representar fsicamente el 1 y el 0.
Hay una ventaja sustancial en los clculos, dado que
resultan mucho ms simples para una mquina que
usando un sistema en otra base

Representacin de la informacin: caracteres


Unicode: Es propuesto por un consorcio de empresas y entidades que
trata universalizar y hacer compatibles todos los sistemas del mundo
bajo una misma norma
Inconvenientes del sistema ASCII:
Los smbolos codificados no alcanzan para representar los caracteres
especiales que requieren numerosas aplicaciones
Los smbolos y cdigos aadidos en las versiones ampliadas a 8 bits no
estn normalizados
Estn basados en los caracteres latinos, existiendo otras culturas que
utilizan otros smbolos muy distintos
Propiedades buscadas:
Universalidad, trata de cubrir la mayora de lenguajes escritos existentes
en la actualidad: 16 bits 65.356 smbolos
Unicidad, a cada carcter se le asigna exactamente un nico cdigo (sin
importar plataforma ni idiomas)
Uniformidad, ya que todos los smbolos se representan con un nmero
fijo de bits (16)

Representacin de la informacin: caracteres


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
Hardware: Es la parte fsica de la computadora, es
decir, todo aquello que podamos percibir con el sentido
del tacto, los componentes mecnicos, magnticos,
electromagnticos que hacen que la mquina funcione.
El hardware por s solo no realiza ninguna tarea, slo
puede llevarlas a cabo a travs de un software
adecuado.
Software: Es la parte lgica de la computadora, los
procedimientos que el hardware realiza inducidos por el
software y este a su vez por nosotros. El software es
como un traductor que hace que nuestras rdenes se
conviertan en realidad, manipulando el hardware o la
parte fsica.

Hardware: Partes de una computadora


Memoria principal: tambin llamada RAM (Random Access Memory - Memoria
de Acceso Aleatorio), es el almacn primario de la computadora. Esta memoria es
la ms importante de la computadora, porque almacena informacin necesaria
para que la computadora pueda arrancar y funcionar.
Unidad de Control: Es la que se utiliza para coordinar y controlar las operaciones
que se realizan para procesar la informacin.
Unidad Aritmtica y Lgica : Es el dispositivo que se encarga exclusivamente de
los clculos, es decir realiza todas las operaciones artitmticas (suma, resta,
multiplicacin, division, etc) y lgicas (mayor, menor, etc)
Unidad Central de Procesamiento: Es la UC + ALU. Es bsicamente el cerebro
de la computadora. Se encarga de supervisar, controlar y regular el procesamiento
de todos los elementos de la computadora.
Unidades de Entrada: Es la parte de la computadora por la cual ingresa la
informacin: teclado, mouse, escaner, lpiz ptico, etc.
Unidades de Salida: Es la parte de la computadora a travs de la cual se muestra
el resultado del procesamiento de los datos: impresora, pantalla, parlantes, etc.

Hardware: Partes de una computadora

Software: Tipos
Podemos distinguir tres tipos de software diferentes:
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

Algoritmo

Salida

Escrito en algn lenguaje de


programacin

Lenguajes de programacin
Un lenguaje de programacin es un lenguaje diseado para describir el
conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo
tanto, un lenguaje de programacin es un modo prctico para que los
seres humanos puedan dar instrucciones a un equipo.
Trozo Visual Basic

Trozo JAVA
Fichas estadoTablero[][];
public Tablero(){estadoTablero=new Fichas [6][7];};
Tablero miTablero = New Tablero();
public Tablero(){estadoTablero=new Fichas [6][7];};
NombreClase.nombreMetodo(parmetrosMtodo);

Trozo Pascal
PROGRAM Primera_Prueba;
CONST
Mensaje = 'Introduce un valor entero: ';
Respuesta = 'El valor es: ';
VAR
Entero : Integer;
BEGIN
Write(Mensaje);
ReadLn(Entero);
WriteLn(Respuesta, Entero);
END.

Open Text1(1) & "\" & nameFile & ".bat" For Append As #3
i=1
archivoBAT = ("copy /b ") + Chr(34) & (i) & _
(nameFile) + Chr(34) + Chr(32) + Chr(34) +
(nameFile) + Chr(34)
Print #3, archivoBAT
lenResto = tamao Mod CLng(Combo1)
For i = 1 To CByte(Combo1)
If i = CByte(Combo1) Then
ReDim FileData(CLng(Text1(2)) + lenResto - 1)

Lenguajes de programacin: Matlab


MATLAB es la abreviatura de MATrix LABoratory, o
laboratorio de matrices.
Es un poderoso lenguaje de programacin que incluye los
conceptos comunes a la mayora de los lenguajes de
programacin
Fue creado por Cleve Moler en 1984, surgiendo la primera
versin con la idea de emplear paquetes de subrutinas
escritas en Fortran en los cursos de lgebra lineal y anlisis
numrico, sin necesidad de escribir programas en dicho
lenguaje.
Matlab utiliza el lenguaje de programacin M que fue
creado en 1970 para proporcionar un sencillo acceso al
software de matrices sin tener que usar Fortran.

Qu es Matlab?
Un lenguaje de programacin
Un lenguaje de programacin interpretado
Un lenguaje de programacin interactivo

Usar Matlab == Programar en Matlab

Qu es Matlab?
MATLAB es un sistema interactivo que sirve como herramienta de apoyo para la
resolucin de problemas relacionados con el Algebra Lineal y el Calculo
Numrico
El ambiente de trabajo de MATLAB est compuesto de algunas ventanas:
La Ventana de comandos, donde se ejecutan todas las instrucciones y
programas. Se escribe la instruccin o el nombre del programa y se da a
Enter. Es facilmente identicable, pues en ella aparece el indicador de
comandos (>>).
El Historial de comandos Muestra los ltimos comandos ejecutados en
Command Windows. Se puede recuperar el comando haciendo doble click.
El Espacio de trabajo que visualiza las variables creadas en la Ventana de
comandos.
Current directory: Situarse en el directorio donde se va a trabajar
Editor del Matlab: Todos los ficheros de comandos Matlab deben de llevar
la extensin .m

Qu es Matlab?
Algunos comentarios sobre la ventana de comandos
Se pueden recuperar instrucciones con las teclas
Se puede mover por la lnea de comandos con las teclas
Ir al comienzo de la lnea con la tecla Inicio y al final con Fin. Con Esc se
borra toda la lnea.
Se puede cortar la ejecucin de un programa con Ctrl+C

Consideraciones generales
MATLAB distingue entre maysculas y minsculas.
La COMILLA ' es la que, en un teclado estndar, se encuentra en la tecla de la
acentuacin.
Los COMENTARIOS deben ir precedidos por % o, lo que es lo mismo, MATLAB
ignora todo lo que vaya precedido por el smbolo %.
La AYUDA de MATLAB es bastante til; para acceder a la misma basta teclear
help. Por ej.
>> help !
devuelve: Operators and special characters.

Nmeros y Operaciones
Datos numricos:
Son sensibles a las maysculas: x=5, X=7
Informacin sobre variables que se estn usando y sus dimensiones (si son
matrices): Workspace. Tambin tecleando
>> who
>> whos (da ms informacin)

Para eliminar alguna variable se ejecuta


>> clear variable1 variable2

Si se quieren borrar todas las variables: >> clear


Constantes caractersticas: pi, NaN (not a number, 0/0), Inf.

Nmeros y Operaciones
Operaciones aritmticas elementales:
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.

Hace falta conocer un lenguaje de programacin para


disear un algoritmo?

Lenguajes de Programacion
En los lenguajes de programacin se pueden reconocer dos
partes:
Sintaxis: las posibles combinaciones de smbolos que se
pueden entender como expresiones correctas.
Semntica: el significado asociado a una expresin.

Expresiones vlidas

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.
Invocacin: Se refiere a la llamada a la funcin.
Ejemplo: >> y = sin(pi);
En este caso, sin representa el nombre de la funcin, pi
es el argumento y la variable y el objeto de salida.

Partes de una funcin


Definicin: Se refiere al texto de la funcin con el
desarrollo del cuerpo de la misma.
En nuestro caso, se trata de archivos .m donde volcamos, en sintaxis
correcta, el texto de la funcin como un conjunto de sentencias
vlidas:
Palabra reservada
Ejemplo:
function salida = nombreFuncion (lista_de_parametros)
.. %sentencias
salida = ...
Argumentos separados por comas
end
Aqu se guarda el resultado final

Ejemplo
Supongamos que queremos realizar una funcin que retorne la suma
de dos escalares.
Generamos la funcin suma, en un archivo suma.m:
function salida = suma(a,b)
salida = a+b;
end
Grabar el archivo
Invocar a la funcin desde Matlab:
>> y = suma(2,3)
y=5

Variables de la funcin
Qu sucede si por lnea de comandos quiero saber qu valor tienen las
variables a y b de la funcin o la variable salida?
>> a
error: a' undefined near line 2 column 1

El mensaje de error indica que la variable a no es conocida en este


contexto. Es decir, las variables de la funcin slo tienen validez
dentro de la funcin misma.
Se puede realizar el siguiente experimento:
>> a=123
a = 123
>> suma(3,4)
ans = 7
>> a
a = 123 y no 3 que es el valor que toma a dentro de la funcin!!!

Esto nos indica que las variables poseen diferentes alcances

Variables de la funcin
Las variables declaradas en el intrprete (por lnea de
comando) tienen validez en el intrprete
Las variables dentro de una funcin tienen alcance
dentro de la misma funcin. No interfieren con variables
con el mismo nombre declaradas fuera de la misma.
Se dice entonces que las variables son locales a la
funcin

Lenguajes de programacin: Matlab

Espacio de trabajo
Ventana de Comandos

Historial de Comandos

S-ar putea să vă placă și