Introduccion al lenguaje de programacion c

16
Introducción al Lenguaje de Programación C INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Transcript of Introduccion al lenguaje de programacion c

Introducción al Lenguaje de Programación C

INTRODUCCIÓN ALLENGUAJE DE

PROGRAMACIÓN C

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

Esta obra está bajo una licencia Creative CommonsReconocimiento-NoComercial-CompartirIgual 3.0 Venezuela (CC BY-NC-SA 3.0 VE)

Reconocer al autor de la obra. No puede utilizar este material con finescomerciales. Si modifica o reutiliza esta obra deberádifundir sus cambios con esta misma licencia.

Copia de licencia de la obra: https://creativecommons.org/licenses/by-nc-sa/3.0/ve/deed.es_ES

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

LENGUAJE DE PROGRAMACIÓN C.

Es un lenguaje de programación de alto nivel, originalmente desarrollado por Dennis M. Ritchie entre1969 y 1972 en los Laboratorios Bell, como evolución del anterior lenguaje B, a su vez basado enBCPL.

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

Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de medio nivel pero conmuchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivelpero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Loscompiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensambladorcon código C o acceder directamente a memoria o dispositivos periféricos.

CARACTERÍSTICAS DEL LENGUAJE C:● Tiene 32 palabras reservadas.

● Existen grandes cantidades de librerías en su biblioteca.

● Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los másempleados 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 eincluir múltiples archivos de código fuente.

● Acceso a memoria de bajo nivel mediante el uso de punteros.

● Interrupciones al procesador con uniones.

● Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia seconsigue pasando explícitamente a las funciones las direcciones de memoria de dichosparámetros.

● Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsuladoy 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").

NOTA: en el lenguaje C no es lo mismo una variable en minúsculas (ej. nom) a una en mayúsculas(NOM), por lo que te recomiendo que todo lo hagas en minúsculas.

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

TIPOS DE DATOS.El compilador de C reconoce unos tipos de datos estándar como enteros, flotante y carácter. Estos tiposde datos son:

•char: ocupa un byte en memoria, se suele utilizar para almacenar caracteres, pues el ASCII-E usaexactamente 8 bits para representar un caracter. (-128 a +127 ó 0 a 255).•int: ocupa 4 bytes y es actualmente el tamaño de la palabra de un ordenador de 32 bits, salvo que seesté en posesión de un ordenador de 64 bits con un SO que lo soporte (-2^31 a 2^31-1 ó 0 a 2^32-1).•long ó long int: generalmente ocupa dos palabras (64 bits u 8 bytes) pero depende del ordenador.•float: ocupa una palabra y se usa para representar números reales dado que su rango es mucho mayor,usaremos este tipo para la representación de números reales.•double: ocupa dos palabras y tiene una capacidad mucho mayor que un float.•short: ocupa dos bytes en memoria, lo usaremos exclusivamente cuando vayamos a necesitar grandescantidades de memoria y nos sobre precisión, si no, utilizaremos o el int o char, por cuestiones dearquitectura del ordenador (-2^15 a 2^15-1 ó 0 a 2^16-1).•unsigned: se usa para especificar que la variable no tiene signo, por lo que "aumenta" su capacidad encuanto a número positivos.•void: esto no es un tipo de dato en sí mismo, pero se usa para determinar que una función no recibeparámetros o no devuelve un resultado. No pueden existir variables del tipo void.

Tipo Maneja Carácter

char Un solo caracter cchar variable [largo] Cadena de caracteres s

int Enteros i,dint Entero Octal o

int Entero Hexadecimal xfloat Notación decimal f

La sintaxis para declarar variables o constantes con los diferentes tipos de datos es:

tipo_de_dato nombre_variable;

LA ESTRUCTURA DE UN PROGRAMA EN C SIGUE EL SIGUIENTE ESQUEMA:Directivas de pre-procesamiento.Declaración de constantes.Declaración de Variables globales.Especificación de funciones.Función main(void){Comentarios.Variables locales.Instrucciones del programa principalreturn 0;}

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

OPERADORES.Los programas en C constan de datos, sentencias y expresiones. Una expresión es una ecuaciónmatemática, tal como 25*13. en esta expresión el símbolo (*) es el operador de multiplicación y losnúmeros 25 y 13 se llaman operandos.

El lenguaje C soporta diferentes tipos de operadores: aritméticos, lógicos, y relacionales.

Operadores Aritméticos: Se utilizan para crear expresiones aritméticas; estas pueden resultar de la

unión de variables o constantes con operadores.

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

Operador Símbolo Ejemplo SignificadoSuma + a + b a más b

Resta - a - b a menos bMultiplicación * a * b a por b

División / a / b a dividido bResiduo % a % b a residuo de b

Signo (negativo) - -a a negativo

Operadores Relacionales: Son aquellos operadores que se utilizan para la toma de decisiones que se

puedan necesitar dentro de un programa.

Operador Símbolo Ejemplo SignificadoIgual == x == y x es igual a y

Diferente != x != y x es diferente de yMayor que > x > y x es mayor que y

Mayor o igual que >= x >= y x es mayor o igual que yMenor que < x < y x es menor que y

Menor o igual que <= x <= y x es menor o igual que y

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

Operadores Lógicos: Son operadores usados para realizar conectividad lógica en las expresiones.

Nota: el lenguaje C interpreta cualquier número entero distinto de 0 (cero) como verdadero, ya seapositivo como negativo, por lo que para usar el tipo de dato boolean no definido en C podremos usartanto un int como un char (el short no es aconsejable usarlo salvo problemas de memoria, cosa que apartir del año 2000 no suele ocurrir salvo al programar algunos microprocesadores).

Operador Símbolo Ejemplo Significado

Y (AND) && (a>b) && (c<d) a es mayor que b y c es menor que dO (OR) || (a>b) || (c<d) a es mayor que b o c es menor que d

NEGACION (NOT) ! !(a>b) a no es mayor que b

Operadores de Incremento o Decremento: Estos operadores permiten incrementar o decrementar en

una unidad el valor de una variable

Ejemplo SignificadoVariable++ El valor de la variable incrementa después de una operación

++Variable El valor de la variable incrementa antes de una operaciónVariable-- El valor de la variable disminuye después de una operación

--Variable El valor de la variable disminuye antes de una operación

También es posible crear variables de incremento o decremento mayores a la unidad, asi:

Ejemplo SignificadoVariable+=3 La variable incrementa su valor en 3 unidades

Variable-=5 La variable decrementa su valor en 5 unidades

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

LAS DIRECTIVAS DE PRE-PROCESAMIENTO.

Son sentencias que situamos generalmente al inicio del código fuente. Estas directivas se caracterizanpor ser líneas precedidas por el símbolo #, que es el operador de preproceso e indica que esa es unalínea de control.

#include: Le indica al compilador de C que incluya un archivo de cabecera o librería. Su sintaxis es:

#include <nombre de archivo de cabecera> . Ejemplo: #include <stdio.h>

Directivas #include y #defineComo hemos dicho en el anterior apartado, para poder trabajar con una constante es necesario haceruso de la directiva #define.

Una directiva son palabras que empiezan por el carácter especial # y es completamente invisible alcompilador, es decir, no lo tendrá en cuenta.

¿Qué quiere decir eso? Pues quiere decir que el compilador hará como en los comentarios, no tenerlosen cuenta, no obstante es otra de las partes implicadas en la compilación y construcción de un programala que se encarga de manejarlas, éste es el preprocesador.

El preprocesador es un programa independiente, el cual hace que interprete esas palabras especiales yrealice funciones específicas dependiendo de la palabra que sea, en el caso del #include lo que hace essustituir esa palabra por la librería al completo dentro de nuestro programa, de esa forma no esnecesario escribirlo todo de nuevo.

#define: Como hemos comentado, la directiva #define se encarga de definir las constantes que seutilizarán dentro del programa, éstas son invariables y no se pueden modificar.

#include: La directiva include se encarga de importar una librería concreta a nuestro programa, deésta forma podremos trabajar con funciones ya creadas sin necesidad de tener que importarlas.

C cuenta con una biblioteca estándar de ficheros donde podemos encontrar herramientas para lagestión de la pantalla, de funciones matemáticas extra, comparación de cadenas, análisis de errores otratamiento de formatos de fecha y hora. A continuación os pongo las librerías estándares de C.

