lunes, 26 de mayo de 2008

Acumuladores y contadores

Acumuladores y contadores

Acumulador
En un CPU de computadora, el acumulador es el registro en el que son almacenados temporalmente los resultados aritméticos y lógicos intermedios que serán tratados por la Unidad aritmético-lógica (ALU).

Sin un registro como un acumulador, sería necesario escribir el resultado de cada cálculo (como adición, multiplicación, desplazamiento (shift), etc.) en la memoria principal, quizás justo para ser leída inmediatamente otra vez para su uso en la siguiente operación. El acceso a la memoria principal es significativamente más lento que el acceso a un registro como el acumulador porque la tecnología usada para la memoria principal es más lenta (pero más barata) que la usada para un registro interno del CPU.
Contador de programa

El contador de programa, es un registro del procesador de un computador que indica la posición donde está el procesador en su secuencia de instrucciones. Dependiendo de los detalles de la máquina particular, contiene o la dirección de la instrucción que es ejecutada, o la dirección de la próxima instrucción a ser ejecutada. El contador de programa es incrementado automáticamente en cada ciclo de instrucción de tal manera que las instrucciones son leídas en secuencia desde la memoria. Ciertas instrucciones, tales como las bifurcaciones y las llamadas y retornos de subrutinas, interrumpen la secuencia al colocar un nuevo valor en el contador de programa.

MÉTODOS PARA LEER DATOS

MÉTODOS PARA LEER DATOS

Existen dos métodos para leer datos, el primero sirve para leer sólo un carácter y el segundo lee una cadena completa de caractéres.

variable=console.read( );
cadena=console.readLine( );

Para guardar un dato dentro de una variable se ocupa la siguiente sintaxis.
,
Tipo variable=tipo.Parse(Console.readline( );)
int Nom_1=int.Parse(Console.readLine( );)

Parse: transforma la entrada a una estructura de datos que ahora si por las dos puede ser procesada.

ESTRUCTURAS DE CONTROL
Evaluan una o mas alternativas y pueden ser bidireccional o multidireccional.

Insturccion int (bidireccional): instrucción condicinal más usada en los diversos lenguajes de programación.Su sintaxis es:
if(condicional)
{
grupo cierto de instrucciones;
}
else
{
grupo falso de instrucciones;
}

Instruccion Switch (multidireccional): existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez. en estos casos se usa una condición compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver usando la instrucción switch.
Esta instrucción es de decisión múltiple donde el compilador prueba o busca e valor contenido en un variable entera o caracter contra una lista de constantes apropiadas, cuando la computadora encuentra el valor de igualdad entre variable y constante entnces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entonces ejecuta un grupo de instrucciones asociados a un default aunque éste último es opcional.

Switch (variable)
{
case "a":
a+b
break;
case "b":
a-b
break;
case default:
-error-

case 1
case 2
instrucciones
break

Espacio de nombres

Espacio de nombres:
Clasificación especial usada para agrupar un conjunto de clases y estructuras relacionadas, también se ocupa para aislar ese grupo de nombres en conjunto de tipos de datos separados y distintos.
Es imposible tener 2 clases con el mismo nombre en un espacio de nombres, pero es posible que existan clases con el mismo nombre en espacios de nombres diferentes.

Los espacios de nombres pueden ser predefinidos o definidos por el usuario.

El .net tiene clases en espacios de nombre predefinidos, por ejemplo system.

Para definir un espacio de nombre se utiliza.
Namespace nombreespacio
{
Clase del nombre de nombres.
}

Clases unidad básica de la programación orientada a objetos. Todo programa c# se organiza en clase que encapsula datos y comportamientos.
Una clase se construye con la palabra class y el símbolo de inicio y fin de un bloque.para delimitar la codificacion de sus miembros ,

Class nombreclase
{
codificación de loa miembros de la clase
}


Clase Mesa (conceptos generales)
Objeto

Clase Animal
Subclases Carivoros
Objeto: león con dientes picudos y melena grande. (lo que es de él)

Métodos para escribir datos:

Un método es reconocido por tener paréntesis y por los paraámetros que puede contener. Los métodos usados para escribir satos en pantalla son:
1. Write: escribe sin añadir el caractér de fion de línea a la cadena.
2. WriteLine si añade el caractér de fin de línea a la cadena ,de modo que lo siguiente que se escriba se colocará en la siguiente línea

Clase método ("cadena de caractéres")
Consola Write ("hola")

( al final siempre se pone ; )

Ejemplo:
Console. Write ("Hola");
Console. WriteLine ("Pepe");
Console. Write ("¿Como estas, ");
Console, WriteLine ("¿bien?");

Resultado en consola:
HolaPepe
¿Como estas, ¿bien?

LENGUAJE DE PROGRAMACIÓN
El lenguaje de programación tiene 3 herramientas esenciales: la declaración y uso de variables, cíclos y condicionales.

Elementos léxicos de un programa

Elementos léxicos de un programa

1) Comentarios: anotaciones para documentar el programa. Se utilizan de la siguiente forma :
// para documentar sobre un renglon
/* texto */ se utiliza para comentar parrafos

2) Palabras reservadas: palabras que tienen un determinado significado para el compilador.

3) Identificadores: nombre que lor programadores dan a los diferentes elementos de un programa. Las características que deben contener son las sigueintes:
Secuencia de digitos, caracteres.
No deben coincidir con una palabra reservada.
No deben empezar con un dígito.
Son sensibles a mayúsculas y minúsculas.
Se acostumbra poner significativos y que la primera letra de la palabra sea en mayúsculas.
No se permiten los acentos y los espacios.

4) Operadores y Puntersos
Operadores: indican las operaciones que se van a realizar */-+(concatenar o unir)%
Punteros: agrupan o separan. { }

5) Literales: Valores constantes escritos directamente en el programa.
6) Directivas del preprocesador: son intrucciones al compilador, comienzan con #

Sentencias y bloques.

-Sentencia: Representacion de una acción o secuencia de acciones ejecutables o no ejecutables. (ejecutables +-*/ )
(no ejecutable son las declaraciones)

-Bloque: grupo de sentencias delimitadas por llaves.

Método Main

Es un punto de entrada al programa y la ejecución siempre inicia en el método main. Debe tener las sigueintes caracterísicas:
- declarado static en una clase o estructura
- regresar void o int
- debe ser escrito con mayúscula la primera latra y minuscula lo demás
- puede no tener parámentros o recibir un arreglo de strings.

using system,
namespace consoleapplication1
{
class Class1
{
static void Main (string [ ] args)
{
// TODO se agerga código para la aplicacion
}
}
}

Programación

PROGRAMACIÓN EN C#

1.- ¿Qué es programar?
Programar es hacer que la computadora obedezca una serie de instrucciones bien detalladas. Utiliza un lenguaje de programación que indica como tiene que reaccioonar ante la interacción del usuario.

Se cooce como programación de computadoras a la implementación de un algoritmo en un determinado lenguaje de programación, conformando un programa.

2.- Programa
Concepto desarrollado desarrollado por Von Newmann en 1946.
Union de una secuencia de instrucciones que una computadora puede interpretar y ejecutar. Y una estructura de datos que almacenan la información independiente de las instrucciones que dicha secuencia maneja.
Para ello se usan lenguajes de programación que sirven para programar la secuencia de instrucciones requerida. Según Niklaus Wirth un rpogrma esta formadop por algoritmos yy estructuras de datos.

Lenguaje de programacion

1) tiene un numero limitado de simbolos y tambien un numero limitado de palabras.
2) constituido por un conjunto de reglas sintacticas y semanticas
-sintacticas: se refieren a la especificacion de la formacion de intrucciones validas
-semanticas: especifican el significado de estas intrucciones
3) la escritura o codificacion del programa puede resultar una tarea senciulla si conocemos las reglas sintacticas y semanticas que constituyen el lenguaje de programacion

Antecedentes de C#

Lenguaje B, escrito por Ken Thompson en 1970 con el objetivo de recodificar el sistema operativo UNIX, que hasta el momento se había programado en ensamblador. La pega del ensamblador era que lo ligaba a una serie de máquinas concretas, por lo que conseguir un lenguaje abstraído de cada máquina conseguiría una portabilidad del sistema muchísimo mayor. A su vez B fue inspirado en el BCPL de Martin Richard, diseñado tres años antes.

En 1972 es Dennis Ritchie (de los Laboratorios Bell de AT&T) quien diseña finalmente C a partir del B de Thompson, aportando un diseño de tipos y estructuras de datos que consiguen una claridad y eficacia en el lenguaje muy superior. Es un lenguaje que permite realizar una programación estructurada economizando las expresiones, con abundancia de operadores y tipos de datos (aunque los básicos sean pocos), codificando en alto y bajo nivel simultáneamente, reemplazando ventajosamente la programación en ensamblador y permitiendo una utilización natural de las funciones primitivas del sistema. Además, no está orientado a ningún área en especial y sobre todo consigue un código objeto altamente optimizado que repercute en que los programas son muy rápidos.

Durante muchos años no existen reglas estándar para el lenguaje, pero en 1983 se decide formar un comité con el objetivo de crear el estándar ANSI (Instituto Nacional Americano de Estándares). El proceso dura seis años y a principios de los 90 el estándar es reconocido por la ISO (Organización Internacional de Estándares) y comienza a comercializarse con el nombre ANSI C.

Paralelamente, en 1980 surge C++ de la mano de Bjarne Stroustrup (también de Laboratorios Bell de AT&T). Diseña este lenguaje con el objetivo de añadir a C nuevas características: clases y funciones virtuales (de SIMULA67), tipos genéricos y expresiones (de ADA), la posibilidad de declarar variables en cualquier punto del programa (de ALGOL68), y sobre todo, un auténtico motor de objetos con herencia múltiple que permite combinar la programación imperativa de C con la programación orientada a objetos. Estas nuevas características mantienen siempre la esencia del lenguaje C: otorgan el control absoluto de la aplicación al programador, consiguiendo una velocidad muy superior a la ofrecida por otros lenguajes.

El siguiente hecho fundamental en la evolución de C++ es sin duda la incorporación de la librería STL años más tarde, obra de Alexander Stepanov y Adrew Koening. Esta librería de clases con contenedores y algoritmos genéricos proporciona a C++ una potencia única entre los lenguajes de alto nivel.

Debido al éxito del lenguaje, en 1990 se reúnen las organizaciones ANSI e ISO para definir un estándar que formalice el lenguaje. El proceso culmina en 1998 con la aprobación del ANSI C++.

La última variante que ha surgido de C es el moderno C#. En el año 2000, Microsoft presenta su plataforma .NET junto con un nuevo lenguaje, C# (diseñado por Anders Hejlsberg), que servirá de lenguaje principal de la plataforma. C# es un híbrido de C++ y Java que fusiona, principalmente, la capacidad de combinar operadores propia del primero (no incorpora la herencia múltiple) con la plena orientación a objetos del segundo. La orientación a objetos es tal que el propio programa está encapsulado en una clase.

Actualmente C# se encuentra entre los 10 lenguajes más utilizados. A pesar de su corta historia, ha recibido la aprobación del estándar de dos organizaciones: en el 2001 se aprueba el ECMA y en el 2003 el ISO.

Fases de slución de un problema

Fases de slución de un problema

1.- Análisis del Problema. (Mapa general del problema)
2.- Definicón del problema. (delimitación)
3.- Definición de entradas y salidas. (Lo que se busca obtener al finalizar el problema)
4.- Proceso de solución. (Pasos a seguir para solucionar el problema de manera precisa)
5.- Comprobación. (Rectificar el proceso de solución)



