generalidades sobre el lenguaje c

Anuncio
08/03/2013
UNIVERSIDAD DE MANAGUA
UDEM
SUMARIO
 El software.
 Los lenguajes de programación
 .Net Framework
 Introducción a C#
 Estructura básica de un programa en C#
 Hola Mundo!
 Palabras reservadas, operadores, prioridad y orden de evaluación.

Tipos de datos.
 Conversión entre tipos de datos.
 Operaciones matemáticas.
 Generación de números aleatorios.
EL SOFTWARE
 Las operaciones que debe realizar el hardware son
especificadas por una lista de instrucciones,
llamadas programas o software.
PROGRAMA
-S.O.
- Software de Sistema
Dos
grandes
grupos
Indispensables para que
la máquina funcione.
- Software de Aplicación
Facilitan el uso de la
computadora.
-Compiladores e intérpretes.
-Depuradores.
ENTRADA
COMPUTADORA
SALIDA
-Drivers, etc.
-Paquetes de oficina.
- CAD/CAM.
- Bases de datos, etc.
1
08/03/2013
LOS LENGUAJES DE PROGRAMACIÓN
Programas de Aplicación
Programas del sistema
 Sirve para escribir programas que permitan la
comunicación usuario/máquina.
 Programas especiales llamados traductores
(compiladores o intérpretes) convierten las
instrucciones escritas en lenguajes de
programación en instrucciones escritas en
lenguaje de máquina (0 y 1, bits) que ésta pueda
entender.
PC
 Instrucciones a la computadora.
 Los diferentes pasos (acciones) de un algoritmo se
- Lenguaje de máquina
Principales
tipos de
lenguajes
- Lenguaje de bajo nivel
(ensamblador)
expresan en los programas como instrucciones,
sentencias o proposiciones.
 El término instrucción se suele referir a los lenguajes
máquina y bajo nivel.
 El término sentencia o proposición a los lenguajes de
alto nivel.
Instrucciones básicas
- Lenguaje de alto nivel
Entrada/Salida
Aritmético/Lógicas
Selectivas
Repetitivas
2
08/03/2013
Tipo de
Definición
Lenguaje
Características Ventajas
Desventajas
Máquina
Aquellos que están
escritos en lenguajes
directamente
inteligibles por la
máquina.
-Instrucciones
en cadenas
binarias.
- Dependiente
del hardware
-Cargar del
programa sin
traducción.
-Velocidad de
ejecución.
-Dificultad y
lentitud de
codificación.
-Poca fiabilidad.
-Dificultad de
verificación.
-Sólo
ejecutables en
mismo
procesador
Bajo nivel
El lenguaje de bajo
nivel por excelencia
es el ensamblador
cuyas instrucciones
son conocidas como
nomotécnicos.
-Lenguaje
símbólico.
-Posee una
estructura y
gramática
definidas.
-Mayor facilidad
de codificación.
-Velocidad de
cálculo.
-Dependencia
de la máquina.
-No
transportable.
-Formación de
programadores
más compleja.
Tipo de
Definición
Lenguaje
Alto nivel
Características Ventajas
Son los más
-Mucho más
utilizados por los
fáciles de
programadores.
entender.
Diseñados para que
personas escriban y
entiendan los
programas de un
modo mucho más
fácil que los lenguajes
máquina y
ensambladores.
-Formación de
programadores
relativamente
corto.
-Se basan en
reglas
sintácticas
similares a los
lenguajes
humanos.
-Modificaciones
fáciles.
-Reducción de
costo.
-Transportables
Desventajas
-Incremento del
tiempo de
puesta a punto.
-No aprovechan
los recursos
internos de la
máquina.
-Aumento de la
ocupación de
memoria.
-Tiempo de
ejecución de los
programas es
mucho mayor
Lenguajes de alto nivel de uso mayoritario:
C C++ COBOL FORTRAN PASCAL VISUAL BASIC
ADA95
MODULA-2 PROLOG
LISP
SMALLTALL
BORLAND DELPHI SQL POWER BUILDER
JAVA
C#
EIFFEL
.NET FRAMEWORK
 El .Net Framework es una infraestructura sobre la que se
reúne todo un conjunto de lenguajes y servicios que
simplifican enormemente el desarrollo de aplicaciones.
 Ofrece un entorno de ejecución altamente distribuido, que
permite crear aplicaciones robustas y escalables.
 Componentes principales:
 El Motor de Generación de GUI.
 Biblioteca de la Jerarquía de Clases Básicas de la Plataforma.
 Entorno de Ejecución Común o Common Language Runtime
(CLR).
Infraestructura de .Net Framework
3
08/03/2013
El CLR, Common Language Runtime
 Esquema de componentes:
 El CLR constituye el núcleo de .Net Framework, encargándose de
 Es el alma de .Net Framework y es el encargado de la
ejecución de código de las aplicaciones.
la gestión de código en cuanto a su carga, ejecución, manipulación
de memoria, seguridad, etc.
 En el nivel intermedio, la jerarquía de clases básicas, que
constituyen un sólido API de servicios a disposición del
programador, para multitud de tareas como, gestión del sistemas de
ficheros, manipulación multihebra, acceso a datos, etc.
 Finalmente, las clases que permiten el diseño de GUI.
El CTS, Common Type System
 Es el mecanismo del CLR que permite definir el modo en
que los tipos serán creados y manipulados por el entorno
de ejecución de .Net Framework.
 Funcionalidades:
 Integración de código escrito en diferentes lenguajes.
 Optimización de código en ejecución.
 Modelo de tipos OO con soporte a múltiples lenguajes.
 Normas que aseguran la intercomunicación entre objetos.
 Diseñar el modo en como el código de la aplicación será
ejecutado, pero no se encarga directamente de su
ejecución.
4
08/03/2013
Metadata (Metadatos)
 En la propia aplicación de incluye información
complementaria que pueda ser utilizada por el entorno de
ejecución para funcionalidades diversas.
 A esta información se le denomina metadatos.
 Con esta técnica se obtienen aplicaciones o componentes
auto-descritos.
 Son creados por el compilador del lenguaje utilizado en
cada caso y grabados dentro del fichero (EXE o DLL) en
formato binario, siendo el CLR el encargado de
recuperarlos en el momento que los necesite.
Soporte Multi-Lenguaje
 El CLR soporta múltiples lenguajes, permitiendo así
elevados niveles de integración entre los mismos.
 .Net Framework proporciona los siguientes lenguajes:
 VB .Net
 C#
 C++ con Extensiones Administradas.
 JScript .Net
 El código compilado en cada lenguaje no pasa directamente
a código ejecutable puro, sino a código intermedio.
El CLS, Common Language Specification
 ¿Cómo es posible conseguir que lenguajes de distinta
naturaleza y sintaxis se entiendan?
 Respuesta: el CLS o Especificación Común de
Lenguajes, el cual consiste en un conjunto de
características comunes, que deben cumplir todos los
lenguajes de la plataforma, para poder integrarse entre sí.
 Finalidades:
 Independencia del lenguaje.
 Integración del lenguaje.
 Apertura a nuevos lenguajes
5
08/03/2013
Ejecución Administrada
 Trata de un conjunto de elementos existentes en .Net
Framework que supervisan el código del programa
durante su ejecución dentro del CLR, asegurándose que el
código cumple con todos los requisitos para poder hacer
uso de los servicios proporcionados por el CLR, y
beneficiarse de sus ventajas.
 Código Administrado.
 Código que utiliza todas las cualidades del CLR. Por defecto el
código de VB .Net, C# y JScript .Net es administrado.
 Datos Administrados.
 Datos de la aplicación gestionados en memoria por el CLR a través
La Ejecución dentro del CLR
 Durante el proceso de compilación, el código fuente es
