Descargar

Programación: Lenguajes (página 2)

Enviado por Leonel guardia


Partes: 1, 2

Expresiones y operadores

Los distintos operadores permiten formar expresiones tanto aritméticas como lógicas. Los operadores aritméticos y lógicos son:

+, –

suma, resta

++, —

incremento, decremento

*, /, %

multiplicación, división, módulo

>>, <<

rotación de bits a la derecha, izquierda.

&

AND booleano

|

OR booleano

^

EXOR booleano

~

complemento a 1

!

complemento a 2, NOT lógico

==, !=

igualdad, desigualdad

&&, ||

AND, OR lógico

<, <=

menor, menor o igual

>, >=

mayor, mayor o igual

En estos operadores deben tenerse en cuenta la precedencia de operadores y las reglas de asociatividad, que son las normales en la mayoría de lenguajes. Se debe consultar el manual de referencia para obtener una explicación detallada. Además hay toda una serie de operadores aritméticos con asignación, como pueden ser += y ^=.

En la evaluación de expresiones lógicas, los compiladores normalmente utilizan técnicas de evaluación rápida. Para decidir si una expresión lógica es cierta o falsa muchas veces no es necesario evaluarla completamente. Por

ejemplo una expresión formada || , el compilador evalúa primero

y si es cierta, no evalúa . Por ello se deben evitar construcciones en las que se modifiquen valores de datos en la propia expresión, pues su comportamiento puede depender de la implementación del compilador o de la optimización utilizada en una compilación o en otra. Estos son errores que se pueden cometer fácilmente en C ya que una asignación es también una expresión.

Debemos evitar: if (( x++ > 3 ) || ( x < y ))

y escribir en su lugar: x++; if (( x > 3 ) || ( x < y ))

edu.red

.

Variantes

Desde el inicio del lenguaje han surgido varias ramas de evolución que han generado varios lenguajes:

  • Objective-C es un primer intento de proporcionar soporte para

la programación orientada a objetos en C, pero actualmente usado en Mac OS X, iOS y GNUstep.

  • C++ (pronunciado C Plus Plus) diseñado por Bjarne Stroustrup fue el segundo intento de proporcionar orientación a objetos a C y es la variante más difundida y aceptada. Esta versión combina la flexibilidad y el acceso de bajo nivel de C con las características de la programación orientada a objetos como abstracción, encapsulación y ocultación.

También se han creado numerosos lenguajes inspirados en la sintaxis de C, pero que no son compatibles con él:

  • Java, que une una sintaxis inspirada en la del C++ con una orientación a objetos más similar a la de Smalltalk y Objective C.

  • JavaScript, un lenguaje de scripting creado en Netscape e inspirado en la sintaxis de Java diseñado para dar a las páginas web mayor interactividad. A la versión estandarizada se la conoce como ECMAScript.

  • C# (pronunciado C Sharp) es un lenguaje desarrollado por Microsoft derivado de C/C++ y Java.

Deben declararse antes de utilizarse y en ese momento se "crean" en la memoria: son accesibles por su nombre. Pueden ser: • externas: se definen sólo una vez, fuera de toda función y se declaran extern (implícita o explícitamente) en cada función que las vaya a utilizar, siendo comunes a todas. Son inicializadas a 0 por omisión.

  • internas (o automáticas): son declaradas dentro de una función y solo existen en ellas. No tienen una inicialización por omisión y quedan indefinidas en su valor inicial si no se las inicializa explícitamente. además pueden ser:_

  • estáticas: son visibles sólo dentro del archivo fuente (externas) o función (internas) en donde se declaran. Las estáticas internas mantienen su valor en sucesivos llamados a la función. Son inicializadas a 0 por omisión. Se deben inicializar con un valor o una expresión constante

. • register: le indica al compilador que la variable será muy usada. El compilador decidirá si s

PROCESO DE COMPILACIÓN

La compilación de un programa C se realiza en varias fases que normalmente son automatizadas y ocultadas por los entornos de desarrollo:

  • 1. Preprocesado consistente en modificar el código fuente en C según una serie de instrucciones (denominadas directivas de preprocesado) simplificando de esta forma el trabajo del compilador. Por ejemplo, una de las acciones más importantes es la modificación de las inclusiones