1. Análisis del prblema
2. Diseño del Algoritmo
3. Codificación: transcribir lo hecho en algoritmo en lenguaje de programación.
4. Compilació y ejecución: Lenguaje de programación, en la maquina y ejecutándose para buscar errores
5. Verificación: busqueda y descricpción de los errores
6. Depuración: correción de los errores
7. Documentación:


Algoritmo: sucesión de pasos a seguir para llegar a una solución.

Análsis de problema: Pintar una pared
Definición del problema: Pinar una pared de 2 x 5
Definición de entradas y salidas
Entradas: Pared, pintura, brocha y periódico.
Salida: Pared de la recámara pintada:
Proceso de solución: pasos a seguir.

Reglas para dibujar un diagramas de flujo.

Reglas para dibujar un diagramas de flujo.

Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares; sin embargo, algunos símbolos especiales pueden también ser desarrollados cuando séan requeridos. Algunos símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestran a continuación:

Inicio o fin del programa

Pasos, procesos o líneas de instruccion de programa de computo

Operaciones de entrada y salida

Toma de desiciónes y Ramificación

Display, para mostrar datos

Envía datos a la impresora

jueves, 15 de mayo de 2008

Sobrecarga de métodos

En una misma clase pueden definirse varios métodos con el mismo nombre siempre y cuando tomen diferente número o tipo de parametro. Es posible ya que cuando se le llame al compilador sabrá a cual llamar a partir de los parametros basados en la llamada.
no se pueden permitir varios métodos que solo se diferencien en su valor de retorno ya que como este no se tiene que indicar al llamarlos no podría diferenciarse a que método en concreto se hace referencia en cada llamada.

Ejemplo: a partir de la llamada p.cumpleaños();
si ademas de la reaccion cumpleaños que no retorna nada hubiese otra que retornara un int, como sabría entonces el compilador a cual llamar.

void Cumpleaños (int cantidad)
{
Edad=Edad - cantidad;
}
void Cumpleaños (float cant1)
{
Edad=Edad + cant1;
}
void Cumpleaños (int cantidad, int resta)
{
Edad=Edad - (cantidad-resta);
}
Persona Andres=new Persona();
Andres.Cumpleaños ();
Persona Vicky=new Persona();
Vicky.Cumpleaños (10);
Persona Luis=new Persona();
Luis.Cumpleaños(20);

una vez que se define una clase, el nombre de la clase se convierte en un nuevo tipo de dato, que sirve tanto para declarar las variables de ese tipo como para crear objetos del mismo.

Sintaxis nombre-clase nombre-objeto

Ejemplo: Circulo mi circulo

la declaración de un objeto simplemente asocia el objeto con una clase, haciendo el objeto una instancia o copia de esa clase. hay que tomar en cuenta que la declaración no crea el objeto.
para crear realmente un circulo se necesta utilizar el operador new con el objeto para indicarle a la computadora que cree un objeto mi circulo y asigne espacio de memoria para el.

Sintaxis para crear un objeto.

se puede combinar la declaración y la creación o instanciaciónen una sola sentencia como la siguiente sintaxis.

nombreClase nombreObjeto = new nombreClase();

Acceso a datos y métodos

Después de que se ha creado un objeto, se puede acceder a sus datos y métodos utilizando la notación siguiente:

nombreObjeto.Dato --> Referencia a un dato del objeto.
nombreObjeto.Método()--> Referencia a un método del objeto.

Ejemplo

miCírculo.radio -->Radio de miCírculo
miCírculo.calcularsuperficie() -->Devuelve la superficie de miCírculo

UTILIZACIÓN DE UN MÉTODO
Lo métodos son los miembros de un tipo clase dode se especifican las acciones que se realizan por un objeto de la misma clase.

Una importación a un método es un petición al método para que se ejecute su acción y lo haga con el objeto mencionado.

