|
|
Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
|
CI-0202 Principios de Informática
Páginas de otros profesores
- Braulio Solano
<braulio.solano@ecci.ucr.ac.cr>
-
http://bsolano.com/ecci/claroline/course/index.php?cid=CI0202
OBJETIVO
Proveer formación básica en programación
utilizando técnicas actuales para lograr la resolucion de
problemas mediante la construcción de programas orienados
al área de ingeniería y afines.
OBJETIVOS ESPECIFICOS
Al finalizar este curso el o la estudiante será capaz de:
- Diseñar, organizar e implementar
algoritmos para resolver problemas
específicos.
- Usar un
ambiente de programación para la edición,
prueba y depuración de programas.
- Reutilizar componentes de software existentes en una
plataforma abierta.
- Aplicar a nivel básico
buenas prácticas de construcción de
software.
CONTENIDOS
- Fundamentos de la Programación:
- Lenguajes de programación: concepto de
programación, lenguaje máquina, lenguaje
ensamblador, lenguaje de alto nivel, maquina virtual,
compilador y paradigmas.
- Ciclo de vida de un programa: problema, análisis,
diseño,
implementación y prueba.
- Algoritmo:
concepto, primitivas y ejemplos.
- Introducción a la Programación Orientada a Objetos:
- Paradigma:
clases e instancias, atributos y
métodos, abstracción,
especificación y reutilización.
- Análisis y diseño: modelaje de clases e
instancias (UML).
- Compilación y ejecución en lenguaje Java.
- Sistemas Numéricos y Representación de Datos:
- Bases y conversión: decimal, binaria y
hexadecimal.
- Sistemas de codificación: ASCII y UNICODE.
- Tipos de Datos:
- Tipos de datos: primitivos (enteros, reales, booleano y
caracteres) e hileras.
- Precisión y literales: entero (byte, short, int y
long), real (float y double), booleano, carácter e
hilera (secuencias de escape).
- Definición de
Variables:
- Declaración: tipo, identificador y
dirección.
- Inicialización: tipo primitivo (valor), instancia
(referencia) y estado de memoria.
- Asignación y conversión (i.e. casting).
- Utilización de Variables.
- Atributos de clase: declaración, ciclo de vida,
encapsulamiento y
ocultamiento.
- Variables locales: declaración y ciclo de vida.
- Estáticas y constantes: declaración y ciclo de
vida.
- Entrada y Salida Básica:
- Entrada: parámetros de línea de comandos y
diálogo.
- Salida: línea de comandos y diálogo.
- Manejo de Excepciones:
- Concepto, ejemplos y definición (clase), lanzamiento y
atrape.
- Expresiones y Operadores:
- Aritméticos binarios (multiplicativos y aditivos) y
unarios (negación y posfijos).
- Relacionales (comparación e igualdad), lógicos
(binarios y unarios) y asignación.
- Evaluación y prioridad (orden de precedencia).
- Instrucciones y Estructuras de Control:
- Estructuras de secuenciación ({}).
- Estructuras de selección o bifurcación (if/else
y switch).
- Estructuras de repetición o
iteración (while, do y for).
- Métodos: Fundamentos:
- Conceptos: modularización y reutilización,
declaración e invocación.
- Componentes: encabezado (identificador, parámetros y
tipo de retorno) y cuerpo.
- Métodos estáticos (funciones) y ejemplos.
- Sobrecarga: declaración, firmas y resolución de
llamados.
- Métodos: Funcionamiento:
- Paso de argumentos: por valor y por referencia.
- Estado de memoria estática, memoria dinámica y
pila de llamados.
- Reglas de alcance o ámbito en identificadores.
- Constructores:
- Recursividad:
- Concepto y utilización.
- Orden de llamados.
- Arreglos o Vectores: Fundamentos:
- Concepto, estructura y estado de memoria.
- Tipos de Datos: primitivos e instancias.
- Declaración e inicialización.
- Acceso a celdas y recorrido.
- Parámetros de tipo arreglo y paso de argumentos.
- Arreglos o Vectores: Operaciones:
- Utilidad y operaciones comunes (suma, promedio,
mínimo, máximo).
- Búsqueda: primitivos e instancias.
- Ordenamiento: primitivos e instancias.
- Asociación, indexación y
clasificación.
- Clases contenedoras.
- Matrices:
- Concepto, estructura y estado de memoria.
- Declaración e inicialización.
- Acceso a celdas y recorrido.
- Hileras o Cadenas de Caracteres:
- Concepto, estado de memoria y tipos: estático y
dinámico.
- Operaciones: concatenación, obtener tamaño,
extraer carácter o fragmento, comparación,
búsqueda, reemplazo, conversión a
mayúscula o minúscula, conversión a
arreglo.
- Entrada y Salida: Archivos:
- Conceptos y organización física de
archivos.
- Información y operaciones de gestión:
información, creación y borrado.
- Procesamiento binario/textual: apertura/cierre y
lectura/escritura.
- Programacion avanzada desarrollando uno de los siguientes temas:
EVALUACION
El peso de la evaluación estará en los
exámenes, aunque es indispensable que todos los estudiantes
realicen los trabajos programados. Los exámenes se
realizarán en horas lectivas cuya fecha será
anunciada con 2 semanas naturales de anticipación.
|
INDICE DE MATERIALES DEL CURSO
- Tareas (Prof. Di Mare)
-
# 1:
Números de Armstrong
-
# 2:
Inversión de los valores de un vector
-
# 3:
Comparación de vectores
-
# 4:
Juego de toques y famas
-
# 5:
Juego del Gato (Tic Tac Toe)
-
# 6:
Operaciones matriciales para regresión lineal múltiple
-
# 7:
Emparejador de cuestionarios
-
# 8:
Tildador
- Ejemplos de laboratorio (Prof. Di Mare)
-
Laboratorio # 1
[Java]
[C++]:
Números de Armstrong
-
Laboratorio # 2
[Java]
[C++]:
El tamaño de cada tipo de datos
-
Laboratorio # 3
[Java]
[C++]:
while
vs for
[Matriz]
-
Laboratorio # 4
[Java]
[C++]:
La clase año bisiesto
-
Laboratorio # 5
[Java]
[CIN]
[C++]:
Calculadora de números enteros
-
Laboratorio # 6
[Java]
[C++]:
Clase
ord_int
para mantener varios números ordenados
-
Laboratorio # 7
[Java]
[C++]:
Recursividad de las funciones
Fibonacci()
y Factorial()
-
Laboratorio # 8
[Java]
[C++]:
Ordenamiento por
Seleccion()
, Insercion()
y Burbuja()
-
Laboratorio # 9
[Java]
[C++]:
Una clase para clasificar edades
-
Laboratorio # 10
[C++]:
La clase Bolsa para contar números
-
Laboratorio # 11
[C++]:
Argumentos por valor y argumentos por referencia
-
Laboratorio # 12
[Java]
[C++]:
Uso de argumentos en la línea de comandos
-
Laboratorio # 13
[C++]:
Lectura de los nombres de archivos del directorio actual
-
Laboratorio # 14
[Java]
[C++]:
Búsqueda lineal y binaria en un vector ordenado
-
Laboratorio # 15
[Java]
[C++]:
Muestra cómo centrar una hilera
-
Laboratorio # 16
[Java]
[C++]:
Muestra como usar una matriz
NxM
-
Laboratorio # 17
[Java]
[C++]:
La lista
-
Laboratorio # 18
[Java]:
Java pasa copias de referencias
-
Laboratorio # 19
[Java]:
Fibonacci()
super-lerdo y super-rápido
-
Laboratorio # 20
[Java]:
Manejo de Excepciones
-
Laboratorio # 21
[Java]:
Manipulación de hileras
-
Laboratorio # 22
[Java]:
Ventanas
-
Laboratorio # 23
[Java]:
Iteradores
-
Laboratorio # 24
[Java]:
Generador de todos los subconjuntos
-
Laboratorio # 25
[Java]:
String vs StringBuffer
- Herramientas
-
http://www.DrJava.org
&&
DrJava.htm
-
http://cs.joensuu.fi/jeliot
-
http://www.BlueJ.org
-
http://www.JCreator.com
-
http://java.sun.com/javase/downloads/index.jsp
- Bibliotecas de programas
-
http://math.nist.gov/javanumerics/jama/
-
http://jchart2d.sourceforge.net/
-
http://sourceforge.net/projects/javacsv/
-
http://www.jfree.org/jfreechart/
LIBRO DE TEXTO
Como lenguaje de programación en el curso se usa Java, por
lo que conviene que el estudiante adquiera un buen libro de texto
para el lenguaje sobre Java, que es el lenguaje que se
usará como marco de referencia en todo el curso. Cada
estudiante es responsable de conseguir sus libros. Estos son
buenos libros de texto:
- Barnes, David J. & Kölling Michael
- Programación orientada a objetos con Java,
ISBN: 978-84-8322-350-5,
Pearson Educación, 2007.
http://www.bluej.org/objects-first/
http://www.bluej.org/objects-first/resources/projects.zip
- Ceballos, Francisco Javier
- Java 2 - Curso de Programación - 3º ed.,
ISBN 970-15-1164-6, Alfaomega Ra-Ma, 2006.
http://www.fjceballos.es/publicaciones_java.html
http://www.ra-ma.es/down/Java2-IGyApIn3ed-Ceballos.zip
- Deitel, H.M.; Deitel, P.J.
- Java Cómo programar 5ta edición,
ISBN 970-26-0518-0, Prentice-Hall, 2004.
http://www.deitel.com/
ftp://ftp.prenhall.com/pub/deitel/J_HTP/java-htp5e/examples/java5-examples.zip
BIBLIOGRAFIA
- Di Mare, Adolfo
-
Convenciones de Programación para Pascal,
Reporte Técnico ECCI0188, Proyecto
32686053,
Escuela de Ciencias de la Computación e Informática,
Universidad de Costa Rica,
1988.
http://www.di-mare.com/adolfo/p/convpas.htm
- Gosling,James &
Joy, Bill & Steele, Guy & Bracha, Gilad
- The Java Language Specification, 3rd Ed; Addison-Wesley, 2005.
- Hommel, Scott (editor)
- Java Code Conventions
http://java.sun.com/docs/codeconv/CodeConventions.pdf
- Stroustrup, Bjarne
- "The C++ programming language (3rd ed)"; Addison-Wesley;
1998.
http://www.research.att.com/~bs/3rd.html
- Sun Microsystems
-
"Página oficial de Javasoft"
http://java.sun.com
- Sun Microsystems
-
JavaTM Platform,
Standard Edition 6 API Specification
http://java.sun.com/javase/6/docs/api/
- Sun Microsystems
-
Trail: Learning the Java Language;
The JavaTM Tutorials
http://java.sun.com/docs/books/tutorial/java/
Políticas de Corrección de Tareas
Adolfo Di Mare <adolfo@di-mare.com>
Copyright © 2010
Derechos de autor reservados © 2010