tomado por el compilador del lenguaje utilizado para su
escritura, y convertido, no directamente a código binario,
sino a lenguaje intermedio, que recibe el nombre de
Microsoft Intermediate Language (MSIL o IL).
 MSIL consiste en un conjunto de instrucciones
independientes del SO o procesador en el que vaya a
ejecutarse el programa, y que se ocupa de la manipulación
de objetos, accesos a memoria, manejo de excepciones, etc.
de un mecanismo denominado recolector de basura.
Compilación instantánea del IL y Ejecución
 Antes de realizar la ejecución del código, el código IL debe
ser convertido a código máquina, utilizando lo que se
denomina un compilador instantáneo o compilador
Just-In-Time (JIT Compiler), que es el encargado de
generar el código binario específico para el procesador en el
que el programa será ejecutado.
6
08/03/2013
Compilación bajo demanda
 Para optimizar la ejecución y mejorar su velocidad, el
compilador JIT se basa en el hecho de que es posible que
ciertas partes del código que compone la aplicación nunca
sean ejecutadas. Por este motivo, sólo se compila el código
según se va necesitando y se almacena el código máquina
resultante de modo que esté accesible en las siguientes
llamadas.
Independencia de la Plataforma
 Ya que el código máquina ejecutable, es obtenido a través
de un compilador JIT, .Net Framework proporciona varios
compiladores JIT para cada una de las plataformas que
soporta, consiguiendo así que una aplicación pueda
funcionar distintos SO, haciendo que el código de la
aplicación sea independiente de la plataforma, en donde
.Net Framework actúa como una capa intermedia que aísla
el código del SO.
INTRODUCCION A C#
 ¿Qué es C#?
 Es un paquete de desarrollo diseñado por Microsoft para simplificar
el desarrollo de aplicaciones para internet.
 C# es leído en ingles “C Sharp” y en español “C
Almohadilla”.
 Creado por Scott Wiltamuth y Anders Hejlsberg, este
último también conocido por haber sido el diseñador de
Turbo Pascal y la herramienta RAD Delphi.
 C# es el único lenguaje diseñado específicamente para ser
utilizado en la plataforma .NET, por eso se suele decir que
C# es el lenguaje nativo de .NET.
7
08/03/2013
 Origen de C#.
 Problemas de Java:


Dificultad para la interoperabilidad de lenguajes cruzados o
programación de lenguajes mezclados.
No integración completa de la plataforma Java, aunque los programas
Java se puedan ejecutar en un entorno Windows.
 Para responder a estas necesidades Microsoft creo C# dentro de su
estrategia global .NET.
 C# está relacionado con C, C++ y Java:



De C ha heredado su sintaxis, muchas de las palabras reservadas y sus
operadores.
De C++ ha heredado su modelo de objetos.
La relación con Java es mas bien de «amor/odio». Son similares en
cuanto a programación distribuida y utilización de código intermedio
para conseguir portabilidad, pero difieren en los detalles. C# incluye
delegados, propiedades, indexadores y eventos como elementos del
lenguaje.
 Según sus creadores C# supone una mejora por dos razones
básicas:
 Porque es el último, y por lo tanto, el más adaptado a las
necesidades actuales del programador y el que más a aprendido de
los demás, heredando lo mejor de cada entorno, y añadiendo
aquello elementos que los programadores solicitaban.
 En segundo término, por que su creador principal el danés Anders
Hejlsberg, ha podido hacer un excelente trabajo basado en su
experiencia personal.
 Características de C#.
 Sencillez. Eliminación de muchos elementos que otros lenguajes
incluyen y que son innecesarios en .NET.
 Modernidad. Incorporación de elementos que a los largo de los





