lenguaje c

25

Upload: lililililili

Post on 23-Jun-2015

4.171 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Lenguaje C
Page 2: Lenguaje C

Todo programa en C consta de una o mas funciones, una de las cuales se llama MAIN. El programa siempre comenzara por la ejecución de la función MAIN.

Cada función debe tener :- Una cabecera de la función, que consta del nombre de la función, seguido

de un alista opciones de argumentos encerrados en paréntesis.- Una lista opcional de argumentos, si se incluyan estos en la cabecera.- Una sentencia compuesta, que contiene el resto de la función.

EJEMPLO:

/*Primer programa en C*/}#include <stdio.h>#include <conio.h>Void main () (// Imprime el texto en pantalla Printf (“hola mundo”)Getch ();{

Page 3: Lenguaje C

Todo programa c, desde el mas pequeño hasta el mas complejo, tiene un programa principal que es con el que se comienza la ejecución del programa.

Este programa principal es también una función, pero una función que esta por encima de todas las demás. Tiene la forma siguiente (la palabra void es opcional en este caso):

void main (void){Sentencia_1Sentencia_2}

Las llaves {…} constituyen el modo utilizado por el lenguaje C, para

agrupar varias sentencias de modo que se comparten como una

sentencia única (sentencia compuesta o bloque) todo el cuerpo

de la función debe ir comprendido entre las llaves de apertura y cierres.

Además la función MAIN () puede devolver un valor. El valor devuelto por MAIN () debe de ser tipo entero.

Page 4: Lenguaje C

Si MAIN no devuelve un numero entero al sistema operativo, mediante una sentencia return, entonces nuestro programa devolverá un numero desconocido.

Importante: es buena idea incluir un return al final de la función MAIN ().

Generalmente la devolución de un 0 indica que el sistema operativo ha finalizado las programas sin problemas, mientras que cualquier otro valor señala que ha producido algún error.

Int main (void){..instrucciones de algoritmo principal…}

Hay que observar que MAIN () no tiene argumentos, por lo que aparece el identificador void entre paréntesis en la declamación.

Page 5: Lenguaje C

En todo lenguaje de programación, tiene la posibilidad de trabajar con datos de distinta naturaleza: texto formado por caracteres alfanuméricos, números enteros. A continuación se mostrara los tipos de daros que se utilizan en C:

En C existen cinco tipos básicos de datos: dos para datos enteros (char e int), y tres para reales

(float, double y long double).

Con los tipos enteros se pueden usar además los modificadores detamaño (short, long), y/o los modificadores de signo (signed,

unsigned).

DATOSGENERALES

Char Signed char Unsigned char

Signed short on

Signed int Signed long int

DATOS REALES

Float Double Long double

Page 6: Lenguaje C
Page 7: Lenguaje C

Las variables carácter (tipo char) contienen un único carácter y se almacenan en un byte de memoria (8 bits).

En un bit se pueden almacenar dos valores (0 y 1); con dos bits se pueden almacenar 22 = 4 valores (00, 01, 10, 11 en binario; 0, 1 2, 3 en decimal).

Con 8 bits se podrán almacenar 28 = 256 valores diferentes (normalmente entre 0 y 255; con ciertos compiladores entre -128 y 127).

La declaración de variables tipo carácter puede tener la forma:

char nombre;char nombre1, nombre2, nombre3;

Page 8: Lenguaje C

De ordinario una variable tipo int se almacena en 2 bytes (16 bits), aunque algunos compiladores utilizan 4 bytes (32 bits).

Con 16 bits se pueden almacenar 216 = 65536 números enteros diferentes: de 0 al 65535 para variables sin signo, y de -32768 al 32767 para variables con signo (que pueden ser positivas y negativas), que es la opción por defecto.

Este es el rango de las variables tipo int.Una variable entera (tipo int) se declara, o se declara y se

inicializa en la forma:

unsigned int numero;int nota = 10;

En este caso la variable numero podrá estar entre 0 y 65535, mientras que nota deberá estar comprendida entre -32768 al 32767.

