Archivos de la categoría ‘ciber’
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);
}
}
}
3º parcial
** Reglas para elaborar un Diagrama de Flujo
1.- Se debe escribir de arriba hacia abajo y de izquierda a derecha.2.- Los símbolos se unen con líneas.3.- Se usan flechas para indicar el flujo de información.4.- Los símbolos de decisión pueden y deben tenr más de una línea de flujo.5.- Todos los símbolos pueden tener más de una línea de entrada.
**ContadorUn contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o acción. Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operación de inicialización y posteriormente las sucesivas de incremento o decremento del mismo. La inicialización consiste en asignarle al contador un valor. Se situará antes y fuera del bucle.Representación: ¬ nombre del contador> + Si en vez de incremento es decremento se coloca un menos en lugar del más.Ejemplo: i = i + 1Cont=ValorCont = Cont+Valor**Acumulador o totalizadorEs una variable que suma sobre sí misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en uno, el acumulador va aumentando en una cantidad variable.Representación: ¬ +
Contador suma números
Acumulador: Va sumando o multiplicando cada número. En la suma el,valor de inicialización debe ser 0, en una multiplicación éste será 1.
**CUESTIONARIO
1.- ¿Qué es autenticación?
Llamamos autentificación a la comprobación de la identidad de una persona o de un objeto. Es por consecuente, el acto de establecimiento o confirmación de algo (o alguien) como auténtico, es decir que reclama hecho por, o sobre la cosa son verdadero. La autenticación de un objeto puede significar(pensar) la confirmación de su procedencia, mientras que la autenticación de una persona a menudo consiste en verificar su identidad. La autenticación depende de uno o varios factores de autenticación.
2.-¿Qué requieren las opciones de autenticación?
El primer elemento necesario (y suficiente estrictamente hablando) por tanto para la autenticación es la existencia de identidades biunívocamente identificadas con un identificador único (valga la redundancia). Los identificadores de usuarios pueden tener muchas formas siendo la más común una sucesión de caracteres conocida comúnmente como login.El proceso general de autenticación requiere que:
1. El usuario solicite acceso a un sistema.
2. El sistema solicite al usuario que se autentique.
3. El usuario aporte las credenciales que le identifican y permitan verificar la autenticidad de la identificación.
4. El sistema valide según sus reglas si las credenciales aportadas son suficientes para dar acceso al usuario o no.
3.- ¿Cuántos tipos de protocolos para la autenicación existen en PPP y cuales son?
Los más importantes son:
* 0×800 para IP.
* 0xc021 para LCP.
* 0xc023 para PAP.
* 0xc223 para CHAP.
4.- ¿Cuál protocolo es el de preferencia y por qué?
El protocolo CHAP, ya que verifica periódicamente la identidad del cliente remoto usando un intercambio de información de tres etapas basado en un secreto compartido (como una contraseña).
CHAP protege contra los ataques de REPLAY mediante el uso de un identificador que se va incrementando y una valor de desafío variable. CHAP requiere que el cliente mantenga el secreto disponible en texto plano.
La definición de este protocolo se encuentra en la RFC 1994.
Es un método de autenticación mas seguro que PAP. CHAP ofrece protección contra ataques externos mediante el uso de un valor de desafió variable que es único e indescifrable. Esta repetición de desafíos limita la posibilidad de ataques.
5.- ¿En qué nivel se ejecuta la autenticación?
El nivel de enlace (del inglés data link level) que es el segundo nivel del modelo OSI. Recibe peticiones del nivel de red y utiliza los servicios del nivel físico.
El objetivo del nivel de enlace es conseguir que la información fluya, libre de errores, entre dos máquinas que estén conectadas directamente (servicio orientado a conexión).
6.- ¿Por qué PAP no es un protocolo sólido?
PAP no es un método de autenticación sólido porque las contraseñas se envían en modo abierto y no existe protección contra el registro de las mismas o los ataques externos.
7.-¿Cómo es el proceso de autenticación CHAP y descríbelo?
La contraseña es encriptada utilizando MD5, una vez establecido el enlace el router agrega un mensaje desafió que es verificado por ambos routers, si ambos coinciden se acepta la autenticación de lo contrario la conexión se cierra inmediatamente.
8.-Escribe los pasos de forma breve para configurar la autenticación PPP
Configuración de PPP con CHAP
Defina el nombre de usuario y la contraseña que espera recibir del router remoto:Router(config)#username[nonbre del remoto] password[contraseña del remoto]Puede usar el mismo nombre de host en multiples routers cuando quiera que el router remoto crea que esta conectado a un solo routerPara activar la encapsulación PPP con autenticación CHAP en una interfaz se debe cambiar la encapsulación en dicha interfaz serial, el tipo de autenticación el nombre con el que el router remoto reconocerá el local, la contraseña con la que hará el desafió el router local y la dirección IP:Router(config-if)#encapsulation PPPRouter(config-if)#ppp authentication chapRouter(config-if)#ip address [direccion IP+mascara]Router(config-if)#no shutdownPara autenticarse frente a un host desconocido debe configurar en la interfaz correspondiente la contraseña que sera enviada a los host que quieran autenticar al router. Tambien sirve para limitar la cantidad de entradas en el router.Router(config-if)#ppp chap password[contraseña]Configuración de PPP con PAPDefina el nombre de usuario y la contraseña que espera recibir del router remoto:Router(config)#username[nonbre del remoto] password[contraseña del remoto]Para activar la encapsulación PPP con autenticación PAP en una interfaz se debe cambiar la encapsulación en dicha interfaz serial, el tipo de autenticación y la dirección IP:Router(config-if)#encapsulation PPPRouter(config-if)#ppp authentication papRouter(config-if)#ip address [direccion IP+mascara]Router(config-if)#no shutdown
2º parcial
¿Qué es Programar?
Programar es hacer que la computadora obedezca una serie de instrucciones bien detalladas. Usando un lenguaje de programación indicamos a la computadora
Que tienen que suceder en cada momento y cómo debe reaccionar ante lainteracción del usuario. Se conoce como programación de computadoras a la implementación de un resultado en un determinado lenguaje de programación, conformando un programa.
Programación
Concepto desarrollado por Von Newman en 1946. Es la unión 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 las secuencias de instrucciones requeridas.
Lenguaje de Programación
Según Niklaus Wirth, un programa está formado por algoritmos (métodos para resolver algún problema mediante simbología) y estructura de datos.
* El lenguaje de programación tiene un número ilimitado de símbolos y también de palabras.
* Constituido por un conjunto de reglas sintácticas o semánticas. Sintácticas se refiere a la especificación de la formación de istrucciones válidas. Semáticas especifican el significado de estas instrucciones.
* La escritura o codificación del programa puede resultar una tarea sencilla si conocemos las reglas sintácticas y semánticas que constituyen el lenguaje de programación
Antecedentes de C# – Línea del Tiempo
Predecesor(es) Año Nombre Desarrollador principal, Compañía
POP-1 1970 POP-2
ALGOL 60 1971 Pascal Niklaus Wirth, Kathleen Jensen
Pascal, XPL 1971 Sue Holt y otros en la Universidad de Toronto
SIMULA 67 1972 Smalltalk-72 Xerox PARC
B, BCPL, ALGOL 68 1972 C Dennis Ritchie
* 1972 INTERCAL
2-level W-Grammar 1972 Prolog Alain Colmerauer
Pascal, BASIC 1973 COMAL Børge Christensen, Benedict Løfstedt
Pascal, Sue 1973 LIS Ichbiah y otros en CII Honeywell Bull
BASIC 1974 GRASS Tom DeFanti
Business BASIC 1974 BASIC FOUR BASIC FOUR CORPORATION
LISP 1975 Scheme Gerald Jay Sussman, Guy L. Steele, Jr.
Pascal 1975? Modula Niklaus Wirth
BASIC 1975 Altair BASIC Bill Gates, Paul Allen
ALGOL 68, BLISS, ECL, HAL 1975 CS-4 Benjamin M. Brosgol en Intermetrics
Smalltalk-72 1976 Smalltalk-76 Xerox PARC
C, FORTRAN 1976 Ratfor Brian Kernighan
* 1977 FP John Backus
* 1977 Bourne Shell (sh) Stephen Bourne
Fortran 1977 IDL David Stern de Research Systems Inc
MUMPS 1977 Standard MUMPS
SNOBOL 1977 ICON(concepto) Ralph Griswold
ALGOL 68, LIS 1977 Green Ichbiah y otros en CII Honeywell Bull para el Departamento de Defensa de los Estados Unidos
ALGOL 68, CS-4 1977 Red Benjamin M. Brosgol y otros en Intermetrics para el Departamento de Defensa de los Estados Unidos
ALGOL 68, 1977 Blue Goodenough y otros en SofTech para el Departamento de Defensa de los Estados Unidos
ALGOL 68, 1977 Yellow Spitzen y otros en SRI International para el Departamento de Defensa de los Estados Unidos
FORTRAN IV 1978 FORTRAN 77
Modula 1978? Modula-2 Niklaus Wirth
* 1978? MATLAB Moler en la Universidad de Nuevo Mexico
Algol60 1978? SMALL Dr. Nevil Brownlee en la Universidad de Auckland
* 1978 VISICALC Dan Bricklin, Bob Frankston en VisiCorp
PL/I, BASIC, EXEC 2 1979 REXX Mike Cowlishaw
C, SNOBOL 1979 Awk Aho, Weinberger, Brian Kernighan
SNOBOL 1979 ICON(implementación) Ralph Griswold
* 1979 Vulcan dBase-II Ratliff
1980s
C, SIMULA 67 1980 C con Clases Bjarne Stroustrup
Smalltalk-76 1980 Smalltalk-80 Xerox PARC
Smalltalk, C 1982 Objective-C Brad Cox
Green 1983 Ada 83 Departamento de Defensa de los Estados Unidos
C con Clases 1983 C++ Bjarne Stroustrup
BASIC 1983 True BASIC John George Kemeny, Thomas_Kurtz en Dartmouth College
sh 1984? Korn Shell (ksh) Dave Korn
* 1984 Standard ML
dBase 1984 CLIPPER Nantucket
LISP 1984 Common Lisp Guy Steele y muchos otros
1977MUMPS 1985 1984 MUMPS
dBase 1985 PARADOX Borland
Interpress 1985 PostScript John Warnock
BASIC 1985 QuickBASIC Microsoft
1986 Miranda David Turner en la Universidad de Kent
1986 LabVIEW National Instruments
SIMULA 67 1986 Eiffel Bertrand Meyer
1986 Informix-4GL Informix
C 1986 PROMAL
Smalltalk 1987 Self (concepto) Sun Microsystems Inc.
* 1987 HyperTalk Apple Computer
* 1987 SQL-87
C, sed, awk, sh 1987 Perl Larry Wall
MATLAB 1988 Octave
dBase-III 1988 dBase-IV
Awk, Lisp 1988 Tcl John Ousterhout
REXX 1988 Object REXX Simon Nash
Ada 1988 SPARK Bernard A. Carré
Turbo Pascal 1989 Turbo Pascal OOP Borland
C 1989 Standard C89/90 ANSI X3.159-1989 (adopted by ISO in 1990)
Modula-2 1989 Modula-3 Cardeli, y otros
Modula-2 1989 Oberon Niklaus Wirth
1990s
Oberon 1990 Object Oberon Niklaus Wirth
APL, FP 1990 J Kenneth Iverson, Roger Hui en Iverson Software
Miranda 1990 Haskell
1984 MUMPS 1990 1990 MUMPS
Fortran 77 1991 Fortran 90
Object Oberon 1991 Oberon-2 Niklaus Wirth
ABC 1991 Python Van Rossum
1991 Q
QuickBASIC 1991 Visual Basic Alan Cooper en Microsoft
SQL-87 1992 SQL-92
Turbo Pascal OOP 1992 Borland Pascal
ksh 1993? Z Shell (zsh)
Smalltalk 1993? Self (implementación) Sun Microsystems Inc.
Forth 1993 FALSE Oortmerrsen
FALSE 1993 Brainfuck Urban Müller
HyperTalk 1993 Revolution Transcript
HyperTalk 1993 AppleScript Apple
APL, Lisp 1993 K Whitney
Smalltalk, Perl 1993 Ruby
1993 Lua Roberto Ierusalimschy y otros en Tecgraf, PUC-Rio
C 1993 ZPL Chamberlain y otros en Universidad de Washington
Lisp 1994 Dylan muchos en Apple Computer
Ada 83 1995 Ada 95 ISO
Borland Pascal 1995 Delphi Anders Hejlsberg en Borland
1995 ColdFusion Allaire
C, SIMULA67 ó C++, Smalltalk 1995 Java James Gosling en Sun Microsystems
1990MUMPS 1995 1995 MUMPS
Self, Java 1995? LiveScript Brendan Eich en Netscape
Fortran 90 1996 Fortran 95
APL, Perl 1996 Perl Data Language (PDL) Karl Glazebrook, Jarle Brinchmann, Tuomas Lukka, and Christian Soeller
REXX, Java 1996 NetREXX Cowlishaw
LiveScript 1997? JavaScript Brendan Eich en Netscape
SML 84 1997 SML 97
PHP 3 1997 PHP
Scheme 1997 Pico Universidad Libre de Bruselas
Smalltalk-80, Self 1997 Squeak Smalltalk Alan Kay, y otros en Apple Computer
JavaScript 1997? ECMAScript ECMA TC39-TG1
C++, Standard C 1998 Standard C++ ANSI/ISO Standard C++
Prolog 1998 Erlang Open Source Erlang en Ericsson
Standard C89/90 1999 Standard C99 ISO/IEC 9899:199
2000s
C, C++, Java, Eiffel 2000 D Walter Bright en Digital Mars
C, C++, Delphi, Java 2000 C# Anders Hejlsberg en Microsoft (ECMA)
Los primeros rumores de que Microsoft estaba desarrollando un nuevo lenguaje de programación surgieron en 1998, haciendo referencia a un lenguaje que entonces llamaban COOL y que decían era muy similar a Java. En junio de 2000, Microsoft despejó todas las dudas liberando la especificación de un nuevo lenguaje llamado C#. A esto le siguió rápidamente la primera versión de prueba del entorno de desarrollo estándar (SDK) .NET, que incluía un compilador de C#. El nuevo lenguaje estaba diseñado por Anders Hejlsberg ( creador de Turbo Pascal y arquitecto de Delphi ), Scott Wiltamuth y Peter Golde. Entonces describieron el lenguaje como “…simple, moderno, orientado a objetos, de tipado seguro y con una fuerte herencia de C/C++”.
Elementos Léxicos de un Programa
Comentarios: anotaciones para documentar el programa. Se utilizan de la siguiente forma
* //para documentar sobre un renglón y
* /*anotaciones */se utiliza para comentar párrafos, es decir más de un renglón
palabras reservadas palabras que tienen un determinado significado para el compiladorIdentificadores: nombres que los programadores dan a los diferentes elementos de un programa. La características que deben contener son las siguientes:
1. secuencia de letras, dígitos y caracteres
2. No deben coincidir con una alabra reservada
3. No deben emepezar con un dígito
4. Son sensibles a mayúsculas y minúsculas
5. Se acostumbra poner nombres significativos y que la primera letra de la palabra sea en mayúsculas
Ejemplo: SalarioMinimo. no se permite acentos y que las primeras sean con mayúsculasOperadores y Punteros : Los operadores indican las operaciones que se van a realizar y los punteros agrupan o separan+-*/%(operadores), Los que agrupan o separan son llaves (punteros) Líterales: Valores constantes escritos directamente en el programa Directivas del Pre-procesador: Son instrucciones al compilador, comienzan con signo de # que son para ver las librerias y que es una instruccionan para el programador
Sentencias y Bloques
Sentencia: representación de una acción o secuencia de acciones ejecutables o no ejecutables que son cualquiera operación que haga y las no ejecutable “dame un número”, es decir, declaraciones
Bloque: Grupo de sentencias delimitadaspor llaves
Método Main
Es un punto de entrada al programa y la ejecución simpre inicia en el método main. Debe tener las siguientes características:
1. Declarado static en una clase o estructura
2. Regresar void o int
3. Debe ser escrito con mayúscula la primera letra y minúscula lo demás ç
4. Puede no tener parametros o recibir un arreglo de strings.
using system;
namespace ConsoleApplication1
{
class Class1
{
Static void main (string [ ] args)
{
// todo: se agrega al código para la aplicación
}
{ }
Programacion en C#
Programación en c#
Que es programar hacer que la computadora obedezca una serie de instrucciones bien detalladas, usando un lenguaje de programación, indicamos a la computadora que tiene que suceder en cada momento, y como tiene que relacionar ante la interacción del usuario
Se conoce como programación de computadoras a la implementación de un algoritmo a un determinado lenguaje de programación, conformando un programa.
Programa: concepto desarrollado por Von neuman en 1946, unión de una secuencia de intrusiones que una computadora puede interpretar y ejecutar, que almacenan una información independiente de dicha secuencia maneja.
Para ello se usa un lenguaje de programación que sirven para programar la secuencia de instrucciones requerida
Nikolaus wirth
Un programa esta formado por algoritmos y estructura de datos
Lenguaje de programación
Tiene un numero limitado de símbolos y un numero limitado de palabras
Constituido por un conjunto de reglas sintácticas y semánticas
Sintácticas: se refiere a la especificación de la instrucción de instrucciones validas
Semánticas especifican el significado de estas instrucciones
La escritura o codificación del programa puede resultar una tara sencilla si conocemos las reglas sintácticas y semánticas que constituyen el lenguaje de programación
Antecedentes de C#
Desde los 70s hasta las fecha actual
La historia de C parte de un lenguaje anterior, el 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.
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.
Elementos lexicos de un programa
Comentarios: anotaciones para documentar el programa. Se utilizan de siguiente forma:
// para documentar sobre un renglón /* acotaciones */ para comentar párrafos.
Palabras reservadas que tienen un determinado significado para el compilador
Identificadores: nombres de que los programadores dan a los diferentes elementos de un programa. Las caracteristicas son las diferentes:
Secuencias de letras,
dígitos y 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 nombres significativos y que la primera letra de la palabra sea en mayúsculas.
Operadores y punteros
Los operadores indican las operaciones que se van a realizar y los punteros agrupan o separan operadores * / + – % punteros { }
Literales:
Valores constantes escritos directamente en el programa.
Directivas del preprocesador
Son instrucciones al compilador, comenzar con #
Sentencias y bloques
Sentencias: representación de una acción o secuencia de acciones ejecutables o no ejecutables son las operaciones y las secuencias no ejecutables son las declaraciones
Bloque: grupo de sentencias de limitadas por llaves.
Método Main
Es un punto de entrada al programa y la ejecución siempre inicia en el método main, es un punto de entrada al programa y siempre inicia ahí, debe tener las siguientes caracteristicas.
Declarado static en una clase o estructura
Regresar void o int
Debe ser escrito con mayúscula la primera letra y minúscula lo demás
Puede no tener parámetros o recibir un arreglo de strings
Lenguaje de C#
Espacio de nombres
Clasificacion especial para usar un conjunto de clases y estructuras relacionadas, tambien se ocupa para aislar ese grupo de nombres en conjuntos de tipos de datos separados y distintos.
Es imposible tener dos 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 espacio de nombre predefinidos, por ejemplo system
Para definir un espacio de nombre se utiliza
Namespace NombreEspacio
{
Clases del espacio de nombres
}
Es la clase:
Unidad basica de la programacion orientada a objetos, todo programa en C# se organiza en clases que encapusulan datos y comportamientos.
Una clase se construye con la palabra class seguida del nombre de la clase y el simbolo de inicio y fin de un bloque para delimitar la codificacion de sus miembros.
Clase: mesa (conceptos generales)
——–> Objetos (caracteristicas particulares de la clase)
Clase: animal
——-> subclases carnivos, herbivoros
Metodos para escribir datos
Un metodo es roconocido por tener parentiesis y por los parametros que puede contener. Los metodos usados para escribir datos en pantalla son :
Write escribe sin añadir el caracter de fin de linea de la cadena
WriteLine sí añade el caracter de fin de linea a la cadena de modo que lo siguiente que se escriba se colocara en la siguiente linea
Console. Write (“Hola”);
Console.WriteLine (“pepe”);
Console. Write (“¿Cómo estás, ”);
Console. WriteLine (“¿Bien?”);
Resultado en consola:
HolaPepe
¿Cómo estas, bien ?
Palabras reservadas
abstract, as, base, bool, break, byte, case, catch, char, checked, class, const, continue, decimal, default, delegate, do, double, else, enum, event, explicit, extern, false, finally, fixed, float, for, foreach, goto, if, implicit, in, int, interface, internal, lock, is, long, namespace, new, null, object, operator, out, override, params, private, protected, public, readonly, ref, return, sbyte, sealed, short, sizeof, stackalloc, static, string, struct, switch, this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort, using, virtual, void, while
También existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez, en estos casos o 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 una instrucción de decisión múltiple donde el compilador prueba o busca el valor contenido en una variable ENTERA, CHARACTER, STRING contra una lista de constantes apropiadas, cuando el computador encuentra el valor de igualdad entre variable y constante entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este ultimo es opcional.
El formato de esta instrucción es el siguiente;
capturar o asignar variable de condición;
switch(var OPCION)
{
case const1: instrucción(es);
break;
case const2: instrucción(es);
break;
case const3: instrucción(es);
break; ………………
default: instrucción(es);break;
};
C# NET CICLO FOR
Instrucciones para ciclos resuelven el problema de repetir todo el programa o cierta parte del programa mas de una vez.
En C SHARP NET este ciclo es uno de los mas usados para repetir una secuencia de instrucciones sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instrucción simple o compuesta.
Su formato general es:
for (inicialización; condición; incremento)
{ instrucción(es); };
En su forma simple la inicialización es una instrucción de asignación que carga una variable de control de ciclo con un valor inicial.
CICLO WHILE C# NET
En este ciclo el cuerpo de instrucciones se ejecuta mientras una condición permanezca como verdadera en el momento en que la condición se convierte en falsa el ciclo termina.
Su formato general es :
cargar o inicializar variable de condición;
while(condición)
{
grupo cierto de instrucciones;
instrucción(es) para salir del ciclo;
};
prog14.aspx:
void EVENTO1 (Object sender, EventArgs e)
{
int reng=1;
LISTA.Items.Clear();
while(reng<=10)
{LISTA.Items.Add(reng.ToString()+” mama”);
reng++;};
}
CICLO DO WHILE C# NET
Su diferencia básica con el ciclo while es que la prueba de condición es hecha al finalizar el ciclo, es decir las instrucciones se ejecutan cuando menos una vez porque primero ejecuta las instrucciones y al final evalúa la condición;
También se le conoce por esta razón como ciclo de condición de salida.
Su formato general es :
—
cargar o inicializar variable de condición;
do {
grupo cierto de instrucción(es);
instrucción(es) de rompimiento de ciclo;
} while (condición);
—
prog15.aspx
void EVENTO1 (Object sender, EventArgs e)
{
int reng=1;
LISTA.Items.Clear();
do
{LISTA.Items.Add(reng.ToString()+” mama”);
reng++; } while(reng<=10);
}
La condición es una expresión relacional que evalúa la variable de control de ciclo contra un valor final o de parada que determina cuando debe acabar el ciclo.
El incremento define la manera en que la variable de control de ciclo debe cambiar cada vez que el computador repite un ciclo.
Se deben separar esos 3 argumentos con punto y coma (;)
El preprocesador no interpreta de ninguna manera el código fuente del fichero, sino que sólo interpreta de dicho fichero lo que se denominan directivas de preprocesado. Estas directivas son líneas de texto del fichero fuente que se caracterizan porque en ellas el primer carácter no blanco que aparece es una almohadilla (carácter #) Por ejemplo:
#define TEST
#error Ha habido un error fatal
No se preocupe ahora si no entiendo el significado de estas directivas, ya que se explicarán más adelante. Lo único debe saber es que el nombre que se indica tras el símbolo # es el nombre de la directiva, y el texto que se incluye tras él (no todas las directivas tienen porqué incluirlo) es el valor que se le da. Por tanto, la sintaxis de una directiva es:
#
Es posible incluir comentarios en la misma línea en que se declara una directiva, aunque estos sólo pueden ser comentarios de una línea que empiecen con // Por ejemplo, el siguiente comentario es válido:
#define TEST // Ha habido algún error durante el preprocesado
Pero este otro no, pues aunque ocupa una línea tiene la sintaxis de los comentarios que pueden ocupar varias líneas:
#define TEST /* Ha habido algún error durante el preprocesado */
Como se ha repetido varias veces a lo largo del tema, la principal utilidad del preprocesador en C# es la de permitir la compilación de código condicional, lo que consiste en sólo permitir que se compile determinadas regiones de código fuente si las variables de preprocesado definidas cumplen alguna condición determinada. Para conseguir esto se utiliza el siguiente juego de directivas:
#if
#elif
…
#else
#endif
El significado de una estructura como esta es que si se cumple entonces se pasa al compilador el , si no ocurre esto pero se cumple entonces lo que se pasaría al compilador sería , y así continuamente hasta que se llegue a una rama #elif cuya condición se cumpla. Si no se cumple ninguna pero hay una rama #else se pasará al compilador el , pero si dicha rama no existiese entonces no se le pasaría código alguno y se continuaría preprocesando el código siguiente al #endif en el fuente original.
Aunque las ramas #else y #endif son opcionales, hay que tener cuidado y no mezclarlas ya que la rama #else sólo puede aparecer como última rama del bloque #if…#endif.
Es posible anidar varias estructuras #if…#endif, como muestra el siguiente código:
#define PRUEBA
using System;
class A
{
public static void Main()
{
#if PRUEBA
Console.Write (“Esto es una prueba”);
#if TRAZA
Console.Write(“ con traza”);
#elif !TRAZA
Console.Write(“ sin traza”);
#endif
#endif
}
}
Como se ve en el ejemplo, las condiciones especificadas son nombres de identificadores de preprocesado, considerándose que cada condición sólo se cumple si el identificador que se indica en ella está definido. O lo que es lo mismo: un identificador de preprocesado vale cierto (true en C#) si está definido y falso (false en C#) si no.
El símbolo ! incluido en junto al valor de la directiva #elif es el símbolo de “no” lógico, y el #elif en el que se usa lo que nos permite es indicar que en caso de que no se encuentre definido el identificador de preprocesado TRAZA se han de pasar al compilador las instrucciones a continuación indicadas (o sea, el Console.Write(“sin traza”);)
El código fuente que el preprocesador pasará al compilador en caso de que compilemos sin especificar ninguna opción /d en la llamada al compilador será:
using System;
class A
{
public static void Main()
{
Console.Write(“Esto es una prueba”);
Console.Write(“ sin traza”);
}
}
Nótese como en el código que se pasa al compilador ya no aparece ninguna directiva de preprocesado, pues lo que el preprocesador le pasa es el código resultante de aplicar al original las directivas de preprocesado que contuviese.

Asimismo, si compilásemos el código fuente original llamando al compilador con /d:TRAZA, lo que el preprocesador pasaría al compilador sería:
using System;
class A
{
public static void Main()
{
Console.Write (“Esto es una prueba”);
Console.Write(“ sin traza”);
}
}
Hasta ahora solo hemos visto que la condición de un #if o #elif puede ser un identificador de preprocesado, y que este valdrá true o false según esté o no definido. Pues bien, estos no son el único tipo de condiciones válidas en C#, sino que también es posible incluir condiciones que contengan expresiones lógicas formadas por identificadores de preprocesado, operadores lógicos (! para “not”, && para “and” y || para “or”), operadores relacionales de igualdad (==) y desigualdad (!=), paréntesis (( y )) y los identificadores especiales true y false. Por ejemplo:
#if TRAZA // Se cumple si TRAZA esta definido.
#if TRAZA==true // Idem al ejemplo anterior aunque con una sintaxis menos cómoda
#if !TRAZA // Sólo se cumple si TRAZA no está definido.
#if TRAZA==false // Idema al ejemplo anterior aunque con una sintaxis menos cómoda
#if TRAZA == PRUEBA // Solo se cumple si tanto TRAZA como PRUEBA están // definidos o si no ninguno lo está.
#if TRAZA != PRUEBA // Solo se cumple si TRAZA esta definido y PRUEBA no o // viceversa
#if TRAZA && PRUEBA // Solo se cumple si están definidos TRAZA y PRUEBA.
#if TRAZA || PRUEBA // Solo se cumple si están definidos TRAZA o PRUEBA.
#if false // Nunca se cumple (por lo que es absurdo ponerlo)
#if true // Siempre se cumple (por lo que es absurdo ponerlo)
Es fácil ver que la causa de la restricción antes comentada de que no es válido dar un como nombre true o false a un identificador de preprocesado se debe al significado especial que estos tienen en las condiciones de los #if y #elif
A toda variable que se use en un programa, se debera declarar de preferencia al principio del programa.
En C# NET (tambien se le conoce como C# ) existen los siguientes tipos de variables:
En particular cada tipo de dato que se menciona aqui es en realidad un OBJETO, que se deriva a su vez de una clase que provee el framework de microsoft net es por eso que se incluye la clase de la cual proviene el tipo de dato.
Es decir en un programa se podra declarar una variable por ejemplo float pi; o tambien se podra declarar y crear un objeto derivado de esa clase, por ejemplo System.Float alfa = new System.Float(); para este caso observar y tener en cuenta dos cosas:
Observar como se declara y crea un objeto ( este formato de creación de objetos aprenderlo bien).
Como objeto alfa podra usar todas las propiedades y metodos asociadas al objeto, mas adelante se ve un tema donde se analiza mas a fondo el concepto de clases y objetos.
Signed significa que se puede usar el signo + o – al usar la variable.
Por ultimo variables strings o variables cadena, se podran crear usando la clase STRING que creara un objeto de dicho tipo.
Para declarar un variable en un script o programa solo usar el siguiente formato:
Tipo de dato lista de variables; ejemplo:
string nombre, ciudad;
int alfa, beta;
string ciudad=“tijuana”;
float pi=3.1416;
Para el caso de objetos numericos derivados de la clase respectiva, solo usar el formato que se indico en los parrafos de arriba.
Recordar que c# net es case-sensitive, es decir reconoce la diferencia que hay entre mayusculas y minusculas, en otras palabras no declarar alfa e intentar capturar o desplegar ALFA.
Para convertir numeros a strings no hay problema, solo cargar o asignar el numero o variable numerica a la variable string, pero para convertir strings a numeros existen y deberan usarse los metodos Parse de las clases respectivasejemplo;
String beta1=“100”;
Int beta2 = System.Int32.Parse(beta1);
Contadores y Acumuladores
En electrónica digital, un contador (counter destinada a tal efecto, almacenar datos o actuar como divisor de frecuencia. Habitualmente, el cómputo se realiza en un en inglés) es un circuito secuencial construido a partir de biestables y puertas lógicas capaz de realizar el cómputo de los impulsos que recibe en la entradacódigo binario, que con frecuencia será el binario natural o el BCD natural (contador de décadas).
- Contadores de rizado.
- Contadores paralelos.
- Contadores de rizado mod-6.
- Contador Johnson. Activa una sola salida entre varias. En respuesta al pulso de conteo, la salida siguiente pasa a ser la activa. No se emplea un contador binario seguido de un decodificador debido a que, al conmutar entre dos estados, podría producir pulsos espúrios en otras salidas. El 4017 es un contador johnson de 10 estados.
“Se utilizan para llevar el control del número de ocasiones en que se realiza una operación o se cumple una condición. Los incrementos son generalmente de uno en uno.”
CONTADOR:
Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o acción. Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operación de inicialización y posteriormente las sucesivas de incremento o decremento del mismo. La inicialización consiste en asignarle al contador un valor. Se situará antes y fuera del bucle.
Representación:
<nombre del contador> ¬ nombre del contador> + <valor constante>
Si en vez de incremento es decremento se coloca un menos en lugar del más.
Ejemplo: i = i + 1
ACUMULADOR O TOTALIZADOR :
Es una variable que suma sobre sí misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en uno, el acumulador va aumentando en una cantidad variable.
Representación: <Nombre del acumulador> ¬ <nombre del acumulador> + <valor variable>
Reglas para elaborar un diagrama de flujo
- Se debe escribir de arriba a abajo y de izquierda a derecha
- Los simbolos se unen con lineas
- Se usan flechas para indicar el flujo de informacion
- Los circulos de decision pueden y deben tener mas de una linea de flujo
- Todos los simbolos pueden tener mas de una linea de entrada
ejercicio: Deducir el salario neto de un trabajador apartir de la lectura del nombre, horas trabajadas, precio de la hora y sabiendo que los impuestos aplicados son el 10% sobre salario bruto.
ejercicio2: Cálculo de los salarios semanales de los empleados de una empresa, sabiendo que éstos se calculan en base a las horas semanales trabjadas y de acuerdo a un precio específicado por cada hora. Si se pasa de 40 hrs. semanales, las horas extraordinarias se pagarána a razón de 1.5 veces la hora ordinaria.
ejercicio3: Dados tres números, determinar si la suma de una pareja de ellos es igual al 3er número si se cumple la condición escribir iguales y en caso contrario distintos.
Sintaxis y definicion
Ruta estática
Router(config)#ip route[dirección IP de la red destino+máscara][IP del primer salto/interfaz de salida][distancia administrativa]
Router_B(config)#ip route 172.16.0.0 255.255.0.0 serial 0 120
Router_B(config)#ip route 172.16.0.0 255.255.0.0 200.200.10.1 120
Ruta por defecto
Router_B(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1
Proceso de traducción NAT
Configuración NAT estático:
Para configurar NAT estático se deben seguir los siguientes pasos:
Definir el mapeo de las direcciones estáticas:
ip nat inside source static local-ip global-ip
ip nat inside source static network local-network global-network mask
Especificar la interfaz interna
ip nat inside
Especificar la interfaz externa
ip nat outside
R# configure terminal
R(config)# ip nat inside souce static 10.1.1.1 198.3.4.1
R(config)# interface e0
R(config-if)# ip nat inside
R(config-if)# exit
R(config)# interface s0
R(config-if)# ip nat outside
R(config-if)# exit
Para configurar NAT dinámico se deben seguir los siguientes pasos:
Crear un conjunto de direcciones globales:
ip nat pool name start-ip end-ip {netmask mask | prefix-length prefix-length}
Crear una ACL que identifique a los hosts para la traslación
access-list access-list-number permit source {source-wildcard}
Configurar NAT dinámico basado en la dirección origen
ip nat inside source list access-list-number pool name
Especificar la interfaz interna
ip nat inside
Especificar la interfaz externa
ip nat outside
R# configure terminal
R(config)# ip nat pool fib-xc 198.3.4.1 198.3.4.254 netmask
255.255.255.0
(config)# access-list 2 permit 10.1.1.0 0.0.0.255
R(config)# ip nat inside source list 2 pool fib-xc
R(config)# interface e0
R(config-if)# ip nat inside
R(config-if)# exit
R(config)# interface s0
R(config-if)# ip nat outside
R(config-if)# exit
R(config)# exit
R# show ip nat translations
VERIFICACIÓN DE NAT
show ip nat translations
show ip nat translations verbose
show ip nat statistics
debug ip nat (no debug ip nat)
clear ip nat translations elimina todas las traslaciones NAT
diagrama de flujo
|
Nombre |
Símbolo |
Función |
| Terminal |
|
Representa el inicio y fin de un programa. También puede representar una parada o interrupción programada que sea necesaria realizar en un programa. |
| Entrada / salida |
|
Cualquier tipo de introducción de datos en la memoria desde los periféricos o registro de información procesada en un periférico. |
| Proceso |
|
Cualquier tipo de operación que pueda originar cambio de valor, formato o posición de la información almacenada en memoria, operaciones aritméticas, de transformaciones, etc. |
| Decisión |
|
Indica operaciones lógicas o de comparación entre datos (normalmente dos) y en función del resultado de la misma determina (normalmente si y no) cual de los distintos caminos alternativos del programa se debe seguir |
| Conector Misma Página |
|
Sirve para enlazar dos partes cualesquiera de un diagrama a través de un conector en la salida y otro conector en la entrada. Se refiere a la conexión en la misma pagina del diagrama |
| Indicador de dirección o línea de flujo |
|
Indica el sentido de la ejecución de las operaciones |
| Salida |
|
Se utiliza en ocasiones en lugar del símbolo de salida. El dibujo representa un pedazo de hoja. Es usado para mostrar datos o resultados. |
Dejar un comentario
Dejar un comentario
Dejar un comentario
Esta programación es interesante y los resultados sorprendentes.
