Autor: Salvador Pozo Coronado E-mail: Salvador@c-con-clase.every1

Transcription

Autor: Salvador Pozo Coronadoe-mail: salvador@c-con-clase.every1.netTrascripción del curso alojado en la página: http://c-con-clase.20m.com

Curso C C con ClasePág. 2TABLA DE CONTENIDOTABLA DE CONTENIDO. 2CAPITULO 1 Toma de contacto . 6CAPITULO 2 Tipos de variables I . 8Tipos fundamentales . 8Tipo "char" o carácter: . 8Tipo "int" o entero: . 8Tipo "float" o coma flotante: . 8Tipo "bool" o Booleana: . 9Tipo "double" o coma flotante de doble precisión: . 9Tipo "void" o sin tipo:. 9Tipo "enum" o enumerado:. 9Palabras reservadas usadas en este capítulo. 10CAPITULO 3 Funciones I: Declaracion y definición . 11Palabras reservadas usadas en este capítulo. 13CAPITULO 4 Operadores I. 14Operadores aritméticos . 14Operadores de asignación . 15Operador coma. 16Operadores de igualdad . 16Operadores lógicos . 17Operadores relacionales . 18Nota:. 19CAPITULO 5 Sentencias. 20Bloques . 20Expresiones . 20Llamadas a función . 21Asignación . 21Nula. 21Bucles. 21Bucles "while" . 22Bucle "do while" . 22Bucle "for" . 22Etiquetas. 23Etiquetas de identificación. 23Etiquetas "case" y "default" . 23Selección . 24Sentencia "if.else" . 24Sentencia "switch" . 24Sentencias de salto . 25Sentencia de ruptura "break" . 25Sentencia de "continue" . 26Sentencia de salto "goto" . 26Sentencia de retorno "return". 27Sobre las sentencias de salto y la programación estructurada . 27Comentarios . 27Palabras reservadas usadas en este capítulo. 28Salvador Pozo Coronadosalvador@c-con-clase.every1.com

Curso C C con ClasePág. 3CAPITULO 6 Declaración de variables . 29Cómo se declaran las variables . 29Ámbito de las variables: . 29Ejemplos capítulos 1 a 6 . 31Ejemplo 1. 31Ejemplo 2. 32Ejemplo 3. 33Ejemplo 4. 34CAPITULO 7 Normas para la notación . 35Constantes "int" . 35Constantes "char". 35CAPITULO 8 Cadenas de caracteres . 38CAPITULO 9 Librerías estándar . 40Librería de entrada y salida fluidas "iostream.h". 40Librería de entrada y salida estándar "stdio.h" . 41Función "getchar()". 41Función "putchar()" . 42Función "gets()" . 42Función "puts()". 43Librería de entrada y salida estándar "stdio.h" . 44Función "printf()". 44Librería de rutinas de conversión estándar "stdlib.h" . 49Función "atoi()" . 49Librería de rutinas de conversión estándar "stdlib.h" . 50Función "max()". 50Función "min()" . 50Función "abs()" . 50Función "random()" . 51Librería rutinas de conversión y clasificación de caracteres "ctype.h". 51Función "toupper()" . 51Función "tolower()" . 52Funciones "is conjunto ()" . 52Ejemplos capítulos 7 a 9 . 54Ejemplo 5. 54Ejemplo 6. 54Ejemplo 7. 55Ejemplo 8. 56CAPITULO 10 Conversión de tipos. 58"Casting", conversiones explícitas de tipo:. 59CAPITULO 11 Tipos de variables II: Arrays o Arreglos. 60Asignación de arrays:. 60Algoritmos de ordenación, método de la burbuja:. 61Ejercicios (creo que ya podemos empezar con los ejercicios :-) : . 62CAPITULO 12 Tipos de variables III: Estructuras . 63Funciones en el interior de estructuras: . 64Asignación de estructuras: . 65Arrays de estructuras: . 66Estructuras anidadas: . 66Ejercicios: . 67CAPITULO 13 Tipos de variables IV: Punteros 1 . 68Salvador Pozo Coronadosalvador@c-con-clase.every1.com

Curso C C con ClasePág. 4Declaración de punteros: . 68Correspondencia entre arrays y punteros:. 70Operaciones con punteros:. 71Asignación. . 71Operaciones aritméticas. . 71Comparación entre punteros. . 72Punteros genéricos. . 72Punteros a estructuras: . 73Ejemplos: . 73Variables dinámicas:. 75Ejercicios: . 76CAPITULO 14 Operadores II: Más operadores . 77Operadores de Referencia (&) e Indirección (*). 77Operador "sizeof". 77Operadores . y - . 77Operador de preprocesador . 78Directiva define: . 78Directiva include:. 79Operadores de manejo de memoria "new" y "delete". 80Operador new:. 80Operador delete:. 80CAPITULO 15 Operadores III: Precedencia. 82Ejercicios: . 84CAPITULO 16 Funciones II: Parámetros por valor y por referencia. 85Referencias a variables: . 85Pasando parámetros por referencia: . 86Punteros como parámetros de funciones: . 87Arrays como parámetros de funciones: . 87Estructuras como parámetros de funciones: . 88CAPITULO 17 Más librerías estándar: string.h . 89Librería rutinas de manipulación de cadenas "string.h" . 89Función "strlen()". 89Función "strcpy()". 89Función "strcmp()". 90Función "strcat()". 90Función "strncpy()". 91Función "strncmp()". 92Función "strncat()". 92Función "strtok()" . 93CAPITULO 18 Estructuras II: Uniones. 95Estructuras anónimas: . 97CAPITULO 19 Punteros II: Arrays dinámicos. 98Problema: . 101CAPITULO 20 Operadores IV: Más operadores . 102Operadores de bits . 102Ejemplos: . 103Operador condicional. 103CAPITULO 21 Definición de tipos, tipos derivados. 105Ejemplos: . 105CAPITULO 22 Funciones III . 107Salvador Pozo Coronadosalvador@c-con-clase.every1.com

Curso C C con ClasePág. 5Parámetros con valores por defecto . 107Funciones con número de argumentos variable. 108Tipos: . 108Macros: . 108Argumentos de main. . 110Funciones inline . 111CAPITULO 23 Funciones IV: Sobrecarga . 113Ejercicio: . 114CAPITULO 24 Operadores V: Operadores sobrecargados . 115CAPITULO 25 El preprocesador. 117CAPITULO 26 Funciones V: Recursividad . 122CAPITULO 27 Tipos de Variables V: Tipos de almacenamiento . 126auto. 126register . 126static . 126extern . 126CAPITULO 28 Clases I: Definiciones . 128POO: . 128Objeto: . 128Mensaje:. 128Método: . 128Clase: . 128Interfaz: . 129Herencia: . 129CAPITULO 29 Declaración de una clase. 130Especificaciones de acceso: . 131Acceso privado, private: . 132Acceso público, public:. 132Acceso protegido, protected: . 132CAPITULO 30 Constructores . 133Sobrecarga de constructores: . 134Constructores con argumentos por defecto:. 135Asignación de objetos:. 135Constructor copia:. 136CAPITULO 31 Destructores . 138CAPITULO 32 El puntero this . 141CAPITULO 33 Sistema de protección . 142Declaraciones friend . 142Funciones externas amigas . 142Funciones amigas en otras clases. 143Clases amigas. 144Salvador Pozo Coronadosalvador@c-con-clase.every1.com

Curso C C con ClasePág. 6CAPITULO 1 Toma de contactoMe parece que la forma más rápida e interesante de empezar, y no perder potencialesseguidores de este curso, es con un ejemplo. Veamos nuestro primer programa C .Esto nos ayudará a sentar unas bases que resultarán muy útiles para los siguientesejemplos que irán apareciendo.int main(){int a;a 2 2;return 0;}No te preocupes demasiado si aún no captas todos los matices de este pequeñoprograma. Aprovecharemos la ocasión para explicar algunas de las peculiaridades deC , (aunque de hecho, este programa es casi un ejemplo de programa C). Iremosrepasando, muy someramente, el programa, línea a línea:- Primera línea: "int main()"Se trata de una línea muy especial, y la encontrarás en todos los programas C y C . Esel principio de la definición de una función. Todas las funciones C toman unos valoresde entrada, llamados parámetros o argumentos, y devuelven un valor de retorno. Laprimera palabra: "int", nos dice el tipo del valor de retorno de la función, en este caso unnúmero entero. La segunda palabra es el nombre de la función, en general será elnombre que usaremos cuando queramos usar o llamar a la función. En este caso "main"es una función especial, ya que nosotros no la usaremos nunca explicitamente, estafunción será la que tome el control cuando se ejecute nuestro programa. También sesabe que es una función por los paréntesis, todas las definiciones de funciones incluyenuna lista de argumentos de entrada entre paréntesis, en nuestro ejemplo es una listavacía, es decir, nuestra función no admite parámetros.- Segunda línea: "{"Aparentemente es una línea muy simple, las llaves encierran el cuerpo o definición de lafunción. Más adelante veremos que tienen otros usos.- Tercera línea: "int a;"Esta es nuestra primera sentencia, todas las sentencias terminan con un punto y coma.Esta concretamente es una declaración de variable, y nos dice, a nosotros y alcompilador, que usaremos una variable 'a' de tipo entero. Esta declaración obliga alcompilador a reservar un espacio de memoria para almacenar la variable 'a', pero no leda ningún valor inicial. En general contendrá "basura", es decir, lo que hubiera en esazona de memoria cuando se reservó.En C y C se distingue entre mayúsculas y minúsculas, así que "int a;" es distinto de"int A;", y también de "INT a;".Salvador Pozo Coronadosalvador@c-con-clase.every1.com