Page 9: Lenguaje C

Existe la posibilidad de utilizar enteros con un rango mayor si se especifica como tipo long en su declaración:

long int numero_grande;o, ya que la palabra clave int puede omitirse en este caso,long numero_grande;

El rango de un entero long puede variar según el computador o el compilador que se utilice, pero de ordinario se utilizan 4 bytes (32 bits) para almacenarlos, por lo que se pueden representar 232 = 4.294.967.296 números enteros diferentes.

Si se utilizan números con signo, podrán representarse números entre -2.147.483.648 y 2.147.483.647. También se pueden declarar enteros long que sean siempre positivos con la palabra unsigned:

unsigned long numero_positivo_muy_grande;

Page 10: Lenguaje C

Las variables tipo float tienen un rango y – sobre todo – una precisión muy limitada, insuficiente para la mayor parte de los cálculos técnicos y científicos.

Este problema se soluciona con el tipo double, que utiliza 8 bytes (64 bits) para almacenar una variable.

Se utilizan 53 bits para la mantisa (1 para el signo y 52 para el valor) y 11 para el exponente (1 para el signo y 10 para el valor). La precisión es en este caso, 252 = 4.503.599.627.370.496 lo cual representa entre 15 y 16 cifras decimales equivalentes.

Con respecto al rango, con un exponente de 10 bits el número más grande que se puede representar será del orden de 2 elevado a 2 elevado a 10 (que es 1024): 21024 = 1.7977 · 10308

Las variables tipo double se declaran de forma análoga a las anteriores:

double real_grande;

Page 11: Lenguaje C

Nombres de las variables Sólo están permitidas letras de la 'a' a la 'z' (la ñ no vale), números y el símbolo

'_', puede contener números, pero no en el primer carácter.

Ejemplos de nombres válidos: camiones

numerobuffera1j10hola29num_alumnos

Ejemplos de nombres no válidos: 1abc

nombre?Num /alumnos

Tampoco valen como nombres de variable las palabras reservadas que usa el compilador. Por ejemplo: for, main, do, while.

C distingue entre mayúsculas y minúsculas. Por lo tanto: Nombre

nombreNOMBRE

serían tres variables distintas.

Page 12: Lenguaje C

¿Dónde se declaran las variables?Tenemos dos posibilidades, una es declararla como global y

otra como local. Es global aquella variable que se declara fuera de la función main y local la que se declara dentro:

Las variables globales se pueden usar en cualquier procedimiento y las locales sólo pueden usarse en el procedimiento en el que se declaran. Es buena costumbre usar variables locales en vez de globales.

Podemos declarar más de una variable en una sola línea:int x, y.

Variable Global Variable Local

#include <stdio.h>

int x;

int main() {}

#include <stdio.h>

int main() {int x;}

Page 13: Lenguaje C

Un ejemplo de esta posibilidad de C++ es la declaración del contador dentro de un bucle. Por ejemplo:

# include main () {for (int i=0; i < 10; i++) {cout << "hola" << '\ n';}}

El índice i se ha definido dentro del bucle for. En algunos compiladores, su validez se extiende hasta el final del bloque donde han sido definidos

Page 14: Lenguaje C

En muchas aplicaciones son capaces de representar magnitudes que contengan una parte entera y una parte fraccionaria o decimal.

Es por eso que estas se representan por la `mentisa` que es un numero mayor o igual que 0.1 y menor que 1.0, y un `exponente` que representa la potencia de 10 por lo que hay que multiplicar la mantisa para obtener el numero considerado.

223 = 8.388.608Aquí es 22 elevado a la 3.

Page 15: Lenguaje C

Los operadores lógicos que se pueden utilizar en C son:

Los valores lógicos en C están representados por enteros: 0 es falso y un valor no cero es verdadero. Por ejemplo, el

operador ! toma un operando numérico y devuelve int 1 para un operando cero y int 0 en caso contrario.

