clase0+1.pdf
============
Computación I - CC1001
Clase 1
Victor Ramiro vramiro@dcc.uchile.cl Depto. Ciencias de la Computación
miércoles 24 de marzo de 2010

Agenda
· Introducción al curso · Reglas del juego · Mi primer programa

2
miércoles 24 de marzo de 2010

Introducción

3
miércoles 24 de marzo de 2010

Razonamiento algorítmico/lógico Capacidad modelamiento/ abstracción Habilidad gral resolver problemas

Computación

Problemas

Soluciones

miércoles 24 de marzo de 2010

Computador

5
miércoles 24 de marzo de 2010

Evolución...

6
miércoles 24 de marzo de 2010

¿Por qué sirve un Lenguaje?
· Provee una forma para expresar algoritmos, de manera independiente de la máquina específica · Provee una abstracción de alto nivel de una máquina compleja y difícil de programar

7
miércoles 24 de marzo de 2010

Programación
· Programación/ Codificación: Secuencia de instrucciones que especifica en forma precisa la manera de realizar una operación no trivial · El programa debe estar escrito en un lenguaje que entienda el computador... · ... y por el programador!
8
miércoles 24 de marzo de 2010

Lenguajes

9
miércoles 24 de marzo de 2010

Objetivos
· General
· Resolver problemas

· Específico
· Escribir programas que resuelvan problemas

· Largo plazo (propósitos)
· Razonamientos algorítmico y lógico · Capacidades de abstracción y modelamiento · Habilidad general para resolver problemas
10
miércoles 24 de marzo de 2010

Contenidos
1. Fundamentos de programación 2. Programación orientada a objetos 3. Listas y tablas de valores 4. Computación numérica 5. Búsqueda y ordenamiento de información
11
miércoles 24 de marzo de 2010

Evaluaciones
· NF (nota final): 70%NC + 30%NT (NC,NT 4) · NT (nota tareas): promedio 5 tareas (1 por cap) + tarea recuperativa · NC (nota control): prom ponderado controles

miércoles 24 de marzo de 2010

Ejercicios
· Se evalúan entre 1 y 4 (%=0,33, 66, 100) · Se considera promedio de los 20 mejores (de 27) · Si tiene menos de 20, NF=I + ejercicio recuperativo presencial · Sirven para eximirse del examen de acuerdo a la sgte. tabla:
miércoles 24 de marzo de 2010

Reglas del Juego

14
miércoles 24 de marzo de 2010

Reglas del Juego: Clases
Respeto
· · · · Celulares apagados, mantener silencio, respeto a sus compañeros. La información dada en clases o publicada en u-cursos es oficial y es su responsabilidad saberla. Recuerde ingresar su e-mail en u-cursos Errores, problemas con sus notas se podrán reclamar hasta 20 días después de la publicación de la nota. Después no se aceptarán reclamos. El trabajo en tareas, controles y ejercicios es individual y no se tolerará la copia.
15
miércoles 24 de marzo de 2010

Estar informado

Plazo de reclamos

No copiar
·

Reglas del Juego: Tareas
· Trabajos con tiempo de entrega de entre 1 y 3 semanas · Se avisará su publicación mediante u-cursos (sección tareas) · Son individuales · El trabajo se realiza fuera del horario de clases · 10 UD = 10 horas/semana= 3 horas de cátedra + 2 horas de auxiliar + 5 horas semanales de trabajo · Entrega es por u-cursos (sección tareas)
16
miércoles 24 de marzo de 2010

Reglas del Juego: Tareas
· Respete las horas: Entrega hasta las XX:YY:ZZ hrs
· · Entrega a las XX:YY:ZZ+1 segundo => nota 1.0 Note que la hora de u-cursos puede estar desfasada con respecto a la hora de su reloj, computador, etc

·

Entrega por u-cursos, sección tareas
· Entrega por mail u otra sección de u-cursos => nota 1.0

·

Entregar archivos requeridos
· Si se solicitan archivos .java, y se entregan los .class => nota 1.0

·

Entregar tarea que compile
· Si no compila => nota 1.0

·

Tarea individual
· · Copia total o parcial de código, para ambos involucrados nota 1.0 + sanción Proteja su tarea
17

miércoles 24 de marzo de 2010

Frases Célebres
· "...Se me cortó la luz/internet y no pude enviar mi tarea..." · "Me enfermé dos días antes del plazo y no pude hacer la tarea..." · "Tuve mucho trabajo en cálculo/ álgebra/ física..." · "Pero sólo le faltaba ; para que funcionara!"
18
miércoles 24 de marzo de 2010

Reglas del Juego: Tareas
· · Hacer la tarea es una excelente forma de estudiar para los controles Cuerpo docente estará disponible para responder consultas sobre la tarea, vía:
· Foro de u-cursos, E-mail, Hora de consultas

·

Recomendaciones importantes:
· · Comenzar tareas con tiempo! Entregar tareas con tiempo!
· · · Planificar la entrega para 1 día antes Se puede entregar cuantas veces quieran antes que termine el plazo, sólo contará la última entrega Revisar que lo entregado sea realmente lo que quería entregar
19

miércoles 24 de marzo de 2010

Primer Programa

20
miércoles 24 de marzo de 2010

Problema
· Escribir un programa para que el computador calcule los porcentajes de hombres y mujeres de acuerdo al siguiente diálogo con una persona (usuario):

Número de Hombres: 649 Número de Mujeres: 125 % de Hombres=83.8 % de Mujeres=16.2

miércoles 24 de marzo de 2010

Algoritmo
· Algoritmo: Etapas (pasos, instrucciones) que debe realizar (ejecutar) el computador para resolver el problema. Ejemplo: 1. Escribir (mostrar) en la pantalla la frase "nº de hombres? " 2. Leer (obtener) el n° ingresado por la persona usando el teclado 3. Escribir (mostrar) en la pantalla "n° de mujeres? " 4. Leer el n° ingresado por la persona 5. Calcular el % (p) de hombres c/r a suma de hombres (h) y mujeres (m) como: h

h+m

× 100

6. Escribir una línea con la frase "% de hombres=" y el n° p 7. Escribir una línea con "% de mujeres=" y el n° 100-p
miércoles 24 de marzo de 2010

Programa
· Programa: Algoritmo expresado en un lenguaje de programación · Programa en lenguaje Java (instrucciones principales)

(1)U.print("n° de hombres? "); (2)int h = U.readInt(); (3)U.print("n° de mujeres? "); (4)int m = U.readInt(); (5)double p = 100.0*h/(h+m); (6)U.print("% de hombres="); U.println(p); (7)U.print("% de mujeres="); U.println(100-p);

miércoles 24 de marzo de 2010

Lenguaje Java: características generales
· · En idioma inglés
· · · palabras int, print, read,... expresiones: 100.0*h/(h+m), p-100 funciones: print(...), readInt() instrucciones terminan con ; palabras con significados especiales (int, double, print) uso de minúsculas (salvo casos especiales) instrucciones con significado/efecto bien definido

Uso de notación matemática

·

Sintaxis (gramática, escritura) reglamentada
· · ·

·

Semántica (interpretación) precisa (sin ambigüedades)
·

miércoles 24 de marzo de 2010

Instrucción (1)
U.print("n° de hombres? ");
· Escribir (mostrar) en la pantalla frase "n° de hombres? " · Sintaxis: U.print("..."); · Semántica: Escribe parámetro (argumento) de la función U.print en la pantalla del computador

miércoles 24 de marzo de 2010

Instrucción (2)
int h = U.readInt();
· · Lee un número entero desde el teclado y lo guarda en la variable h Equivalencia int h; //declaración h = U.readInt(); //lectura · · Nota: //frase Es un comentario que contiene observaciones de utilidad para el programador, pero que es ignorado por el computador al ejecutar las instrucciones del programa.

miércoles 24 de marzo de 2010

Instrucción (2.1)
int h;
Semántica: declara (define) h como una variable entera
· ¿variable?
· · · · representación simbólica de un valor (número) representa una ubicación (celda) en la memoria del computador capacidad: un valor/número (del tipo indicado) puede variar (cambiar) su valor

Sintaxis: tipo nombre;

· · ·

tipo int: nº entero de hasta 9 dígitos. Ejs:123, -4, 2147483647 (mayor) tipo double: nº real de hasta 15 dígitos de precisión. Ejs: 100.0, 0.0001 nombre (identificador): letra seguida de letras, dígitos o _

miércoles 24 de marzo de 2010

Instrucción (2.2)
h = U.readInt();
Lee un nº entero y lo guarda en la variable h Sintaxis: variable = U.readTipo(); readTipo(): readInt() o readDouble() Semántica:
1. método (función) U.readInt()
1.1. espera que el usuario ingrese un número (dígitos y enter) 1.2. lee (obtiene) el número 1.3. entrega el número como resultado