<assert.h> <complex.h> <cstring> <ctype.h> <errno.h> <fenv.h><float.h> <inttypes.h> <iso646.h> <limits.h> <locale.h> <math.h><setjmp.h> <signal.h> <stdarg.h> <stdbool.h> <stdint.h> <stddef.h><stdio.h> <stdlib.h> <string.h> <tgmath.h> <time.h> <wchar.h><wctype.h>

Evidentemente con el paso del tiempo y los nuevos IDEs se han ido añadiendo muchas más, peroéstas son las más básicas. De momento nosotros usaremos la librería <stdio.h>.

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

NOMENCLATURA BÁSICA.

➢ #: se usa para dar instrucciones previas al compilador. Por ejemplo, incluir librerías de funciones enel código de nuestro programa, definir nombres o números que nunca cambiarán dentro del programa(constantes), etcétera. El uso de librerías y definiciones previas hace la escritura de programas mássencilla y estructurada, otro beneficio es que evita la necesidad de re-escribir complicadas rutinas queotras personas han escrito y probado a lo largo de mucho tiempo.➢ { }: Las llaves se usan para delimitar las secciones de código que pertenecen a una función. Tambiéndelimitan el dominio de instrucciones condicionales o reiterativas puesto que estas instruccionespueden contener varias líneas de otras instrucciones dentro de sí y son en realidad funciones internasdel compilador. Funcionan pues como símbolos de apertura y cierre.➢ ( ): Los paréntesis tiene varias utilidades. Entre estas, especificar el orden (prioridad) en la que debenser analizadas determinadas instrucciones. Funcionan exactamente igual a la escritura algebraica. Así (x+ 2) * 3, no es lo mismo que x + 2 * 3 puesto que, para el último caso se multiplicará primero 2 * 3 yluego se sumará "x"cualquiera que sea su valor. En el primer caso, usando paréntesis, indicamos alcompilador que debe sumar x + 2 y a esto se multiplicará después 3. Los paréntesis también sirven, enel mismo sentido, para delimitar los parámetros que le pasamos a una función o para establecercondiciones en estructuras condicionales o reiterativas. Son separadores.➢ ;: El punto y coma delimita el final de una instrucción o línea. Es un signo de cierre y siempre debeponerse. El único caso en que esto no se cumple es antes o después de las llaves puesto que las llavesfuncionan implícitamente como signos de apertura y cierre.➢ ,: La coma separa los parámetros enviados a las funciones. Es, evidentemente, un signo separador aligual que en la escritura literaria.

COMENTARIOS.

Un buen programa debe estar bien comentado. Los comentarios serán muy útiles para que al momentode actualizar tus programas entiendas cómo funcionan. Para escribir comentarios dentro de tusprogramas en C debes hacer uso de "/*" y "*/", y dentro de estos escribir tus comentarios así:

/* Estas son varias líneas de comentarios */

También puedes ingresar comentarios a tus programas así:

// Esta es una línea de comentarios // Esta es otra

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

VARIABLES Y CONSTANTES.Para programar en lenguaje C necesitamos almacenar los datos con los cuales trabajaremos.

Variables: Una variable es un nombre para identificar una posición de memoria donde el programa

guarda los distintos valores que vamos a usar. En un programa debemos DEFINIR todas las variables

que utilizaremos, antes de usarlas, para indicarle al compilador de qué tipo serán y cuánta memoria

debe destinar para albergar a cada una de ellas.

La declaración de variables puede ser de dos ámbitos; ámbito local y ámbito global.

Variable Local: Esta variable se declara después del main(), en la función en que vaya a ser utilizada yse destruye al final de esta función.

Variable Global: Esta variable se declara antes del main(). Puede ser utilizada en cualquier parte delprograma. Podemos declarar una variable en C así:

//Declaración de variables a y b #include <stdio.h> int a; //Incluimos la variable global a int main() { int b; //Incluimos la variable local b a=5; b=7; printf ("\n a es una variable global y toma el valor %d",a); printf ("\n b es una variable local y toma el valor %d",b); getchar(); }

Constante: Una constante es un nombre para identificar un valor de memoria que no varía durante laejecución del programa. Podemos declarar una constante en C así:

#include <stdio.h> #define PI 3.141592654 //Declaración de la constante PI int main() { printf("Pi vale %f", PI); getchar(); }

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

Es importante saber el elemento central de un programa en C es su función de inicio, la función “intmain (void)” es la función principal, es donde comienza un programa a ejecutarse siempre. La palabra“main” viene del inglés y significa “principal”. También hay que tener en cuenta que es una función ypor lo tanto debe devolver un valor, de momento no entraremos demasiado en este detalle, sólo esnecesario saber que un programa escrito en C, haga lo que haga, siempre tendrá la función “intmain(void)” y un “return 0;” para devolver obligatoriamente un valor.

El resto de elementos son completamente opcionales aunque esenciales según la naturaleza de nuestroprograma.

LA FUNCIÓN MAINEs imprescindible para un programa escrito en C, representa el punto de partida de la ejecucióndel programa.En caso de querer escribir, compilar y ejecutar un programa en C sin función main a la hora decompilar recibiremos el error “Referencia a `main' sin definir”.

Programa correcto:

#include <stdio.h>int main(void){int edad;printf("Tu edad es de %d \n", edad);return 0;}

Programa incorrecto:

#include <stdio.h>int edad;printf("Tu edad es de %d \n", edad);return 0;

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

ENTRADA Y SALIDA DE DATOS.

Libreria (stdio.h): printf y scanf, una introducción rápida.

Habrás notado que en los programas que hemos ido realizando usamos bastante estos tres términos,vamos a definir un poco para qué sirven con el fin de que podamos empezar a crear programascompletos y básicos.

stdio.h: stdio.h es la librería estándar de C en la cual vienen definidas las funciones, tipos yconstantes que podemos utilizar para gestionar (entre otras cosas) la entrada y salida de datos porteclado y pantalla respectivamente.

Printf: printf es una función que se encarga de mostrar por pantalla un texto con formato, un ejemplobásico es el siguiente:

printf (“Hola Mundo”);

Si quisiéramos mostrar por pantalla el valor de una o más variables debemos hacer uso de unasmarcas de formato, las cuales varían dependiendo del tipo de dato de la variable que queramos mostrar.Para un int debemos usar %d y para un float %f. Acto seguido el texto que se va a mostrar debemosponer una coma y el nombre de la variable, así con todas.

Ejemplo: printf(“Tu tienes %d lápices”, numerolapices);printf(“%d + %d es igual a %d”, numero1, numero2, numero3);

Es importante también decir que la función printf no hace un retorno de carro al terminar de pintar,para ello debemos poner una secuencia de escape especial, el cual indicará al programa que debecomenzar en una nueva línea. La secuencia de escape concretamente es \n.

Ejemplo: printf(“Rafa tiene %d juguetes \n Pepe tiene %d juguetes \n Entre los dos tienen %djuguetes”,numero1, numero2, numero3);

scanf: scanf es la función que se encarga de la recepción de valores introducidos por teclado, graciasa ésta función podemos especificarle al programa valores que serán asignados a variables. Un ejemplobásico sería éste:

scanf ("%d", &a);

Para poder asignar un valor concreto a una variable concreta es necesario utilizar las marcas deformato seguido de la coma y el símbolo “&” junto a la variable a la que le asignaremos el valor.

Ejemplo: printf(“Introduzca el número de alumnos: ”);scanf(“%d”,&numeroalumnos);printf(“Hay %d alumnos en la clase.”,numeroalumnos);

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

SALIDA:printf (“Hola mundo”);

Esta instrucción permite la escritura de datos y mensajes por pantalla.

• Todos los mensajes van entre comillas (“”)• Para escribir el resultado de una variable se escribe: printf (“%tipo”, variable )• Para imprimir en una sola instrucción un mensaje y el resultado:

printf (“Mensaje %tipo”, variable)• Para imprimir un dato y bajar el cursor al siguiente renglon se utiliza “\n ”, asi:

printf (“Mensaje %tipo \n”)

Ejemplo: printf (“El resultado de la suma es: %i \n”, resultado);

ENTRADA:scanf (“%TipoDeVariable”, &NombreDeLaVariable);

Esta instrucción permite recibir datos desde el teclado.

Ejemplo: printf (“Anote un número \n”);scanf (“%i”, &num);

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

SECUENCIAS DE ESCAPE.

Para insertar los caracteres especiales se encuentran las secuencias de escape, en C es posibleescribir estos caracteres mediante el uso de la barra invertida “\” seguida de una serie de caracteres. Acontinuación les detallo las secuencias que se pueden utilizar en C.

Secuencia Valor

\n Nueva línea (new line). El cursor pasa a la primera posición de la líneasiguiente

\r Retorno de carro (carriage return). El cursor pasa a la primera posición de lalínea donde nos encontremos.

\t Tabulador. El cursor pasa a la siguiente posición de tabulación.

\a Alerta. Crea un aviso bien de forma visible o bien mediante sonido.

\b Espacio atrás (backspace). Hace retroceder el cursor una posición a laizquierda.

\f Alimentación de página (form feed). Crea una nueva página.

\\ Muestra la barra invertida.

\” Muestra la comilla doble.

\? Muestra un interrogante.

\número_octal Muestra el carácter ASCII correspondiente según el número octal que se hayaespecificado.

\xnúmero_hexadecimal Muestra el carácter ASCII correspondiente según el número hexadecimal quese haya especificado.

\v Tabulación vertical.

\' Apóstrofo o comilla simple.

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

ESPECIFICADORES DE FORMATOS.

A continuación les dejo una relación de los especificadores de formato habilitadas paratrabajar con printf y scanf, sin duda muy útil para tenerlo a mano o para ir practicando.

Especificador Descripción

%c Un único Carácter

%d Número Decimal con signo (int)

%i Número Entero con signo (int)

%D Número entero long(o también %ld)

%f Numérico con Punto flotante (float)

%e Notación científica con e minúscula

%E Notación científica con E mayúscula

%g Formato para tipo punto flotante(float)

%G Formato para tipo punto flotante(float)

%o Número octal sin signo

%s Cadena de texto

%u Entero decimal sin signo

%U Entero sin signo long(o también %lu)

%x Hexadecimal

%X Hexadecimal entero largo

%p Puntero, dirección de memoria

%n Número de caracteres

%o Formato entero octal

%O Formato entero octal long(o también %lo)

%lf Formato double

%LF Formato long double

%l Formato double

%h Formato double

%L Formato long double

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

ASCII es el acrónimo inglés para American Standard Code for Information Interchange, o lo quees lo mismo, Código Estándar Estadounidense para el Intercambio de Información. Es un códigode caracteres creado en 1963 por el ANSI (American National Standards Institute o InstitutoNacional Estadounidense de Estándares) ideado para evolucionar los códigos usados en telegrafía ycuya funcionalidad es representar numéricamente caracteres y símbolos, de tal forma que cualquiercomputador pueda entender esa información.

El código ASCII comprende 128 caracteres, que van del 0 al 127. El código ASCII no es necesarioaprendérselo de memoria puesto que está en constante evolución y además cada vez van surgiendonuevos estándares evolucionados de ésta forma de representación de caracteres para el envío deinformación. El código ASCII está basado en el alfabeto latino, por lo que la representación decaracteres de otras lenguas no están recogidas aquí.

Una de las más típicas funciones del código ASCII es la de poder escribir específicamente un caráctersin necesidad de teclearlo. Ejemplos claros son los caracteres que simbolizan el retorno de carro, elsuprimir, el nulo o la tabulación, aunque también se pueden escribir letras del alfabeto, números ysímbolos tales como los de puntuación o interrogación.

Prácticamente todos los lenguajes de programación vienen provistos de sentencias concretas para usaro representar en pantalla un caracter especificando su código ASCII.

Tipos de caracteres del código ASCII.Los caracteres del código ASCII pueden ser divididos en dos clases:

Imprimibles – En éste conjunto entrarían todas las letras del alfabeto latino, números y símbolos decualquier tipo, el “espacio” también está incluido. Es información que se puede mostrar, es decir,imprimir.

No imprimibles – Se corresponden con los primeros 32 caracteres del código ASCII y representancódigos de control del hardware o de un programa, algunos de ellos son el escape, el retorno de carro,cancelar, finalización, etc.

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)

Introducción al Lenguaje de Programación C

Ing. Freivys Paredes Creative Commons (CC BY-NC-SA 3.0 VE)