Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Oficina: 3-20
e-mail 1: jose.rubio.l@ucv.cl
e-mail 2: jrubio@inf.ucv.cl
1
ICI 142
Fundamentos de
Programación
Evaluación
Control 1: Lunes 04 de Mayo
Control 2: Lunes 22 de Junio
3
Nota Final
Evaluación
Nota Final = 0,4 * NE + 0,6 * (PP * 0,6 + PT * 0,3 + PC * 0,1)
donde:
NE: Nota de examen
PP: Promedio de pruebas = (P1 + P2) / 2
PT: Promedio de tareas = (T1 + T2 + T3) / 3
PC: Promedio de controles = (C1 + C2) / 2
El alumno se exime si:
Promedio de Presentación a Examen es >= 5.0 y P1 >= 4.0 y P2 >= 4.0 y PT >= 4.0 ó Promedio de Presentación a
Examen es >=5.5
4
Metodología
Trabajo en Equipos:
El número de integrantes no puede ser superior a 4 ni menor a 3.
Cada equipo cuenta con un líder, escogido por sus integrantes.
Las tareas y trabajos de clase se desarrollan en equipo.
Co-evaluación:
El líder debe evaluar a los miembros del equipo según una escala de
evaluación de 1 a 7. Para ello debe completar una pauta de
evaluación confeccionada por el profesor.
Clases expositivas:
Sólo cuando el profesor considere necesario.
5
Metodología
Portafolio de aprendizaje:
Cada equipo deben entregar al final de la asignatura un portafolio de
aprendizaje (ver http://www.flaguide.org/cat/portfolios/portfolios1.php).
Este documento puede ser digital y debe incluir la resolución de
TODOS los ejercicios de clases y guías de problemas.
La no entrega del portafolio o entrega incompleta implica
reprobación con nota mínima.
6
Clase de introducción
1. ¿Qué es una computadora?
2. Programas y algoritmos
3. Lenguajes de programación
4. Lenguaje C
7
¿Qué es una computadora?
• “Un sistema digital con tecnología microelectrónica
capaz de procesar información a partir de un grupo
de instrucciones denominado programa”
• Componentes principales:
– Procesador (CPU: Central Processing Unit)
– Memoria (RAM: Random Access Memory)
• Componentes auxiliares:
– Disco duro
– Lector CD-ROM
– Teclado
– Pantalla
– etc.
8
Elementos de una computadora
(hardware)
10
Representación de los datos
en la computadora
• Base 10:
– Dígitos = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
– 1111 = 1*103 + 1*102 + 1*101 + 1*100
• Base 2:
– Dígitos = {0, 1}
– 1111 = 1*23 + 1*22 + 1*21 + 1*20 = 8 + 4 + 2 + 1 = 15
• ¿Cuántos valores puede representar un byte?
– 1 byte = 8 bits (Ej: 01100101)
– Cada bit puede representar 2 valores (0 y 1)
– Un byte puede representar 28 = 256 valores
11
Representación de textos
13
Representación de sonido
4 8 12 13 12 10 8…
• Discretización de la amplitud
• Un byte para cada valor
14
¿Qué es un programa?
• Un programa es una secuencia de instrucciones a
la CPU
• Cada instrucción es un conjunto de bytes
• Ejemplos de instrucciones:
– Leer un dato del teclado
– Guardar un dato en la memoria
– Ejecutar una operación sobre dos datos
– Mostrar un dato en la pantalla
– etc.
15
Acceso a la memoria
RAM
1 12
2 125
3 45
4 2
5 0
CPU
6 10
7 32
8 64
9 15
16
Algoritmo
• Un esquema para resolver un cierto tipo de
problema
• Se puede traducir en un programa para ejecutarlo
en una computadora
• Pasos para la resolución de un problema con
computadora:
1. Diseño de un algoritmo
2. Codificación de un programa
3. Ejecución y validación
17
Algoritmo
• Componentes:
– Entrada: datos del problema a resolver
– Salida: el resultado de la resolución
– Proceso: pasos a seguir para la resolución
• Propiedades:
– Preciso: orden estricto + expresiones precisas
– Definido: con la misma entrada, siempre resulta la
misma salida
– Finito: número finito de pasos
18
Algoritmo 1
• Problema: Sumar dos números
• Solución:
– Entrada: dos números
– Salida: guardar la suma en la memoria y
imprimirla por pantalla
– Proceso:
1) Añadir los dos números
2) Guardar el resultado en la memoria
3) Imprimir el resultado por pantalla
19
Algoritmo 2
• Problema: hacer una taza de té a la inglesa
• Solución:
– Entrada: agua, bolsa de té, leche, tetera, taza,
cuchara
– Salida: una taza de té a la inglesa
– Proceso:
1. Poner la bolsa de té en la taza
2. Poner el agua a hervir en la tetera
3. Verter el agua hervida en la taza
4. Añadir leche
5. Remover
20
Algoritmo 3
• Problema: averiguar la solvencia de un cliente que
ejecuta un pedido a una fábrica.
• Solución:
– Entrada: el pedido
– Salida: mensaje de aceptación o rechazo
– Proceso:
1. Leer el pedido
2. Examinar la ficha del cliente
3. Si el cliente es solvente, aceptar pedido
4. En caso contrario, rechazar pedido
21
Lenguajes de programación
• Lenguajes máquina
• Lenguajes ensamblador
• Lenguajes de alto nivel: C, C++, Visual Basic, Java,
Pascal, Prolog, LISP,…
22
Lenguajes máquina
• Programas son secuencias de instrucciones compuestas de
bytes:
– 16 29 156 9 82 75
• Ventajas:
– La CPU entiende estos programas
• Desventajas:
– Pensar en modo de 0’s y 1’s es muy difícil para nosotros
23
Lenguajes ensamblador
• Instrucciones compuestas de palabras cortas y números:
– LOD 15 6
– LOD 16 8
– ADD 15 16 17
– JMP 10
• Ventajas:
– Más fácil a entender
• Desventajas:
– Todavía bastante abstracto
– Necesita traducir el código a lenguajes máquina
24
Lenguajes de alto nivel
• Diseñados para ser más parecidos a lenguaje natural
• Ventajas:
– Mucho más fácil de dar instrucciones
• Desventajas:
– Más complicado convertir en lenguajes máquina
25
Lenguajes de programación:
¿Por qué hay tantos?
¿Cómo nacen, sobreviven y caducan?
1. Diferentes dominios de aplicación:
• Programación de sistemas – rapidez y acceso de
bajo nivel: C
• Inteligencia artificial – computación simbólica: LISP,
Prolog
• Programación científica – fórmulas matemáticas:
Fortran
• Negocios – transacciones: COBOL
• Uso específico: SQL (bases de datos), Perl
(manipulación de textos), JavaScript (páginas web),
Pascal (formación)
26
Lenguajes de programación:
¿Por qué hay tantos?
¿Cómo nacen, sobreviven y caducan?
2. Diferentes necesidades:
• Fiabilidad: Ada
• Escabilidad, paradigma orientado a objeto: C C++
• Portabilidad: Java
3. Evolución:
• Mejora del hardware
• Mejor comprensión de como reforzar criterios de
legibilidad, facilidad de aprender y escribir, fiabilidad…
4. Importancia de la estandardización
5. ¡Número de usuarios!
27
Traductores de lenguaje:
intérpretes
PROGRAMA FUENTE
INTERPRETE
EJECUCION DE LA(S)
INSTRUCCION(ES)
INTERPRETADA(S)
28
Traductores de lenguaje:
compiladores
OPCION 1 OPCION 2
PROGRAMA FUENTE
Fase de compilación
Fase de ejecución
EJECUCION
29
Lenguaje C
• C es un lenguaje de programación creado en 1972
por Ken Thompson y Dennis M. Ritchie en los
Laboratorios Bell como evolución del anterior
lenguaje B, a su vez basado en BCPL.
• Al igual que B, es un lenguaje orientado a la
implementación de Sistemas Operativos,
concretamente Unix.
• C es apreciado por la eficiencia del código que
produce y es el lenguaje de programación más
popular para crear software de sistemas, aunque
también se utiliza para crear aplicaciones.
30
Fase de Compilación
.c Preprocesamiento
.c Paso a Ensamblador
.s
Fichero Fuente
Compilación Ensamblar
Enlazado
.o
.o
.o
.o
EXE .o
.a
Fichero Ejecutable
Librerías
31