Lenguaje c completo 6 g x revisar x los estudiantes

28
LENGUAJE C CONTENIDO 1. INTRODUCCIÓN 1.1. CARACTERÍSTICAS DEL LENGUAJE C 1.2. VENTAJAS 2. ESTRUCTURA BASICA DE UN PROGRAMA EN C 3. TIPOS BASICOS DE DATOS EN EL LENGUAJE DE PROGRAMACION C 4. LAS VARIABLES 5. OPERADORES 5.1. OPERADORES MÁS FRECUENTES 5.2. OPERADORES DE ASIGNACION 5.3. OPERADORES DE RELACION 5.4. OPERADORES LÓGICOS 5.5. EXPRESIONES 6. FUNCION DE ENTRADA Scanf ( ) 7. FUNCIÓN DE ENTRADA Printf( ) 8. ESTRUCTURAS DE CONTROL DE FLUJO 8.1. SENTENCIAS ALTERNATIVAS 8.1.1. SENTENCIA If – Else 8.1.2. SENTENCIA Switch 8.2. SENTENCIA REPETITIVAS 8.2.1. SENTENCIA While 8.2.2. SENTENCIA Do .. While 8.2.3. SENTENCIA For 8.2.4. SENTENCIA Break 8.2.5. SENTENCIA Continue 9. LA DIRECTIVA #include 10. EL PREPROCESADOR #define 11. ARREGLOS EN LENGUAJE C 11.1. CONCEPTO

Transcript of Lenguaje c completo 6 g x revisar x los estudiantes

Page 1: Lenguaje c completo 6 g x revisar x los estudiantes

LENGUAJE C

CONTENIDO

1. INTRODUCCIÓN

1.1. CARACTERÍSTICAS DEL LENGUAJE C1.2. VENTAJAS

2. ESTRUCTURA BASICA DE UN PROGRAMA EN C

3. TIPOS BASICOS DE DATOS EN EL LENGUAJE DE PROGRAMACION C

4. LAS VARIABLES

5. OPERADORES

5.1. OPERADORES MÁS FRECUENTES5.2. OPERADORES DE ASIGNACION5.3. OPERADORES DE RELACION5.4. OPERADORES LÓGICOS5.5. EXPRESIONES

6. FUNCION DE ENTRADA Scanf ( )

7. FUNCIÓN DE ENTRADA Printf( )

8. ESTRUCTURAS DE CONTROL DE FLUJO

8.1. SENTENCIAS ALTERNATIVAS 8.1.1. SENTENCIA If – Else8.1.2. SENTENCIA Switch

8.2. SENTENCIA REPETITIVAS8.2.1. SENTENCIA While8.2.2. SENTENCIA Do .. While8.2.3. SENTENCIA For8.2.4. SENTENCIA Break8.2.5. SENTENCIA Continue

9. LA DIRECTIVA #include

10. EL PREPROCESADOR #define

11. ARREGLOS EN LENGUAJE C

11.1. CONCEPTO11.2. INICIALIZACION DE UN ARREGLO11.3. VECTORES11.4. MATRICES

12. FUNCIONES EN C

Page 2: Lenguaje c completo 6 g x revisar x los estudiantes

LENGUAJE C

1. INTRODUCCIÓN

Este lenguaje está inspirado en el Lenguaje B escrito por Ken Thompson en 1970, pero en 1972 Dennis Ritchie toma el relevo y modifica el Lenguaje B, creando el Lenguaje C. La novedad que proporcionó el Lenguaje C sobre el B fue el diseño de tipos y estructura de datos. El C proporciona varios tipos de datos, los tipos que ofrece son caracteres, números enteros y en coma flotante, de varios tamaños. Además se pueden crear tipos derivados mediante la utilización de punteros, vectores, registros y uniones.

C es un lenguaje de programación de propósito general, control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y más bien un lenguaje pequeño sencillo y no esta especializado en ningún tipo de aplicación. Esto lo hace un lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje.

Se diseño con el objetivo de ser un lenguaje orientado al diseño de Sistemas Operativos, por eso se ha convertido en un lenguaje de propósito general. Se le dio el nombre “C” porque muchas de sus características fueron tomadas de un lenguaje anterior llamado “B” fue esencialmente una simplificación del lenguaje BCPL, BCPL es un acrónimo ingles de Basic Combined Programming Lenguaje (Lenguaje de Programación Básico Combinado).

Hay muchas leyendas acerca del origen de C y el sistema operativo con el que esta íntimamente relacionado, Unix( Unix es un sistema operativo creado en lenguaje C). Algunas de ellas son:

El desarrollo de C fue el resultado del deseo de los programadores de jugar con Space Travel. Habían estado jugando en el mainframe de su compañía, pero debido a su poca capacidad de proceso y al tener que soportar 100 usuarios, Thompson y Ritchie no tenía suficiente control sobre la nave para evitar colisiones con los asteroides. Por ese motivo decidieron portar el juego a un PDP-7 (El PDP-7 de DEC fue clasificado como microcomputador en su lanzamiento) de la oficina que no se utilizaba; pero esa maquina no tenia sistema operativo así que decidieron escribir uno. Finalmente decidieron portar el sistema operativo del PDP-11 (Fue la primera minicomputadora en interconectar todos los elementos del sistema –procesador, memoria y periférico- a un único bus de comunicación, bidireccional, asíncrono) que había en su oficina pero era muy costoso, pues todo el código estaba escrito en lenguaje ensamblador(un lenguaje ensamblador es un lenguaje donde se trabaja con códigos y binarios). Entonces decidieron usar un lenguaje de alto nivel y portátil para que el sistema operativo se pudiera portar fácilmente de un ordenador a otro. Consideraron usar B, pero carecía de las funcionalidades necesarias para aprovechar algunas características avanzadas del PDP-11. Entonces empezaron a crear un nuevo lenguaje, C.

1.1. CARACTERÍSTICAS DEL LENGUAJE C

El lenguaje C se conoce como un lenguaje compilado(compilado quiere decir que viene con algunas características de otros programas). Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan del código fuente para funcionar (P. Ej.: Basic). Los compilados convierten el código fuente en un fichero objeto y este en un fichero ejecutable. Este es el caso del lenguaje C. Podemos decir que el lenguaje C es un lenguaje de nivel medio, ya que combina elementos del lenguaje de alto nivel con la funcionalidad del lenguaje ensamblador. Es un lenguaje estructurado, ya que permite crear procedimientos en bloques dentro de otros procedimientos. Hay que destacar que el C es un lenguaje portable, ya que permite utilizar el mismo código en diferentes equipos y sistemas informáticos. Por último solo queda decir que el C es un lenguaje relativamente pequeño; se puede describir en poco espacio y aprender rápidamente.

1.2. VENTAJAS

Page 3: Lenguaje c completo 6 g x revisar x los estudiantes

Lenguaje muy eficiente puesto que es posible utilizar sus características de bajo nivel para realizar implementaciones óptimas. A pesar de su bajo nivel es el lenguaje más portado en existencia, habiendo compiladores para casi todos los sistemas conocidos. Proporciona facilidades para realizar programas modulares y/o utilizar código o bibliotecas existentes.

2. ESTRUCTURA BASICA DE UN PROGRAMA EN C

La estructura de un programa sencillo en C es la siguiente:

Declaración de importaciones.- La declaración de importaciones se utiliza para comunicar al compilador qué acciones y funciones de las mencionadas en el programa no se encuentran implementadas en este. Estos procedimientos externos al programa se hallan disponibles en ciertas estructuras llamadas módulos que tienen asociado un fichero con extensión. h que contiene la lista de procedimientos importables. Para incluirlos es suficiente escribir una instrucción del tipo

#include <nombre_módulo.h> .- Ejemplos de módulos empleados con frecuencia son stdio (que contiene los procedimientos de entrada salida) y math (que contiene funciones matemáticas).

Definición de constantes.- Las definiciones de constantes asignan a un identificador una cadena de caracteres. Un proceso previo a la compilación substituirá el identificador por la cadena de caracteres cada vez que lo encuentre. Su formato es

#define identificador cadena.- Y al igual que con la instrucción #include, no hace falta poner el terminador; al final de la instrucción.

Definición de tipos.- La declaración de tipos permite definir tipos de datos que serán utilizados en todo el programa.

Void main (void){Declaración de variablesInstrucciones ejecutables}

La mejor forma de aprender un lenguaje es programando con él. El programa más sencillo que se puede escribir en C es el siguiente:

Main ( ){}

Como nos podemos imaginar, este programa no hace nada, pero contiene la parte más importante de cualquier programa C y además, es el más pequeño que se puede escribir y que se compile correctamente. En el se define la función main, que es la que ejecuta el sistema operativo al llamar a un programa C. El nombre de una función C siempre va seguida de paréntesis, tanto si tiene argumentos como si no. La definición de la función está formada por un bloque de sentencias, que esta encerrado entre llaves {}.

Main (). Indica el comienzo de la función principal del programa la cual se delimita con llaves.

EJEMPLO: Escriba un programa que imprima el mensaje "Primer programa"./* Primer programa */#include <stdio.h>

Page 4: Lenguaje c completo 6 g x revisar x los estudiantes

main(){printf("Primer programa\n");}

EJEMPLO: Escriba un programa que calcule el factorial de un número./* Factorial de un numero */#include <stdio.h>main(){int i, numero, factorial=1;printf("\nEscriba un numero entero para calcular su factorial: ");scanf("%d",&numero);for (i=numero; i>1; --i) factorial *= i;printf("\n%d! = %d\n",numero,factorial);}

3. TIPOS BASICOS DE DATOS EN EL LENGUAJE DE PROGRAMACION C

Los tipos básicos de datos definidos por C son caracteres. Números enteros y números en coma flotante. Los caracteres son representados por char, los enteros por short, int, long y los números en coma flotante por flota y double. Los tipos básicos disponibles y su tamaño son:

Char Carácter (normalmente 8 bits)Short Entero cortó con signo (normalmente 16 bits)Int Entero con signo (depende de la implementación)Unsigned Entero sin signo (depende de la implementación)Long Entero Largo con signo (normalmente 32 bits)Float Flotante simple (normalmente 32 bits) Double Flotante doble (normalmente 64 bits) La palabra unsigned en realidad es un modificador aplicable a tipos enteros, aunque si no se especifica un tipo se supone int. Un modificador es una palabra clave de C que indica que una variable, o función, no se comporta de forma normal. Hay también un modificador signed, pero como los tipos son por defecto con signo, casi no se utiliza.Las variables son definidas utilizando un identificador de tipo seguido del nombre de la variable. Veamos el siguiente programa

#include<stdio>main{ float cels,farth; /*Identificador o tipo de dato*/ farh=35.0; /*Variables*/ cels=5.0*(farh-32.0)/9.0; /*Asignamos valor a la variable*/ printf(“->%f F son %fC\n”,farh,cels);}

En el programa anterior se define dos variables float, se asigna un valor a la primera y se calcula la segunda mediante una expresión aritmética. DECLARACIÓN DE VARIABLES

#include <stdio.h> int a; /*Identificador Variable;*/main() /* Muestra dos valores*/ int b=4; /*Asignamos valor a la variable*/ printf(“b es local y vale %d”,b); a=5;}

PROGRAMA: Calcular la suma de los números 5 y 6

Page 5: Lenguaje c completo 6 g x revisar x los estudiantes

#include <stdio>main{ /*Identificador o tipo de dato*/ int a,b,c; /*Variables*/ a=5; /*Asignamos valores a las variables*/ b=6; c=a+b; }

4. LAS VARIABLES

Una variable es un tipo de dato, que tiene un identificador ( es el nombre de la variable), se utilizan para guardar datos dentro de un programa y se puede modificar a lo largo del programa. Una variable sólo puede tener un tipo de dato, para poder utilizar una variable primero tiene que ser declarada. El identificador (nombre de la variable) puede ser caracteres como letras :a-z y A-Z , los números del 0-9 y en símbolos subrayados_.

La ( ñ o Ñ) no esta permitida, y además hay que tener en cuenta que el primer carácter no puede ser un número .

DÓNDE SE DECLARAN.- Las variables pueden ser de dos tipos según el lugar donde declaremos: globales o locales:

Las variables globales deben ser declaradas antes de la main ( ) y pueden ser utilizadas en cualquier parte del programa.

Las variables locales deben ser declaradas después de la main ( ), solo existe dentro de la función en que se declare y se destruye al finalizar dicha función.

EJEMPLO:/*Declaración de variables*/# include<stdio.h> int a;main( ) /*Muestra los valores */ int b=4;

a=5;

Los siguientes son ejemplos de nombres de variables válidos: Char a; /* Es una letra del a-z */int pepe; /* No es una palabra reservada */ int toto12; /* El número va después de la palabra */ int un_nombre_largo; /* La palabra lleva subrayado */

Los siguientes son ejemplos no válidos de nombres de variables: Int 123var; /* Empieza por dígitos */Char int; /* Palabra reservada */ int una sola; /* Contiene espacios */int eñe; /* No funciona */

5. OPERADORES

5.1. OPERADORES MÁS FRECUENTES

OPERADORES ARITMETICOS

Tal como era de esperarse los operadores aritméticos comprenden las cuatro operaciones básicas, suma, resta, multiplicación y división, con un agregado, el operador módulo.

Page 6: Lenguaje c completo 6 g x revisar x los estudiantes

SIMBOLO DESCRIPCION EJEMPLO ORDEN DE EVALUACION+ SUMA a + b 3- RESTA a - b 3* MULTIPLICACION a * b 2/ DIVISION a / b 2% MODULO a % b 2- SIGNO -a 2

El operador módulo (%) se utiliza para calcular el resto del cociente entre dos ENTEROS, y NO puede ser aplicado a variables del tipo float ó double.

Si en una operación existen varios operadores, primero se evaluarán los de multiplicación, división y módulo y luego los de suma y resta.

Para evitar errores en los cálculos se pueden usar paréntesis, sin limitación de anidamiento, los que fuerzan a realizar primero las operaciones incluidas en ellos. Los paréntesis no disminuyen la velocidad a la que se ejecuta el programa sino que tan sólo obligan al compilador a realizar las operaciones en un orden dado, por lo que es una buena costumbre utilizarlos ampliamente.

Los paréntesis tienen un orden de precedencia 0, es decir que antes que nada se evalúa lo que ellos encierran.

Se puede observar que no existen operadores de potenciación, radicación, logaritmación, etc., ya que en el lenguaje C todas estas operaciones (y muchas otras) se realizan por medio de llamadas a Funciones.

El último de los operadores aritméticos es el de SIGNO. No debe confundírselo con el de resta, ya que este es un operador unitario que opera sobre una única variable cambiando el signo de su contenido numérico. Obviamente no existe el operador + unitario, ya que su operación sería DEJAR el signo de la variable, lo que se consigue simplemente por omisión del signo.

OPERADORES DE INCREMENTO Y DECREMENTO

Los operadores de incremento y decremento son sólo dos:

SIMBOLO DESCRIPCION EJEMPLO ORDEN DE EVALUACION++ incremento ++i ó i++ 1-- decremento --i ó i-- 1

Para visualizar rápidamente la función de los operadores antedichos, digamos que las sentencias:

a = a + 1 ; a++ ;

Tienen una acción idéntica, de la misma forma que:

a = a - 1 ; a-- ;

Es decir incrementa y decrementa a la variable en una unidad Si bien estos operadores se suelen emplear con variables int, pueden ser usados sin problemas con cualquier otro tipo de variable. Así si a es un float de valor 1.05 , luego de hacer a++ adoptará el valor de 2.05 y de la misma manera si b es una variable del tipo char que contiene el carácter 'C' , luego de hacer b-- su valor será 'B' .

Page 7: Lenguaje c completo 6 g x revisar x los estudiantes

Si bien las sentencias

i++ ; ++i ;

Son absolutamente equivalentes, en la mayoría de los casos la ubicación de los operadores incremento ó decremento indica cuando se realiza éste.

EJERCICIO/* Uso de los operadores aritméticos */ #include <stdio.h>main()/*Realiza varias operaciones*/{

int a=1,b=2,c=3,r;r=a+b;printf(“%d + %d = %d/n”,a,b,r);r=c-a;printf(“%d - %d = %d/n”,c,a,r);b++;printf(“b + 1 = %d”,b);

}

5.2. OPERADORES DE ASIGNACION

Los Operadores de Asignación, como su nombre lo indica, se encargan de asignarle a una variable, el resultado de una expresión o el valor de otra variable.

Se utilizan en forma de expresiones de asignación en los que se asigna en el valor de una expresión a un identificador. El operador de asignación más utilizado es "=" y su formato es:

identificador = expresión;

