jueves, 1 de diciembre de 2011

Video sobre Lenguaje C

Estructuras de control SWITCH


SWITCH EN C ++

La forma general de esta sentencia es:

switch (expresion)
{
    case exp 1:
        sentencia 1;
        sentencia 2;
        break;

    case exp 2:
    case exp N:
        sentencia N;
        break;
    default:
        sentencia D;
}


Figura 3.3: Sentencia switch
\includegraphics[width=10cm]{im/sintaxis/switch.eps}


  • expresion devuelve un valor entero, pero también puede ser de tipo char.
  • exp1, ..., exp N representan expresiones constantes de valores enteros, aunque también pueden ser caracteres.

Un ejemplo de uso de esta sentencia es el siguiente fragmento de programa, que decide si imprime la vocal dada:

letra='e';
switch(letra);
{
        case 'a': 
        case 'A': 
                printf(``Es la vocal a\n'');
                break;
        case 'e': 
        case 'E': 
                printf(``Es la vocal e\n'');
                break;
        case 'i': 
        case 'I':  
                printf(``Es la vocal i\n'');
                break;
        case 'o': 
        case 'O': 
                printf(``Es la vocal o\n'');
                break;
        case 'u': 
        case 'U': 
                printf(``Es la vocal u\n'');
                break;
        default: printf(``Es una consonante\n'');
}

Estructura de control DO WHILE

CICLO DO WHILE C++

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);

prog8.cpp

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main()

{

clrscr();

// declaracion variables

int x=1;

// instruccion do while

do{

gotoxy(10, x+3); printf("%d GATO",x);

x++; } while(x<=10);

getchar();

}


Corrida prog

image199.jpg

Otra diferencia básica con el ciclo while es que, aunque la condición sea falsa desde un principio el cuerpo de instrucciones se ejecutara por lo menos una vez.

Estructura de control WHILE

CICLO WHILE C++

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;

};

Un error muy comun con el while, es poner un punto y coma(;) despues de la (condición) ejemplo while(condicion); ←-esto es y causa un error.

Prog7.cpp

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main()

{

clrscr();

// declaracion variables

int x=1;

// instruccion while

while(x<=10)

{ gotoxy(10, x+3); printf("%d PATO",x); x++; };

getchar();

}


Corrida:

image198.jpg

While puede llevar dos condiciones en este caso inicializar 2 variables de condición y cuidar que existan 2 de rompimiento o terminación de ciclo.

El grupo cierto de instrucciones puede ser una sola instrucción o todo un grupo de instrucciones.

La condición puede ser simple o compuesta.

Los casos generales de for tambien se aplican a while.

A este ciclo también se le conoce también como ciclo de condición de entrada o prueba por arriba porque este ciclo evalúa primero la condición y posteriormente ejecuta las instrucciones.

Estructura de control FOR

CICLO FOR C++

Instrucciones para ciclos resuelven el problema de repetir todo el programa o cierta parte del programa mas de una vez.

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); };

ejemplo:

for(x=1;x⇐10;x=x+1)

{ puts(” MAMA ”); };

En su forma simple la inicialización es una instrucción de asignación que carga la variable de control de ciclo con un valor inicial.

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 (;)

EJEMPLO

Codigo prog6.cpp

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main()

{

clrscr();

// declaracion variables

int x;

// instruccion for

for(x=1;x<=10;x=x+1)

{ gotoxy(10, x+4); printf("%d MAMA",x); };

getchar();

}


corrida:

image197.jpg

Casos Particulares del ciclo for;

1.- El ciclo comienza en uno y se incrementa de uno en uno este es el caso mas general.

2.- Pero el valor inicial puede se diferente de uno, ejemplo;

for(x=5;x⇐15;x=x+1){ etc.};

3.- Incluso el valor inicial puede ser negativo, ejemplo;

for (x = -3 ;x⇐ 8; x=x+1) { etc.};

4.- Los incrementos también pueden ser diferentes al de uno en uno, ej.;

for (x=1; x⇐ 20; x=x+3){ etc. };

5.- Incluso pueden ser decrementos, solo que en este caso, recordar;

5.1.-el valor inicial de la variable debe ser mayor que el valor final.

5.2.-cambiar el sentido de la condición.

ejemplo;

for (x= 50 ; x >= 10; x= x-4 ) { etcétera };

Funcion Getchar

La función getchar() devuelve el carácter que se halle en la entrada estándar. Esta función tiene dos particularidades. La primera es que aunque se utiliza para obtener caracteres no devuelve un carácter, sino un entero. Esto se hace así ya que con un entero podemos representar tanto el conjunto de caracteres que cabe en el tipo carácter (normalmente el conjunto ASCII de caracteres) como el carácter EOF de fin de fichero. En UNIX es habitual representar los caracteres usando el código ASCII, tanto en su versión de 7 bits como en su versión ampliada a 8 bits. Estos caracteres se suelen representar como un entero que va del 0 al 127 o 256. El carácter EOF entonces es representado con un -1. Además esto también lo aplicaremos cuando leamos los ficheros binarios byte a byte. Un ejemplo:

#include <stdio.h>

main()
{
 int c;

 c = getchar(); /* Nótese que getchar() no devuelve nada 
   hasta que se presiona ENTER */

 putchar(c);
}
 

Aquí se almacena en el entero c el carácter pulsado en el teclado. Posteriormente se muestra con putchar.

Funcion Gotoxy

La función gotoxy ( ) posiciona el cursor en un lugar especifico en la pantalla. Esta función necesita de dos argumentos que le indican las coordenadas de la pantalla hacia donde mover el cursor. La sintaxis general de esta función es:

gotoxy(argumento1,argumento2);

En el primer argumento se especifica el numero de columna (1 - 80) y en el segundo argumento el numero de renglón (1 - 24). Esta función se encuentra dentro de la librería <conio.h>

Funcion Printf

Numerosos lenguajes de programación implementan una función printf (print formated), para mostrar una cadena con formato. Ésta, originaria del lenguaje de programación C, tiene un prototipo similar al siguiente:

 int printf(const char* formato,...)

La cadena constante formato provee una descripción de la salida, con placeholders marcados por caracteres de escape "%", para especificar la localización relativa y el tipo de salida que la función debe producir.

Por ejemplo en C:

 printf("Color %s, numero1 %d, numero2 %05d, hex %x, real %5.2f.\n", "rojo", 12345, 89, 255, 3.14);

imprimirá la siguiente línea (incluyendo el caracter de nueva línea \n):

 Color rojo, numero1 12345, numero2 00089, hex ff, real 3.14.

La función printf retorna el número de caracteres impresos, o un valor negativo si ocurre un error.

Funcion Scanf

 La función scanf() (scan-format, analizar con formato), en realidad representa a una familia de funciones que analizan una entrada de datos con formato y cargan el resultado en los argumentos que se pasan por referencia a dicha función o funciones:
  • La función scanf() lee los datos de entrada en el stdin (flujo de entrada estándar).
  • La función fscanf() (file-scanf) lee en un flujo de entrada dado, por lo general un fichero (file) abierto para lectura.
  • La función sscanf() (string-scanf) obtiene la entrada que se va a analizar de una cadena de caracteres dada (string).

Todas ellas leen caracteres, los interpretan según un formato, y almacenan los resultados en sus argumentos. Cada uno cuenta con varios argumentos: por un lado, un formato de la secuencia del control (se describe más abajo), por otro, un sistema de argumentos del indicador que señala dónde la entrada convertida debe ser almacenada. El resultado es indefinido si hay escasos argumentos para dar formato. Si se agota el formato mientras que sigue habiendo las argumentos, los argumentos sobrantes son evaluados pero no procesados de ninguna otra manera.



Ejemplo: 

// Este ejemplo guarda un número en n.
 
int n;
printf("Introduce un numero: ");
scanf("%d",&n);
 
// Este ejemplo guarda un caracter en m.
 
char m;
printf("Introduce un caracter: ");
scanf("%c",&m);
 
// Este ejemplo guarda una cadena de caracteres (solamente una palabra) en cad. 
// Notese la ausencia de &
 
char cad[20];
printf("Introduce una palabra: ");
scanf("%s",cad);
 
printf("Introduce una palabra: ");
scanf("%10s",cad);  // lee máximo 10 caracteres y le concatena el caracter cero.

lunes, 28 de noviembre de 2011

Tipos de datos basicos en C:

Hay dos clases de tipos de datos: tipos fundamentales y tipos derivados.
Únicamente vamos a ver los tipos de datos fundamentales.

*Tipo entero: representa números enteros con o sin signo, que estarán compuestos por los dígitos del 0 al 9, pudiendo ser precedidos por los signos + o -.
Algunos ejemplo de datos enteros son: 0, 23, -176, -1, etc.
Para definir variables en C se antepone la palabra reservada del tipo al identificador de la variable. El tipo de datos entero se define en el lenguaje de programación C por la palabra reservada int.
Para definir un tipo de dato en C se escribe lo siguiente:
int nombre_variable = valor;
No es necesario que la variable tenga un valor predeterminado. Se puede definir sin asignarle ningún valor.
Si tenemos varios datos que son del mismo tipo, se pueden definir todas en la misma línea de código escribiendo un único int, separando el nombre de las variables por “,”. Una vez que se haya acabado de definir variables, se cierra la línea de código con “;”,
Por ejemplo: int edad = 24;
int edad;
int edad, num, contador;

*Tipo real: Se emplean para representar números reales (con decimales).
Para definir datos reales se antepone la palabra reservada float al identificador de la variable.
float identificador = valor;
Por ejemplo: float numero1, numero2;
float numero3 = 123.43;
float numero3;

*Tipo carácter: Este tipo de datos se emplea para representar un carácter perteneciente a un determinado código utilizado por el ordenador (normalmente el código ASCII).
Para representar este tipo de dato se antepone la palabra reservada char al identificador de la variable.
Char identificador = ‘valor’;
Una constante tipo char se representa como un solo carácter encerrado entre comillas simples.
Por ejemplo: char letra, letra2;
char letra=’a’;

*Tipo cadena de caracteres: una cadena de caracteres es un número de caracteres consecutivos (incluso ninguno) encerrado entre unos delimitadores determinados, que en el lenguaje C son las comillas dobles.
Para definir variables de tipo cadena, estas se definen como vectores de caracteres, esto es, anteponiendo la palabra reservada char al identificador de la variable, y después entre corchetes la longitud máxima de cadena.
Char identificador[cantidad] = “ mensaje ”;

Ventajas y Desventajas del lenguaje C

Propiedades:
  • Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.
  • Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).
  • Un sistema de tipos que impide operaciones sin sentido.
  • Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente.
  • Acceso a memoria de bajo nivel mediante el uso de punteros.
  • Interrupciones al procesador con uniones.
  • Un conjunto reducido de palabras clave.
  • Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros.
  • Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.
  • Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una única variable "empleado").

Carencias:
  • Recolección de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm.
  • Soporte para programación orientada a objetos, aunque la implementación original de C++ fue un preprocesador que traducía código fuente de C++ a C.
  • Encapsulación.
  • Funciones anidadas, aunque GCC tiene esta característica como extensión.
  • Polimorfismo en tiempo de código en forma de sobrecarga, sobrecarga de operadores y sólo dispone de un soporte rudimentario para la programación genérica.
  • Soporte nativo para programación multihilo y redes de computadores.
  • Aunque la lista de las características útiles de las que carece C es larga, este factor ha sido importante para su aceptación, porque escribir rápidamente nuevos compiladores para nuevas plataformas, mantiene lo que realmente hace el programa bajo el control directo del programador, y permite implementar la solución más natural para cada plataforma. Ésta es la causa de que a menudo C sea más eficiente que otros lenguajes. Típicamente, sólo la programación cuidadosa en lenguaje ensamblador produce un código más rápido, pues da control total sobre la máquina, aunque los avances en los compiladores de C y la complejidad creciente de los microprocesadores modernos han reducido gradualmente esta diferencia.
  • En algunos casos, una característica inexistente puede aproximarse. Por ejemplo, la implementación original de C++ consistía en un preprocesador que traducía código fuente C++ a C. La mayoría de las funciones orientadas a objetos incluyen un puntero especial, que normalmente recibe el nombre "this", que se refiere al objeto al que pertenece la función. Mediante el paso de este puntero como un argumento de función, esta funcionalidad puede desempeñarse en C.

Origen del Lenguaje C






C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.

Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Se trata de un lenguaje débilmente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portátil entre plataformas y/o arquitecturas.


En el mundo de la programación web, cada día se buscan nuevas alternativas para generar páginas web; se busca crear nuevos lenguajes que complementen o que ayuden a generar sitios web más completos y dinámicos, que vayan de acuerdo a los tiempos que nos está tocando vivir.

Razón por la cual, los lenguajes que utilizan los desarrolladores 

 cada vez son más completos y van cambiando día a día. Hasta el día de hoy, estos son los lenguajes de programación más utilizados y con mayor relevancia:

1.- Java
2.- C
3.- C++
4.- PHP
5.- C#
6.- (Visual) Basic
7.- Python
8.- Perl
9.- Objetive-C
10.- JavaScript
11.- Delphi
12.- Ruby

Algunos datos estos interesantes sobre este top:

- Los lenguajes con un mayor crecimiento en lo que va del año son: C (+2.3%), Java (+1.2%), Objective-C (+1.1%)

- Los lenguajes que menos interés han generado en este año son: Visual Basic (-1.8%), PHP (-1.5%) y Go (-0.8%).