Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de...

90
Tema 3 Introducción al C Fundamentos de Informática

Transcript of Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de...

Page 1: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

Tema 3Introducción al C

Fundamentos de Informática

Page 2: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

2Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Índice

• Conceptos básicos• Tipos de datos• Constantes• Variables• Expresiones• Funciones básicas de entrada/salida

Page 3: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

3Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Conceptos básicos

1

Page 4: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

4Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

El primer programa en C/* Programa: prog1.c** Descripción: Pedir un valor y*              mostrarlo por pantalla** Revisión: 0.0; 5/10/02** Autor: Luis Pérez**/#include <stdio.h> /* Incluye las funciones de E/S estándar */

int main (void) { /* Función principal */

int contador; /* Declaración de variables */

/* Instrucciones del programa principal */

printf(“\n Este es mi primer programa “);

printf(“\n Indique el numero de alumnos del curso: “);

scanf(“%d”, &contador);

printf(“\n Somos %d alumnos”, contador);

return 0;

}

El resultado del programa sería:Este es mi primer programaIndique el numero de alumnos del curso: 36

Somos 36 alumnos

Page 5: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

5Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

El primer programa en C• Las partes de que consta un programa en C:

– Comentarios: están delimitados por /* y */• En este ejemplo, se utilizan comentarios para realizar la ficha del programa y para poner comentarios explicativos 

• Son ignorados por el compilador– Directivas del preprocesador: comienzan por el carácter ‘#’

• El preprocesador es una parte del compilador que se encarga de realizar el proceso de traducción.

• Las directivas se encargan de dar instrucciones al preprocesador para realizar algún tipo de proceso.

• En particular: # include <stdio.h>, indica que se incluyan en este fichero los prototipos de las funciones de entrada / salida estándar.

• La directiva # define PI 3.1416 indica que en todos los sitios del fichero donde se encuentre PI se sustituya por el valor indicado.

– Función principal: int main(void)• Marca el punto donde el programa comienza la ejecución.• Es obligatorio en todos los programas. (Una y sólo una)

– Llaves: {....}• Las llaves son necesarias en todos los programas en C.• Indican el principio y el final de las instrucciones de una función. En este ejemplo, principio y final del programa. 

Page 6: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

6Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

El primer programa en C• Las partes de que consta un programa en C:

– Parte de declaraciones• En esta primera parte de una función se van a declarar las variables (los almacenes que se van a usar en el programa).

• En C se declaran todas las variables al comienzo de la función• La manera de declarar variables:

tipo_dato nombre_variable;• En el ejemplo, se crea una variable de tipo entero (int) que se llama “contador”.

– Instrucciones: siempre finalizan con el carácter ‘;’• Son órdenes de realización de alguna acción• Función de salida: printf()

– Se utiliza para escribir información por la salida estándar (habitualmente, la pantalla)

– En el ejemplo: printf(“\n Este es mi primer programa “);Consigue que aparezca en pantalla el mensaje

Este es mi primer programa

Page 7: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

7Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

El primer programa en C

• Función de salida: printf()– En el ejemplo: printf(“\n Somos %d alumnos”, contador);Consigue que aparezca en pantalla ese mensaje sustituyendo en la cadena de caracteres el %d por el valor que esté almacenado en contador.Por ejemplo, si somos 36 alumnos y es el valor que ha introducido el usuario, aparecerá el mensaje:

Somos 36 alumnos• Función de entrada: scanf()

– Es una función que permite a los programas leer la entrada del usuario desde el teclado.

– Se puede pensar en ella como la opuesta al printf().– En el ejemplo: scanf(“%d”, &contador);El especificador de formato “%d” indica que se va a leer un número entero del teclado.El nombre de la variable junto con el carácter ‘&’, es decir, &contador, indica que la información que se lea de teclado se va a almacenar en la variable contador.Si el usuario introduce el valor 36 cuando se le solicita el número de alumnos de la clase, dicho valor se almacenará en la variable contador.

Page 8: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

8Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

El primer programa en C¿Cómo conseguimos desde este programa crear un código ejecutable?

Utilizando el compilador.

Archivos de Biblioteca

Programa Fuente(texto)

Compilador EnlazadorPrograma Objeto

Archivos incluídos

Errores de Compilación(léxicos, sintácticos y semánticos)

ProgramaEjecutable

Otros programas objetos

Page 9: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

9Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

El primer programa en C

Page 10: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

10Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

El primer programa en CLa importancia de la estructura– A nivel de compilador, el programa anterior podría escribirse:

#include <stdio.h> /* Incluye las funciones de E/S estándar */int main(void) /* Función principal */{ int i;/* Declaración de variables */ /* Instrucciones del programa principal */ printf(“\nEste es mi primer programa “); printf(“\n¿Cuántos alumnos hay en este curso: “);scanf(“%d”, &i); printf(“\nSomos  %d alumnos”, i);}

– Normas de estilo• Escribir al principio de cada programa un comentario con la ficha del programa

• Cada instrucción (incluidas las declaraciones de variables) debe estar en una línea separada

• Las instrucciones pertenecientes a un bloque han de estar sangradas con respecto a las llaves que lo delimitan

• Hay que comentar todos lo aspectos importantes del código escrito• Siempre debe ser prioritario el escribir un programa fácil de entender

Page 11: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

11Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

El conjunto de caracteres en C

• Programas construidos con bloques básicos:

– Letras A‐Z, a‐z, 0‐9 y caracteres especiales– + ‐ * / = % & # ! ¿ ^ “ ‘ ~ \ | \ < > ( ) [ ] { } : ; . , _ Spc– Representación de elementos especiales con caracteres especiales \n, \t, \b• Secuencias de escape

– Cada secuencia de escape representa un único carácter

Page 12: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

12Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Identificadores y palabras reservadas en C

• Identificador:

– Nombre que se le da a un elemento de un programa• variables, funciones, vectores.

– Formados por letras y dígitos en cualquier orden– Primer carácter debe ser siempre una letra– C distingue entre identificadores en mayúsculas y minúsculas

• No es igual el identificador variable1 que el identificador VARIABLE1

– Como regla estándar definiremos los identificadores siempre en minúsculas