2. número se guarda en (asigna a) la variable h
miércoles 24 de marzo de 2010

Instrucción (5)
double p=100.0*h/(h+m);
calcula 100.0*h/(h+m) y guarda el resultado en la variable p equivalencia: double p; //declaración p=100.0*h/(h+m); //asignación Instrucción de asignación: Sintaxis: variable=expresión; Semántica:
1. evaluar expresión (calcular resultado) 2. asignar (guardar) resultado a (en) la variable

miércoles 24 de marzo de 2010

Expresion
· Sintaxis
· · se escribe en una línea (hacia el lado) y no en varios niveles componentes: variables, constantes, operadores, funciones

· Semántica
· se calcula el resultado de la expresión de acuerdo a la siguiente proridad de los operadores:

1. operadores unarios: +,2. operadores "multiplicativos": *,/ 3. operadores "aditivos": +,-

Ej: -a+b*c es (-a)+(b*c), similar a álgebra

miércoles 24 de marzo de 2010

Expresión: Semántica
· a igual prioridad, se evalúa de izq. a der. Ej: a*b/c es (a*b)/c · paréntesis modifican o confirman orden de evaluación Ej: (a+b)*c modifica, a+(b*c) confirma · ¿tipo del resultado?
· tipo común. Ej: 1/2 es 0 (entero), 1.0/2.0 es 0.5 (real) · real si operandos son de tipos distintos. Ej: 1.0/2 es 0.5 · Nota: ¿resultado de h/(h+m)*100.0? ¿por qué?

miércoles 24 de marzo de 2010

Imprimir una línea
U.println(p);
escribe el valor de la variable p y "salta" a la sgte línea Sintaxis: U.println(expresión) Semántica:
1. evaluar expresión (ejs: p, 100-p) 2. escribir resultado 3. posicionar el cursor al comienzo de la sgte línea en la pantalla

Notas: Expresión puede ser una frase. Ej: U.println("chao"); U.print también admite expresiones. Ej: U.print(100-p);

miércoles 24 de marzo de 2010

Ejercicio
· Escribir las instrucciones que establezcan el diálogo indicado en el siguiente ejemplo: Calcular velocidad de un móvil distancia (metros)? 100.0 tiempo (segundos)? 9.78 velocidad=36.81 km/hora

miércoles 24 de marzo de 2010

Solución
U.println("Calcular velocidad de un móvil"); U.print("distancia(metros)?"); double d=U.readDouble(); U.print("tiempo(segundos)?"); double t=U.readDouble(); U.print("velocidad="); //alternativa: 3.6*d/t U.print((d/1000)/(t/3600)); U.println(" km/hora");
miércoles 24 de marzo de 2010

Solución 2. Usando abreviaturas
U.println("Calcular velocidad de un móvil"); double d = U.readDouble("distancia(metros)?"); double t=U.readDouble("tiempo(segundos)?"); U.println("velocidad=" + 3.6*d/t +" km/hora");

miércoles 24 de marzo de 2010

Explicaciones...
double d=U.readDouble("distancia(metros)?"); es equivalente a: U.print("distancia(metros)?"); double d=U.readDouble(); U.println("velocidad=" + 3.6*d/t + " km/hora"); es equivalente a: U.print("velocidad="); U.print(3.6*d/t); U.println(" km/hora"); +: operador de concatenación o añadidura

miércoles 24 de marzo de 2010

Solución 3. Usando
U.println("Calcular velocidad de un móvil"); double d=U.readDouble("distancia(metros)?"), t=U.readDouble("tiempo(segundos)?"); U.println("velocidad=" + 3.6*d/t +" km/hora");

miércoles 24 de marzo de 2010

Explicaciones...
Sintaxis: tipo variable1=exp1, variable2=exp2, ...; Semántica: tipo variable1=exp1; tipo variable2=exp2; ...

miércoles 24 de marzo de 2010

Programa Completo
import java.io.*; class Programa{ static public void main(String[]args) throws IOException{ ... //instrucciones } }
Notas

· Todo programa debe estar contenido en una clase:
class Nombre{...} y grabarse en archivo Nombre.java

· Burocracia necesaria porque Java no se diseñó para principiantes · Lectura y escritura es complicada, pero se simplifica usando la clase U
(clase de la U con funciones para leer y escribir frases y números). Disponible en u-cursos.
miércoles 24 de marzo de 2010