El operador << devuelve 1 si los dos operandos son valores no cero, y 0 en cualquier otro caso. El operador || devuelve 1 si cualquiera de los dos operandos es no cero, y 0 en otro caso. Los operadores << y || evalúan primero el operando de su izquierda, y no evalúan el operando de la derecha si no es necesario. Por ejemplo, si y es cero, la expresión y << x/y da 0 y no realiza la división por 0.

Operador Acción

! Negación lógica

<< Y lógico

|| O lógico

Page 16: Lenguaje C

La función consiste en la definición del código necesario para que ésta realice las tareas por las que ha sido prevista.

La definición de una función se debe realizar en alguno de los ficheros que forman parte del programa. La forma general de la definición de una función es la siguiente:

tipo_valor_de_retorno nombre_funcion(lista de argumentos con tipos){declaración de variables y/o de otras funcionescódigo ejecutablereturn (expresión); // optativo}

La primera línea recibe el nombre de encabezamiento (header) y el resto de ladefinición – encerrado entre llaves – es el cuerpo (body) de la función. Cada función puede disponer de sus propias variables, declaradas al comienzo

de su código. Estas variables, por defecto, son de tipo auto, es decir, sólo son visibles dentro del bloque en el que han sido definidas, se crean cada vez que se ejecuta la función y permanecen ocultas para el resto del programa.

Si estas variables de definen como static, conservan su valor entre distintas llamadas a la función. También pueden hacerse visibles a la función variables globales definidas en otro fichero (o en el mismo fichero, si la definición está por debajo de donde se utilizan), declarándolas con la palabra clave extern.

Page 17: Lenguaje C

Las expresiones de C son unidades o componentes elementales de unas entidades de rango superior que son las sentencias.

Las sentencias son unidades completas, ejecutables en sí mismas. Ya se verá que muchos tipos de sentencias incorporan expresiones aritméticas, lógicas o generales como componentes de dichas sentencias.

SENTENCIAS SIMPLESUna sentencia simple es una expresión de algún tipo terminada

con un carácter (;). Un caso típico son las declaraciones o las sentencias aritméticas. Por ejemplo:

float real;espacio = espacio_inicial + velocidad * tiempo;

Page 18: Lenguaje C

SENTENCIA VACÍA Ó NULAEn algunas ocasiones es necesario introducir en el programa una

sentencia que ocupe un lugar, pero que no realice ninguna tarea. A esta sentencia se le denomina sentencia vacía y consta de un simple carácter (;). Por ejemplo:

;

SENTENCIAS COMPUESTAS O BLOQUESMuchas veces es necesario poner varias sentencias en un lugar del

programa donde debería haber una sola. Esto se realiza por medio de sentencias compuestas. Una sentencia

compuesta es un conjunto de declaraciones y de sentencias agrupadas dentro de llaves {...}.

También se conocen con el nombre de bloques. Una sentencia compuesta puede incluir otras sentencias, simples y compuestas.

Un ejemplo de sentencia compuesta es el siguiente:{int i = 1, j = 3, k;double masa;masa = 3.0;k = y + j;}

Page 19: Lenguaje C

Esta sentencia de control permite ejecutar o no una sentencia simple o compuesta según se cumpla o no una determinada condición.

if (expresión)sentencia;

Se evalúa expresión. Si el resultado es true (#0), se ejecuta sentencia; si el resultado es false (=0), se salta sentencia y se prosigue en la línea siguiente. Hay que recordar que sentencia puede ser una sentencia simple o compuesta (bloque { ... }).

Page 20: Lenguaje C

Esta sentencia permite realizar una bifurcación, ejecutando una parte u otra del programa

según se cumpla o no una cierta condición. La forma general es la siguiente:

if (expresion)sentencia_1;elsesentencia_2;

Si el resultado es true (#0), se ejecuta sentencia_1 y se prosigue en la línea siguiente a

sentencia_2; si el resultado es false (=0), se salta sentencia_1,se ejecuta sentencia_2 y se prosigue en la línea siguiente. Hay

que indicar aquí también quesentencia_1 y sentencia_2 pueden ser sentencias simples o

compuestas (bloques { ... }).

Page 21: Lenguaje C

Esta sentencia permite realizar una ramificación múltiple, ejecutando una entre varias partes del programa según se cumpla una entre n condiciones. La forma general es la siguiente:

if (expresion_1)sentencia_1;else if (expresion_2)sentencia_2;else if (expresion_3)sentencia_3;else if (...)...[elsesentencia_n;]

La expresión_1. Si el resultado es true, se ejecuta

sentencia_1.Si el resultado es false, se salta

sentencia_1 y se evalúa expresión_2.

Si el resultado es true se ejecuta sentencia_2, mientras que si

es false se evalúa expresión_3 y así sucesivamente.

Si ninguna de las expresiones o condiciones es true se ejecuta

expresion_n que es la opción por defecto (puede ser la

sentencia vacía, y en ese caso puede eliminarse junto con la

palabra (else). Todas las sentencias pueden ser simples o compuestas.

Page 22: Lenguaje C

switch (expresión) {     case valor1:        Sentencias a ejecutar si la expresión tiene como valor a valor1        break     case valor2:        Sentencias a ejecutar si la expresión tiene como valor a valor2        break     case valor3:        Sentencias a ejecutar si la expresión tiene como valor a valor3        break     default:        Sentencias a ejecutar si el valor no es ninguno de los anteriores }

Esta expresión se evalúa: si vale valor1 se ejecutan las sentencias relacionadas con ese caso. Si la expresión vale valor2 se ejecutan las instrucciones relacionadas con ese valor y así sucesivamente.

La palabra break es opcional, pero si no la ponemos a partir de que se encuentre coincidencia con un valor se ejecutarán todas las sentencias relacionadas con este y todas las siguientes. Es decir, si en nuestro esquema anterior no hubiese ningún break y la expresión valiese valor1, se ejecutarían las sentencias relacionadas con valor1 y también las relacionadas con valor2, valor3 y default.

Page 23: Lenguaje C

Switch (dia_de_la_semana) {     case 1:        document.write("Es Lunes")        break     case 2:        document.write("Es Martes")        break     case 3:        document.write("Es Miércoles")        break     case 4:        document.write("Es Jueves")        break     case 5:        document.write("Es viernes")        break     case 6:     case 7:        document.write("Es fin de semana")        break     default:        document.write("Ese día no existe") }

Supongamos que queremos indicar que día de la semana es.

Si el día es 1 (lunes) sacar un mensaje indicándolo, si el día es 2 (martes) debemos sacar un mensaje distinto y así sucesivamente para cada día de la semana, menos en el 6 (sábado) y 7 (domingo) que queremos mostrar el mensaje "es fin de semana".

Para días mayores que 7 indicaremos que ese día no existe.

Page 24: Lenguaje C

Formato general de la estructura for:for (expresión1; expresión2; expresión3);

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

Variable de control

Valor final de la variable de control

Incremento de la variable de control

Palabra reservada

La variable de control para cuenta el número de repeticiones, ya que ésta se incrementa según se especifique, cada vez que se ejecuta el grupo de instrucciones.

Cuando el valor de la variable indica que se ha ejecutado el numero correcto de repeticiones, se termina el ciclo y la computadora continua ejecutando el enunciado siguiente al de la estructura de repetición.

Page 25: Lenguaje C

Estructura general:for (inicialización; condición_de_continuación; actualización)sentencia;

Inicialización: Se ejecuta justo antes de entrar en el bucle. Se pueden inicializar una o más variables. En caso de que sean más de una, se separan por comas.

Condición de continuación: La condición se evalúa antes de cada iteración del bucle, incluso antes de la primera vez, continuando el bucle mientras la condición sea verdadera.

Actualización: Se realiza como si fuera la última sentencia del bloque de sentencias del bucle, es decir, sólo se ejecutará si la condición Es verdadera. Si se realizase más de una actualización, también se separarían por comas.

Ejemplos:For (x=0; x<10; x++)For (x=0, y=1; x+y<10; ++x, ++y)