– Es posible utilizar el carácter “_” en los identificadores– No son válidos los caracteres acentuados– Definir los identificadores con caracteres suficientes como paraque den una idea clara de la información que contienen

Page 13: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

13Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Identificadores y palabras reservadas en C

Ejemplo: Identificadores validos

x Y45 Producto_1 _temp

area CONJUNTO Imp_IVAApellidos

Ejemplo: Identificadores no validos

5suma El primer carácter es un número

“juan” “ carácter no válido,(solo letras y �).

Resultado-1 - carácter no válido.

Solucion prob El espacio en blanco no está permitido

área Los identificadores no se acentúan.

Page 14: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

14Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Identificadores y palabras reservadas en C

• Exiten en C un conjunto de palabras reservadas que tienen un significado estándar predefinido.

– Estas palabras se corresponden con instrucciones de C.

– Las palabras reservadas se escriben en minúsculas no siendo equivalentes a sus correspondientes mayúsculas.

auto extern sizeof breakfloat static

case for structchar goto switchconst if typedefcontinue int union default

long unsigned doregister void

double return volatileenum signed

Page 15: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

15Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipo de datos

2

Page 16: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

16Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipos de datos ‐ Codificación de la información

• Dígito binario, Bit: unidad elemental de almacenamiento (Valor 0 o 1)

• Byte: unidad básica de almacenamiento (8 bits)

• Codificación: correspondencia entre las magnitudes binarios con las que trabaja el ordenador y las magnitudes que existen en el mundo real

0 1 0 1 0 0 1 0

MEMORIA PRINCIPAL

E L P E R R O F E R O Z

-127.2

+457

(Texto)

(Real)

(Entero)

Instrucciones101100010100101010011010100011110100101000101001

Page 17: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

17Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipos de datos ‐ Codificación de la información

• Sistema de numeración posicional:  Cada número está formado por una serie de dígitos de forma que cada dígito tiene un peso en función de su posición.

Sistema decimal:   348  = 3 * 102 + 4 * 101 + 8 * 100

Sistema binario:   1110 = 1 * 23 +  1 * 22 + 1 * 21 + 0 * 20

• Dígito más significativo: Dígito más a la izquierda• Dígito menos significativo: Dígito más a la derecha

Page 18: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

18Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipos de datos ‐ Codificación de la información• Codificación de números enteros: Se utilizan todos los dígitos para 

representar el número.  Con n dígitos:Número entero: Rango de valores de ‐2n‐1 a 2n‐1‐1Número natural: Rango de valores de 0 a 2n‐1Por ejemplo, con 8 bits se puede representar 

Naturales: 0 a 28‐1, un número entre 0 a 255Enteros: ‐28‐1 a 28‐1‐1, un número entre ‐128 y 127

• Codificación de números reales: se representa con una mantisa y un exponente 

Por ejemplo, el número 3.701 será 0.3701 x 101

• Codificación de caracteres alfanuméricos: se le asigna a cada carácter una valor numérico, correspondiente al código ASCII

• Codificación del programa: el juego de instrucciones del procesador está codificado en binarioPor facilidad, a cada instrucción se le asigna un mnemónico fácil de recordar (instrucciones del lenguaje ensamblador)

Page 19: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

19Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipos de datos• C permite la posibilidad de trabajar con distintos tipos de datos• Existen cuatro tipos de datos básicos:

– Carácter: char– Número entero: int– Números reales: representación en coma flotante: float ó double

• Representados de diferente manera en la memoria del computador

• Según la cantidad de memoria que utilicen dan una idea del RANGO de valores permitido – La cantidad de memoria varía según el tipo de ordenador y el compilador– El operador sizeof() indica el número de bytes de memoria que se utiliza para almacenar un

tipo de dato o una variable

TIPOS BÁSICOS:Tipo de dato Descripción Requisito de memoria

int Cantidad entera 2-4 bytes o una palabrachar Carácter 1 bytefloat Nª en coma flotante 1 palabra (4 bytes)

(punto decimal y/o exponente)double Nº en coma flotante 2 palabras (8 bytes)

de doble precisión.

Page 20: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

20Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipos de datos• Por ejemplo, con el compilador MinGW:

• Entero(int): 4 bytes• Carácter (char): 1 byte• Real (float): 4 bytes• Real (double): 8 bytes

Page 21: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

21Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipos de datos• Posibilidad de ampliar el tipo de datos

– Cualificadores de tipos de datos: indican la cantidad de memoriaque se quiere utilizar para representarlos• Aplicables a int

– short, long, signed (con signo), unsigned (sin signo)• Aplicables a double

– long

– Ejemplos:int: si ocupara 2 bytes, rango: ‐215..215‐1, ‐32768 a 32767 (el bit más significativo codifica el signo, 0 es positivo y 1 es negativo)

int: si ocupara 4 bytes, rango: ‐231..231‐1, ‐ 2147483648 a 2147483647 

unsigned int (con 2 bytes): 0 a 216‐1, por tanto, 0 a 65535unsigned int (con 4 bytes): 0 a 232‐1, por tanto, 0 a 4294967296

Page 22: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

22Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipos de datos

Page 23: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

23Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipos de datosCOMBINACIONES DE TIPOS BÁSICOS Y MODIFICADORES PARA

TAMAÑOS DE PALABRA DE 16 BITS

Tipo Tamaño en bits Rango

char 8 -128 a 127unsigned char 8 0 a 255signed char 8 -128 a 127

int 16 -32768 a 32767unsigned int 16 0 a 65535signed int 16 -32768 a 32767short int 16 -32768 a 32767unsigned short int 16 0 a 65635signed short int 16 -32768 a 32767long int 32 -2147483648 a 2147483647unsigned long int 32 0 a 4294967295signed long int 32 -2147483648 a 2147483647float 32 3.4E-38 a 3.4E+38double 64 1.7e-3.08 a 1.7E+308long double 80 3.4E-4932 a 1.1E+4932

Page 24: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

24Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Tipos de datos

24

COMBINACIONES DE TIPOS BÁSICOS Y MODIFICADORES PARATAMAÑOS DE PALABRA DE 16 BITS

