Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PROGRAMACIÓN
2008
COMPETENCIA GENERAL
• CAPACIDAD DE ANALIZAR Y SINTETIZAR UN PROBLEMA EN PARTES CON EL FIN DE DISEÑAR SU
REPRESENTACION ALGORITMICA
CONTENIDO
TEMA-1 ARQUITECTURA DEL COMPUTADOR.
El Microprocesador – CPU. Tareas. UC, ALU y Registros del Sistema
El BUS. Bus de Control, Dirección y Datos.
La Memoria. ROM, RAM y Caché
Otros dispositivos: Controlador de Interrupciones, DMA, Periféricos, etc.
TEMA-5 CODIFICACIÓN.
• TECNOLOGÍA .NET
CONCEPTOS BÁSICOS de NET, La plataforma .NET. el FRAMEWORK.NET y el VISUAL STUDIO.NET
El ENTORNO de DESARROLLO IDE.
Diseño de Formularios y Editor de código
CREACIÓN de un PROYECTO en C#.NET
• EL CÓDIGO DE PROGRAMACIÓN.
Lenguajes de máquina, de bajo nivel , de alto nivel o súper lenguajes, Compiladores e intérpretes
PARTES de la ESTRUCTURA del CÓDIGO en C#.NET. Declaración de Variables
ELEMENTOS BÁSICOS del CÓDIGO C#.NET
OPERADORES y FUNCIONES C#.NET.
TIPOS DE SENTENCIAS. Sentencias simples, Sentencias CONDICIONALES (if ( ).., if( ) ..else .., switch( ) ) y Sentencias
REPETITIVAS (while( ), for ( ) y do .. while( ))
CONVERSIONES DE CÓDIGO A DIAGRAMAS DE FLUJO.
PROGRAMAS EN MODO CONSOLA Y ORIENTADOS A EVENTOS
EJERCICIOS
BIBLIOGRAFÍA
TIPO DE
# TEMA
CLASE
TEMA-1 ARQUITECTURA DEL COMPUTADOR.
El Microprocesador – CPU. Tareas. UC, ALU y Registros del Sistema
1 Teórica
El BUS. Bus de Control, Dirección y Datos. La Memoria. ROM y RAM
Controladores
TEMA-2 SISTEMAS DE NUMERACIÓN.
Sistemas Numéricos Posicionales. Teórica
2
Números BINARIOS, OCTALES y HEXADECIMALES. Conversiones Práctica
entre sistemas numéricos posicionales.
Operaciones Aritméticas con números no decimales
Teórica
3 Suma y Resta. Operaciones Aritméticas con números no decimales.
Práctica
EJERCICIOS
TEMA-3 REPRESENTACIÓN DE LA INFORMACIÓN.
Teórica
4 GENERALIDADES. Sistemas de procesamiento de la información.
Práctica
Tipos de datos. Constantes y variables. Expresiones: Aritméticas.
Expresiones: Relacionales, Lógicas y de Caracteres Asignaciones. Teórica
5
EJERCICIOS. Representación algorítmica de expresiones algebraicas. Práctica
6 EXÁMEN PARCIAL I TEMAS 1,2 Y 3 Evaluación
TEMA-4 DISEÑO DE ALGORITMOS.
PASOS EN LA RESOLUCIÓN DE UN PROBLEMA. Definición y
7 Teórica
Análisis, Diseño del algoritmo, Codificación y Validación. DIAGRAMAS
DE FLUJO. Símbolos gráficos. EJERCICIOS
ESTRUCTURAS BÁSICAS DE ALGORITMOS. Estructuras selectivas.
Teórica
8 BIFURCACIONES. (Salida simple, Salida doble y Salida múltiple.
Práctica
EJEMPLOS
9 Estructuras selectivas. BIFURCACIONES. EJERCICIOS Práctica
Estructuras Repetitivas BUCLES (Condición al final, Condición al inicio,
Teórica
10 BUCLES: Conociendo el número de iteraciones, Contadores y
Práctica
acumuladores. EJEMPLOS
11 Estructuras Repetitivas BUCLES. EJERCICIOS Práctica
12 EXAMEN PARCIAL II TEMA 4 Evaluación
TEMA-5 CODIFICACIÓN en C#.NET.
TECNOLOGÍA .NET CONCEPTOS BÁSICOS de NET, La plataforma
.NET.
El FRAMEWORK.NET y el VISUAL STUDIO.NET. Creación de un
13 Proyecto en C#.NET LAB-01
El IDE: La Barra de Menú y Herramientas. Diseño de Formularios.
Controles Básicos La Ventana de Propiedades. Explorador de Soluciones. El
Editor de Código
LAB-1 EXPLORANDO EL ENTORNO DE DESARROLLO
Lenguajes Tipos: máquina, de bajo nivel, de alto nivel. Compiladores e
intérpretes.
14 Teórica
Declaración de Variables. Tipos de Datos. ELEMENTOS BÁSICOS del
CÓDIGO C#.NET
TIPOS DE SENTENCIAS. Sentencias simples, Sentencias
CONDICIONALES
15 <if( ), if( ) .. else .., switch( )> EJERCICIOS LAB-02
LAB-2 CODIGO DE ALGORITMOS – ESTRUCTURAS
CONDICIONALES
EVALUACIONES
Evaluaciones escritas
Evaluación Temas a evaluar Puntos Fecha
Primer Parcial Temas 1,2 y 3 20 Clase 7
Segundo Parcial Tema 4: Diseño de Algoritmos 20 Clase 13
Exámenes Finales Se evalúa el alcance de los objetivos de la 50 Clases 19 y 20
<práctico y teórico> materia. Este examen tendrá un componente
práctico (habilidades en máquina) que se
sugiere que tenga un peso correspondiente a
la mitad del puntaje.
TRABAJOS PRÁCTICOS
Descripción Puntos
Se sugiere que el docente oriente diferentes evaluaciones periódicas de 10
control para verificar el aprendizaje de los diferentes temas avanzados en
la materia, así como la evaluación de los LABs
RESUMEN
El tema plantea la composición interna del ordenador mediante su representación de forma muy
esquemática. La Unidad Central de Procesamiento es referida como su componente principal
destacándose las tareas a las cuales está encaminada y las funciones que cumplen sus componentes
principales como son las unidades de control y aritmético – lógica.
En los ordenadores la interconexión de todos los circuitos de control internos se realiza mediante un
diseño de circuitos conocido con el nombre de BUS
El BUS es un conjunto de pistas trazadas en la placa principal que conectan todas las partes que
controlan y forman la PC y sirve para el paso de la información de un componente a otro.
Si parte del software necesario para el funcionamiento de un ordenador se encuentra siempre grabado en
el interior del mismo resulta mucho más fácil este funcionamiento, es por ello que parte del software se
encuentra grabado en la memoria ROM (Read Only Memory).
Los ordenadores vienen con una cantidad de ROM que contiene las unidades, programas y datos que
son necesarios para activar y hacer funcionar al ordenador y sus periféricos.
Por otra parte la RAM (Random Access Memory) es el área de trabajo donde el ordenador almacena
temporalmente las órdenes o comandos a ejecutar y los datos que deben manipularse por dichas
órdenes.
PREGUNTAS DE AUTOCONTROL
1. ¿Qué función cumple cada uno de los elementos que componen el microprocesador?
2. ¿Qué función cumple el reloj en el microprocesador?
3. Describa brevemente las características principales de la memoria: RAM, ROM, PROM, y
EPROM?
4. ¿Qué es la ROM BIOS?
5. Describa como funciona el controlador de interrupciones
6. Describa como funciona el controlador de DMA
7. Para comunicarse con el resto de los componentes del computador el microprocesador cuenta con
tres buses. ¿Cuáles son? Describa las características principales de cada uno.
RESUMEN
En capítulo se analizan los sistemas numéricos posicionales SNP que son aquellos en los cuales la
posición de los dígitos que componen al número tienen un “peso asociado” en el valor del mismo. Estos
números se pueden representar como una suma de potencias donde cada sumando es un dígito
multiplicado por la base o raíz del número elevado a una potencia acorde a la posición del mismo.
Como bien los circuitos digitales tienen señales que normalmente están en una de dos condiciones: alto-
bajo, cargado-descargado, activado-desactivado, estos representan a bits que toman los valores 0 y 1
Aunque las bases octales y hexadecimales no se emplean frecuentemente éstas son convenientes para
números con múltiples bits en un sistema digital y por ello son motivo de estudio.
EJERCICIOS RESUELTOS
CONVERSIONES
Convertir de binario a decimal los siguientes números:
100112 = 1*24 + 0*23 + 0*22 + 1*21 + 1*20
= 1*16 + 1*2 + 1*1 = 1910
1000102 = 1*25 + 1*21 = 3410
101. 0012 = 1*22 + 0*21 + 1*20 + 0*2-1 + 0*2-2 + 1*2-3
= 1*4 + 0*2 + 1*1 + 0*0,5 + 0*0,25 + 1*0,125 = 5,12510
Convertir:
a) 17910 binario
179 / 2 = 89 residuo 1 (lsb)
/ 2 = 44 residuo 1
/ 2 = 22 residuo 0
/ 2 = 11 residuo 0
/ 2 = 5 residuo 1
/ 2 = 2 residuo 1
/ 2 = 1 residuo 0
/ 2 = 0 residuo 1
(msb)
luego:
17910 = 101100112
b) 46710 a octal
467 / 8 = 58 residuo 3 (lsb)
/ 8 = 7 residuo 2
/ 8 = 0 residuo 7 (msb)
luego:
46710 = 7238
c) 341710 a hexadecimal
3417 / 16 = 213 residuo 9 (lsb)
/ 16 = 13 residuo 5
/ 16 = 0 residuo 13 (msb)
luego:
341710 = D5916
C acarreo <01010>
X 727 13278 1 . 83+3 . 82+2 . 81+7 . 80 = 512+192+16+7
= 727
Y 389 6058 6 . 82+0 . 81+5 . 80 = 384+0+5 = 389
1116 21348 2 . 8 +1 . 8 +3 . 81+4 . 80 = 1024+64+24+4 = 1116
3 2
C acarreo <01100>
X 51174 C7E616 12 . 163+7 . 162+14 . 161+6 . 160
=49152+1792+224+6 = 51174
Y 6585 19B916 1 . 163+9 . 162+11 . 161+9 . 160 =
4096+2304+176+9 = 6585
57759 E19F16 57759 / 16 = 3609 res 15 (lsb)
/ 16 = 225 res 9
/ 16 = 14 res 1
/ 16 = 0 res 14 (msd)
RESTA
B préstamo <00000000> B préstamo <10101010>
X 127 011111112 X 170 101010102
Y 63 001111112 Y 85 010101012
64 010000002 85 010101012
B préstamo <1000>
X 727 13278 1 . 83+3 . 82+2 . 81+7 . 80 = 512+192+16+7 = 727
ANEXO TEMA 2
Tabla de Números Decimales, Binario, Octales y Hexadecimales.
∑
D =di * r i
i =− n
donde: r = base del número en cuestión
p = cantidad de dígitos a la izquierda del punto
n = cantidad de dígitos a la derecha del punto
di = dígito en la posición i
PREGUNTAS de AUTOCONTROL:
• ¿A que se denomina dato en programación?
• ¿Qué se entiende por algoritmo y como puede ser representado?
• ¿Qué características poseen las operaciones de entrada – salida en un programa?
• ¿Dónde pueden ser usadas las expresiones relacionales y lógicas en un programa?
• Diga, a su criterio, ¿que importancia revisten las operaciones de entrada – salida?
• Como Ud. conoce en una operación de asignación es posible asignar el contenido de una expresión a
una variable, a lo que se denomina operación de asignación. ¿Podría esa misma variable encontrarse
como un operando de la expresión? Explique.
EJERCICIOS PROPUESTOS
1. Indicar el valor de cada una de las siguientes variables:
a) x ( 2 + 3) * 6
b) x 4 2 + 7 * 6
c) x ( 4 2 + 7 ) * 6
d) x 4 2 + ( 7 * 6)
9
e) y +7
5
54
f) y
33
126
g) y 3
21
5. Deducir el valor que tienen las variables A y B al final de la siguiente secuencia de instrucciones.
A 4
B 5
B A+1
B B+1
A B
ANEXOS TEMA 3
EXPRESIONES
Expresiones aritméticas
Los operadores de las expresiones aritméticas son:
+, – suma, resta
*, / multiplicación, división (cuando ambos operandos son enteros el resultado es un valor entero, si
uno de ellos es real el resultado es de tipo real)
% resto de la división entera
Expresiones relacionales
Operador significado
< menor que
> mayor que
== igual que
<= menor o igual que
>= mayor o igual que
!= distinto de
Expresiones lógicas
División y
*/%
Resto de la división entera
4
Suma,
+ –
Resta
5 <, >, <=, >=
Operadores relacionales
6 == !=
RESUMEN:
Se detallan los pasos a seguir en la resolución de un problema, vistos en el tema anterior, siendo el paso
del análisis desglosado en los datos de entrada, los resultados, las fórmulas necesarias si éstas existieran
y la lógica a emplear, es decir, que herramientas de programación se emplearán y como para resolver el
problema.
La definición del problema es un aspecto crucial pues el programador debe de estar muy claro en que es
lo que se le está solicitando.
El análisis debe aprovecharse para definir mediante identificadores cuales son las variables que
intervendrán en el problema.
Existen varios métodos para el desarrollo de un algoritmo como son los de seudo código, los diagramas
de flujo y los lenguajes de programación. El seudo código es el planteamiento del problema mediante
un lenguaje coloquial, los diagramas de flujo mediante símbolos gráficos y los lenguajes de
programación mediante el código directo que interpretará la PC, éste último constituye la forma mas
avanzada de plantear el algoritmo por lo que para ello el programador debe contar con suficiente
experiencia. En el caso de los dos primeros métodos es necesaria la codificación, es decir, pasarlo a un
lenguaje de programación determinado.
En el caso de los diagramas de flujo se estudian las estructuras selectivas o bifurcaciones que son las
empleadas para la consideración de variantes de acuerdo al comportamiento de una determina
condición, de esta forma se plantean las bifurcaciones de salida simple cuando el resultado de la
condición es verdadero o de salida doble cuando el flujo de la ejecución toma caminos en dependencia
si la condición es verdadera o si es falsa, asimismo se plantea el caso de la bifurcación con salidas
múltiples donde al evaluar una expresión o variable, el flujo seguirá acorde al valor tomado.
Un bucle o lazo es un segmento del programa que se repite un número de veces mientras se cumpla una
condición determinada y donde en cada ciclo o iteración se comprueba la condición. Existen bucles en
PREGUNTAS de AUTOCONTROL:
• ¿Por qué son necesarios, en algunos casos, el uso de contadores en las estructuras repetitivas de los
programas de computación?
• ¿Cuál es la diferencia entre dos bucles en uno de los cuales la condición se encuentra al inicio de
éste y en otro en la que se encuentra al final del mismo?
EJEMPLO RESUELTO:
1 Calcular la media de una serie de números enteros y positivos dados por el usuario desde teclado. El
valor cero (0) indica el fin de la entrada.
Análisis del Problema
Datos.- n (diferentes valores dados por el usuario, es decir n1, n2, .. ,nn)
R/s.- Vprom (valor promedio)
Fórmulas.- Vprom = (n1 + n2 + … + nk)/k (sumatoria de los # dados entre la cantidad)
Lógica.- Se usará un acumulador para la sumatoria y un contador para la cantidad de valores
entrados, en un ciclo hasta la lectura del valor 0
El valor 0 => la impresión de Vprom y fin del
algoritmo
Diseño del Algoritmo
Validación
Se comprobará mediante el siguiente juego de valores:
15, 8, 23, 102, 0 de donde Promedio = (15 + 8 + 23 + 102) / 4 = 148/4 = 37
Corrida a mano del algoritmo
( consiste en ir evaluando paso a paso las distintas variables acorde al flujo del diagrama)
var val inicial ciclo 1 ciclo 2 ciclo 3 ciclo 4
n 15 8 23 102
c 0 c= 0+1= 1 c= 1+1= 2 c= 2+1= 3 c= 3+1= 4
S 0 S= 0 + 15 = S= 15 + 8 = S= 23 + 23 = S= 46 + 102
si (a > 0)
Comparación de una expresión booleana con
:
salida simple
fin
si (b == 0)
:
sino Comparación de una expresión booleana con
: salida doble
fin
Conexión entre líneas de flujo
Líneas de flujo. Indican los flujos del diagrama
hacer
Ciclo repetitivo para la ejecución de una o más
:
sentencias con la condición al final del bucle
mientras que (e==0)
mientras (g >1)
Ciclo repetitivo para la ejecución de una o más
:
sentencias con la condición al inicio del bucle
fin
RESUMEN:
En la primera parte del tema se presenta al lenguaje C#.NET explicando a grandes rasgos como se
inserta el mismo en la plataforma .NET y como se emplean las herramientas de programación en
VS.NET proveyendo los elementos necesarios para la creación de una aplicación.
Es importante conocer previamente, algunos conceptos básicos de .NET como son la plataforma que
posibilita el uso de la tecnología .NET, el FrameWork y el VisualStudio entre otros.
Por otra parte en el tema se señalan las principales características del entorno de desarrollo usado para la
creación y modificación de las aplicaciones como la ventana de formularios y la caja de herramientas.
PREGUNTAS de AUTOCONTROL:
1. ¿Cómo se accede al editor de código para la creación de un formulario? Mencione un ejemplo de por
qué sería necesario hacer esto.
2. ¿Cómo puede el CLR (Common Language RunTime) administrar la ejecución de aplicaciones
escritas en diferentes lenguajes de programación?
3. Después que se crean las especificaciones de diseño para una aplicación. ¿Cómo puede UD. crear
objetos para la interfaz de usuario?
4. Mientras UD. está creando una aplicación en C#.NET. ¿Cómo puede UD. asegurarse que trabaja
correctamente cuando se realiza un cambio de consideración en la misma?
5. ¿Qué herramienta de programación se usa para cambiar el color y la captura de información de un
objeto en la interfaz de usuario?
6. ¿A que se denomina codificación?
7. ¿Qué tipo de dato óptimo asociado Ud, usaría para una variable que represente:
valores enteros y positivos
solo valores enteros (positivos y/o negativos)
la edad de una persona.
el sexo de una persona
8. ¿Por qué los lenguajes de programación vienen acompañados por programas denominados
compiladores?
9. ¿Cual es el problema fundamental que presentan los lenguajes de programación que no llegan a
constituir un súper lenguaje?
10. Señale que diferencias existen entre un programa fuente y un programa ejecutable.
Interfaz de Usuario
Se comienza agregando los controles necesarios en un formulario nuevo como se muestra en la
imagen:
Código de la Aplicación
En el evento Click del botón btnCalc cuyo texto es Calcular se coloca el código que se puede ver en
el listado completo del programa.
public Form1()
:
private void btnCalc_Click(object sender,
EventArgs e)
{
float Base, Altura, Area;
Base = float.Parse(this.txtBase.Text);
Altura = float.Parse(this.txtAlt.Text);
Area = (Base * Altura) / 2;
this.lblRes.Text = Area.ToString();
2. Realizar un programa que lea del teclado un número correspondiente al radio de la circunferencia,
visualizando la longitud de la misma y el área del círculo correspondiente.
Interfaz de Usuario
Se comienza agregando los controles necesarios en un formulario nuevo como se muestra en la
imagen:
Código de la Aplicación
public Form1()
:
private void btnCalc_Click(object sender, EventArgs e)
{
double r, area, Lng;
r = double.Parse(this.txtRadio.Text);
area = Math.PI * r * r;
Lng = 2 * Math.PI * r;
this.txtArea.Text = area.ToString();
this.txtLong.Text = Lng.ToString();
}
EJERCICIOS PROPUESTOS
1.Crear una aplicación denominada Propiedades de
Adición que muestre las propiedades Asociativa (a + b)
+ c = a + (b + c) y Conmutativa a + b = b + a cuando
se haga clic en los botones agregados al Formulario a
tales efectos.
La Interfaz de Usuario debe lucir como la siguiente:
8.Crear la Interfaz de Usuario y escribir el código para un problema que dado un conjunto de n números
enteros encontrar el promedio de los mismos
9.Crear la Interfaz de Usuario y escribir el código para un problema que permita invertir un número de 3
dígitos, dado como entrada por el usuario. Use los controles a su elección que le permitan lo anterior.
10.Diseñar un algoritmo que calcule el área de un conjunto de círculos. El radio de cada círculo en
centímetros se leerá mediante una caja de texto (TextBox) y se almacenará en una caja de lista
(ListBox). El algoritmo deberá mostrar la siguiente información por pantalla a través de una caja de
mensaje (MessageBox):
a. El área mayor calculado
b. El área menor
ANEXOS TEMA 5
TIPOS DE DATOS PRIMITIVOS
Dim
TIPO <byt RANGO de VALORES
es>
byte
1 0 a 255
Entero sin signo
short
2 –32 768 a +32 767
Enteros
boolean
Lógicos
FUNCIONES PRINCIPALES
SENTENCIAS CONDICIONALES
Sentencia de salida simple:
Sintaxis:
if ( expression )
statement
Esta sentencia ejecuta una o ninguna sentencia acorde al resultado de su
expresión de condición.
Si la condición expresada en expression == True entonces se ejecuta S y si
expression == False no se ejecuta nada.
Ejemplo: if (x==1.5) z = x + y; //en línea
if (x==1.5) //en bloque delimitado por { }
{
z = x+y;
}
donde:
expression se le denomina selector
constant-expression se denominan constantes case
Ejemplo:
siendo a un valor numérico de tipo entero, se quiere que si:
3 < a < 1 entonces x=0, de otra forma si a==1 x=b+c, a==2
x=(b+c)/2 y si a==3 x=(b+c)2, luego se haría:
switch (a)
{
case 1:
x = b + c;
break;
case 2:
x = (b + c)/2;
break;
case 3:
x = Math.Pow((b + c),2);
break;
default:
x=0;
break;
}
MessageBox.Show(x.ToString());
SENTENCIAS REPETITIVAS
Condición al final do statement while (exp);
Sintaxis: do
{
S1;
:
Sn;
}
while (exp);
La instrucción do ejecuta una instrucción o un bloque de instrucciones entre {}
repetidamente hasta que una expresión especificada se evalúe como false.
Nótese que el bucle siempre se ejecuta al menos una vez ya que la condición se
encuentra al final de éste.
Ejemplo:
public static void Main ()
{
int x = 0;
do
{
Console.WriteLine(x);
x++;
}
while (x < 5);
}
donde:
init-expression = Variable de control
cond-expression = Condición de evaluación del bucle
loop-expression = Incremento de la variable de control