La importación de un método se denomina también llamar a un método y pasar un mensaje a un objeto.

Existen dos tipos de métodos:
1.- Los que devuelven un valor único (el método ReadLine) devuelven un unico de valor de tipo string.
2.- Los que ejecutan alguna acción distinta de devolver un único valor que se denomina método void. Los métodos WriteLine relizan una acción distinta de devolver un valor único

LLAMADA O INVOCACIÓN DE UN MÉTODO
Se puede realizar de dos formas, dependiendo de el método devuelva o no un valor.
1.- Si el método devuelve un valor, la llamada al método se marca normlamnete como un valor. Por ejemplo: int mayor=Math.Max (3,4);
Llama al método Max (3,4) y asigna el resultado del método a la variable mayor.
Otro ejemplo puede ser la llamada System.Console.WriteLine(Math.Max(3,4));
Imprime el valor devuelto por la llamada al método Max(3,4)
2.- Si el método devuelve void, una llamada al método debe ser una sentencia. Por ejemplo el método WriteLine() devuelve void. La sigueinte llamada es una sentencia:
System.Console.WriteLine("Sierra Tarahumara");
Si se considera ahora a un objeto miCuenta d la calse CuentaCorriente una invocaci ón al método Deposita detrás del formato MiCuenta.Depositar (2400);

Parcial 3

PRÁCTICA “DAME TU EDAD”

using System;
using System.Collections.Generic;
using System.Text;

namespace Adriana
{
class Program
{
static void Main(string[] args)
{
int Edad;

Console.WriteLine(”Dame tu edad”);
Edad = int.Parse(Console.ReadLine());

if (Edad > 17)
{
Console.WriteLine(”Bienvenido”);
}
else
{
Console.WriteLine(”acceso denegado”);
}

string a = Console.ReadLine();

}

}
}





PARCIAL III

CICLO WHILE

El cuerpo de funciones se ejecuta mientras una condición permanezca verdaderaEn el momento en el que la condición se convierte en falsa, la función se termina

Sintaxis

do{
grupo de instrucciones;
instrucciones para terminar el ciclo;

} while (condición),

CICLO DO-WHILE

Su diferencia básica con el ciclo DuWHILe es que la prueba de condición está hecha al finalizar el ciclo, por conseceuencia las instrucciones se ejecutan cuando menos una vez porque primero ejecuta las instrucciones y al final ejecuta la condición.
Si la condición es verdadera, vuelve a ejecutar el ciclo



Menú Operaciones Aritméticas Números con Ciclo While

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace menu2
{
class Program
{
static void Main(string[] args)

{
do

int s
float resultado;
Console.WriteLine(”menu”);
Console.WriteLine(”a.suma”);
Console.WriteLine(”b.resta”);
Console.WriteLine(”c.multiplicación”);
Console.WriteLine(”d.división”);
char a = char.Parse(Console.ReadLine());
Console.WriteLine(”Dame un número”);
float b = float.Parse(Console.ReadLine());
Console.WriteLine(”Dame otro número”);
float c = float.Parse(Console.ReadLine());
switch (a)
{
case ‘a’:
resultado = b + c;
Console.WriteLine(”el resultado es ” + resultado);
break;
case ‘b’:
resultado = b - c;
Console.WriteLine(”el resultado es ” + resultado);
break;
case ‘c’:
resultado = b * c;
Console.WriteLine(”el resultado es ” + resultado);
break;
case ‘d’:
resultado = b / c;
Console.WriteLine(”el resultado es ” + resultado);
break;

default:
Console.WriteLine(”error”);
break;

}

Console.Writeline(“¿Deseas realizar la operación de nuevo?”);
Console.WriteLine(”1.SÍ”);
Console.WriteLine(”2.NO”);
int s = int.Parse(Console.ReadLine());

}while (s==1);

}
}
}





**Programación dedicada a objetos

Forma de organización del conocimiento en que las entidades centrales son los objetos.
Los objetos representan formas físicas o abstractas, pero tienen un estado o comportamiento.

