Anda di halaman 1dari 23

Universidad Nacional de Cajamarca

Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas

PROFESORA:

CURSO:

CICLO:

GRUPO:

INTEGRANTES:
-
-
-
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas

INTRODUCCION
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
MARCO TEÓRICO
Historia de los lenguajes de programación
Con el paso del tiempo y la continua evolución de las computadoras, los lenguajes de
programación han ido cambiando y mejorando de acuerdo a las necesidades tanto de
programadores como de las máquinas en general, dejando consigo una gran variedad de
lenguajes y códigos que seguramente nadie conoce en su totalidad.

Si nos ponemos en la tarea de investigar un poco sobre la historia de los lenguajes de


programación seguro encontraremos datos sorprendentes, como por ejemplo el hecho de
que el primer lenguaje de computadora apareció hace más de 100 años y fue escrito por
una mujer, Ada Lovelace quien es considerada como la primera programadora tras haber
escrito la manipulación de los símbolos para una máquina de Charles Babbage que aún
no había sido construida.
Los lenguajes de programación al principio eran muy difíciles de entender pues estaban
desarrollados para ser entendidos directamente por las maquinas (lenguajes de bajo nivel)
y eran muy pocas las personas que se dedicaban a programar en ese entonces, pero con el
paso del tiempo se han hecho cada vez más amigables y gracias al uso de compiladores e
intérpretes se ha podido llevar la programación a un nivel más humano (lenguajes de alto
nivel) facilitando el proceso de desarrollo de software.

En la historia de los lenguajes de programación podemos destacar también el hecho de


que se han derivado varios tipos de lenguajes a partir de los primeros, así como otros
detalles que podemos apreciar en la siguiente línea de tiempo:

 1843: Ada Lovelace desarrolla el primer lenguaje de programación cuando escribió


un algoritmo para la máquina analítica de Charles Babbage.
 1957 – Fortran: (“The IBM Mathematical Formula Translating System”): Un
lenguaje de programación de alto nivel de propósito general. Para cálculo numérico
y científico (como alternativa al lenguaje ensamblador). Es el lenguaje de
programación más antiguo que se utiliza hoy en día.
 1958 – Lisp: (“List Processor”) Utilizado para la notación matemática y temas de
ciencias de la computación.
 1959 – Cobol: (“Common Business-Oriented Language) Usado principalmente para
la informática empresarial. Es el primer lenguaje de programación que se demandan
por el Departamento de Defensa de EE.UU..
 1964 – BASIC: (“Beginner’s All-purpose Symbolic Instruction Code”) Diseñado
para la simplicidad. Su popularidad explotó a mediados de los años 70 con los
computadores personales.
 1970 – Pascal: (En honor al matemático/físico francés Blaise Pascal) Utilizado para
la enseñanza de la programación estructurada y estructuración de datos.
 1972 – Lenguaje C: (Basado en un lenguaje anterior llamado “B”) Creado para
sistemas Unix. Muchos de lenguajes de programación más populares del mundo son
derivados de el, entre ellos tenemos C#, Java, JavaScript, Perl, PHP y Python.
 1980 – Ada: (En honor a Ada Lovelace): Es derivado del Pascal. Contratado por el
Departamento de Defensa de los EE.UU. en 1977 para el desarrollo de sistemas de
software grandes.
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
 1983 – C++: (“C con clases”; ++ es el operador de incremento en “C”) Es
una extensión de lenguaje C, con mejoras tales como clases, funciones
virtuales y plantillas.
 1983 – Objective-C: (Extensión de “C” orientada a objetos) Ampliación de C, se
adiciona la funcionalidad de paso de mensajes basado en el lenguaje Smalltalk.
 1987 – Perl: Creado para el procesamiento de informes en sistemas Unix. Hoy en
día es conocido por su gran potencia y versatilidad.
 1991 – Python: Creado para apoyar una variedad de estilos de programación y
hacerlo divertido de usar.
 1993 – Ruby: Un lenguaje influenciado por Perl, Ada, Lisp, Smalltalk, etc. Diseñado
para la programación productiva y agradable.
 1995 – Java: Hecho para un proyecto de televisión interactiva. Funciona
multiplataforma. Es el segundo lenguaje más popular (detrás de lenguaje C).
 1995 – PHP: (“Personal Home Page”) Usado para la creación de
páginas web dinámicas.
 1995 – JavaScript: Creado para ampliar la funcionalidad de las páginas web,