Donde el identificador representa por lo general una variable y una constante, una variable o una expresión más compleja.

Si los dos operandos de la expresión de asignación son de tipo de datos diferentes el valor de la expresión de la derecha se convertirá automáticamente al tipo de identificador de la izquierda de ésta forma la expresión de asignación será del mismo tipo de datos.

En Lenguaje C, están permitidas las asignaciones múltiples, Ej.:

Identificador1 = identificador2 = identificador3.....= identificador n=expresión.

En lenguaje C, también existen los siguientes operadores de asignación:

Operador Explicación+= Expresión1+=expresión2. Equivale a: expresión1=expresión1 + expresión2

-= i-=1. equivale a: i=i-1*= J*=2. Equivale a: j=j*2/= K/=m, equivale a: k=k/m%= P%n. Equivale a: p=p%n

Los Operadores de asignación tiene menos procedencia que el resto de los operadores y tienen asociatividad de izquierda a derecha.

5.3. OPERADORES DE RELACION

Page 8: Lenguaje c completo 6 g x revisar x los estudiantes

Concepto: Los operadores de relación también denominados operadores binarios lógicos y de comparación se utilizan para comparar la veracidad o la falsedad de determinadas propuestas de relación.

Los operadores en el Lenguaje C son los siguientes:

< Menor que a < 3> Mayor que a > b<= Menor o igual que -7.7 <= 99.335>= Mayor o igual que -1.3 >= (2.0*x+3.3)

Una expresión de relación como a < b si el valor de a es menor que el de b la expresión es VERDADERA y como en C lo VERDADERO se representa con cualquier valor distinto a 0, es natural que a < b tenga el valor INT 1 .Si el valor a no es menor que el de b entonces la expresión es FALSA y a < b tendrá el valor de INT 0

Cada uno de ellos toma dos expresiones como operandos y dan como resultado el valor de INT 0 o el valor de INT 1

= = igual a / que (identidad) C = = w!= desigual de / que desigualdad) x != -2.77

Una expresión de desigualdad como a = = b es VERDADERA o FALSA si el valor de a es igual al de b entonces la expresión producirá el valor INT 1 en caso contrario si a no es igual a b la expresión producirá el valor INT 0 la expresión a != b se evalúa de la misma manera.

Las expresiones

Son similares a primera vista se parecen en la forma pero son completamente diferentes a cuanto la función. La expresión a = = b es una prueba de igualdad mientras que a = b es una expresión de asignación.

5.4. OPERADORES LÓGICOS

Como operadores lógicos designamos a aquellos operadores que nos permiten “conectar”' un par de propiedades. Los operadores lógicos tienen la función de enlazar dos o más expresiones en una única expresión compleja.

Tabla de Operadores LógicosSIMBOLO DESCRIPCION EJEMPLO ORDEN DE EVALUACION&& Y (AND) (a>b) && (c<d) 11| | O (OR) (a>b) | | (c<d) 12! negación (NOT) 2

&& Y (AND) V and V = VERDAD (V) CASO CONTRARIO FALSO (F)|| O (OR) F or F = FALSO (F) CASO CONTRARIO VERDAD (V) ! negación NOT) (F=V)

(V=F) contrario de la respuesta original

EJEMPLO

#include<stdio.h> main()/* compara un numero introducido*/ { int numero; printf("Introduce un número:"); scanf("%d",&numero); if(!(numero>0)) printf("El número es negativo"); else if((numero<=100)&&( numero>=25))

a = = b a = b

Page 9: Lenguaje c completo 6 g x revisar x los estudiantes

printf("El número esta entre 25 y 100"); else if(( numero<25) | | (numero>100)) printf("El número no esta entre 25 y 100"); }

5.5. EXPRESIONES

Las expresiones son combinaciones de constantes, variables, símbolos de operación (operadores), paréntesis y nombres de funciones especiales. Por ejemplo:

Sqrt ((p-a)*(p`-b)*(p-c)); (a+b+c) / p;

Una expresión toma un valor que se determina por el resultado de la ejecución de las operaciones indicadas, tomando los valores de las variables y constantes y aplicando las prioridades de las operaciones. Según de operadores que se empleen en la expresión. Estas se clasifican en aritméticas, lógicas, de caracteres o mixtas.

EXPRESIONES ARITMETICAS.- Este tipo de expresiones nos sirve para representar formulas matemáticas y utilizan los operadores siguientes:

Las expresiones que tienen 2 o mas operadores requieren reglas de procedencia que permiten determinar el orden en que habrán de efectuarse dichas operaciones. Por ejemplo:

5+8*2 /*primero se hace 8 * 2 y luego se suma 55 + 16 = 2110 % 3 = 1 //regresa el residuo de la división entera

Nota: En caso de coincidir la prioridad de varios operadores en una expresión el orden en el que se efectúan es de izquierda a derecha.

EXPRESIONES DE RELACION.- Utilizan los operadores siguientes:

EXPRESIONES LOGICAS.- Utilizan los operadores siguientes:

Por ejemplo:

OPERADOR ACCION+ SUMA - RESTA* MULTIPLICACION/ DIVICION% MODULO++ INCREMENTO -- DECREMENTO

OPERADORES RELACIONALES ACCION> MAYOR QUE>= MAYOR O IGUAL< MENOR QUE<= MENOR O IGUAL= = IGUAL¡ = DIFERENTE

OPERADORES LOGICOS ACCION& & YII O¡ NEGACION

Page 10: Lenguaje c completo 6 g x revisar x los estudiantes

5 > 3 && 6 > 2Año%4 == 0 && año %100! = 0 II AÑO % 400 == 0

Las expresiones lógicas se utilizan para formar condiciones en los programas.

PRECEDENCIA DE LOS OPERADORES.PRECEDENCIA OPERADORES ASOCIATIVIDAD0 () [] - > Izq. A derecha 1 Sizeof(tipo)! - ++--signo *& Derecha a izq.2 * / % Izq. A derecha 3 + - Izq. A derecha 4 > Izq. A derecha 5 >= Izq. A derecha 6 = =!= Izq. A derecha 7 & Izq. A derecha 8 ^ Izq. A derecha 9 I Izq. A derecha 10 & & Izq. A derecha 11 II Izq. A derecha 12 ?: Derecha a izq.13 = += -= *= ETC. Derecha a izq.

6. FUNCION DE ENTRADA Scanf ( )

La sentencia scanf permite ingresar datos en la memoria del ordenador a través del teclado.

La sintaxis de la sentencia scanf es la siguiente:

scanf (control, arg1, arg2,…);

En la cadena de control se indican, por regla general, los modificadores que harán referencia al tipo de dato de los argumentos. Los argumentos indicados serán, nuevamente, las variables.

Los modificadores más utilizados son:

• %c Un único caracter• %d Un entero con signo, en base decimal• %u Un entero sin signo, en base decimal• %o Un entero en base octal• %x Un entero en base hexadecimal• %e Un número real en coma flotante, con exponente• %f Un número real en coma flotante, sin exponente

Page 11: Lenguaje c completo 6 g x revisar x los estudiantes

• %s Una cadena de caracteres• %p Valor de apuntador• %ld Entero largo

La principal característica de la sentencia scanf es que necesita saber la posición de la memoria del ordenador en que se encuentra la variable para poder almacenar la información obtenida. Para indicar esta posición utilizaremos el símbolo ampersand (&), que colocaremos delante del nombre de cada variable.

EJEMPLO:

/* Uso de la sentencia scanf ().*/#include <stdio.h>main () /* Solicita dos datos*/{

char nombre [10];int edad;printf (“Introduce tu nombre: “);

scanf (“%s”, nombre); printf (“Introduce tu edad: “); scanf (“%d”, &edad); }Para poder diferenciar dos o más datos en el ingreso, estos deben separarse por espacios en blanco o tabulados; es válido en todo especificador, excepto en el especificador %c porque lee todos los caracteres.

int numero;float promedio;scanf (“%d%f”, &numero, &promedio);

Si desea conocer el número de datos leídos, se asigna la función scanf () a una variable entera.

numero= scanf (“%d%c%f, &entero, &caracter, &real);

En la variable número se almacena el valor que corresponde al número de datos válidos leídos.

7. FUNCIÓN DE ENTRADA Printf( )

La función printf, toma como argumento una cadena de caracteres que se imprimen, van encerradas entre dobles comillas " ". El símbolo \n indica un cambio de línea.

Su sintaxis es la siguiente:

/*Imprime en pantalla el texto y el valor*/printf ("El valor es %d", variable);

Esta función es la mas utilizada en C para desplegar información en la pantalla.

El formato general para la función printf() es:

printf(<cadena_formato> , <elem> , <elem> , ... );

donde:

La sustitución de los elementos se hace de acuerdo a los comandos de formato incluidos en cadena_formato, los cuales empiezan con un símbolo de porciento (%).

En la siguiente tabla se muestran los comandos de formato más usuales:

Page 12: Lenguaje c completo 6 g x revisar x los estudiantes

Comando Sirve para:%d entero%u entero sin signo%ld entero largo%p valor de apuntador%f número de punto flotante%e número de punto flotante en valor exponencial%c carácter%s cadena de caracteres%x entero en formato hexadecimal%o entero en formato octal

EJEMPLO:

/* IMPRIME ENTEROS EN DECIMAL*/ #include <stdio.h> int main() { int y=12345; printf("%13d\n",y); return 0; }

TABLA DE SENTENCIAS DE ESCAPE

8. ESTRUCTURAS DE CONTROL DE FLUJO

BLOQUE DE SENTENCIAS

Denominaremos bloque de sentencias al conjunto de sentencias individuales incluidas dentro un par de llaves. Este tipo de sentencias permiten variar el flujo del programa en base a unas determinadas condiciones. Por ejemplo:

{sentencia 1 ;sentencia 2 ;.............sentencia n ;}

8.1. SENTENCIAS ALTERNATIVAS

8.1.1. SENTENCIA If – Else

Secuencia Nombre Significado\n New line Baja el cursor a la siguiente línea.\r Return Retorna el cursor a la primera columna,

misma línea.\a Alert Sonido de campana.\b Backspace El cursor regresa un caracter en la línea.\t Tab Siguiente posición del tabulador.\f Form feed Caracter de salto de página.\nnn Octal nnn Emite el caracter correspondiente al octal

nn.\Oxhh Hexadecimal Emite el caracter correspondiente al

hexadecimal hh.\” Quote Emite el caracter comillas.\’ Single

quoteEmite el caracter apóstrofe.

\\ Backslash Emite el caracter backslash.

Page 13: Lenguaje c completo 6 g x revisar x los estudiantes

Este tipo de estructura permite decidir, durante el programa, si una instrucción o instrucciones se debe ejecutar o no según cierta condición

Sintaxis:

if (condición) sentencia;

La sentencia solo se ejecuta si se cumple la condición. En caso contrario el programa sigue su curso sin ejecutar la sentencia.

Otro formato:

if (condición) sentencia1;else sentencia2;

Si se cumple la condición ejecutará la sentencia1, sino ejecutará la sentencia2. En cualquier caso, el programa continuará a partir de la sentencia2. Ejemplo

/* Uso de la sentencia condicional IF. */#include <stdio.h>main() /* Simula una clave de acceso */{ int usuario,clave=18276; printf("Introduce tu clave: "); scanf("%d",&usuario); if(usuario==clave) printf("Acceso permitido"); else printf("Acceso denegado");}

Otro formato:

if (condición) sentencia1; else if (condición) sentencia2;else if (condición) sentencia3;else sentencia4;

Con este formato el flujo del programa únicamente entra en una de las condiciones. Si una de ellas se cumple, se ejecuta la sentencia correspondiente y salta hasta el final de la estructura para continuar con el programa.

Existe la posibilidad de utilizar llaves para ejecutar más de una sentencia dentro de la misma condición. Ejemplo

/* Uso de la sentencia condicional ELSE...IF. */#include <stdio.h>main() /* Escribe beb‚,ni¤o o adulto */{ int edad; printf("Introduce tu edad: "); scanf("%d",&edad); if (edad<1) printf("Lo siento, te has equivocado."); else if (edad<3) printf("Eres un bebe‚"); else if (edad<13) printf("Eres un niño"); else printf("Eres adulto");}

if( a > b ) if( (a > b) != 0 ) Las dos expresiones son idénticas, aunque

Page 14: Lenguaje c completo 6 g x revisar x los estudiantes

a veces resulta más claro expresarla de la segunda manera, sobre todo en los primeros contactos con el lenguaje.

if(a)if(!a)

if(a!= 0)if(a = 0 )

Las dos superiores son idénticas entre sí, al igual que las dos inferiores Obsérvese que (!a) dará un valor CIERTO sólo cuando a sea FALSO.

if( a = b )if( a = b )

/* Error */ La primera es una expresión correcta, el IF se realizará sólo si a es igual a b. En cambio la segunda es un error, ya que no se está comparando a con b, sino ASIGNANDO el valor de esta a aquella. Sin embargo, a veces puede usarse como un truco (un poco sucio) de programación , ya que primero se realiza la asignación y luego se evalúa el resultado de esta para realizar el IF , es entonces equivalente a escribir :

if(a) ................................

a = b ;Con el ahorro de una línea de programa (a costa de la legibilidad del mismo).

8.1.2. SENTENCIA Switch

Se puede programar con un grupo de sentencias if then else anidadas, aunque ello puede ser confuso y de complicada lectura. Para evitarlo nos puede ayudar la sentencia switch.

Su utilización es:

switch (valor) {case valor1: <sentencias>case valor2: <sentencias>...default: <sentencias>}

Cuando se encuentra una sentencia case que concuerda con el valor del switch se ejecutan las sentencias que le siguen y todas las demás a partir de ahí, a no ser que se introduzca una sentencia break para salir de la sentencia switch. Por ejemplo: ver_opcion ( char c ){switch(c){ case 'a': printf("Op A\n"); break; case 'b': printf("Op B\n"); break; case 'c':case 'd': printf("Op C o D\n"); break;default: printf("Op ?\n");}}

Aunque con la estructura if…else if se pueden realizar comprobaciones múltiples. Con esta sentencia, la computadora comprueba una variable sucesivamente frente a una lista de constantes enteras o de carácter. Después de encontrar una coincidencia, la computadora ejecuta la sentencia o bloque de sentencias que se asocian con la constante. La forma general de la sentencia switch es: Switch (variable) {

Page 15: Lenguaje c completo 6 g x revisar x los estudiantes

Case constante1: Secuencia de sentencias Break;Case constante2: Secuencia de sentencias Break;Case constante3: Secuencia de sentencias Break;…Default:Secuencia de sentencias }

La computadora ejecuta la sentencia default si no coincide ninguna constante con la varible, esta ultima es opcional. Cuando se encuentra una coincidencia la computadora ejecuta las sentencias asociadas con el case hasta encontrar la sentencia break con la que sale de la estructura switch.Las limitaciones que tiene la sentencia switch…case respecto a la estructura if son:- Solo tiene posibilidad de revisar una sola variable - Con switch solo se puede comprobar por igualdad, mientras que con if puede ser con cualquier operador relacional.- No se puede probar mas de una constante por case La forma como se puede simular el último punto, es no teniendo sentencias asociadas a un case, es decir, teniendo una sentencia nula donde solo se pone el caso, con lo que se permite que el flujo del programa caiga al omitir las sentencias, como se muestra a continuación:Switch (letra){ Case ’a’: Case ’e’: Case ’i’: Case ’o’: Case ’u’: Numvocales++; Break; Case ’ ’: Numesp++; Break; Default: Numotras++; Break;}

8.2. SENTENCIA REPETITIVAS

8.2.1. SENTENCIA While

Su sintaxis es: while (condición) { Sentencia1; Sentencia2; }

En esta sentencia de repetición se debe cumplir la condición planteada para que se repitan todas las instrucciones caso contrario continuará con otros procesos. Si en el interior hay más de una sentencia estas deberán ir entre llaves para que se ejecuten como un bloque.

EJEMPLO:

/*Uso de la sentencia While.*/#include <stdio.h>

Page 16: Lenguaje c completo 6 g x revisar x los estudiantes

main()/*Escribe los números del 1 al 10 */{ Int numero=1; While(numero<=10) { Printf(“%d\n”,numero); numero++; }}

8.2.2. SENTENCIA Do…While

Su sintaxis es: do{ Sentencia1; Sentencia2; }While (condición);

Se ejecuta al menos una vez la operación antes de evaluar la condición planteada. La repetición se realiza por falso y si es verdad continúa con el proceso.

La única diferencia entre las sentencias while y do…while es que con la segunda el cuerpo del bucle se ejecutará por lo menos una vez.

Ejemplo:/*Uso de la sentencia Do…While.*/#include <stdio.h>main()/*Muestra un menú si no se pulsa 4 */{ Char selección; Do{ Printf(“1.- Comenzar\n”); Printf(“2.- Abrir\n”); Printf(“3.- Grabar\n”); Printf(“4.- Salir\n”); Printf(“Escoge una opción: ”); Selección=getchar(); Switch(seleccion){ Case ‘1’:printf(“Opción 1”); Break; Case ‘2’:printf(“Opción 2”); Break; Case ‘3’:printf(“Opción 3”); } }While (selección=’4’);}

8.2.3. SENTENCIA For

For tiene una sintaxis notablemente distinta a la de las estructuras while y do-while, pero realiza la misma función.

Sintaxis:

For (sentencias_1, expresión; sentencias_2) {sentencias;sentencias;……..}

Sentencias_1.-esta sentencia se realiza una sola vez en la estructura y va antes que todas las demás sentencias (asignación al contador).

Page 17: Lenguaje c completo 6 g x revisar x los estudiantes

Expresión.-es la condición de permanencia en la estructura for para que se pueda complementar el bucle de repeticiones, siempre que sea verdadera la expresión se repetirá el bucle.

Sentencias_2.-sentencia que se la realiza después de la sentencia iterada (incremento del contador).

Grupo de Sentencias.- son las sentencias que se repiten (parte del códigoque se repite).

EJEMPLO: Programa que imprime los números enteros y pares del 1 al 100:

#include <stdio.h>Void main (void) { Short i; For(i= 2 ; i <= 100 ;i += 2) Printf(”%par”,i);}

En cada uno de los espacios de la estructura for, pueden consignarse ninguna, una o varias expresiones separadas por comas.

8.2.4. SENTENCIA Break

La sentencia break se utiliza para salir de un bucle o una estructura por los motivos que nos de la gana, bien sea por que ha dado un error o por que precisamos que salga de ese bucle si no se cumplen ciertas condiciones.

La sentencia break escapa de la estructuras de control iterantes (bucles) actuales for, while, o switch.

La sentencia break acepta un parámetro opcional, el cual determina cuantas estructuras de control hay que escapar.

EJEMPLO:For (;;) {Printf(“ingrese un valor entero. Con <0> termina:”):Scanf(“%d” &num);If (¡num)Break}

EJEMPLO:While((ch=getchar())!=EOF+if (ch==’\n’) {Break;Putchar(ch);}

8.2.5. SENTENCIA Continue

Del mismo modo que en un bucle se puede desear romper la iteración, también se puede desear continuar con el bucle, pero dejando pasar una determinada iteración.

Se puede usar la sentencia continue dentro de los bucles para saltar a otra sentencia, aunque no puede ser llamada fuera de un bucle.

/*Uso de la sentencia CONTINUE*/#include <stdio.h>Main()/* Escribe del 1 al 100 menos el 25*/{Int numero =1

Page 18: Lenguaje c completo 6 g x revisar x los estudiantes

While numero <=100){If (numero ==25) { Numero ++ Continue;}Prinf(“%d\n”,numero );Numero++; }}

9. LA DIRECTIVA #include

La primera línea del programa está compuesta por una directiva: " #include " que implica la orden de leer un archivo de texto especificado en el nombre que sigue a la misma ( <stdio.h> ) y reemplazar esta línea por el contenido de dicho archivo.

En este archivo están incluidas declaraciones de las funciones luego llamadas por el programa ( por ejemplo printf() ) necesarias para que el compilador las procese.Hay dos formas distintas de invocar al archivo, a saber, si el archivo invocado está delimitado por comillas (por ejemplo "stdio.h") el compilador lo buscará en el directorio activo en el momento de compilar y si en cambio se lo delimita con los signos <.......> lo buscará en algun otro directorio, cuyo nombre habitualmente se le suministra en el momento de la instalación del compilador en el disco ( por ejemplo C:\TC\INCLUDE). Por lo general estos archivos son guardados en un directorio llamado INCLUDE y el nombre de los mismos está terminado con la extensión .h. La razón de la existencia de estos archivos es la de evitar la repetición de la escritura de largas definiciones en cada programa.

La directiva "#include" no es una sentencia de programa sino una orden de que se copie literalmente un archivo de texto en el lugar en que ella está ubicada, por lo que no es necesario terminarla con "; ".

La directiva: #include es una orden para compilador de leer un archivo de texto especificado en el nombre que sigue a la misma , <stdio.h>. El compilador reemplaza la directiva por el contenido de dicho archivo. Este fichero contiene las declaraciones de las funciones llamadas por el programa. La directiva #include no es una sentencia de programa, por lo que no es necesario terminarla con el punto y coma ';'. El compilador tiene varias maneras de buscar un archivo.

#include <stdio.h>#include "stdio.h"#include"a:\milibreria.h"1) Directorio de instalación C:\BC\INCLUDE2) Directorio activo en el momento.3) Directorio indicado.

10. EL PREPROCESADOR #define

El preprocesador es una parte del compilador que se ejecuta en primer lugar, cuando se compila una fuente C y que realiza unas determinadas operaciones, independientes del propio lenguaje C .

El control del preprocesador se realiza mediante determinadas directivas.

Una directiva es una palabra que interpreta el preprocesador, que siempre va precedida por el símbolo # y que está situada a principio de línea.

La directiva #define se utiliza para definir una macro. Las macros proporcionan principalmente un mecanismo para la sustitución léxica (conjunto de palabras que se conoce).

Page 19: Lenguaje c completo 6 g x revisar x los estudiantes

Una macro se define de la forma #define id secuencia. #

Dos constantes muy habituales son:

# define PI 3.141592# define NUMERO E 2.718281

EJEMPLO: Programa que calcula el área de un círculo.

# define PI 3.141592int main(){ float area, radio; printf(“Programa que calcula el área de un circulo”); printf(“Ingrese el radio:\n”); scant(“%f”,&radio); area=PI*(radio*radio); printf(“El área es:”,area);}

11. ARREGLOS EN LENGUAJE C

11.1. CONCEPTO

Los arreglos son una colección de variables del mismo tipo que se referencia utilizando un nombre común. Un arreglo consta de posiciones de memoria continua. La dirección mas baja corresponde al primer elemento y la mas alta al ultimo. Un arreglo puede tener una o varias dimensiones. Para ascender un elemento en particular de un arreglo se usa un índice.

Formato para declarar un arreglo unidimensional es:

Tipo nombre_arr[tamaño]

En C todos los arreglos usan cero como índice para el primer elemento La forma como puede ser asesados los elementos de un arreglo, es de la siguiente forma

Listanum[2]=15; /*asigna 15 al tercer elemento del arreglo listanum*/Num=listanum[2]; /*asigna el contenido del 3er elemento a la variable Num*/C

Permite arreglos con mas de una dimensión el formato general es:

Tipo nombre_arr[tam1] [tam2]…[tamN];

Por ejemplo un arreglo de enteros bidimensionales se escribe como:

Int tabladenums[50] [50];

Observar que para declarar cada dimensión lleva sus propios paréntesis cuadrados

11.2. INICIALIZACION DE UN ARREGLO

La inicialización de un arreglo puede realizarse a través de una lista es mas corta que el numero de elementos se inicializan en cero. Ejemplo:

Float a[5] = {0.1, 1.2, 2.3, 3.4, 4.5};Double b[100] = {1.1}; /*los 99 restantes serán 0.0*/Int a[ ] = {2, 3, -5, 7}; /*equivale a a[4]={ 2, 3, -5, 7}*/

En el caso de que sobrepase el final durante una operación de asignación; entonces se asignaran los valores a otra variable o a un trozo del código, esto es, si se dimensiona un arreglo de tamaño N se puede referenciar el arreglo por encima de N sin provocar ningún mensaje de error en tiempo

Page 20: Lenguaje c completo 6 g x revisar x los estudiantes

de compilación o ejecución, incluso aunque probablemente se provoque el fallo del programa. Como programadores es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que podrá en ellos el programa.

11.3. VECTORES

Es un arreglo de N elementos organizados en una dimensión donde N recibe el nombre de longitud o tamaño de un vector. Para hacer referencia a un elemento del vector se usa el nombre del mismo seguido del índice (entre corchetes) el cual indica una posición en particular de un vector ejemplo:

Vec[x]Vec nombre del arregloX numero de datos que constituyen el arreglo

11.4. MATRICES

Es un arreglo de M*N N elementos organizados en dos dimensión donde M es el numero de filas o renglones y N el numero de columnas Donde R indica el renglón y C indica la columna donde se encuentra almacenado el dato. Para representar una matriz se nenecita el nombre de la matriz se necesita el nombre de la matriz acompañada de dos índices.

Mat[R,C]R indica el renglón y C indica la columna

12. FUNCIONES EN C

Las funciones son los bloques constructores de C y el lugar donde se da toda la actividad del programa. Toda función regresa un valor.

Definición.- La forma general de definición de una función es:

tipo nombre(lista de parámetros){cuerpo de la función}

Una función puede no tener parámetros, en cuyo caso la lista de parámetros está vacía; sin embargo, los paréntesis son necesarios.

Sintaxis:

{Tipo de Valor} [Nombre de la Función] (Lista de Tipos de Parámetros) Float Mí_función (inti,doubleJ); {Declaración de variables Y/o de otras funciones Código ejecutableReturn(expresión)//optativo}

Llamadas a funciones.- Las funciones son llamadas para su ejecución desde cualquier parte del código. Para llamar a una función con nombre Hola con n parámetros y una función Mundo con cero parámetros, se debe respetar la sintaxis siguiente:

x = Hola( <par1>,<par2>, ... ,<parn>);       x = Mundo(); La variable x tomará el valor regresado por la función. Para llamar a un procedimiento con nombre Hola con n parámetros y un procedimiento Mundo con cero parámetros, la sintaxis a respetar es:

Page 21: Lenguaje c completo 6 g x revisar x los estudiantes

Hola( <par1>,<par2>, ... ,<parn>);       Mundo();

Salida de una función.- Cuando la función termina deber regresar a donde fue llamada. Esto se hace a travez de la instrucción: return.

Esta instrucción existe bajo dos formas:             1.) return(x);             2.) return;

1. La primera regresa al programa que la llamó el valor de x, si x es una variable, o la constante x si esta es una constante.

2. La segunda simplemente regresa el control a quien llamó a la función.

Estructura de una Función.- Una función esta definida por su tipo, un nombre que la identifique y parámetros. Esta constituida por declaración de variables propias a la función así como bloques de instrucciones.

tipo nombre(par1,par2,parN) tipo1 par1; tipo2 par2; ...... tipoN parN;

Ventajas Funciones:

Elimina redundancia y ahorra espacio memoria (ventaja histórica) Estructura y organiza código Facilita mantenimiento y localización de errores Promueve reuso de código, ej: librerías División trabajo equipos desarrolladores

Ejemplo llamado y regreso funciones:

/*Funcion que calcula el valor absoluto de un numero*/ #include <stdio.h>        main() {  int a,b;        printf(''de el valor de a:'');        scanf(&a); b=absoluto(a);       printf(''El absoluto es '',b; }

int absoluto(x)  int x; { if (x<0)       x = x*-1 else x=x;return(x);}