Ejemplos:int: si ocupara 2 bytes, rango: -2^15..2^15-1, -32768 a 32767 int: si ocupara 4 bytes, rango: -2^31..2^31-1, - 2147483648 a 2147483647

unsigned int (con 2 bytes): 0 a 2^16-1, por tanto, 0 a 65535unsigned int (con 4 bytes): 0 a 2^32-1, por tanto, 0 a 4294967296

• La diferencia entre enteros con signo y sin signo está en la interpretacióndel bit más significativo. Si es 0 es positivo y si es 1 es negativo.

Ejemplo

127 en binario es 0000000001111111-127 en binario es 1000000001111111

Bit de signo

Page 25: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

25Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes

3

Page 26: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

26Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes

• Existen cuatro tipos de constantes en C:– Constantes enteras– Constantes en coma flotante– Constantes de carácter– Constantes de cadena de caracteres

• Constantes enteras y de coma flotante– Representan números (constantes numéricas)– No se pueden incluir comas ni espacios en blanco en la constante.– Si se desea la constante puede ir precedida de un signo menos.– El valor de la constante no puede exceder de un límite máximo y mínimo especificados. Estos límites varían de un compilador de C a otro.

Constantes numéricas

Page 27: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

27Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes enteras

• Número con valor entero• Se pueden representar en tres sistemas numéricos:

– Decimal, octal, hexadecimal

• Constantes enteras decimales– Representan enteros en base 10– Combinación de dígitos de 0‐9– Si la constante tiene más de 1 dígito, el primer dígito debe ser distinto de 0

– Ejemplos:• Constantes enteras válidas:

– 15, 27, 147, 2000• Constantes enteras no válidas:

– 12,245 Carácter ilegal (,).– 36.0 Carácter ilegal (.).– 10 20 30 Carácter ilegal (espacio en blanco).– 123‐3 Carácter ilegal (‐).– 0534  El primer dígito no puede ser cero.

Page 28: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

28Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes enteras

• Constantes enteras octales:– Representa enteros en base 8– Combinación de dígitos de 0‐7– El primer dígito debe ser siempre 0.– Ejemplos:

• Constantes enteras válidas:– 0, 01, 036, 022

• Constantes enteras no válidas:– 123Una constante octal siempre debe comenzar por 0.– 012492 Dígito ilegal (9).– 023.14  Dígito ilegal (.).

Page 29: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

29Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes enteras

• Constantes enteras hexadecimales:– Representan enteros en base 16– Combinación de dígitos de 0‐9 y A‐F (a‐f)

A ‐ 10, B ‐ 11, C ‐ 12, D ‐ 13, E ‐ 14, F ‐ 15– Los primeros dígitos deben ser siempre 0x o 0X– Cada dígito hexadecimal necesita 4 bits para representarlo.– Ejemplos:

• Constantes enteras válidas:– 0x, 0x12, 0xFFA

• Constantes enteras no válidas:– 0X12.34  Carácter ilegal (.).– 0BE38 El dato no comienza por 0x o por 0X.– 0xGaAa Carácter ilegal (G).

Page 30: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

30Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes enteras

• Memoria ocupada por una constante entera:– Rango normal (enteros de 2 bytes): [–32768  32767].– Rangos ampliados:

• Constantes enteras largas– Se especifican añadiendo L o l al final de la constante.

• Constantes enteras sin signo– Se especifican añadiendo U o u al final de la constante.

• Constantes enteras largas sin signo– Se especifican añadiendo UL o ul al final de la constante.

– Ejemplos:• 50000U Decimal sin signo.• 123456789L Decimal larga.• 123456789UL Decimal larga sin signo.• 0123456L Octal larga.• 0777777U Octal sin signo.• 0x50000U hexadecimal sin signo.• 0XFFFFFUL hexadecimal larga sin signo.

Page 31: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

31Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes en coma flotante

• Numero en base decimal con un punto decimal y/o un exponente• El punto decimal se representa en C con (.)• El exponente se representa en C con (E o e)• Ejemplos:

– Constantes en coma flotante válidas:• 0. / 1. / 0.2 / 50000. / 1.6667E+8 / 2E‐8 / 0.006e‐3 / .1234e12 / 9.3

– Constantes en coma flotante no válidas:• 1 Debe aparecer o bien un punto decimal o bien un exponente.• 1,000.0 Carácter ilegal (,).• 2e+10.2   El exponente debe ser una cantidad entera.• 3E  10 Carácter ilegal (espacio en blanco en el exponente).

Page 32: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

32Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes de carácter

• Un único carácter encerrado entre comillas simples (‘)• Representación de los caracteres en memoria mediante código ASCII extendido (que es un valor entero equivalente)

– Utilizo 8 bits para codificar 256 caracteres diferentes, incluyendo caracteres de control.

– Esta organización define un “orden” entre los caracteres que permite realizar comparaciones

• Ejemplos:– ‘A’ ‘4’ ‘g’ ‘’

Page 33: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

33Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes de carácter0 NUL 32 blanco 64 @ 96 `

1 SOH 33 ! 65 A 97 a

2 STX 34 “ 66 B 98 b

3 ETX 35 # 67 C 99 c

4 EOT 36 $ 68 D 100 d

5 ENQ 37 % 69 E 101 e

6 ACK 38 & 70 F 102 f

7 BEL 39 ‘ 71 G 103 g

8 BS 40 ( 72 H 104 h

9 HT 41 ) 73 I 105 i

10 LF 42 * 74 J 106 j

11 VT 43 + 75 K 107 k

12 FF 44 , 76 L 108 l

13 CR 45 - 77 M 109 m

14 SO 46 . 78 N 110 n

15 SI 47 / 79 O 111 o

16 DEL 48 0 80 P 112 p

17 DC1 49 1 81 Q 113 q

18 DC2 50 2 82 R 114 r

19 DC3 51 3 83 S 115 s

20 DC4 52 4 84 T 116 t

21 NAK 53 5 85 U 117 u

22 SYN 54 6 86 V 118 v

23 ETB 55 7 87 W 119 w

24 CAN 56 8 88 X 120 x

25 EM 57 9 89 Y 121 y

26 SUB 58 : 90 Z 122 z

27 ESC 59 ; 91 [ 123 {

28 GSFS 60 < 92 \ 124 |

29 RSGS 61 = 93 ] 125 }

30 USRS 62 > 94 ^ 126 ~

31 US 63 ? 95 _ 127 DEL

Valor ASCII Carácter Valor ASCII Carácter Valor ASCII Carácter Valor ASCII Carácter

Page 34: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

34Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes de carácter

• Secuencias de escape– Representan caracteres no imprimibles

• ‘ / o bien caracteres de control como saltos de línea, tabulaciones, etc.

• Comienzan siempre con una barra inclinada (\)• Aunque se escriban con dos caracteres, internamente representan un único carácter.

sonido (alerta) \a 7retroceso \b 8

tabulador horizontal \t 9tabulador vertical \v 11

nueva línea \n 10avance de página \f 12retorno de carro \r 13

comillas \” 34comillas simples \’ 39

signo interrogación \? 63barra invertida \\ 92

nulo \0 0

Carácter Sec. Escape Valor ASCII

Page 35: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

35Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes de cadena de caracteres• Una cadena de caracteres es una es una colección de datos de tipo carácter

• Una constante de cadena de caracteres consta de una secuencia de caracteres encerrados entre comillas dobles (“)

• Pueden incluir secuencias de escape• Debemos distinguir entre:

– ‘A’ y “A” NO ES LO MISMO‘A’: representa un sólo carácter“A”: representa una cadena de caracteres que tiene dos caracteres (  A y  \0)

• Ejemplos:– “juan”– “al final salto de línea \n”

Page 36: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

36Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Constantes simbólicas• Se define como un identificador que sustituye a una secuencia de

caracteres– Los caracteres pueden representar una constante numérica, una constante de carácter o una constante de cadena de caracteres

– Se suelen definir al comienzo del programa#define NOMBRE_CONSTANTE valor#define NOMBRE_CONSTANTE valor

– No lleva ; al final pues no es una instrucción de C, sino una directiva para el preprocesador

• Ejemplos:# define INTERES 0.23

# define PI 3.141593

# define TRUE 1

# define FALSE 0

# define NOMBRE “juan”

Page 37: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

Variables

4

Page 38: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

38Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Variables

• Variable:– Identificador utilizado para representar cierto tipo de información dentro de una determinada parte del programa.• Pensamos en variables como etiquetas colocadas en determinadas posiciones de memoria.

– Una variable siempre debe tener asociado un tipo de datos– El tipo de datos de una variable se determina al declarar la variable

– El tipo de datos con que se declare una variable marcará el tipo de valores que va a poder almacenar

– Si no le asignamos un valor a una variable, puede tener cualquier valor

– Puede cambiar el contenido de una variable pero no su tipo asociado

Page 39: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

39Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Variables

• Ejemplo:int a;

int b;

int c;

char d;

.............

a = 3;

b = 5;

c = a + b;

d = ’a’;

...........

a = 4;

c = 19;

b = a - c; d = ’w’;

Declaración de variables

Instrucciones

Page 40: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

40Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Variables y vectores

• Se pueden declarar una variable que contenga un sólo elemento:

– int x;– char c;

• Se pueden declarar una variable que contenga varios elementos:

– A esta colección de elementos se le llama “vector”– Identificador asociado a una colección de datos– La  referencia  a  cada  uno  de  los  datos  de  un  vector  se  hace 

utilizando el identificador del vector y un índice.– Los datos contenidos en un vector deben ser del mismo tipo.– Unidimensionales, bidimensionales, etc.– En C, el  primer elemento de un vector en SIEMPRE el índice 0

Page 41: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

41Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Variables y vectores

• Ejemplo:

int lista_de_enteros[6];

lista_de_enteros[3] 1

0

122541143 2212

4321

lista_de_enteros

5

Page 42: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

42Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Variables y vectores• Cadena de caracteres:

– Se declara como: char mensaje[5];– El último elemento de una cadena de caracteres es siempre el carácter \0 que indica el fin de la cadena

– Por tanto, una cadena de caracteres de n caracteres necesita un vector de n+1 posiciones

• Ejemplo:– Representación en esa variable de la cadena de caracteres “Hola”

0

\0ao lH

4321

mensaje

Page 43: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

43Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Declaraciones

• Asociación de un tipo de datos con una variable concreta• Obligatorio declarar las variables para poder ser utilizadas dentro de un programa

• En C, las declaraciones se realizan al principio de las funciones

• Formato:tipo_de_dato variable1;tipo_de_dato variable1;tipo_de_dato nombre_del_vector[tamatipo_de_dato nombre_del_vector[tamañño];o];

• Se pueden declarar varias variables del mismo tipo en la misma línea pero NO es aconsejable.

• En la declaración de la variable se le puede asignar un valor, pero NO es aconsejable.

Page 44: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

44Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Declaraciones• Ejemplos:

– Declaración de una variable de tipo int que se llama a:int a;

– Declaración de una variable de tipo float que se llama raiz1:float raiz1;

– Declaración  de  una  variable  que  es  un  vector  de  12  posiciones  de elementos de tipo float y que se llama raiz2:float raiz2[12];

– Declaración  de  una  variable  de  tipo  carácter  (char)  de  nombre indicador:char indicador;

– Declaración de una variable que es un vector de 80 caracteres y que se llama texto:char texto[80];

– Declaración de una variable de tipo double y que se llama factor:double factor;

Page 45: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

Expresiones

5

Page 46: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

46Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Expresiones• Una EXPRESIÓN es la representación de un cálculo necesario para la obtención 

de un resultado, es decir las expresiones son combinaciones de constantes, variables, funciones, símbolos de operación y paréntesis.

• Representa:– Un dato simple– Una entidad  simple  (constante,  variable, elemento de un  vector,  referencia a una función)

– Combinación de entidades interconectadas por uno o más operadores– Condiciones lógicas– Ejemplos:

• Suma de la variable a y la variable b: a+b

• Asignación del valor de la variable y a la variable x: x = y• Asignación de la suma de los valores de las variables a y b a la variable c: c = a+b• Expresión  lógica de comparación de si el valor de la variable x es menor o igual que el valor de la variable y: x <= y

• Expresión de comparación del valor de x y el valor de y: x == y• Incremento  en  1  del  valor  de  la  variable  i: i++ (equivalente a i= i +1)

Page 47: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

47Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Expresiones

• Numéricas: Son las expresiones que dan como resultado un número. Se construyen mediante los operadores aritméticos.

Ejp: PI * SQR(X)

• Alfanuméricas: Son las que producen resultados de tipo alfanumérico Se construyen mediante los operadores alfanuméricos.

Ejp: “HOLA” + “PEPE”

• Booleanas/lógicas: Expresiones que producen un resultado Cierto o Falso. Se construyen mediante los operadores lógicos y relacionales.

operandoOperador aritméticooperando

operandoOperador alfanuméricooperando

Operador lógico

Operadores relacionales

Ejp: A>0 y <=5

Page 48: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

48Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Instrucciones• Hacen que la computadora realice alguna acción• Hay tres tipos diferentes de instrucciones en C:

– Instrucciones de expresión• Expresión seguida de un punto y coma

– Instrucciones compuestas o Bloque de instrucciones• Formada  por  varias  instrucciones  individuales  encerradas con un par de llaves { }

– Instrucciones de control• Realizan  acciones  especiales  en  los programas  tales  como comprobaciones lógicas, bucles y bifurcaciones

Page 49: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

49Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Instrucciones

a = 3;c = a + b;i++;printf (“El Area es igual a %f”,area);

{pi = 3.141593;circunferencia = 2 * pi * radio;area = pi * radio * radio;

}

while (cont <= n){

printf (“x = “);scanf (“%f”, &x);suma = suma + x;cont++;

}

• Ejemplos:Instrucciones de expresión

Bloque de instrucciones

Instrucciones de Control

(mientras)

Page 50: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

Funciones básicas de Entrada Salida

6

Page 51: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

51Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Entrada y salida de datos

• Entrada y salida de caracteres: getchar() y putchar()• Función scanf()• Función printf()• Funciones gets() y puts()

Page 52: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

52Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Entrada y salida de caracteres• Función getchar():

– Permite la entrada de caracteres uno a uno desde teclado.– Función de stdio.h– No requiere parámetros de entrada– Si hay un error en la lectura, devuelve un valor EOF– Modo de uso:

char tecla;tecla=getchar();

– Si se desean leer varios caracteres, es necesario incluir la función getchar() dentro de un bucle.

– Prototipo de la función:

int putchar( int ch );

Page 53: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

53Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Entrada y salida de caracteres• Función putchar():

– Envía un carácter al dispositivo de salida estándar– El carácter a transmitir deberá suministrarse a la función putchar() como argumento de la función• En forma de variable de tipo char• Como constante de tipo carácter

putchar(variable_tipo_carácter);

– Si hay un error en la escritura, devuelve un valor EOF– Ejemplo de uso:

char letra;letra=‘h’;putchar(letra);putchar(‘j’);

– Prototipo:int printf( const char *format, ... );

Page 54: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

54Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()• Permite la introducción de información desde el dispositivo de entrada estándar

– Permite cualquier combinación de valores numéricos, caracteres y cadenas de caracteres.

– La función devuelve el número de caracteres que se han conseguido introducir correctamente.

• Formato:scanf (cadena de control, arg1, arg2, .... , argn);

– Cadena de control:• Cadena de caracteres que contiene información acerca del formato de los datos que van a ser introducidos.

– Los argumentos (arg) son punteros a las direcciones de memoria donde se encuentran los datos.• Variables de un solo elemento: se indica la dirección con &• Variables de varios elementos de tipo carácter (cadena de caracteres): no hace falta el &

Page 55: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

55Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()– Es posible poner varios argumentos en la misma sentencia scanf(), pero NO es aconsejable por claridad, mejor hacerlo de uno en uno

int a;

int b;

printf(“Introducir el valor de a y b “);

/* Es posible usar */

scanf(“%d %d”, &a, &b);

/* Pero mejor */

printf(“Introduzca el valor de a: “);

scanf(“%d”, &a);

printf(“Introduzca el valor de b: “);

scanf(“%d”, &b);

Page 56: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

56Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()• Cadena de control:

– Incluye grupos de caracteres individuales.– Cada grupo de caracteres debe ir precedido por %.– El número de grupos de caracteres individuales en la cadena de control debe coincidir con el número de argumentos definidos en la función scanf().

– Los grupos de caracteres pueden estar separados por espacios en blanco, tabuladores, saltos de línea ...• Los espacios en blanco entre los datos de entrada serán leídos pero scanf() los ignorará

Page 57: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

57Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()Carácter de Conversión

Significado

c Dato tipo carácter

d Dato entero decimal

e Dato valor en coma flotante

f Dato valor en coma flotante (tipo float)

g Dato valor en coma flotante

h Dato entero corto

i Dato entero decimal, octal o hexadecimal

o Dato entero octal

s Dato cadena de caracteres (el carácter nulo \0 se añade automáticamente al final)

u Dato entero decimal sin signo

x Dato entero hexadecimal

[...] Dato cadena de caracteres que puede incluir caracteres de espaciado

lf Dato valor en coma flotante (tipo double)

Page 58: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

58Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

#include <stdio.h>

int main (void)

{

char concepto[20];

int no_partida;

float coste;

double porc;

..............................

scanf (“%s”, concepto);

scanf(“%d”, &no_partida);

scanf(“%f”, &coste);

scanf(“%lf”, &porc);

}

El tipo de los argumentos debe ser coherente con los grupos de caracteres de la cadena de control

Page 59: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

59Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

• Los datos introducidos deben corresponder con los argumentos de la función scanf en número, tipo y orden, (los datos octales y hexadecimales no llevan 0 ni 0x).

• Los datos de entrada pueden ser valores numéricos, caracteres sueltos, cadenas de caracteres o cualquier combinación de estos.

• Datos numéricos deben estar escritos como se han definido las constantes numéricas.

– Constantes octales y hexadecimales no necesitan ser precedidos de 0 y 0x al introducir dicho valor.

• Si se introducen dos o más datos, estos deberán estar separados por caracteres en blanco.

Page 60: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

60Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

Ejemplo Función scanf: Separación de grupos de caracteres.

#include <stdio.h>int main(void)

{ char concep;int part; ... {No separamos los grupos de caracteres con blancos}scanf(“%i%c“,&part,&concep);printf(“%i %c”,part,concep); ...}

Una ejecución del programa: Si introducimos 10, dos blancos y el carácter ‘e’, tenemos:

10 e ↵10

Page 61: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

61Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

Page 62: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

62Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()Ejemplo Función scanf :Separación de grupos de caracteres.

#include <stdio.h>int main(void){char concep;int part;... {Separamos los grupos de caracteres con blancos}scanf(“%i %c“,&part,&concep);printf(“%i %c”,part,concep); ...}Una ejecución del programa: Si introducimos 10, dos blancos y el carácter ‘e’, tenemos:

10 e ↵10 e

- La salida es el entero introducido en part, un blanco y el carácter ‘e’ introducido en concep.

Por tanto, si la cadena de control empieza con un char, es bueno preceder el primer % de un blanco y así eliminar caracteres extraños.

scanf (“ %c..”,.....)

Page 63: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

63Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

63

Page 64: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

64Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()#include <stdio.h>int main (void){

int entero;/* Petición de los datos */printf("Introduce un valor en octal: ");scanf("%o", &entero);printf("\nEn octal: %o", entero);printf("\nEn decimal: %d", entero);printf("\nEn hexadecimal: %x", entero);

printf("\n\nIntroduce valor en hexadecimal: ");scanf("%x", &entero);printf("\nEn octal: %o", entero);printf("\nEn decimal: %d", entero);printf("\nEn hexadecimal: %x", entero);

printf("\n\nIntroduce un valor en decimal: ");scanf("%d", &entero);printf("\nEn octal: %o", entero);printf("\nEn decimal: %d", entero);printf("\nEn hexadecimal: %x", entero);

}

Page 65: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

65Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()Primera ejecución:

Introduce un valor en octal: 66

En octal: 66En decimal: 54En hexadecimal: 36

Introduce valor en hexadecimal: 66

En octal: 146En decimal: 102En hexadecimal: 66

Introduce un valor en decimal: 66

En octal: 102En decimal: 66En hexadecimal: 42

Segunda ejecución:

Introduce un valor en octal: 066

En octal: 66En decimal: 54En hexadecimal: 36

Introduce valor en hexadecimal: 0x66

En octal: 146En decimal: 102En hexadecimal: 66

Introduce un valor en decimal: 66

En octal: 102En decimal: 66En hexadecimal: 42

Page 66: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

66Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()Entrada de datos tipo cadena y carácter:

– Para leer un carácter se utiliza el especificador de formato: %c– Para leer una cadena de caracteres se utiliza el especificador de formato: %s• Hay que  tener en cuenta que si se utiliza únicamente %s para  leer una cadena, sólo leerá una palabra.Por ejemplo:

printf(“Introduce una cadena:”);scanf(“%s”, cadena);

Si el usuario introduce: Hola amigosEl resultado será que en la variable cadena  sólo  se  habrá

almacenado la cadena “Hola”• Métodos alternativos para evitar este problema:

– Utilizar la función gets(): gets(cadena);– Uso de scanf() con el especificador: %[.....]

• Los  corchetes  incluyen  los  caracteres  permitidos  para  la cadena.

• El  uso  de  ^  sobre  el  grupo  de  caracteres  [  ]  permite  la lectura de  los caracteres opuestos a  los encerrados entre corchetes.

Page 67: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

67Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

La conversión de caracteres de tipo s se aplica a una cadena de caracteres que acaba en un carácter de espaciado.

Si deseamos que una cadena de caracteres pueda incluir blancos utilizar [...] e incluir en los corchetes los caracteres permitidos en la cadena.

Ejemplo Función scanf: Lectura de cadenas de caracteres.

#include <stdio.h>main()

{ char linea[80];...{Podemos guardar una cadena de máximo 80 caracteres} ...scanf(“ %[ ABCDEFGHIJKLMNÑOP]”,linea);...

}

Podemos guardar en lPodemos guardar en líínea una cadena de caracteres con los caracteres nea una cadena de caracteres con los caracteres blanco y blanco y ‘‘AA’’....’’PP’’

Page 68: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

68Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

Si colocamos ^ antes de los caracteres de dentro de los corchetes, el sentido es el opuesto. Podemos leer cualquier cadena que no incluya esos caracteres.

Ejemplo Función scanf: Lectura de cadenas de caracteres.

#include <stdio.h>main()

{ char linea[80];...{Podemos guardar una cadena de máximo 80 caracteres} ...scanf(“ %[^\n]”,linea);...

}

Podemos guardar en lPodemos guardar en líínea una cadena de caracteres con cualquier carnea una cadena de caracteres con cualquier caráácter excepto cter excepto ‘‘��nn’’..

Page 69: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

69Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

printf("Introduce una cadena:");scanf("%s", linea);printf("La cadena es: %s", linea);

Introduce una cadena:HOLA AMIGOS miosLa cadena es: HOLA

printf("Introduce una cadena:");scanf("%[ ABCDEFGHIJKLMNOPQRSTUVVXYZ]“,linea);printf("La cadena es: %s", linea);

Introduce una cadena:HOLA AMIGOS miosLa cadena es: HOLA AMIGOS

printf("\nIntroduce segunda cadena:");scanf("%[^\n]",linea);printf("La cadena es: %s", linea);

Introduce una cadena:HOLA AMIGOS miosLa cadena es: HOLA AMIGOS míos

printf("\nIntroduce una cadena:");gets(linea);printf("La cadena es: %s", linea);

Introduce una tercera cadena: HOLA AMIGOS miosLa cadena es: HOLA AMIGOS míos

CÓDIGO EJECUCIÓN

Page 70: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

70Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

• Longitud de campo máxima:– Número de caracteres máximo para un determinado campo.– Se incluye un número entero entre el % y el carácter de conversión.

– El dato podrá estar compuesto por menos caracteres de los indicados por la longitud de campo máxima pero nunca por más.• Los datos sobrantes son interpretados como parte del siguiente dato

Page 71: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

71Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

• Ejemplo:

123456789El entero es: 123

El float es: 45678.000000El caracter es: 9

#include <stdio.h>int main(void){

int i;float x;char c;

scanf("%3d",&i);printf("El entero es: %d \n", i);scanf("%5f", &x);printf("\nEl float es: %f", x);scanf("%c", &c);printf("\nEl caracter es: %c", c);

}

CÓDIGO

Ejecución 1

Ejecución 2

12El entero es: 1215634.8897

El float es: 15634.000000El caracter es: .

Page 72: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

72Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

Ejemplo Función scanf: Longitud de campo máxima.

#include <stdio.h>int main(void)

{int a,b,c;... {Colocamos como longitud 3}scanf(“%3d %3d %3d“,&a,&b,&c);...

}Una ejecución del programa: Si tenemos en el input ‘123456789’

:

123456789 ↵

a = 123 b=456 c=789

Page 73: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

73Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

Es posible saltarse un dato del input colocando * tras %, (supresisupresióón de n de asignaciasignacióónn).

Ejemplo Función scanf: Supresión de asignación.

#include <stdio.h>int main(void)

{char concepto[20];int no_partida;float coste;... {Colocamos * antes de d}scanf(“ %s %*d %f“, concepto,&no_partidab,&coste);...

}Una ejecución del programa: Si tenemos en el input ‘hola 2 34

4.5’ :

hola 2 34 4.5 ↵

concepto = “hola” no�partida=34 coste=4.5

Page 74: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

74Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

Podemos saltarnos caracteres de espaciado de input con el carácter de conversión “%1s” en lugar de “ %c” .( NO utilizar).

Ejemplo Función scanf. Omisión de espaciado.

#include <stdio.h>int main(void)

{char c1,c2,c3;... {Colocamos “%1s”}scanf(“ %c%1s%1s“,&c1,&c2,&c3);...

}Un programa equivalente:

#include <stdio.h>void main(void)

{char c1,c2,c3;... {Colocamos “ %c”}scanf(“ %c %c %c“,&c1,&c2,&c3);...

}

Page 75: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

75Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función scanf()

Si aparecen caracteres no reconocidos en la cadena de control, se espera que aparezcan en el input.

- Si no aparecen scanf terminará su ejecución.

Ejemplo Función scanf.

#include <stdio.h>int main(void)

{

int i;float x;... {Colocamos una a}scanf(“%d a %f“,&i,&x);...

}Una ejecución del programa: Si tenemos en el input

‘ 2 34’ :

2 34 ↵

TERMINA LA EJECUCIÓN DE scanf

Page 76: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

76Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()

• Escribe datos en el dispositivo de salida estándar.– Válida para cualquier combinación de valores numéricos, carácter o de cadena de caracteres

– Formato:printf (cadena de control, arg1, arg2, ..., arg);

– Cadena de control:• Cadena que hace referencia al formato de los datos a escribir• Las reglas aplicables a los grupos de caracteres en scanf() también son aplicables a printf()

• Dentro de  la  cadena de  control pueden aparecer  caracteres que no sean necesariamente caracteres de conversión

– Estos se muestran directamente a la pantalla– Los  argumentos  pueden  ser  cualquier  tipo  de  variable  y  no  es necesario precederlos del &

printf (cadena de control, arg1,arg2,...., argn);

Page 77: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

77Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()

Carácter de

Conversión

Significado

c Dato tipo carácterd Dato entero decimale Dato valor en coma flotante con exponente

f Dato valor en coma flotante sin exponente

g Dato valor en coma flotante utilizando la conversión de tipo e o la conversión de tipo f según sea el caso. No se visualizan ni los ceros finales ni el punto decimal cuando no es necesario.

i Dato entero decimal con signoo Dato entero octal, sin el cero inicials Dato cadena de caracteresu Dato entero decimal sin signox Dato entero hexadecimal sin el prefijo 0x

Page 78: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

78Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()Ejemplo:

#include <stdio.h>

#include <math.h>

int main(void)

{

float i;

float j;

/* Inicializaciones */

i = 2.0;

j=3.0;

printf(“%f %f %f %f”, i, j, i+j, sqrt(i+j));

}

Resultado:2.000000 3.000000 5.000000 2.236068

Page 79: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

79Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()

Ejemplo:#include <stdio.h>

int main(void)

{

double x;

double y;

/* Inicializaciones */

x=5000.0;

y=0.0025;

printf(“%f %f %f %f \n\n”, x, y, x*y, x/y);

printf(“%e %e %e %e”, x, y, x*y, x/y);

}

Resultado:5000.000000 0.002500 12.500000 2000000.0000005.000000e+03 2.500000e-03 1.250000e+01 2.000000e+06

Page 80: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

80Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()Se utiliza la conversión de tipo s para visualizar una cadena de caracteres, que puede incluir caracteres blancos y que termina en �0.

- Nótese la diferencia con scanf.

Ejemplo Función printf. Programa que lee una línea de texto y la muestra.

#include <stdio.h>

int main(void){char linea[80];... {Leemos la linea}scanf(“ %[^\n]“,linea);printf(“%s”,linea);...

}

Una ejecución del programa: Si tenemos en el input ‘Clase de Informática’ :

Clase de Informática ↵Clase de Informática

Page 81: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

81Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()• LONGITUD DE CAMPO MÍNIMA:

– Especifica  la  longitud mínima  del  campo  poniendo  una  cifra  justo  a continuación del %. (Por ejemplo, “%2d”)

– Si el campo tuviera una  longitud menor a  la de  la  longitud de campo mínima se rellena con espacios en blanco a la izquierda del campo.

– Si el campo tuviera longitud mayor se conserva esa longitud.

PRECISION MÁXIMA:Especifica el máximo número de cifras decimales con que se representará un valor en coma flotante.Es un entero sin signo que siempre es precedido por un punto decimal.(Por ejemplo, “%.3f”)

Si se especifica la longitud de campo mínima además de la precisión, entonces la especificación de la precisión seguirá a la especificación de la longitud de campo. (Por ejemplo, “%2.3f”)

Page 82: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

82Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()

#include <stdio.h>int main(void){int i;float x;

/* Inicializaciones */i=12345;x=345.678;

printf(“%3d %5d %8d \n\n”, i, i, i);printf(“%3f %10f %13f \n\n”, x, x, x);printf(“%3e %13e %16e”, x, x, x);

}

Resultado:12345 12345 12345

345.678009 345.678009 345.678009

3.456780e+02 3.456780e+02 3.456780e+02

Ejemplo de longitud de campo mínima:

Page 83: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

83Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()

#include <stdio.h>

int main(void)

{

float x;

/* Inicialización */

x=123.456;

printf(“%7f %7.3f %7.1f\n\n”, x, x, x);

printf(“%12e %12.5e %12.3e”, x, x, x);

}

Resultado:123.456001 123.456 123.5

1.234560e+02 1.23456e+02 1.235e+02

Ejemplo 1 de longitud de campo mínima y precisión máxima:

Page 84: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

84Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()

#include <stdio.h>

int main(void)

{

float x;

/* Inicialización */

x=123.456;

printf(“%f %.3f %.1f \n\n”, x, x, x);printf(“%e %.5e %.3e”, x, x, x);

}

Resultado:123.456001 123.456 123.5 (Ejemplo 2)

1.234560e+02 1.23456e+02 1.235e+02 (Ejemplo 2)123.456001 123.456 123.5 (Ejemplo 1, página anterior)

1.234560e+02 1.23456e+02 1.235e+02 (Ejemplo 1)

Ejemplo 2 de longitud de campo mínima y precisión máxima:

Page 85: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

85Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()Se puede utilizar una longitud de campo mlongitud de campo míínimanima y precisiprecisióónn en cadenas de caracteres . - La precisión en una cadena de caracteres indica el número máximo de caracteres

se pueden visualizar.

Ejemplo Función printf. Longitud de campo y precisión en cadenas de caracteres.

#include <stdio.h>

int main(void) {char linea[12];... printf(“%10s %15s %15.5s %.5s”,linea,linea,linea,linea);...

}

Una ejecución del programa: Si tenemos en el input ‘Informatica’ :

Informatica Informatica Infor Infor

Page 86: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

86Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()• Es posible incluir prefijos para especificar:

– Entero largo con o sin signo o doble precisión (l)– Entero corto con o sin signo (h)

• Valido también con scanf()

Resultado1: 3456 ffe4 34703321 789654234

#include <stdio.h>

int main(void)

{

short int a;

short int b;

long int c;

long int d;

/* Inicializaciones */

a = 3456;

b = 0xFFe4;

c = 034703321L;

d = 789654234L;

printf("%5hd %6hx %8lo %ld",

a, b, c, d);

}

#include <stdio.h>

int main(void)

{

short int a;

short int b;

long int c;

long int d;

/* Inicializaciones */

a = 345678;

b = 0xFFe423;

c = 03470332100632L;

d = 7896542342232L;

printf("%5hd %6hx %8lo %ld",

a, b, c, d);

}

Resultado2: 17998 e423 30332100632 -1902515112

Ejemplo1

Ejemplo2

Page 87: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

87Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()• Posibilidad de incluir indicadores:Indicador Significado

- El dato se ajusta a la izquierda dentro del campo (si se requieren espacios en blanco para conseguir la longitud de campo mínima, se añaden después del dato en lugar de antes).

+ Cada dato numérico es precedido por un signo (+ o -). Sin este indicador, sólo los datos negativos son precedidos del signo menos.

0 Hace que se presenten ceros en lugar de espacios en blanco. Se aplica sólo a datos que estén ajustados a la derecha dentro de campos de longitud mayor que la del dato.(NOTA: algunos compiladores consideran el indicador cero como parte de la especificación de la longitud de campo en lugar de cómo indicador real. Esto asegura que el 0 es procesado el último si hay varios indicadores presentes)

‘ ‘ Cada dato numérico positivo es precedido por un espacio en blanco. Este indicador se ignora si se encuentra presente también el indicador +.

# Con las conversiones de tipo o y tipo x:Hace que los datos octales y hexadecimales sean precedidos por 0 y 0x.

# Con las conversiones de tipo e, tipo f y tipo g:Hace que se presenten todos los números en coma flotante con un punto, aunque tengan un valor entero. Impide el truncamiento de los ceros de la derecha realizada por la conversión de tipo g.

Page 88: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

88Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Función printf()

#include <stdio.h>

int main(void)

{

int i ;

float x;

float y;

/* Inicializaciones */

i= 123;

x=12.0;

y=-3.3;

printf(“%6d %7.0f %10.1e \n\n”,i ,x, y);

printf(“%-6d %-7.0f %-10.1e \n\n”,i ,x, y);

printf(“%+6d %+7.0f %+10.1e \n\n”,i ,x, y);

printf(“%-+6d %-+7.0f %-+10.1e \n\n”,i ,x, y);

printf(“%7.0f %#7.0f %7g %#7g \n\n”,x ,x ,y ,y);

}

Resultado:123 12 -3.3e+00

123 12 -3.3e+00

+123 +12 -3.3e+00

+123 +12 -3.3e+00

12 12. -3.3 -3.30000

Page 89: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

89Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 3:  Introducción al C

Funciones gets() y puts()• Permiten entrada y salida de cadenas de caracteres• gets(cadena):

– El argumento debe ser una variable de varios elementos (vector de caracteres o cadena de caracteres) de tipo carácter.

– Lee de la entrada estándar una cadena de caracteres– Si ha habido error, gets() devuelve NULL

• puts(cadena):– El argumento debe ser una variable de varios elementos (array) de tipo carácter

– Escribe en la salida estándar la cadena de caracteres seguida de una nueva línea

Ejemplo de uso:#include <stdio.h>

int main(void)

{

char linea[80];

gets(linea);

puts(linea);

}

Page 90: Fundamentos de Informática basico C.pdf · • En C se declaran todas las variables al comienzo de la función • La ... – Es posible utilizar el carácter “_” en los identificadores

Escuela Técnica Superior de Ingeniería ICAIAlberto Aguilera 2528015 MadridTel +34 91 542 28 00Fax + 34 91 542 31 76Iwww.icai.upcomillas.es

www.upcomillas.es