permite utilizar formularios de presentación/validación, interactividad, animaciones,
seguimiento de la actividad del usuario, etc.
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas

LENGUAJE DE PROGRAMACIÓN C.
CONCEPTO:
También conocido como “Lenguaje de programación de sistemas” desarrollado en el
año 1972 por Dennis Ritchie para UNIX un sistema operativo multiplataforma. El
lenguaje C es del tipo lenguaje estructurado como son Pascal, Fortran, Basic. Sus
instrucciones son muy parecidas a otros lenguajes incluyendo sentencias como if, else,
for, do y while... . Aunque C es un lenguaje de alto nivel (puesto que es estructurado y
posee sentencias y funciones que simplifican su funcionamiento) tenemos la posibilidad
de programar a bajo nivel ( como en el Assembler tocando los registros, memoria etc. ).
Para simplificar el funcionamiento de el lenguaje C tiene incluidas librerías de
funciones que pueden ser incluidas haciendo referencia la librería que las incluye, es
decir que si queremos usar una función para borrar la pantalla tendremos que incluir en
nuestro programa la librería que tiene la función para borrar la pantalla.

Ventaja del lenguaje:La programación en C tiene una gran facilidad para escribir código
compacto y sencillo a su misma vez. En el lenguaje C no tenemos procedimientos como
en otros lenguajes solamente tenemos funciones los procedimientos los simula y esta
terminante mente prohibido escribir funciones , procedimientos y los comandos en
mayúscula todo se escribe en minúsculas (a no ser las constantes J ) Los archivos en la C
se escriben en texto puro de ASCII del Dos si se escribe en WORD por ejemplo el mismo
incluye muchos códigos no entendidos por el compilador y generara errores ;una vez
escrito se debe pasar a compilar el archivo; los archivos tienen 2
Extensiones archivo.C que es el archivo a compilar el que contiene todas los
procedimientos funciones y código de nuestro programa y archivo.h que es las librerías
que contienen las funciones de nuestro programa. (NOTA: El compilador genera
Archivos con extensión .EXE). Cada instrucción que pasemos a poner en C va seguida
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
de un punto y coma para decirle al compilador que hasta ahí llega la instrucción
simula un Enter del teclado. Ejemplo: clrscr(); /* borra la pantalla */.

estructura de Programación en “C”

Tipo de Variables en C
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
Definición: Para la definición de variables de debe poner primero el tipo de
variable a definir y luego el nombre de la variable (si queremos inicializarla
podemos a continuación poniendo = valor) y si queremos definir más de una
variable del mismo tipo podemos poniendo una coma a continuación.
Ejemplo:
int contador; /* define una variable con el nombre contador de tipo entero */
int cont = 0 ; /* inicializando cont con 0 */
int cont , cont2, contn = 0; /* definición de mas de una variable */
float científica = 10.1
int cont = cont +1;
int cont = cont2;
TRABAJANDO CON ESTRUCTURAS También se pueden definir tipo de variables con
varias variables dentro llamada estructuras de variables (muy precido a los registros
Grande DBASE ....) dentro de un registro nosotros podemos agrupar un conjunto de
variables bajo un mismo nombre por ejemplo tengo una ficha de cliente donde tiene
nombre , dirección ,teléfono ; en la misma ficha yo podría preguntar por cliente.nombre
o cliente.telefono etc.
Tipo de definición

Struct nombre {
Tipo variable1
Tipo variable2
Tipo variablex
};
struct nombre nombre_dela_variable;

Constantes:

#define nombre texto_deremplazo

Las constantes son variables que se mantienen todo el programa con un mismo valor.
Cada vez que nosotros llamamos a una constante lo que hacemos es remplazar la
constante por su valor. No se debe poner; después de la definición. Ej.:
#define MAXLINEAS 24
#define MINOMBRE “Federico”
#define ARCHIVO “C:\autoexec.bat”
y cuando en mi programa yo haga por ejemplo printf(“Autor : %s”,MINOMBRE); se
sustituirá el contenido de la constante por el contenido de la misma
printf(“Autor : %s”,”Federico”);
Un ejemplo que para los amantes de turbo pascal les puede gustar
// Ejemplo realizado para clase de definicion de varialbes.
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
#include <stdio.h> // inclusión de librerías.
#include <stdlib.h>
#include <conio.h>

// definición de constantes.
#define BEGIN {
#define END }
#define WRITELN( texto ) printf("%s\n",texto)
#define READLN(variable) gets(variable)
#define PAUSA getch()

void main()
BEGIN
char var[255];
clrscr();
WRITELN("hola");
READLN( var );
WRITELN( var);
PAUSA;
END

Funciones
Una función es una parte del código independiente del programa que se llama dentro de
él, como dijimos anteriormente C no tiene procedimientos solamente funciones los
procedimientos los simula con funciones que no devuelven nada (Void) la estructura de
la funciones en C y es los elementos más fuertes del lenguaje. El desarrollo de una función
es:
Tipo_de_valor_retorno nombreFunción(lista de argumentos ){
declaracion de variables locales a la función
codigo ejecutable
return (expresión) // optativo
}
las variables de nuestras funciones son locales es decir que solamente viven cuando se
está ejecutando la llamada a la función; el código ejecutable son las sentencias que el
programa utiliza para funcionar y el valor de retorno es el resultado que va a devolver la
misma función ( si se dice que una función retorna un entero en el return se debe poner
un entero como valor de devolución Ej: esta función de ejemplo cuenta cuantos caracteres
existen dentro de una variable que se le pase como parámetro.

Sentencias de comparación y repeticiones


Instrucción IF La sentencia if permite comparar 2 valores entre si. Por medio de la
condición cuando se cumple (TRUE) entra a realizar la accion1 si no pasa a cumplir la
accion2

if ( condición_logica )
{ ....
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
acción 1
....
}
else
{ .....
acción 2
.....
}

Sentencia SWITCH La sentencia switch puede comparar una variable con mas de un
posible resultado Si ustedes tubieron el gusto de programar en clipper la sentencia es muy
parecida a Case.

Switch (variable)
{
case comparacion1 : .....
accion...
break
.....
case comparacion n : .....
accion...
break
default : ..... /* en caso de que no se cumpla ninguna...*/
accion...
break
}

Repeticiones
Es el más usado en su sintaxis puesto que es muy parecido al de otros lenguajes como
clipper pascal visual basic....
While primero evalúa la condición y no se cumple entra en el ciclo While hasta que la
condición se cumpla.

While (condición)
{
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
....
sentencias
....
}

Sentencia for
La sentencia for o para permite ejecutar un conjunto de sentencias evaluando la condición
central del for.

For ( variable = valor inicial ; condición ; incremento)


{...
....
sentencias....
...
....
}
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
LENGUAJE C++
CONCEPTOS:
Comenzaremos estudiando el soporte del C++ a la programación imperativa, es decir, la
forma de definir y utilizar los tipos de datos, las variables, las operaciones aritméticas, las
estructuras de control y las funciones. Es interesante remarcar que toda esta parte está
heredada del C, por lo que también sirve de introducción a este lenguaje.

Estructura de los programas:

El mínimo programa de C++ es:


main() { }
Lo único que hemos hecho es definir una función (main) que no tiene argumentos y no
hace nada. Las llaves { } delimitan un bloque en C++, en este caso el cuerpo de la
función main.Todos los programas deben tener una función main() que es la que se
ejecuta al comenzar el programa.
Un programa será una secuencia de líneas que contendrán sentencias, directivas de
compilacióny comentarios.
Las sentencias simples se separan por punto y coma y las compuestas se agrupan en
bloques mediante llaves.
Las directivas serán instrucciones que le daremos al compilador para indicarle que
realice alguna operación antes de compilar nuestro programa, las directivas comienzan
con el símbolo # y no llevan punto y coma.

Los comentarios se introducirán en el programa separados por /* y */ o comenzándolos


con //. Los comentarios entre /* y */ pueden tener la longitud que queramos, pero no se
anidan, es decir, si escribimos /* hola /* amigo */ mío */, el compilador interpretará que
el comentario termina antes de mío, y dará un error. Los comentarios que comienzan
por // sólo son válidos hasta el final de la línea en la que aparecen.
Un programa simple que muestra todo lo que hemos visto puede ser el siguiente:

Estructuras de control
Como estructuras de control el C++ incluye las siguientes construcciones:
condicionales:
if: instrucción de selección simple
switch: instrucción de selección múltiple
bucles:
do-while: instrucción de iteración con condición final
while instrucción de iteración con condición inicial
for instrucción de iteración especial (similar a las de repetición con contador)
de salto:
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
break instrucción de ruptura de secuencia (sale del bloque de un bucle o
instrucción
condicional)
continue instrucción de salto a la siguiente iteración (se emplea en bucles para saltar a la
posición donde se comprueban las condiciones)
goto instrucción de salto incondicional (salta a una etiqueta)
return instrucción de retorno de un valor (se emplea en las funciones)

Funciones
Una función es una parte con nombre de un programa que puede ser invocada o llamada
desde
cualquier otra parte del programa cuando haga falta. La sintaxis de las funciones
depende de si
las declaramos o las definimos.
La declaración se escribe poniendo el tipo que retorna la función seguido de su nombre
y de una
lista de parámetros entre paréntesis (los parámetros deben ser de la forma tipo-param
[nom_param], donde los corchetes indican que el nombre es opcional), para terminar la
declaración ponemos punto y coma (recordar que una declaración es una sentencia).
Para definir una función se escribe el tipo que retorna, el nombre de la función y una
lista de
parámetros entre paréntesis (igual que antes, pero aquí si que es necesario que los
parámetros
tengan nombre). A continuación, se abre una llave, se escriben las sentencias que se
ejecutan en
la función y se cierra la llave.
Un ejemplo de declaración de función sería:
int eleva_a_n (int, int);
Y su definición sería:
int eleva_a_n (int x, int n)
{
if (n<0) error ("exponente negativo");
switch (n) {
case 0: return 1;
case 1: return x;
default: return eleva_a_n (x, n-1);
}
}
Por defecto los parámetros se pasan por valor, para pasarlos por referencia usaremos
punteros y
referencias. Veremos más ampliamente las funciones en el punto dedicado a ellas.

Constantes (literales)
Hay cuatro tipos de literales en C++:
Literales enteros
Octales (en base ocho), si empiezan por cero, p. ej. 023 equivale a 10011 en binario o a
19 en decimal
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
Hexadecimales (en base dieciséis), si empiezan por 0x, p.ej. 0x2F que
equivale a 101111
en binario o a 47 en decimal. En hexadecimal los valores del 10 al 15 se
representan por
A, B, C, D, E, y F (en mayúsculas o minúsculas).
Decimales, que son los que no empiezan por 0.
A cada uno de estos literales les podemos añadir un sufijo para indicar que son sin signo
(sufijo
u o U) o para forzar a que sean de tipo long (sufijo l o L), por ejemplo 23L es el entero
23 de tipo
long, 0xFu es el entero 15 sin signo. También podemos mezclar los sufijos: 12Lu entero
12 sin
signo de tipo long.
Literales reales
Una constante en coma flotante se escribe con la parte entera y la decimal separadas por
punto,
y opcionalmente se puede escribir la letra e o E y un exponente.
El tipo de constante depende del sufijo:
Sin sufijo: double
19
f, F : float
l, L : long double
Ejemplos:
1.8e3 // 1.8 * 103 == 1800 de tipo double
0.1L // valor 0.1 long double
-1e-3f // -0.001 float
4. // 4.0 double
.12 // 0.12 double
Literales caracteres
Los caracteres se delimitan entre dos apóstrofes ''. Dentro de los apóstrofes sólo
podemos
escribir un carácter, excepto cuando son caracteres especiales, que se codifican
mediante el
carácter de escape \ seguido de otro carácter

Literales cadenas
Una cadena es una secuencia de caracteres escrita entre comillas dobles y terminada con
el
carácter nulo (\0).
Ejemplos:
"hola" // equivale a 'h','o','l','a','\0'
"" // equivale a '\0'
"'" // equivale a '\'', '\0'
"\'" // equivale a '\'', '\0'
""" // error, para escribir " dentro de una cadena lo correcto sería "\""
"ho""la" // se concatenan, equivale a 'h','o','l','a','\0'
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
Variables
Alcance o ámbito de las variables
Las variables existen sólo dentro del bloque en el que se definen, es decir, se crean
cuando se
entra en el bloque al que pertenecen y se destruyen al salir de él.
Para acceder a variables que se definen en otros módulos la declaramos en nuestro
módulo
precedida de la palabra extern.
Si queremos que una variable sea local a nuestro módulo la definimos static, de manera
que es
inaccesible desde el exterior de nuestro módulo y además permanece durante todo el
tiempo que
se ejecute el programa (no se crea al entrar en el módulo ni se destruye al salir, sino que
permanece todo el tiempo) guardando su valor entre accesos al bloque.
Si queremos que una variable no pueda ser modificada la declaramos const, tenemos
que
inicializarla en su declaración y mantendrá su valor durante todo el programa. Estas
variables se
emplean para constantes que necesitan tener una dirección (para pasarlas por
referencia).
El operador ::
Dentro de un bloque podemos emplear el operador :: para acceder a variables declaradas
en un
bloque superior. Este operador sólo es útil cuando en un bloque interno tenemos una
variable
con un nombre igual a otro externo (la variable accesible será la interna, pero con ::
accederemos
a la externa). Veremos que el operador :: se usa fundamentalmente para clases.
Ejemplo:
main () {
int v;

{
char v;
v = 5; // asigna 5 a la variable char (interna)
::v=9 + v; // asigna 9 + 5 (valor de v interna) a la variable int más externa
}
}
Variables volátiles
Si queremos que una variable sea comprobada cada vez que la utilicemos la
declararemos
precedida de la palabra volatile, esto es útil cuando definimos variables que almacenan
valores
que no sólo modifica nuestro programa (por ejemplo una variable que utiliza el
Hardware o el
SO).
Variables register
Podemos intentar hacer más eficientes nuestros programas indicándole al compilador que
variables usamos más a menudo para que las coloque en los registros. Esto se hace
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
declarando la variable precedida de la palabra register. No tenemos ninguna
garantía de que el compilador nos haga caso, depende del entorno de desarrollo
que empleemos.

Lenguaje C# (pronunciado si Sharp en inglés)

Características:
Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.NET
el cual es similar al de Java aunque incluye mejoras derivadas de otros lenguajes (entre
ellos Delphi).
La creación del nombre del lenguaje, C♯, proviene de dibujar dos signos positivos
encima de los dos signos positivos de "C++", queriendo dar una imagen de salto
evolutivo del mismo modo que ocurrió con el paso de C a C++.
C♯, como parte de la plataforma.NET, está normalizado por ECMAdesde diciembre
de 2001 (C# Language Specification "Especificación del lenguaje C♯"). El 7 de
noviembre de 2005 salió la versión 2.0 del lenguaje que incluía mejoras tales como
tipos genéricos, métodos anónimos, iteradores, tipos parciales y tipos anulables. El 19
de noviembre de 2007 salió la versión 3.0 de C# destacando entre las mejoras los tipos
implícitos, tipos anónimos y LINQ (Language Integrated Query -consulta integrada en
el lenguaje).
Aunque C♯ forma parte de la plataforma.NET, ésta es una interfaz de programación de
aplicaciones (API); mientras que C♯ es un lenguaje de programación independiente
diseñado para generar programas sobre dicha plataforma. Ya existe
un compilador implementado que provee el marco de DotGNU - Mono que genera
programas para distintas plataformas como Win32, UNIX y Linux.

Características principales de C#

A continuación, enumeramos las principales características que definen al lenguaje de


programación C#. Algunas de estas características no son propias del lenguaje, sino de
la plataforma .NET, aunque se listan aquí ya que tienen una implicación directa en el
lenguaje.

Sencillez de uso:

C# elimina muchos elementos añadidos por otros lenguajes y que facilitan su uso y
compresión, como por ejemplo ficheros de cabecera, O ficheros fuentes IDL1 .12. Es
por ello que se dice que C# es auto contenido. Además, no se incorporan al lenguaje
elementos poco útiles, como por ejemplo macros, herencia múltiple u operadores
diferentes al operador de acceso a métodos (operador punto) para acceder a miembros
de espacios de nombres.
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
Modernidad

Al ser C# un lenguaje de última generación, incorpora elementos que se ha


demostrado a lo largo del tiempo que son muy útiles para el programador, como tipos
decimales o booleanos

, un tipo básico

string

,así como una instrucción que permita recorrer colecciones con facilidad(instrucción

foreach

). Estos elementos hay que simularlos en otros lenguajes como C++ o Java.

Orientado a objetos

C# como lenguaje de última generación, y de propósito general, es orientado a objetos.


C# no permite la inclusión de funciones ni variables globales que no estén incluidos en
una definición de tipos, por lo que la orientación a objetos es más pura y clara que en
otros lenguajes como++. Además, C# soporta todas las características del paradigma de
la programación orientada a objetos, como son la encapsulación, la herencia y el
polimorfismo.

Orientado a componentes

La propia sintaxis de C# incluye elementos propios del diseño de componentes que


otros lenguajes tienen que simular. La sintaxis de C# incluye por ejemplo formas de
definir propiedades eventos o atributos.

Recolección de basura

Como ya se comentó, todo lenguaje incluido en la plataforma .NET tiene a su


disposición el recolector de basura del CLR. Esto implica que no es necesario incluir
instrucciones de destrucción de objetos en el lenguaje.

Seguridad de tipos

C# incluye mecanismos de control de acceso a tipos de datos, lo que garantiza que no


se produzcan errores difíciles de detectar como un acceso a memoria de ningún objeto,
por ejemplo. Para ello, el lenguaje provee de una serie de normas de sintaxis, como por
ejemplo no realizar conversiones entre tipos que no sean compatibles. Además, no se
pueden usar variables no inicializadas previamente, y en el acceso atablas se hace una
comprobación de rangos para que no se excedan ninguno de los índices de la misma. Se
puede controlar así mismo los desbordamientos en operaciones aritméticas,
produciéndose excepciones cuando se produzcan.
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
Instrucciones seguras

Para evitar errores comunes como se producían programando en otros lenguajes,


en C# se han impuesto una serie de restricciones en el uso de instrucciones de control más
comunes. Por ejemplo, la evaluación de toda condición ha de ser una expresión
condicional y no aritmética, como ocurría por ejemplo en C o en C++. Así se evitan
errores por confusión del operador igualdad con el de asignación. Otra restricción se
impone en la instrucción de selección switch, imponiendo que toda selectora de la
instrucción finalice con una instrucción break o goto que indique cuál es la siguiente
acción a realizar.

Unificación de tipos

En C# todos los tipos derivan de una superclase común llamada

System.Object, por lo que automáticamente heredarán todos los miembros definidos en


esta clase. Es decir, son objetos. A diferencia de Java, en C# esta característica también
se aplica para los tipos básicos.

Extensión de los operadores básicos

Para facilitar la legibilidad de código y conseguir que los nuevos tipos de datos que se
definan a través de las estructuras estén al mismo nivel que los elementos predefinidos
en el lenguaje, al igual que C++ pero a diferencia de Java, C# permite redefinir el
significado de la mayoría delos operadores (incluidos el de la conversión) cuando se
apliquen a diferentes tiopos de objetos.

Las redefiniciones de operadores se hacen de manera inteligente, de modo que a partir


de una única definición de los operadores ++ y - el compilador puede deducir
automáticamente cómo ejecutarlos de manera prefija y postfija. Definiendo operadores
simples como la suma, el compilador deduce como aplicar la versión de asignación
compuesta (+=). Además, para asegurar la consistencia, el compilador exige que los
operadores con opuesto (como por ejemplo el operador igualdad == y su opuesto!= )
siempre se redefinan por parejas.

Extensión de modificadores C# ofrece, a través de los atributos, la posibilidad de añadir


a los metadatos del módulo resultante de la compilación de cualquier fuente
información adicional a la generada por el compilador que luego podrá ser consultada
en tiempo de ejecución a través de la biblioteca de reflexión de .NET.

Eficiente

En C#, todo el código incluye numerosas restricciones para garantizar su seguridad, no


permitiendo el uso de punteros. Sin embargo, y a diferencia de Java, existen
modificadores para saltarse esta restricción, pudiendo manipular objetos a través de
punteros. Para ello basta identificar regiones de código con el identificador un safe

, y podrán usarse en ellas punteros de forma similar a como se hace en C++. Esta
característica puede resultar de utilidad en situaciones en las que se necesite gran
velocidad de procesamiento
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas

Aplicaciones relacionadas a la minería (uso de programas)


Datastream
Los sistemas EAM (Software para la Gestión de Activos Corporativos) fueron
desarrollados originalmente para solucionar los requerimientos de industrias
extremadamente intensivas en capital (Assets), como es la minería. El mantenimiento es
un área importante a considerar en toda industria, ya que representa un porcentaje
considerable de los costos, como por ejemplo, un 30% a 35% en la minería.Datastream
7i es una solución para la gestión de activos que ayuda a las empresas a incrementar el
retorno sobre la inversión (ROI) durante todo su ciclo de vida.Posee una arquitectura
100% web, permitiendo su acceso por medio de un browser standard de Internet desde
cualquier lugar en cualquier momento, contribuyendo a minimizar el tráfico por la red y
evitando la compra de hardware costoso. Una de las principales ventajas de esta
tecnología tiene que ver con la disponibilidad en tiempo real y, gracias al desarrollo de
las tecnologías inalámbricas, desde cualquier hora y lugar a una fuente de información
histórica sobre los equipos y sistemas, para determinar patrones de falla y mejorar los
procedimientos y programas de mantenimiento que incrementen su disponibilidad a un
costo cada vez menor. A su vez, cualquier funcionario de una planta minera puede
disponer de manuales, planos y documentos en forma automática, ahorrando tiempo y
recursos considerables. La tecnología Mobile, incluida en la solución Datastream 7i,
permite a las empresas mineras tener un acceso remoto y sin limitaciones a todos los
datos vitales para administrar el ciclo de vida de sus activos, optimizando el intercambio
de información y el flujo de trabajo, lo que constituye un factor clave para mejorar su
eficiencia operacional e incrementar las ganancias y retorno de la inversión ROI.

Datamine
Sin considerar algunas mínimas diferencias existentes entre algunos sectores
productivos mineros, que se rigen por condiciones muy particulares, todo negocio
productivo asociado al área minera está constituido por las siguientes áreas: Proceso
productivo-Logística de apoyo al proceso productivo-Finanzas.Hoy en día los grandes
sistemas informáticos están siendo sometidos al mayor y más complejo de los
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
requerimientos, que proviene directamente de los profesionales del área
minera: soluciones efectivas a todas sus necesidades. El análisis del círculo de
planeamiento minero y la solución global propuesta por Datamine comenzó con
un riguroso análisis del mercado minero, que luego se fundamentó en la mejora
continua de toda la línea de productos y en el desarrollo de todas aquellas tecnologías
que permitieran cubrir todas las áreas del negocio minero, en cualquiera de sus
variantes.De esta forma, las alternativas propuestas por la compañía para suministrar
soluciones efectivas a estos exigentes requerimientos cuentan con todas las
características fundamentales para asegurar el éxito del negocio minero, tales como
Integrabilidad, Versatilidad, Potencialidad y Confiabilidad, permitiendo un trabajo
rápido, eficiente, que considera el riesgo asociado, generando resultados auditables y
repetibles a lo largo del tiempo, o en cualquier sitio de la compañía. Entre estos
productos destaca el software Datamine Studio.

Gemcom
Las soluciones integradas que desarrolla Gemcom abarcan desde las fases de
exploración, evaluación de recursos, diseño de minado, optimización, planeamiento
minero y control de leyes de producción, hasta la reconciliación y balance metalúrgico a
lo largo de la línea de producción.La línea de soluciones MPMS (Mine Production
Management Solutions) es cuidadosamente diseñada y ajustada a las necesidades reales
y futuras de cada uno de los clientes, incluyendo productos específicos como GEMS o
Whittle y/o herramientas de otros proveedores o desarrollos propios de cada empresa.
Lo relevante es la integración real de todos los elementos involucrados en la cadena de
valor, lo que posibilita una visión global confiable, con los indicadores adecuados que
permiten a los ejecutivos tomar decisiones más certeras.• MPMS: Solución orientada a
la administración y control de los procesos en la cadena de valor productiva de una
empresa minera. • ProdTrack: Sistema de control de producción y balance metalúrgico a
lo largo de la línea de procesos.• GEMS: Suite de herramientas de aplicación a las tareas
de una operación minera, que cubren las necesidades de los profesionales en todas las
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
áreas de la ingeniería y geología. • GEMS-PCBC: Suite de herramientas
específicas para faenas que utilizan el método de Block Caving para su
explotación. PCBC opera bajo ambiente GEMS, y está completamente
integrado con el resto de herramientas generales de administración de datos, y otras. •
Whittle: Sistema para optimización económica y planeamiento estratégico de minado.
Herramientas para el análisis de sensibilidad, secuenciamiento óptimo, aplicación de
algoritmos de Millaza y Lerch y Grossman, son parte de este sistema. • EQWin: Sistema
de administración y análisis de datos de medio ambiente.

Maptek
El software minero geológico Vulcan es uno de los productos principales de Maptek.
Creado en el año 1981, actualmente está disponible en la Versión 7.0 .Entre sus
principales características, permite su aplicación a todos los aspectos geológicos y de
planificación minera; posee las herramientas necesarias para la creación del diseño,
tanto para open pit, como para underground; permite el modelamiento de yacimientos
metálicos, carboníferos y de metales industriales, y entrega las herramientas para un
completo desarrollo topográfico y de geomensura.El software permite convertir los
complejos datos en información visual que se reflejan en la creación de imágenes
interactivas y dinámicas en 3D, facilitando su comprensión y entendimiento. Además,
puede desarrollar completos estudios de factibilidad y de impacto ambiental.Otro
producto de Maptek es el software I-SiTE, creado en el año 1999, actualmente
disponible en la Versión 2.2.Es un paquete combinado de hardware y software. El
hardware incluye un dispositivo de rastreo láser, un computador laptop con el control
del dispositivo y captura de datos de soporte y una estación de trabajo de alto
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas
rendimiento. Combinado con el software Vulcan, el ambiente gráfico
representa el sistema completo para cálculo exacto de volúmenes y
desplazamiento, procesamiento, manejo y manipulación de datos.Las
aplicaciones para el Sistema I-SiTE en mapeo, ingeniería de minas y civil incluyen:
captura de datos extremadamente rápida, topografía 3D, Open pit, bancos, control de
producción, control de cavidades, control de hundimientos, control de túneles, cálculo
de cualquier volumen, mediciones con gran detalle adecuadas para análisis estructural,
total detalle de topografía, mediciones volumétricas (planificadas versus ejecutadas),
entre otras.

Surpac
Surpac Minex Group tiene una serie de soluciones computacionales para el trabajo
geológico minero, entre las cuales se puede mencionar:• Surpac Vision: Software
geológico minero que cubre desde las tareas de exploración hasta la planificación de la
mina. Este programa se caracteriza por tener un fácil manejo y gran potencialidad al
manejar información de distintos formatos, además de poder realizar conexiones de
trabajos múltiples desde internet.• Minesched: Software de planificación minera de
desarrollo y planificación de la producción desde el corto hasta largo plazo en minería
subterránea y de cielo abierto. Este programa tiene interfaz directa con MS Project y
Excel, permitiendo al planificador obtener flexibilidad y un mejor manejo del plan
minero al analizar múltiples opciones en un corto tiempo.• Tailings: Es un programa
que permite simular el llenado de un tranque de relaves, considerando puntos de
descarga y diferentes pendientes de depositado.Surpac tiene aplicación en el área
geológica minera, específicamente en: Exploración geológica; Estimación de reservas;
Diseño en minería open pit y subterránea; Planificación minera; Modelamiento de
relaves; Levantamiento topográfico.
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas

VULCAN es la más avanzada herramienta disponible de Modelamiento y Visualización


3D para diseño en la Industria Minera. Es precisamente la enormidad de opciones
disponibles para el usuario que hacen de VULCAN una herramienta de alta eficacia y
eficiencia que redunda en notables aumentos de productividad. La funcionalidad
especializada de Vulcan permite a Minera Escondida desarrollar los modelos de
recursos más precisos, Diseño de pit más eficientes y costos más efectivos de
programación minera. Vulcan es tremendamente eficiente, permite a MEL tener la
confianza en los resultados que han sido determinados.
Aplicaciones

Las aplicaciones de Vulcan dentro del la Superintendencia de Geología incluyen la
correlación de sondajes del modelado estructural, manto y calidad, el cálculo de
reservas y planeación de sondajes de exploración.

El departamento de Ingeniería utiliza Vulcan para el diseño mina detallado, para el
diseño de expansiones, y cubicaciones por corte.

Diseño interactivo en 3D, Manejo y Procesamiento de la Información, y Herramientas
de Ploteo.

Entrada de datos, Estadística, Edición de Sondajes, Evaluación de Reservas

Geoestadística, Modelo de Bloques, Evaluación de Reservas
Universidad Nacional de Cajamarca
Facultad de Ingeniería
Escuela Académico Profesional de Ingeniería De Minas

Mapeo, estereografía, Clasificación del Macizo Rocoso

Optimización de Pits, Planeamiento Largo Plazo, Diseño de Rampas y Pits

Optimización y Diseño de Desarrollos

Manejo de Topografía, Control de Leyes, Planificación, Mezclas para la Producción

Ingeniería Ambiental, Pedimentos, Rehabilitación y Estudios del uso de Terrenos

Creadores de los programas