Está en la página 1de 31

Profesor: José Miguel Rubio L.

Magíster en Ingeniería Informática (Egresado)

Ingeniero Civil en Informática


Licenciado en Ciencias de la Ingeniería
Técnico en Programación

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

Prueba 1: Miércoles 06 de Mayo


Prueba 2: Miércoles 24 de Junio
Recuperativa: Lunes 29 de Junio
Examen Final: Lunes 06 de Julio

Tarea 1: Lunes 21 de Abril


Tarea 2: Lunes 26 de Mayo
Tarea 3: Lunes 23 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)

Unidad aritmetica Memoria Principal


yProcesador
logica (ALU)
(RAM)
(CPU)
Unidad de
Control (CU) Programa

Dispositivos de entrada Dispositivos de salida Dispositivos de


teclado pantalla almacenamiento de datos
ratón impresora disco duro
lector/grabador de CD-ROM
9
lector/grabador de disquete
Representación de los datos
en la computadora
• El único código que entiende la CPU son los bits.
• Los bits son representados en circuitos electrónicos
que pueden estar en estado “on” (1) u “off” (0)
• Las instrucciones se mandan a la CPU en forma de
bytes, que son palabras de 8 bits
• 1 byte = 8 bits
• 1 kilobyte = 1 024 bytes
• 1 megabyte = 1 024 kilobytes = 1 048 576 bytes

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

TEXTO: My name is Anders.


ASCII: 77-121-32-110-97-109-101-32-105-115-32-65-110-100-101-114-115-46
18 bytes 12
Representación de imagen
00000000
00110110
00100010
00100010
00110110
00000000
00110110
00000000

• División de la imagen en una matriz de pixels (unidad


de la imagen)
• Cada pixel asociado con un color

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 compilación COMPILADOR


programa
objeto
programa ENLAZADOR
ejecutable (binder, linker)
Fase de ejecució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

También podría gustarte