Introduccion Al Lenguaje C

download Introduccion Al Lenguaje C

of 31

description

Presentación en powerpoint de una introducción al Lenguaje C

Transcript of Introduccion Al Lenguaje C

  • Introduccin al lenguaje CProgramacin EstructuradaIng. Carlos Beyersdorf

  • ContenidosPresentacin del lenguaje CEstructura de un programa en CTipos de datos escalaresOperadores bsicosCondicionalesIteracionesIntroduccin a las funciones E/SArrays (vectores o matrices)Funciones y argumentos

  • Presentacin del lenguaje C Creado en 1972 por Brian Kernighan y Dennis Ritchie Lenguaje de propsito generalTransportable (generalmente)Inicialmente de nivel medio (entre alto nivel y ensamblador)Pensado para (gestionar / programar) sistemas/comunicacionesLenguaje compilado (compilar + enlazar)Modular (permite usar bibliotecas propias o estndar que se enlazan con nuestros programas principales) (Demasiado) conciso(Relativamente) sencillo de aprender

  • 28 palabras reservadas:

    autodoubleifstaticbreakelseintstructcaseentrylongswitchcharexternregistertypedefcontinuefloatreturnuniondefaultforsizeofunsigneddogotoshortwhile

  • Estructura de un programaAlgoritmo principal es

    Inicio Fin[int] main([])[]{

    }

  • Un programa en C es una coleccin de una o ms funciones (algoritmos con nombre) que se llaman unas a otras, siendo siempre main() el nombre de la principal.

    [] nombre_funcin ([])[]{ [return ]}

    Al finalizar una funcin sta devuelve el control a la funcin que la ha llamado o al S.O. en el caso de la funcin main().

  • Hola Mundo#include int main() { printf("Hola mundo\n"); }

  • Analizando#include int main() { printf("Hola mundo\n"); }

    indica al compilador que debe incluir informacin acerca de la biblioteca estndar de entrada/salida

  • Analizando#include int main() { printf("Hola mundo\n"); }

    define una funcin llamada main (principal) que no recibe valores de argumentos

  • Analizando#include int main() { printf("Hola mundo\n"); }

    main llama a la funcin de biblioteca stdio llamada printf para escribir esta secuencia de caracteres

  • Formato libre de lneas (no hay lmite de tamao)Las sentencias deben separarse mediante punto y coma ;Las llaves {} agrupan conjuntos de sentencias lgicamente relacionadas (como inicio-fin, hacer-fin para,...)Los comentarios se ponen /* as */Todas las funciones llevan un tipo (int, por defecto)La instruccin return nos permite devolver explcitamente un valor. Si no se especifica, se devolver un valor arbitrario, del tipo de la funcin.Es obligatorio definir todas las variables que se van a utilizar, es decir, equivale a IMPLICIT NONE.

  • Tipos de datos bsicos

    char, carcter int, enterofloat, real de simple precisindouble, real de doble precisinNO HAY LGICOS

  • Tipos derivados de los bsicos

    signed char, unsigned char --> como intshort, signed short, unsigned, unsigned short: short int, signed short int, unsigned short int, signed int, unsigned intlong, signed long, unsigned: long int, signed long int, unsigned long int

  • main() { int entero1, entero2; char caracter1, c, car2; float real1, r2; double d1, d2;

    short int s; long int entero_largo; unsigned char cc; return 0;}Declaracin de variables o parmetros

  • Operadores bsicosAsignacin interna en C (=) int entero = 1, otro_entero;float r1, r2 = 1.2e-5;double d=1.23456789;char c = a, nueva_linea = \n;

    otro_entero = 12;r1 = r2 / 0.5;

    Declaracin de constantes#define PI 3.1416#define TAMANO_MAX 200

  • suma: a + ba = a + 1a += 1resta: c - d c = c - dc -= dincrementoa=a+1a++decrementob=b-1b--multiplicacin:e * fe = e * 2e *= 2divisin: g / hg = g / 10g /= 10mdulo/resto:i % 14i = i % 2i %= 2

    Operadores aritmticos

  • Operadores relacionalesmayor que: j > kmayor o igual que: ll >= mmenor que: n < omenor o igual que: q
  • Lgicos (falso == 0, cierto es != 0)and: w && yor: w || ynegacin: ! z

    Conversiones de tiposconversin al tipo de mayor precisinlos char se tratan como short intahormado o cast: (tipo_t ) fuerza a que el tipo resultado de evaluar sea de tipo_t res = (int ) real / entero; res2 = (float ) entero / 2;En las bibliotecas (#include ,...) existen otras funciones para realizar operaciones: sqrt(), sin(), cos(),...adems existen funciones estndar para forzar conversiones

  • CondicionalesCONDICIONAL SIMPLEif () if () { }

    CONDICIONAL COMPUESTOif () { } else { }

    CONDICIONAL GENERALIZADOswitch () { case : ; [break;] case : ; [break;] ... default: sentencias; }

  • 6. Iteracionesfor (equivalente al para algortmico)para desde hasta hacerfin para

    EQUIVALE Afor ( ; ; ) |for (=; ; ) { }

    for (i=1; i

  • while (equivale al mientras algortmico)mientras sea cierta hacer fin mientras

    while () |while () { }

    i=1;while (i != 100) printf (\n%d, i++);

    i=100;while (i-- != 100) printf (\n%d, i);

  • do while (equivale al repetir algortmico)repetir hasta que sea falsa

    do while ( != 0) |do { } while ( != 0)

    do { scanf (%d, &num); } while (num);

    do { scanf (%d, &num);} while (num != 0);

  • 7. Introduccin a las funciones E/S Escritura:int printf (, );

    La cadena de control especifica el formato y el nmero de argumentosLos argumentos son las variables o expresiones a escribirDevuelve n de argumentos correctamente escritosEn la cadena de control pueden aparecer:constantes carcter o cadena, que aparecen como tales,constantes tipo carcter: \b, \n, \t, \, \,...descriptores de formato, %?, que indican el formato con el que mostrarn los argumentos (equivalente al format de FORTRAN), donde ? es uno de los siguientes:

  • Los descriptores se pueden especificar mediante %m.n?Ejemplos:%10d%10.5f%20s

    Cdigo formatoDescripcin%ccarcter sencillo%dentero%ereal en notacin cientfica%freal simple precisin en notacin cientfica%gel ms corto de %e, %f%ooctal%xhexadecimal%scadena de caracteres%udecimal sin signo

  • Ejemplos:printf (Un entero en una linea: %d \n, entero);printf (Dos enteros en una linea: %d, %d\n, entero1, entero2);printf (Una cadena %s de caracteres.\n, cadena);printf (Varios %d tipos %c mezclados %s\n, entero, caracter, cadena);

    for (i=1; i

  • Lectura: int scanf (, );cadena de control: idem que en el printfDevuelve nmero de argumentos ledos correctamenteLos argumentos son las variables o expresiones a leer. Los argumentos que sean de tipo dato-resultado o resultado y sean de tipos escalares, deben llevar delante el operador &: &: indireccin, pasa la direccin de la variable y no su valor. Esta es la forma en la que C modifica los valores de los argumentos de una funcin:

    scanf (%d, &entero); /* lee un entero */scanf (%d, %d, &entero1, &entero2); /* ha leido dos enteros*/scanf (%s, cadena); /* leida una cadena, que no es escalar*/scanf (%d %c %s\n, &ent3, &c, string); /* lee un entero, ent3, y un carcter, c, ambos escalares, y una cadena, string, que no es escalar*/

  • Descriptores de formato para la lectura con scanf

    Cdigo formatoDescripcin y argumento%scadena de caracteres: string (sin &) porque es un array de caracteres%ccarcter sencillo: &caracter%dentero: &entero%e, %f, %greal en notacin cientfica, con signo y exponente opcionales: &real%ooctal: &octal%xhexadecimal: &hexa%udecimal sin signo: &sin_signo

  • 8. ArraysPodemos tener en C vectores de cualquier tipo bsico o compuesto: []+;

    int enteros[10], matriz[10][20];char cadena[20];

    matriz[9][19] = 12;cadena[0] = c;for (i=0; i

  • 9. Funciones y argumentosEn C slo hay funciones para representar algoritmos con nombre:[] nombre_funcin ([])[]{

    [return ]}

    Todas las funciones devuelven un valor (que define su tipo). Por defecto, devuelve un entero (int) que no hace falta declararMediante return se devuelve (un valor concreto y) el control a la funcin que la haya llamado.

  • Existen dos formas de pasar argumentos:por valor (equivalente a par. dato), y es la forma por defecto no modifica el valor del argumentopor referencia (equivalente a par. dato-resultado) se puede modificar el valor del argumento.

    El paso por referencia implica pasar la direccin de la variable (direccionamiento indirecto) mediante el operador & (indireccin).

    Ejemplo, en el caso de printf y scanf, que son funciones de la biblioteca estndar de C, los argumentos se pasan:por valor a printf, ya que no los modificapor referencia (mediante &) a scanf porque s los modifica

  • /* x e y son dos enteros que se pasan por valor a la funcin multiplica res es un entero, que se pasa por referencia, y se modifica con el resultado de la multiplicacin x, y, resp son enteros que se pasan por valor a la funcin printf */main() {int x, y, res;x = 10; y = 20; multiplica (x, y, &res);printf (\nEl resultado de multiplicar %d por %d es %d, x, y, res);}

    /* a y b son enteros y se pasan por valor no se modifican c es un puntero a entero (direccin a un entero). Para modificarlo hay que acceder a su contenido mediante *c*/ multiplica (a, b, c) int a, b, *c;{ *c = a * b;}

    *************************