( #include ) por las declaraciones reales existentes en el archivo

indicado.

  • 2. Compilación que genera el código objeto a partir del código ya preprocesado.

  • 3. Enlazado que une los códigos objeto de los distintos módulos y bibliotecas externas (como las bibliotecas del sistema) para generar el programa ejecutable final.

Tipo de instrucciones

En un programa en C hay dos clases de instrucciones:

  • Las instrucciones de control de flujo: if (si), while (mientras), etc.

  • Funciones que realizan acciones o cálculos (leer un nº por teclado, escribir en pantalla, hacer cálculos, etc.). Respecto a las funciones, en C se distinguen dos clases:

??Funciones de la biblioteca estándar de C: Son funciones de uso general que trae el compilador implementadas: prinft( ), gets( ),etc.

  • Funciones que define el programador (debido a que no existen en ninguna de las bibliotecas). Ingeniería Técnica Industrial Fundamentos de Informática

Sentencias de control

En todos los casos la expr se refiere a cualquier expresión válida en C. Es decir, una expresión lógica, una suma, una asignación, nada, etc.

  • while Repite la ejecución del bloque de código (encerrador entre { }) mientras la expresión se evalúe como verdadero (es decir, distinto de cero). Si la expresión es falsa de entrada, el bloque nunca se ejecuta. while (expr){ //bloque de código a repetir }

  • do…while Repite el bloque de código mientras la expresión ser verdadera. Por lo menos una vez se ejecutará el código del bloque. do { //bloque de código a repetir } while(expr);

  • for Al ejecutarse esta instrucción, primero se ejecuta expr1; a partir de allí mientras la expr2 sea evaluada como verdadera, sucesivamente se ejecutará código del bloque y ejecutará la expr3. El código del bloque puede entonces no ejecutarse nunca (si expr2 es evaluada como falsa de entrada). for(expr1; expr2; expr3){ //bloque de código a repetir }

  • if Evalúa la expresión y si resulta verdadera ejecuta el código. if (expr){ //bloque de código }

  • if /else Evalúa la expresión y si resulta verdadera ejecuta el código del bloque1. Caso contrario, ejecuta el código del bloque2. if (expr){ //bloque1 } else { //bloque2 }

  • switch/case Permite la selección múltiple trasladando la ejecución a la primera sección en la cual la expresión se evalúe igual a la constante, ejecutando a partir de allí todas las instrucciones subsiguientes9 . Si no hay ninguna coincidencia, se ejecutan las instrucciones que siguen a default. switch (expr) { case constante1: instrucciones case constante2: instrucciones case constante3: instrucciones . . . default: instrucciones }

  • break Al ejecutarse termina el ciclo o switch mas interno, trasladando la ejecución a la línea siguiente al mismo.

  • continue Se usa sólo en ciclos y al ejecutarse provoca que se salteen las líneas del ciclo que estén "debajo" de esta instrucción, es decir, pasa a ejecutarse la siguiente iteración, con ejecución y evaluación de las expresiones de control del ciclo.

  • goto10 Transfiere la ejecución a una línea cualquiera identificada por una etiqueta. goto final; … //instrucciones … final: //instrucciones

Estructuras

Se constituyen mediante una colección de variables de distinto tipo, agrupadas bajo un nombre. Estas variables se ubicarán en forma continua en la memoria y por lo tanto el espacio que ocupe la estructura en la memoria será la suma de las variables que la constituyan.

Definida una estructura, pueden definirse variables de ese "tipo"11. Y a partir de la declaración de una variable de tipo estructura, puede usarse como cualquier otra variable accediendo a sus componentes mediante el operador ".".

Ejemplo: struct point{ //defino un nombre para la estructura (es opcional) int x; //defino los componentes de la estructura int y; //que podrían ser de diferente tipo }; …. struct point pt =

{3,5}; //defino la variable printf ("%d, %d", pt.x, pt.y);// los componentes se acceden mediante el // operador "." Los campos o componentes de la estructura pueden ser de cualquier tipo, incluso otras estructuras (anidamiento) y arreglos. Las estructuras también pueden formar arreglos y pasarse como argumentos a funciones como cualquier variable12 . Ejemplo: struct message { int emisor; int receptor ; char datos [50]; } struct message buffer[50]; buffer[0].emisor=0;

Algunos ejemplos de Programas realizados en DEVC++

El siguiente programa imprime en pantalla la frase "Hola Mundo" (C99).

edu.red

El siguiente escribe "Hola Mundo" en C89

edu.red

#include

struct contacto{ char nombre [40];

char direccion [80]; int edad;

long telefono;

};

//cambiando el nombre del tipo strct contacto typedef struct contacto contacto_t;

int main(void){ contacto_t c1;

//recibo los valores por entrada del usuario printf("Ingrese el nombre:");

fflush(stdin); gets(c1.nombre);

printf("ningrese la direccion:"); fflush(stdin); gets(c1.direccion); printf("nIngrese la edad:"); fflush(stdin); scanf("%d",&c1.edad); printf("nIngrese telefono:"); fflush(stdin); scanf("%d",&c1.telefono);

//imprimo los valores

printf("Nombre: %snDirec: %snEdad: %d,nTel: %d",c1.nombre,c1.direccion,c1.edad,c1.telefono);

return 0;

}

edu.red

// CREAR ESTRUCTURAS

#include

struct contacto{ char nombre [40];

char direccion [80]; int edad;

long telefono;

}; //!!!!!!!!!!!!!;

//cambiando el nombre del tipo strct contacto typedef struct contacto contacto_t;

int main(void){ contacto_t c1;

//recibo los valores por entrada del usuario printf("Ingrese el nombre:");

fflush(stdin); gets(c1.nombre);

printf("ningrese la direccion:"); fflush(stdin); gets(c1.direccion); printf("nIngrese la edad:"); fflush(stdin); scanf("%d",&c1.edad); printf("nIngrese telefono:"); fflush(stdin); scanf("%d",&c1.telefono);

//imprimo los valores

printf("Nombre: %snDirec: %snEdad: %d,nTel: %d",c1.nombre,c1.direccion,c1.edad,c1.telefono);

return 0;

}

edu.red

edu.red

JavaScript

  • Java

  • PHP

  • Python

  • C#

? C++

Ruby

  • CSS

  • C

  • Objective-C

  • Perl

  • Shell

  • R

  • Scala

  • Go

  • Haskell

  • Matlab

  • Swift

  • Clojure

  • Groovy

  • Visual Basic

Los 7 lenguajes de programación mejor pagados

Quizá te resulte extraño que el ranking disponga de 21 elementos, pero esto es debido a que algunos de ellos han obtenido el mismo porcentaje de uso, y comparten posición.

La lista de los lenguajes de programación más populares del mundo no presenta grandes sorpresas, con respecto a años anteriores. Una vez más, los lenguajes asociados a las páginas web son los más utilizados: JavaScript, Java, PHP, etc. A la hora de programar software, el lenguaje C sigue siendo el gran dominador. Y aunque parece lógico que aparezcan en el ranking las variantes más modernas, como C#, llama la atención que el C clásico aún permanezca en el Top 10.

El crecimiento más espectacular en número de usuarios ha recaído en Swift, el nuevo lenguaje de creación de apps de Apple, que se ha colado en el puesto 17. Todo un logro, teniendo en cuenta que tiene poco más de un año de vida.

JavaScript Le esta pisando los talones y la presión que esta realizando es cada día más fuerte a traves de HTML5 y su importancia en el mundo de la movilidad.

edu.red

.NET

Sorprende un poco no encontrar a C# un poco más arriba (puesto 8) ya que .NET en mi opinion personal sigue siendo utilizado por mucha gente. Pero claro para ser justos habría que sumar a VB.NET que en la lista aparece en el puesto 24 y C# subiría algunos puestos. El hecho de que VB.NET aparezca tan abajo yo creo que deja cada día más claro que Microsoft apuesta por C# como lenguaje bandera.

edu.red

Objective C

No nos podemos olvidar de Apple y su Objective-C que siguen ocupando una posición destacable en la lista en el puesto 10. Pero yo creo que aquí lo que más sorprende y de una forma positiva es que Swift ocupe la posición 29. Eso quiere decir que para lo joven que es el lenguaje hay muchos desarrolladores con experiencia en Objective-C que están abordando con interes el cambio.

edu.red

Scala y Groovy

Tanto Scala como Groovy son lenguajes dinámicos que nacen a partir del mundo Java y que van ocupando su hueco. Sin embargo quizás lo que más podamos destacar es el puesto 11 de Scala que le convierte sin ninguna duda en un claro candidato a substituto de Java en un futuro.

edu.red

CoffeeScript

Poco a poco CoffeScript como nuevo lenguaje para simplificar la sintaxis de JavaScript va ganando adeptos, veremos en que posición aparece el próximo año.

edu.red

PHP

Mucha gente ha dado por muerto a PHP durante los últimos años y ha comentado que Java o que .NET o que incluso plataformas como Node.js se lo comerían pero la realidad es que sigue en un más que destacable puesto

  • 5. Frameworks comolavarel están ayudando de una forma clara a renovar las ideas en la comunidad.

Conclusión

A pesar de que C fue creado cerca de 1970, su estudio perdura alrededor de todo el mundo; lo que no debe sorprender, ya que este lenguaje presenta bastantes características en relación con sus defectos. Entre sus principales beneficios se encuentran: programación estructurada, economía de las expresiones, abundancia en operadores y tipos de datos, codificación en alto y bajo nivel simultáneamente, reemplaza ventajosamente la programación en ensamblador o con lenguajes de bajo nivel en general, utilización natural de las funciones primitivas del sistema, no está orientado a ninguna área en especial, producción de código objeto altamente optimizado, facilidad de aprendizaje, etc.

Aparte de esto, C es el lenguaje de elección en la implementación de sistemas en la industria y comercio además de muchos otros entornos. Se piensa que será el lenguaje dominante en el comienzo del nuevo siglo así como también se piensa que lo fue a finales del siglo pasado.

Bibliografía

file:///C:/Users/hp1/Downloads/Introducci%C3%B3n.pdf

https://es.wikipedia.org/wiki/C_(lenguaje_de_programac i%C3%B3n)

http://www.aprenderaprogramar.com/index.php?option

=com_content&view=category&id=82&Itemid=210

http://www.ecured.cu/Lenguaje_de_Programaci%C3%B3 n_C

http://informatica.uv.es/estguia/ATD/apuntes/laboratori o/Lenguaje-C.pdf

Código, complicación, prueba de escritorio por cada programa ejecutado.

EJEMPLO 7.12. He aquí un sencillo programa en C que contiene una función que modifica el valor de su argumento.

#include

#include void modificar(int a); main () { int a = 2;

/* prototipo de función */

printf("na = %d (desde main, antes de llamar a la función)", a); modificar (a);

printf (" nna = %d (desde main, después de llamar a la función)", a);

}

void modificar(int a)

{

a *= 3;

printf("nna = %d (desde la función, modificando valor)", a);

system("pause"); return;

edu.red

EJEMPLO 2

#include

#include

void reordenar(int n,int *x); main()

{

int i,n,*x;

/*leer eel valor de n*/

printf("n¿cuantos numeros seran introducidos?n"); scanf("&d",&n);

printf("n");

/*reserva de memoria*/

x = (int *)malloc(n * sizeof(int));

/*leer la lista de numeros */ for (i=0;i/font>

printf("i&d*,x + i");

}

/*reordenar todos los elementos del array*/ reordenar(n,x);

/*escribir la lista reordenada de numeros */ printf("nn lista de numeros reordenada :nn"); for(i=0; 1< n; ++i)

printf("i=&d x = &dn",i+1, *(x+i));

}

void reordenar(int n,int*x) /*reordenar la lista de numeros */

{

int i, elem , temp;

for (elem =0 ; elem < n-1; ++elem);

/*encontrar el menor del resto de los elementos */ for (i = elem + 1; i < n; ++i)

if (*(x+i) < *(x+elem)){

/*intercanbiar los dos elementos*/

temp = *(x + elem);

*(x+elem) = *(x+i);

*(x+i) = temp;

}

return;

edu.red

edu.red

#include int main()

{

union id {

char color[12]; int talla;

};

struct ropa {

char fabricante[20]; float coste; union id descripcion; };

struct ropa camisa = {"Americana", 25.0, "blanca"}; printf(" %dn", sizeof(union id));

printf("%s %5.2f ", camisa.fabricante, camisa.coste);

printf("%s %d n", camisa.descripcion.color, camisa.descripcion.talla); camisa.descripcion.talla = 12;

printf("%s %5.2f ", camisa.fabricante, camisa.coste);

printf("%s %d n", camisa.descripcion.color, camisa.descripcion.talla); return 0;

}

edu.red

EJEMPLO 4

#include main()

{

union id {

char color[12]; int talla;

};

struct ropa {

char fabricante[20]; float coste;

union id descripcion;

};

static struct ropa camisa = ("Americana", 25.00, "blanca"); printf("%dn", sizeof(union id));

printf("%s %5.2f ", camisa.fabricante, camisa.coste);

printf("%s %dn", camisa.descripcion.color, camisa.descripcion.talla);

camisa.descripcion.talla = 12;

printf("%s %5.2f ", camisa.fabricante, camisa.coste);

printf("%s %dn", camisa.descripcion.color, camisa.descripcion.talla);

}

edu.red

 

 

 

Autor:

Leonel Guardia

 

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente