Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Apuntes C, Apuntes de Matemáticas

Asignatura: Informática_1, Profesor: Pedro Luis Galindo Riaño, Carrera: Matemáticas, Universidad: UCA

Tipo: Apuntes

2013/2014

Subido el 15/10/2014

tha-2473
tha-2473 🇪🇸

3.9

(29)

10 documentos

1 / 67

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Introducción al C
Ampliación de Informática
Belarmino Pulido
Dpto. Informática
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43

Vista previa parcial del texto

¡Descarga Apuntes C y más Apuntes en PDF de Matemáticas solo en Docsity!

Introducción al C

Ampliación de Informática

Belarmino Pulido

Dpto. Informática

Capítulo 1

Introducción

Lenguaje de medio nivel (entre ensamblador y un lenguaje de alto nivel).

Muy sencillo, con 28 palabras clave.

Portátil hasta cierto punto, sólo se necesitaría recompilar.

Incorpora una librería estándar de funciones.

Permite construirse las propias funciones o estructuras de datos.

Utilizado fundamentalmente para la programación de sistemas, puesto que o forma parte o interere directamente con el sistema operativo del ordenador. Además genera un código que se ejecuta tan rápido como el ensamblador y está pensado como un lenguaje para programadores.

Es un lenguaje estructurado: uso de bloques de programación, funcio- nes.

El C es un lenguaje compilado: fuente −→ objeto −→ ejecutable. El proceso de compilación es más lento, frente al uso de un intérprete, pero una vez compilado, el programa se ejecuta mucho más rápidamente.

2.1. La función main

Primera función en ejecutarse, esté donde esté. Por cuestiones de claridad siempre suele ponerse al principio, y todas las funciones que se utilizan se ponen debajo. La única diferencia de main con otras funciones es que cuando se encuentra el procesador la llave de cierre termina el problema, en vez de devolver el control al programa principal.

2.2. Los argumentos de una función

Las funciones pueden tener cero o más argumentos, separados por comas. De tal manera que cuando se dene la función se ponen los parámetros formales, que contendrán la información que se les pase cuando se llame a la función. Hay que asegurarse que los parámetros formales se correspondan en número, tipo y posición con los reales.

El C es un lenguaje robusto y hace muy pocas comprobaciones de tipos, por lo que lo más probable es que haga algo, aunque no sea lo que nosotros queremos si nos equivocamos en los tipos. C tiende a utilizar posiciones de memoria, más que el concepto de variable, con lo cual ante unos parámetros de tipos distintos a los esperados el resultado de su utilización puede ser totalmente inesperado.

Ejemplo:

mul (x, y) /* funci'on mul / int x, y; / x e y se declaran como variables enteras / { return (xy); /* Devuelve el producto de ambos argumentos */ }

Ejemplo: Utilización de la función mul en un programa.

main() { int x, y, j, k;

x = 1; y = 2; p = mul(x,y); printf ("%d",p); /* escribe el valor de p en decimal */

j = 234; k = 10; p = mul (k, j); printf("%d",p); }

/* Aqui vendria la definicion de la funcion mul */

2.2.1. Puntos y coma, llaves, comentarios y posición

El punto y coma es un terminador de una entidad lógica. Las llaves permiten denir bloques de sentencias agrupadas. El C no reconoce el carácter de nueva línea como terminador, por tanto podemos extendernos lo que queramos. Se utiliza por motivos de claridad simplemente. Por tanto las siguientes expresiones son equivalentes:

x = y; y = y + 1; mul(x,y);

Es equivalente a:

x = y; y = y + 1; mul(x,y);

El formato de las líneas es libre en C, por lo que puede utilizarse indentación o no. Se recomienda utilizar siempre indentación para hacer más claros los programas.

2.2.2. La función printf

Función predenida que muestra por pantalla el contenido de sus argumen- tos.

printf (" %d", 123);

En general tendrá la forma:

printf (çadena de control", lista de argumentos);

Capítulo 3

Estructuras elementales:

variables, constantes,

expresiones y operadores

3.1. Variables

Pueden estar nombradas por uno o varios caracteres. Dependiendo de los compiladores se aceptarán nombres más o menos largos, pero al menos se aceptan seis distintos. Se puede incluir el carácter de subrayado. Pueden comenzar su nombre por una letra (más recomendable) o bien por el carácter de subrayado.

Se diferencian las letras mayúsculas de las minúsculas, por tanto la variable importe e IMPORTE son distintas.

Se puede dar cualquier nombre a una variable excepto: una palabra clave de C o el nombre de una función de C. En C es obligatorio denir todas las variables antes de utilizarlas, a diferencia por ejemplo de Fortran que asignaba tipos por defecto a algunas variables.

Lista de palabras clave en C. Notar el uso de minúsculas

auto double if static break else int struct case entry long switch char extern register typedef continue oat return union default for sizeof unsigned do goto short while

En C también se distinguen variables globales conocidas por todas las fun- ciones y las variables locales que son conocidas sólo dentro de su misma función. Las variables locales existen mientras la función es usada. Se crean cuando se llama a la función y se destruyen cuando se termina.

Cuando se denen variables se dice primero a qué tipo pertenecen y luego se les da el nombre. En C existen 7 tipos de datos predenidos, que luego se pueden ampliar utilizando los registros, que en C se conocen como estructuras o struct.

En la tabla siguiente aparecen los 7 tipos predenidos con su rango y longitud en bits para la mayor parte de los microprocesadores. Antes de utilizar esta información convendría contrastarla con el manual de C que se utilice. Notar también que en C los caracteres se manipulan y consideran como un entero sin signo.

Tipos de datos predenidos en C y sus palabras clave asociadas

Tipos de datos Palabra clave C Bits Rango carácter char 8 0 a 255 entero int 16 -32768 a 32767 entero corto short int 8 -128 a 127 entero largo long int 32 -4294967296 a 4294967295 entero sin signo unsigned int 16 0 a 65535 coma otante oat 32 6 dígitos precisión coma otante con doble precisión double^64

12 dígitos de precisión

Vamos a ver ahora un ejemplo de deniciones de variables dentro de una función , variables locales, y de deniciones fuera de la función main, que hacen a las variables globales.

ejemplo()

3.3. Los arrays o vectores

Podemos tener en C vectores de cualquier tipo de dato básico. Siendo su sintaxis la siguiente:

tipo nombre-variable [numero-elementos]

Importante:

El primer elemento del vector tendrá índice 0 y el último el número de elementos menos 1.

C no comprueba que se exceda el número de elementos de un vector.

En el caso de denir una cadena de caracteres como un vector, luego puede accederse de forma individual a cada uno de ellos como si fuese un carácter.

Ejemplos:

/* Definiciones */ int q[10]; char c[10]; float f[20];

/* Utilizacion / main() { char cadena[80]; / Array de 80 caracteres */

gets(cadena); /* rutina de C que lee una cadena por teclado / printf (cadena) / Imprime la cadena; tambien podria utilizarse printf ("%s",cadena); o bien puts(cadena) / / Impresion de caracteres de forma individual */ printf ("%c %c %c", cadena[0], cadena[1], cadena[2]);

}

3.4. Expresiones y operadores

3.4.1. Sentencias de asignación

nombre_variable = expresión

3.4.2. Conversión de tipos en asignaciones

En C cuando en una asignación hay tipos distintos a izquierda y derecha lo que se hace es transformar la expresión del lado derecho de la asignación para que quede del tipo del lado izquierdo. Se seguirán las siguientes normas para calibrar la pérdida de información en las conversiones:

Tipo obtenido

Tipo de la expresión

Pérdida posible de información char short int signo char int 8 bits mayor peso char long int 24 bits mayor peso short int int 8 bits mayor peso short int long int 24 bits mayor peso int long int 16 bits mayor peso int oat parte fraccionaria y posiblemente más oat double precisión resultado redondeado

3.4.3. Inicialización de variables y arrays

A la mayoría de las variables se les puede dar un valor al declararlas:

tipo nombre_variable = constante;

Ejemplos:

char ca = 'a'; int primero = 0; float balance = 123.45;

Casos especiales:

'\t' : tabulacion ''' : comilla simple

De esta manera pueden introducirse caracteres especiales como constantes.

3.4.6. Operadores

Operador Aritmético Acción  resta, también menos unario

  • suma
  • multiplicación / división % resto de la división entera   decremento: x  =   x −→ x = x - 1 ++ incremento: : x++ = ++x −→ x = x + 1

Comentarios

La división entre enteros o carácter produce un entero. Sin resto.

La operación módulo sólo se puede efectuar entre enteros.

Los operadores ++ y   se evalúan de forma diferente si están a la izquierda o a la derecha de su operador. Si están a la izquierda se evalúa la operación antes de hacer la asignación. Si están a la derecha se hace la operación de asignación y luego se realiza el incremento o decremento.

Para entender los conceptos de operadores lógicos y relacionales hay que tener en cuenta que en C se considera falso el valor 0, mientras que es cierto cualquier valor distinto de 0. Además el resultado de evaluar un operador lógico será 1 para signicar cierto y 0 para denotar falso.

Los operadores relacionales y lógicos tienen menos precedencia a la hora de evaluarse que los aritméticos.

Operador Relacional Acción

mayor que = mayor o igual que < menor que <= menor o igual que == igual != distinto

Operador lógico Acción && AND || OR ! NOT

Ejemplo:

Precedencia entre los operadores lógicos y relacionales:

maxima!

= < <= == != && minima ||

3.4.7. Operadores de bits

Las operaciones con bits se reeren a la comprobación, colocación o desplaza- miento de los bits actuales de una variable entera o carácter. Estas operacio- nes no pueden realizarse ni con los tipos oat ni double. Estas operaciones suelen realizarse cuando se comunican programas con dispositivos físicos.

Operador sobre bit Acción & AND | OR  XOR  complemento a uno

desplazamiento a la derecha << desplazamiento a la izquierda

Nota: Las operaciones entre bits se suelen utilizar para cambiar los valores de de- terminados bits de un operando, no para evaluar expresiones a cierto o a falso.

Los operadores de desplazamiento >> y << mueven todos los bits de una