Curso C C con ClasePág. 7- Cuarta línea: ""Una línea vacía, no sirve para nada, desde el punto de vista del compilador, pero sirvepara separar visualmente la parte de declaración de variables de la parte de código queva a continuación. Una labor análoga la desempeña el tabulado de las líneas: ayuda ahacer los programas más fáciles de leer.- Quinta línea: "a 2 2;"Se trata de otra sentencia, ya que acaba con punto y coma. Esta es una sentencia deasignación. Le asigna a la variable 'a' el valor resultante de la operación "2 2".- Sexta línea: "return 0;"De nuevo una sentencia, "return" es una palabra reservada, propia de C y C . Indica alprograma que debe abandonar la ejecución de la función y continuar a partir del puntoen que se la llamó. El '0' es el valor de retorno de nuestra función. Cuando "main"retorna con 0 indica que todo ha ido bien.- Séptima línea: "}"Esta es la llave que cierra el cuerpo o definición de la función.Lo malo de este programa, a pesar de sumar correctamente "2 2", es que aparentementeno hace nada. No acepta datos externos y no proporciona ninguna salida de ningún tipo.En realidad es absolutamente inútil, salvo para fines didácticos, que es para lo que fuecreado. Paciencia, iremos poco a poco. En los siguientes capítulos veremos tresconceptos básicos, variables, funciones y operadores. Después estaremos en disposiciónde empezar a trabajar con ejemplos.Salvador Pozo Coronadosalvador@c-con-clase.every1.com

Curso C C con ClasePág. 8CAPITULO 2 Tipos de variables ILos tipos determinan cómo se manipulará la información contenida en una variable. Noolvides, si es que ya lo sabías, que la información en el interior de la memoria delordenador es siempre binaria, al menos a un cierto nivel. El tipo nos dice a nosotros y alcompilador como debe interpretarse y manipularse esta información binaria.De momento sólo veremos los tipos fundamentales, que son: void, char, int, float ydouble, en C se incluye también el tipo bool; junto con los modificadores: short,long, signed y unsigned o combinaciones de ellos.Tipos fundamentalesSólo existen cinco tipos fundamentales, y todos los tipos demás son derivados de ellos.Los veremos uno por uno, y veremos como les afectan cada uno de los modificadores.Tipo "char" o carácter:[signed unsigned] char identificador Es el tipo básico alfanumérico, y contiene un único carácter ASCII. El tamaño dememoria es de 1 byte u octeto. Hay que notar que en C un carácter es tratado en todocomo un número, de hecho puede ser declarado con y sin signo. Y si no se especifica elmodificador de signo, se asume que es con signo. Este tipo de variables es apto paraalmacenar números pequeños, como los dedos que tiene una persona, o letras, como lainicial de mi nombre de pila.Tipo "int" o entero:[signed unsigned] [short long] int identificador [signed unsigned] long [int] identificador [signed unsigned] short [int] identificador Las variables enteras almacenan números enteros dentro de los límites del tamaño, quedependen de la plataforma del compilador, 16 o 32 bits. Este tipo de variables es útilpara almacenar números relativamente grandes, pero sin decimales, por ejemplo eldinero que tienes en el banco, salvo que seas Bill Gates, o el número de lentejas que hayen un kilo de lentejas.Tipo "float" o coma flotante:float identificador Las variables de este tipo almacenan números en formato de coma flotante, mantisa yexponente, para entendernos, son números con decimales. Son aptos para variables detipo real, como por ejemplo el cambio entre y pesetas. O para números muy grandes,Salvador Pozo Coronadosalvador@c-con-clase.every1.com

Curso C C con ClasePág. 9como la producción mundial de trigo, contada en granos. El fuerte de estos números noes la precisión, sino el orden de magnidud. Por ejemplo, la siguiente cadena deoperaciones no dará el resultado correcto:float a 12335545621232154;a a 1;a a - 12335545621232154;Finalmente, a valdrá 0 y no 1, como sería de esperar. Los formatos en coma flotantesacrifican precisión en favor de tamaño. Si embargo el ejemplo si funcionaría connúmeros más pequeños. Esto hace que las variables de tipo float no sean muy adecuadaspara los bucles, como veremos más adelante.Tipo "bool" o Booleana:bool identificador Las variables de este tipo sólo pueden tomar dos valores "true" o "false". Sirven paraevaluar expresiones lógicas. Este tipo de variables se puede usar para almacenarrespuestas, por ejemplo: ¿Posees carné de conducir?. O para almacenar informacionesque sólo pueden tomar dos valores, por ejemplo: qué mano usas para escribir. En estoscasos debemos acuñar una regla, en este ejemplo, podría ser diestro- "true", zurdo "false".Tipo "double" o coma flotante de doble precisión:[long] double identificador Las variables de este tipo almacenan números en formato de coma flotante, mantisa yexponente, al igual que float, pero usan mayor precisión. Son aptos para variables detipo real. Usaremos estas variables cuando trabajemos con números grandes, perotambién necesitemos gran

Salvador Pozo Coronado salvador@c-con-clase.every1.com - Cuarta línea: "" Una línea vacía, no sirve para nada, desde el punto de vista del compilador, pero sirve para separar visualmente la parte de declaración de variables de la parte de código que va a continuación. Una labor análoga la desempeña el tabulado de las líneas: ayuda a