La programación orientada a objetos utiliza los objetos como bloques de contrucción lógicos, cada objeto es una instacncia a copia de una clase y las clases se relacionan unas con otras por medio de relaciones de herencia.
objeto: en él se unen una serie de datos con las rutinas necesarias para manipularlos (miembros de la clase)

clase: Estructura o plantilla que sirve para definir un objeto. Habitualmente contiene una colección de métodos y definiciones de datos.

Tiene un nombre y especifica los miembros que pertenecen a la clase. Una vez que se define una clase, se convierte en un nuevo tipo de datos.
Consta de métodos y datos que resumen características comunes de los objetos, de tal manera que es la declaración de la forma que tendrán los objetos fabricados de esa clase. Cada vez que se construye un objeto de una clase, se crea una instancia de esa clase

Sintaxis de la clase:

class{
miembros
}

class Circulo
{
public double radio=5.0;
public double CalcularSuperficie ()
{
vector radio+radio+3,141592
}
}

Campos

Dentro de una clase existen campos. Un campo es un dato o propiedad común a todos los objetos de una determinada clase.

Sintaxis tipo Campo nombre Campo;

Nombre del Campo: cualquier identificador que siga las reglas para la escritura de identificadores y no coincida con el nombre de ningún otro nombre previamente definido en la clase. Permiten el almacenamiento de daots por lo cual se les denomina también variables.

Tipo de Campo: debemos de indicar cuál es el tipo de dato del objeto que vamos a crear. Este tipo puede corresponder con cualquiera de los pre-definidos o con cualquier otro qu nosotros hayamos definido.

Ejemplo:

class Persona
{
string nombre; //almacena nombre
string edad; //almacena edad
string RFC; //almacena RFC
}

Todos los objetos de clase Persona incorporarán campos que almacenarán cuál es el nombre de la persona que cadaa objeto representa, cuál su edad y cuál su RFC.

Para acceder a un campo de un determinado objeto se usa la sintaxis: objeto.campo; ejemplos.

Para acceder al campo “edad” de un objeto-persona llamado P y cambiar su valor por 20, sería:
P.Edad=20



Métodos



Conjunto de instrucciones a las que se les asocia un nombre, de modo que si se desea ejecutarlas sólo basta con referenciarlas a través de dicho nombre en vez de tener que escribirlas.

Dentro de estas instrucciones es posible acceder con total libertad a la información almacenada en los campos, pertenecientes a la clase dentro de la que el método se ha definido, por lo que los métodos permiten manipular los datos almacenados en los objetos



Sintaxis

(}
instrucciones
}

tipodevuelto: todo método puede devolver un objeto como resultado de la ejecución de las instrucciones que lo forman. Aquí se indica el tipo de dato al que pertenece este objeto.

Si no devuelve nada, se indica void, y si devuelve algo, es obligatorio finalizar la ejecución de sus instrucciones con return, que indica el objeto a devolverse.



Parámetros: Opcionalmente todo método puede recibir en todo llamado una lista de objetos, a los que podrán acceder durante la ejecucuón de sus instrucciones. Aquí se indican cuáles son los tipos de datos de estos objetos y cuál es el nombre con el que harán referencia las instrucciones del método a cada uno de ellos. Aunque los objetos que puede recibir el método pueden ser diferentes, cada vez que se solicite su ejecución, siempre han de ser los mismos tipos y han de seguir el orden establecido en parámetro.

class persona
{
string nombre;
string edad;
string RFC;
Cumpleaños();
{
Edad++;
}
}



Sintaxis para llamar a los métodos de un objeto

.(>parámetros> ;)



Parámetros: valores que se desean dar a los parámetros del método al hacer la llamada, si el método no toma parámetros se deja vacío. Ejemplo: llamada al método cumpleaños de un objeto persona llamado P

P.Cumpleaños(); //A la edad del objeto P se le suma 1