años ha ido demostrándose son muy útiles para el desarrollo de
aplicaciones. Por eje.: tipo de dato decimal (muy útil el mundo
financiero), foreach para recorrer colecciones, el string para
representar cadenas o la distinción del tipo bool para valores
lógicos.
Orientación a objetos.
Orientación a componentes. Incluye elementos propios del
diseño de componentes, por ejemplo: definir propiedades, eventos,
o atributos.
Gestión automática de memoria. Tiene a su disposición el
recolector de basura del CLR.
Seguridad de tipos. Acceso a los tipos de datos se realice
correctamente.
Instrucciones seguras. Se ha impuesto una serie de restricciones
en el uso de las instrucciones de control más comunes.
 Características de C#.
 Sistemas de tipos unificado. Derivación de la clase
System.Object.
 Extensibilidad de tipos básicos. Permite definir,
estructuras.
 Extensibilidad de operadores. Facilita la legibilidad
de código, además permite redefinir el significado de la
mayoría de los operadores.
 Extensibilidad de modificadores. A través de los
atributos posibilita añadir metadatos.
 Versionable. Creación de versiones de tipos sin temor a
que la introducción de nuevos miembros provoquen
errores difíciles de detectar.
8
08/03/2013
Estructura básica de un programa en C#
//Esqueleto de un programa en C#.
using System;
using System.Collections.Generic;
using System.Text;
 Algunas bondades:
namespace MyNamespace
{
 Sintaxis simplificada: operadores de referencia y namespaces:
., ->, :: sustituidos por ->
class program
{
public static void Main(string[] args)
{
//aqui va el codigo
}
}
 XML ¿Comentarios? ¡Documentación!
 Integración con otros lenguajes .NET.
 Apuntadores. ¿Seguridad o no seguridad?
 ¡Dinero! $$: VB .NET vs C#
}
Hola Mundo! desde C#
Palabras Reservadas
abstract
class
event
if
new
readonly
struct
unsafe
using System;
using System.Collections.Generic;
using System.Text;
as
const
explicit
implicit
null
ref
switch
ushort
base
continue
extern
in
object
return
this
using
namespace HolaMundo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hola Mundo! desde C#.");
Console.ReadKey(); //Pausa
}
}
}
bool
decimal
false
int
operator
sbyte
throw
virtual
break
default
finally
interface
out
sealed
true
volatile
byte
delegate
fixed
internal
override
short
try
void
case
do
float
is
params
sizeof
typeof
while
catch
double
for
lock
private
stackalloc
uint
char
else
foreach
long
protected
static
ulong
checked
enum
goto
namespace
public
string
unchecked
9
08/03/2013
Operadores
Categoría
Prioridades y Orden de Evaluación
Operadores
Aritméticos
+
-
*
/
%
Lógicos
&
|
^
!
~
&&
Concatenación
+
Incremento/Decremento
++
--
Corrimiento
<<
>>
Relacionales
==
<
>
<=
Asignación
=
Acceso a miembros
.
Índices
[]
Cast
()
Condicional
?:
Concatenación y remoción
+
Creación de objetos
new
Información de tipos
is
sizeof
typeof
Desreferencia y dirección
*
->
&
!=
+=
-=
*=
/=
||
true
false
>=
%=
&=
|=
^=
<<=
>>=
-
[]
Tipos de Datos
Tipo de
C#
Tipo en la plataforma
.NET
¿Signo?
Bytes
empleados
Conversión entre Tipos de Datos
Posibles valores
sbyte
System.Sbyte
Si
1
-128 a 127
short
System.Int16
Si
2
-32768 a 32767
int
System.Int32
Si
4
-2147483648 a 2147483647
long
System.Int64
Si
8
-9223372036854775808 a
9223372036854775807
byte
System.Byte
No
1
0 a 255
ushort
System.Uint16
No
2
0 a 65535
uint
System.UInt32
No
4
0 a 4294967295
ulong
System.Uint64
No
8
0 a 18446744073709551615
float
System.Single
Si
4
Aproximadamente ±1.5 x 10-45 a ±3.4 x
1038 con 7 dígitos significativos
double
System.Double
Si
8
Aproximadamente ±5.0 x 10-324 a ±1.7 x
10308 con 15 o 16 dígitos significativos
decimal
System.Decimal
Si
12
Aproximadamente ±1.0 x 10-28 a ±7.9 x
1028 con 28 o 29 dígitos significativos
char
System.Char
-
2
Cualquier carácter de Unicode (16 bit)
bool
System.Boolean
-
1/2
- Implícita
Tipos de
Conversión
Cuando se trate de una asignación,
convierte el valor de la derecha al
tipo de la variable de la izquierda
siempre que no haya pérdida de
información.
- Explícita
Si existe pérdida de datos C# exige
que la conversión se realice
explícitamente
true o false
10
08/03/2013
Conversión Implícitas Permitidas
Conversión Explícita
Las flechas indican las conversiones implícitas permitidas.
- Conversión Cast.
Conversión
Explícita
-<tipoDato>.Parse
-La clase System.Convert
Conversión Explícita Cast
Tiene la forma:
(tipo)expresión
Conversión Explícita <tipoDato>.Parse
Tiene la forma:
<tipoDato>.Parse
short sDato = 0; int iDato = 0; long lDato = 0;
float fDato = 0; double dDato = 2; decimal mDato = 0;
fDato = float.Parse(dDato.ToString());
lDato = long.Parse(fDato.ToString());
iDato = int.Parse(lDato.ToString());
sDato = short.Parse(iDato.ToString());
mDato = decimal.Parse(dDato.ToString());
11
08/03/2013
Conversión Explícita System.Convert
El Tipo de Dato DateTime
Representa un instante del tiempo, típicamente expresado como una fecha y
hora del día.
short sDato = 0; int iDato = 0; long lDato = 0;
float fDato = 0; double dDato = 2; decimal mDato = 0;
fDato = System.Convert.ToSingle(dDato);
lDato = System.Convert.ToInt64(fDato);
iDato = System.Convert.ToInt32(lDato);
sDato = System.Convert.ToInt16(iDato);
mDato = System.Convert.ToDecimal(dDato);
/*
* Declaracion de la variable tipo Fecha/Hora.
*/
DateTime FechaActual = DateTime.Today.Date;
/*
* Manipulación de información contenida en una
* variable tipo Fecha/Hora.
*/
Console.WriteLine("Fecha actual {0}", FechaActual);
Console.WriteLine("Fecha actual {0}", FechaActual.Date);
Console.WriteLine("Fecha actual {0}", FechaActual.ToLongTimeString ());
Console.WriteLine("Fecha actual {0}", FechaActual.ToLongDateString ());
Console.WriteLine("Fecha actual {0}", FechaActual.ToShortDateString ());
Console.WriteLine("Fecha actual {0}", FechaActual.ToShortTimeString ());
/*
* Solicitud de la fecha de nacimiento al usuario.
*/
Console.Write ("Dame tu fecha de nacimiento (dd-mm-yyyy):");
DateTime FechaNacimiento = System.Convert.ToDateTime (Console.ReadLine ());
/*
* Cálculo e impresión del valor de la edad.
*/
Console.Write("Tu edad es: {0}",FechaActual.Year - FechaNacimiento.Year);
Console.Read();
Definición:
DateTime <nombreVariable>;
DateTime FechaActual = DateTime.Today.Date;
Conversión:
FechaActual = DateTime.Parse(“28-06-2009”);
FechaActual = System.Convert.ToDateTime(“28/06/2009”);
Operaciones Matemáticas
La biblioteca de clases .NET que incluye una clase llamada Math en sus
espacio de nombres System, la cual define un conjunto de operaciones
matemáticas de uso común que pueden ser utilizadas por cualquier programa.
La clase Math contiene métodos para ejecutar operaciones numéricas
elementales como raíz cuadrada, exponencial, logaritmo y funciones
trigonométricas. Por ejemplo:
Console.WriteLine(Math.Sqrt(36));
Console.WriteLine(Math.Pow(2, 4));
Console.WriteLine(Math.Round(4.5));
Console.WriteLine(Math.E);
Console.WriteLine(Math.PI);
.
.
.
12
Descargar