Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y...

24
2010 UNAN LEON Ccomputación Autor Raúl H Ruiz C Documento recopilado Asignatura: Programación Estructurada ELEMENTOS DEL LENGUAJE C Esto es un documento que he recopilado información de diferentes libros y de direcciones web Libros de autores como Dr. Francisco Javier Ceballos autor de muchos libros , y de Luis Joyanes un buen autor de libros de C

Transcript of Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y...

Page 1: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

2010

UNAN LEON Ccomputación Autor Raúl H Ruiz C Documento recopilado Asignatura: Programación Estructurada

ELEMENTOS DEL LENGUAJE

C Esto es un documento que he recopilado información de diferentes libros y de direcciones web Libros de autores como Dr. Francisco Javier Ceballos autor de muchos libros , y de Luis Joyanes un buen autor de libros de C

Page 2: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

2

EL LENGUAJE “C “ ELEMENTOS BASICOS

Estructura general de un programa en C

Un programa en C es una estructura que se compone de una o más funciones, una función que tiene

que ser obligatoria es la función main esta es conocida como la función principal o la función. Una

función en C es un grupo de instrucciones que realizan una o mas acciones asi un programa en C

constara de un a o mas directivas # include.

Asi:

#include <stdio.h>

main()

{

.........

}

PARTES O ZONAS DE UN PROGRAMA EN C

Archivos de cabecera

Cabecera de Funcion Principal

Sentencias

#include Directivas del preprocesador #define Macros de preprocesador

Declaraciones Globales Prototipos de funciones Variables

Función principal main main

{

Declaración de variables locales sentencias

}

Definición de otras funciones Tipo nombre_Funcion( parámetros) {

………………………….

}

Page 3: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

3

Mapa de memoria

Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para

especificaciones distintas. Así:

¿Cómo se crea un programa en C? Para realizar esta tarea depende del compilador, tienen su similitud a lo que les mostraremos a continuación. Pasos:

1. Usar un procesador de texto para escribir el programa, guardarlo con un nombre específico a la tarea que realizara y con una extensión .c este conformara el archivo fuente.

2. Compilarlo este traduce el código fuente a código de maquina este tomara el mismo nombre del fuente pero con extensión .obj (esto lo realiza el compilador).

3. Enlaza el código .obj con las biblioteca de C, una biblioteca de C contiene código Objeto de una colección de rutinas o funciones que realizan tareas tales como visualizar por pantalla información del programa, y otras acciones específicas de las funciones de dicha biblioteca (Ej. Calcular la raíz cuadrada etc). Este enlace del código objeto del programa con las de la biblioteca produce el programa ejecutable o programa con extensión .exe.

GRAFICA DEL COMPILADO Y ENLAZADO DE UN PROGRAMA FUENTE.

(heap) Montón(Region 4)

(stack) Pila (Region 3)

Variables Globales(Region 2)

Código de Programa(Region 1)

Código fuente (o programa fuente)

Compilador Archivos de

cabecera

Código objeto

Enlazador Bibliotecas

Programa ejecutable

R1: Contiene Realmente el

programa

R2:Guarda Variables

Globales

R3: Pila

R4 : Monton

Page 4: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

4

ELEMENTOS DE UN PROGRAMA EN C.

Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. Fase del preprocesador: realiza la inclusión de archivos y la sustitución de macros. El preprocesador: se controla por directivas introducida por las líneas que contienen el

signo de numero # como primer carácter. El resultado del preprocesador es una secuencia de tokens. Tokens (Elementos léxico de los programas). Existen 5 clase de tokens: (Identificadores, palabras reservadas, literales, operadores y otros)

1. Identificadores Un identificador es una secuencia de caracteres, letras, dígitos y subrayados (_). El primer carácter debe ser una letra(algunos compiladores admiten carácter de subrayado). Las letras minúsculas y mayúsculas son diferentes. Ejemplos:

Nombre_de_clase Linea Fecha

Elemento_mayor B Lunes20

Dirección_1 Nombre_empl Casa_34

Como se ha dicho C reconoce entre mayúscula y minúscula así que decir PI es diferente a Pi o a pi. Es importante hacer notar que para un mejor trabajo y entendimiento se recomienda que los identificadores se escriban con letras minúsculas.

2. Palabras reservadas El lenguaje C reserva algunas palabras para el uso de identificadores especiales o bien para denotar algunos elementos, estas palabras reservadas no se pueden utilizar más que para su debido propósito por ejemplo void es una palabra reservada para determinar un tipo especial de datos así que solo para eso se utilizara y no le daremos otro uso.

Ejemplo: int void( )

{

int float;

}

Estos son identificadores y no se pueden usar en otro propósito

asm enum signed

auto Exter sizeof

break float static

case for struct

char goto switch

const if typedef

continue int union

default long unsigned

do register void

double return volatile

else short while

ERROR Nombre de función no se puede utilizar esta

palabra ERROR Es te es un tipo de dato no se puede tomar como identificador

Page 5: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

5

3. Comentarios en C (pertenece a los caracteres en C)

Los comentarios en lenguaje C son de mucha importancia para el programador, estos le ayudan a recordar lo que realiza el programa o bien que parte del programa realiza actividad específica, esto para otros programadores que comprenda bien el código o para el que lo ha realizado y quiere en el futuro mejorarlo. En C los comentarios son de la siguiente forma /*…………………………………………………………..*/ O bien // ………otro tipo de hacer comentario en C línea a línea Para ambos el comentario que se ponga no será tomado en cuenta por el compilador Ejemplo /* Este es el comentario de un programa en C que realiza la suma

de los números del 20 al 1000 se toman solo valores enteros */

4. Signos de puntuación Las sentencia en C siempre tiene que terminar con ; (punto y coma) existen en C otros signos de puntuación como: ! % ^ & * ( ) - + = { } ~

[ ] \ ; ’ : < > ? , . / “

Y otros como los separadores espacios en blancos y salto de línea

5. Archivos de cabecera Los archivos de cabecera son archivos especiales que contiene librerías de funciones del propio compilador o bien las creadas por el usuario estos archivo tienen la extensión .h y están puestos en los programas con las directivas # include para insertar el archivo correspondiente por ejemplo si se utiliza en el programa la función para obtener la raíz cuadrada de un numero sqrt() , en el programa tiene que llevar la correspondiente directiva #include<math.h>. La mayoría de los programas tienen líneas como la siguiente #include <stdio.h> o bien #include “stdio.h” , la primera hace al compilador que busque en el subdirectorio actual o por defecto donde se encuentran las librerías y el segundo busca el los directorios de trabajo como a: c: y si no encuentra busca en el directorio actual.

Page 6: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

6

Tipos de datos en C. El lenguaje C tiene un gran número de datos predefinidos, pero tiene la capacidad para que el usuario cree sus propios tipos de datos. Todos los tipos de datos esencialmente son números los tres tipos de datos básicos son: existen siete tipos básico de datos o primitivos todos los demás tipos de datos se basan en algunos de

estos tipos.

Tipos enteros: char, short, int, long y enum.

Tipos reales: float y double.

Tipo especial void nada

El tamaño y el intervalo de estos tipos de datos varían con cada tipo de procesador y de compilador.

Podemos decir si que en cualquier caso char es de 1byte . el tamaño de un int?. Los ficheros de

cabecera limits.h y float.h especifican los valores máximo y mínimo de cada tipo

A los tipos de datos primitivos pueden tener distintos modificadores precediéndolos. Un modificador e

usa para alterar el significado del tipo primitivo de forma que se ajuste más precisamente a las

necesidades de cada momento.

Los modificadores son : signed , unsigned

Todos los tipos de datos definidos por el estándar de C.

Tipo Tamaño aproximado

en bits

Intervalo mínimo

char 8 -127 a +127

unsigned char 8 0 a 255

signed char 8 -127 a+127

int 16 o 32 -32768 a +321767

unsigned int 16 o32 0 a 65.535

signed int 16 o 32 Igual que int

short 16 -32768 a +32 767

long 32 -2147483648 a +2147483647

unsigned long 32 0 a 4294967295

float 32 1E-37 a 1E+37 con 6 dígitos precisión

double 64 1E-37 a 1E+37 con 10 dígitos precisión

Page 7: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

7

EJEMPLOS

Tipo Ejemplos de distintos tipos

char char c=0; char = ‘a ‘ ; char b= 97; /*decimal*/

char b = 0x61; /* hexadecimal*/

char b = 0141; /* octal */

unsigned char empleado para representación de caracteres ascii

signed char igual que se usa sin calificar

int int a=3000; int b= -30; int c= 0xf003

unsigned int no emplea el bit de signo int i=0,j=0; int a=3000;

signed int emplea el bit de signo int b= -30

short short i=0,j=0;

long long a= -1 l; long b= 125; long c=0x1f00230f

unsigned long long z=567899

float float a= 3.14592f; float b=2.2e +5 f; float c =2/3 f;

double double a= 3.14592 ; double b=2.2e +5;

float c =2.07/3.0;

Constantes Existen las siguientes constantes

Constantes Literales Estas son las más usadas toman valores como 35.7868 o bien “Ponga los datos aquí “estos se escriben directamente en el texto del programa.

Constantes definidas Estas son identificadores que se asocian con valores literales constantes, y toman determinados nombres

Constantes enumeradas Estas permiten asociar un identificador tal como color con una secuencia de otros nombres como verde, azul, amarillo

Constantes declaradas Son como variables su valor se almacena en memoria pero no se puede modificar.

Page 8: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

8

Constantes Literales

Estas están clasificadas en los siguientes

Constantes enteras

Constante de coma flotante

Constantes carácter

Constante de cadena Constantes enteras: Las reglas básica para estas constantes es la siguiente:

1- No usar nunca coma ni ningún signo de puntuación (Ej 2345 correcto 234.78 in correcto)

2- Para forzar a que sea un valor long o entero largo antepones la letra L (Ej 123456 ponemos 12345 L)

3- Si la constante queremos que sea unsigned se le pone la letra Mayúscula U (Ej. 6547U)

4- L a representación de una constante Octal se antepone 0 (Ej. 123 en decimal 0777 formato octal precedido de 0)

5- El formato Hexadecimal base 16 se le antepone 0x (Ej. 0xFF3A) En esto se pueden combinar letras minúsculas Ej. 23773L o 23773l o también 63454 U o 6345 u

Ejemplo: 4346 constante entera int 15245 L constante entera unsigned int 1000 L constante entera long 345 UL constante entera unsigned long Las literales octales son uno o más dígitos del 0 al 7 teniendo como inicio siempre cero Ejemplo: 0326 constante octal Un literal hexadecimal son dígitos del 0 a 9 y literales A a la F (Mayúsculas o minúsculas) pueden repetirse siempre comienzan con 0x ó 0X. Ejemplos: 256 decimal 0400 256 decimal a octal 0x 100 256 decimal a hexadecimal - 0400 -256 decimal a octal -0x100 -256 decimal a hexadecimal Constante en coma flotante ( Reales ): Representan a los Números reales, enteros y punto decimal y siempre son aproximaciones en lugar de valores exactos. Ejemplos: -17.24 14.12 .008e3 27E-3

Page 9: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

9

Constantes carácter: Una constante carácter (char) es un carácter del código ASCII encerrado entre apostrofe Ej. ‘a’ , ‘B’, ‘ C’ . Además de los caracteres ASCII estándar, una constante de carácter soporta caracteres especiales que no se pueden representar utilizando el teclado, como ejemplo, los códigos ASCII altos y secuencias de escapes (que se verán más adelante)

Un ejemplo clara es la representación de la letra código ASCII 228 Hexadecimal E4 se representa

mediante el prefijo \x y el numero hexadecimal correspondiente Asi: char sigma = ’ \xE4’ ; Esto se utiliza para almacenar o imprimir cualquier carácter de la tabla del código ASCII por su número hexadecimal. Ejemplos:

Estos son de tipo char, se representan por un único carácter entre comillas simple. ‘ ‘ espacio en blanco ‘x ‘ letra minúscula x ‘ \n ‘ cambio de línea ‘\x07’ pitido ‘\ x1B’ carácter ASCII de Esc. Aritmética de caracteres Dada la correspondencia entre un carácter y su correspondiente código ASCII que es un número, es posible realizar operaciones aritméticas. Ejemplo char c;

c= ‘T’+6; /* aquí se le está sumando 6 al valor ASCII de T */

Lo que se ha presentado en este segmento de código es que c toma el valor ACII de 90 ya que T es 89 más 6 igual 90 correspondiendo este a la letra Z. También en variables enteras se puede guardar constantes de caracteres Ej. int m= „h‟;

Veamos este segmento de código int n;

n = n+‟a‟-„A‟;

/*aquí se esta convirtiendo una letra mayúscula a su correspondiente

letra minúscula lo que se hace es sumarle el desplazamiento („a‟-

„A‟)*/

Constantes cadenas: Una constante cadena también llamada cadena de carácter o simplemente cadena es una secuencia de caracteres encerrados entre comillas doble. ejemplo. “Leon Nicaragua” “1.1416” “ “ /* esto es una cadena vacia*/

Page 10: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

10

Estas cadenas se almacenan en localizaciones sucesivas de memoria, cada carácter ocupa un byte siempre finalizan con \0 (carácter nulo).

“leon “ representada gráficamente asi Se puede escribir una cadena en varias líneas asi: “ Esta es la cadena escrita\ en dos líneas “; Se pueden concatenar cadenas asi: Tenemos “ Hoy es un día “ “ muy especial “ “ me has conocido” Esto se escribiría asi: “ Hoy es un día muy especial me has conocido”; Constantes definidas (Simbólicas): Las constantes pueden recibir nombres simbólicos mediante la directiva #define Ej. #define NUEVALINEA \n #define PI 3.1416 #define PORCENTAJE 26 Puede notar que estas definiciones de constantes no terminan en punto y coma pues ellas no son sentencias. Constantes Enumeradas: Otro tipo de dato constantes son denominado enum que pertenece a los enteros; la declaración de un

tipo enumerado es implemente una lista de valores que pueden ser tomados por una variable de ese

tipo. Los valores de un enumerado se representarán con identificadores, que serán las constantes del

nuevo tipo .

Ejemplo:

enum dia_semana

{

lunes,

martes,

miércoles,

jueves,

viernes,

sabado,

domingo

} hoy;

enum dia_semana ayer;(hoy y ayer son enumerado)

l e o n \0

Page 11: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

11

Creación de un enumerado

Crear un enumerado supone definir un nuevo tipo de dato, denominado tipo enumerado.

Sintaxis

enum tipo_enumerado { /* identificadores */ };

Cualquier identificador de la lista se le puede asignar un valor inicial entero por medio de una expresión

constante. Los identificadores sucesivos tendrán valores correlativos a partir de este.

Ejemplo:

enum colores { azul,amarillo,rojo,verde=0,blanco,negro }color;

en este ejemplo azul =0, amarillo=1, rojo =2 , verde =0, blanco =1, negro =2

También es equivalente lo siguiente:

color =rojo; color = 2;

Reglas de los enumerados

a) dos o más miembros podrán tener el mismo valor

b) un identificador no podrá aparecer en más de un tipo

c) No es posible leer o escribir directamente un valor de un tipo enumerado.

Ejemplo:

/* enum.c */ enum colores { azul,amarillo,rojo,blanco,negro }; main() { enum colores color; // leer color del teclado printf (“color”); scanf (“%d”, &color); // visualizar color printf(“ %d\n”, color); }

si se introdujo3 visualiza 3

¿Para qué sirve un enumerado ?

Page 12: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

12

Estos tipos ayudan a acercar más al lenguaje de alto nivel a la forma de expresarnos.

Es mejor decir “si color es rojo ” que “ si color es 3”

Sinónimos de tipos:

Se utiliza la palabra typedef para declarar nuevos nombres de tipos de datos esto es sinónimos.

Ejemplo:

typedef unsigned long ulong ;

Tipo de dato Nuevo Nombre

Los identificadores deben contener uno o varios caracteres el primero deberá ser una letra o un sub

rayado a continuación letras y números

Constantes declaradas const y volatile:

El cualificador const permite dar nombres simbólicos a constantes, igual como el lenguaje Pascal su

formato general es :

const tipo nombre =valor;

si el tipo se omite C pone por defecto int.

Ej.

const int meses =12;

const char CARÁCTER = ‘@’ , const int OCTAL =0233;

const char CADENA[]=” El Primer Dia “;

Se le puede anteponer en lugar de const la palabra volatile estas constantes volátiles actúan igual a la const pero a diferencia esta pueden ser modificadas no solo por el programa que las contenga, si no que por el hardware de la maquina o por software del sistema. Esta variables volátiles no se pueden guardar en registros como las variables normales. Diferencia entre const y # define: Las definición de const especifica tipos de datos, termina con punto y coma y se inicializa como las variables. La directiva #define no especifica tipo de dato, no utiliza el operador de asignación(=) y no termina con punto y coma. Es mucho más ventajoso el uso de const que de #define ya que el compilador genera código más eficiente, además especifica tipo de datos, es más fácil detectar errores. También const tiene sus desventajas sobre todo que ocupa espacio en el código y #define no, el compilador lo toma como un comentario y cuando lo va a usar añade código correspondiente.

Page 13: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

13

Variables Una variable es una posición de memoria con nombre que se usa para contener un valor y que puede

ser modificado por el programa, las variables deben ser declaradas antes de usarlas.

Sintaxis tipo lista_de_variables tipo es cualquier tipo valido con algún modificador

lista_de_variables es uno o más nombres de identificador.

Ejemplo: int i,j,l; short int si; unsigned int ui; double salario, gastos; Además el nombre de una variable nada tiene que ver con su tipo.

Las variables se pueden inicializar en el momento que se declaran o bien mas delante de la declaración,

es decir s¡e puede utilizar un método de asignación después de definirla ej. char barra;

barra = ‘/’;

Diferencia entre asignación y declaración

La diferencia entre declaración y definición es sutil. Una declaración introduce un nombre de una variable y asocia un tipo con la variable. Una definición es una declaración que asigna simultáneamente memoria a ala variable. Ej. double salario; // declara salario de tipo double

unsigned int edad; // declara edad de tipo entero sin signo

int i =0; // Define i de tipo entero y la inicializa.

Duración de la Variable: En dependencia del lugar de donde se definen la variables de C, estas se pueden utilizar en la totalidad del programa, dentro de una función o puede existir solo temporalmente dentro de un bloque de una función, la zona donde una variable esta activa se denomina ámbito o alcance (scope). De acuerdo al ámbito de las variable podemos clasificarlas en:

Variables locales

Variables globales

Variables dinámicas. Variables Locales: Las variables locales son las definidas en una función y solo son visible solo en esoa función específica que las contiene las reglas son las siguientes:

1- En el interior de una función, una variable no puede ser modificada por ninguna sentencia externa a la función.

Page 14: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

14

2- Los nombres de la variables locales no tienen que ser únicos dos o mas funciones pueden tener variables con el mismo nombre, y asi cada variables es distinta en cada función.

3- Las variables locales a la función no existen en memoria hasta que se ejecuta la función , esto ahorra memoria por que permite compartir memoria para cada función que se ejecuta, pero no en forma simultanea.

Por el caso 3 las variables locales se denominan variable automáticas o auto, ya que se activan cuando se ejecuta la función y se elimina automáticamente cuando termina la función. Ejemplo: /*******Funcion suma Numeros *****/

#include<stdio.h>

int Sumar(int, int, int ); /*Prototipo de función*/

void main()

{

int A, B, C;

printf("Ponga los valores de A B Y C/n");

scanf("%d,%d,%d",&A,&B,&C);

printf("La suma es =",Sumar(A,B,C));

}

/* Definicion de la Funcion Sumar*/

int Sumar(int x, int y, int z)

{

return(x+y+z);

}

Se puede hacer notar que A, B y C son variables locales a main.

Variables Globales: Esta variable se declara fuera de cualquier función inclusive del main y tienen acceso todas las funciones. Eje. /*******Funcion suma Numeros *****/ #include<stdio.h>

int A, B, C; // Variables Globales

int Sumar(); /*Prototipo de función*/

void main()

{

printf("La suma es =",Sumar(A,B,C));

}

/* Definicion de la Funcion Sumar*/

int Sumar()

{

printf("Ponga los valores de A B Y C/n");

scanf("%d,%d,%d",&A,&B,&C);

return(A+B+C);

}

Page 15: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

15

Variables Dinámicas: Las variables dinámicas tienen las características que en algunos casos son iguales a las variables locales y globales, a diferencia de estas que se activan en forma automáticas, y se liberan automáticamente cuando termina la función, estas variables dinámicas se activan durante la ejecución del programa y se liberan cuando ya no se necesitan de estas estaremos hablando en los el tema posteriores en este curso.

ENTRADA Y SALIDA

Salida con formato

La función printf permite escribir bytes en stdout usando formato especificados, esta función devuelve

un entero igual al número de argumentos escritos, ella se encuentra el el fichero de cabecera stdio.h

Sintaxis

#include< stdio.h>

int printf ( const char * formato[, argumentos ]…);

//Compatibilidad con ANSI, UNIX,Windows.

FORMATO:

Indica la salida, es una cadena de caracteres formada por caracteres caracteres ordinarios, secuencias

de escape y especificaciones de formato

ARGUMENTO:

Representa el valor o valores a escribir , cada argumento debe tener su correspondiente

especificaciónes de formato y en el mismo orden si hay mas argumentos que formato, los que se

exceden se ignoran.

Ejemplo:

unsigned int edad =0; float peso =0;

printf (“ Tiene %u años y pesa %g Kilos \n”, edad, peso);

%u y %g son especificaciones de formato

\n es una secuencia de escape

Los demas elementos son caracteres ordinarios como Tiene, años etc.

Las especificaciones de formato se componen de:

% [ flags][ancho][.precisión][ { h | l |L}] tipo

sirmpre se empieza con %

Page 16: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

16

Flags Significado

- Justificación de resultado a la izquierda (Por defecto es a la derecha)

+ Antepone el signo + o (-) al valor de salida

0 Rellena la salida con ceros no significativos

Blanco Antepone un espacio en blanco al valor de salida si es positivo si se usa + el blanco se

ignora

# Se utiliza con e, E o f fuerza a que exista un punto decimal; cuando se usa con g o G

fuerza a punto decimal y evita que los ceros sean arrastrados o truncados, se

ignora con c,d,i,u, ó s

ANCHO

Minimo numero de posiciones para la salida, este ancho se incrementa si la salida tiene mas

posiciones.

PRECISIÓN

Esta depende del tipo de salida.

TIPO

Es uno de los siguientes caracteres

Carácter Salida

d (int) entero con signo base 10

i (int) entero con signo base 10

u (int) entero con sin signo base 10

o (int) entero con sin signo base 8

x (int) entero con sin signo base 16 (0,1,2 ..9 a,b,c…f)

X (int) entero con sin signo base 16 (0,1,2,…9 A,B,C …F)

f (double) valor con signo forma [-] dddd.dddd

e (double) valor con signo forma [-] d.dddde [±]ddd

E (double) valor con signo forma [-] d.ddddE [±]ddd

g (double) con signo en formato f o e (el que mas compacto sea en valor y presición)

G (double) igual que g pero introduce E en ves de e

c (int) un solo carácter , correspondiente al byte menos significativo

s cadena de carácter escribe caracteres hasta encontrar carácter nulo\0

Page 17: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

17

Ejemplo:

#include <stdio.h> main ( ) { int a =12345; float b =54865; printf( “%d \n”, a); printf( “\n%10s\n%10s\n”, “Hola “, “America”); printf(“\n%-10s\n%-10s\n”, “Hola “, “America”); printf(“\n”); // avance de linea printf( %.2f\n”, b); }

Resultado de el programa:

En una especificacion de formato el ancho y la presición pueden ser sustitudo por *, si el ancho y/o

presición se especifican con * el valor para los campos se toma del siguiente argumnto entero.

Ejemplo:

int ancho =15, presicion =2; double valor =-12.346; printf( “% *.* f ”, ancho,presicion,valor);

Resultado

-12.35

justificado a la derecha con 15 posiciones y dos decimales número redondeado

Page 18: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

18

La presición en función del tipo tine el siguiente significado:

Tipo Significado

a,i,u,o,x,X Especifica el número minimo de dígitosque se tiene que escribir, si lo

amerita se rellenan con ceros, sino se truncan

e, E ,f Especifican números de dígitos despues del punto decimal. Por defecto

6. El valor es redondeado

g , G Especifica el maximo número de dígitos significativos. Por defecto son 6

c No tiene efecto la presición

s El número maximo de caracteres que se escribiran, si se excede se

ignoran.

h Se utiliza prefijo con d,i,o,x,X especificando que el argumento es short

int con u para especificar que es short unsigned int

l Prefijo de d,i,o,x,X especifica que argumento es long int con u para

especificar long unsigned int

L Se utiliza con e.E,f,g y G especifica que argumento es long double.

Entrada con formato

Para la entrada de los datos se usa scanf que lee byte (caracteres ASCII) de stdin, los interpreta de

acuerdo con el formato especificado y los almacena en los argumentos especificados.

Esta función devuelve un entero correspondiente al número de argumentos leídos y asignados, si el

número devuelto es 0 indica que no pude leer ni asignar ningún dato; si se intenta leer un carácter de

final de fichero (end of File) entonces retorna una constante EOF declarada en stdio.h.

Sintaxis #include<stdio.h> int scanf (const char * formato[, argumento]…); //Compatible con ANSI; UNIX y Windows

FORMATO

Interpreta cada dato de entrada, está formado por los caracteres ( ‘ ‘ ,\t, \n) , caracteres ordinarios y

especificaciones de formatos, estos se leen de izquierda a derecha

Cada argumento tiene que tener sus correspondientes especificaciones de formato y en el mismo orden.

ARGUMENTO

Es la variable pasada por referencia que se quiere leer. Si se quiere leer más de un argumento estos se

tienen que separar con ( ‘ ‘ ,\t, \n) o por el carácter que se especifique en el formato.

Page 19: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

19

Ejemplo:

Entrada

scanf (“%d %f %c”, &a,&b,&c); 5 23.4 + enter scanf (“%d, %f, %c”, &a,&b,&c); 5 23.4 + enter scanf (“%d :%f :%c”, &a,&b,&c); 5: 23.4 : + enter

Es aconsejable poner espacios en blanco como separadores, si no tienen espacios en blanco al teclear se

ponen estos espacios, para argumentos numéricos no hay problema pero para caracteres toma los

espacios en blanco como parte del dato.

Ejemplo:

scanf( “ %d%d%c”, &a,&b,&c); 5 23.4 x enter

Aquí x toma el espacio en blanco tecleado como valor valido.

Cuando se invoca a una función de entrada como scanf, los datos tecleados no se envían hasta que se

ponga entrar, los datos tecleados se escriben en un buffer o memoria intermedia asociada al flujo stdin

y se envían a la CPU cuando se pulsa entrar

La función scanf devuelve el número de argumentos leídos y asignados

Ejemplo:

int a,r;

float b;

char c;

r = scanf( “%d %f %c”, &a,&b,&c);

Los valores que puede tomar r son 0, 1,2 ó 3

Las especificaciones de formato está compuesta por :

% [*] [ancho] [{h | l }] tipo

Siempre comenzaran con % .

Si se pone un * , un asterisco después de % suprime la asignación del siguiente dato

Teclado Buffer CPU

Pantalla

Page 20: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

20

Ejemplo

#include <stdio.h> main( ) { int horas,minutos; sacanf( “ % d %*s %d %*s “, &horas,&minutos); printf ( “ Hora =%d , minutos =%d”,hora,minutos); }

Ejecución

Tecleando 12 horas 30 minutos entrada

Se imprime Hora =12 , minutos = 30 // no aparece las cadenas tecleadas

Si se pone h

Esta se utiliza como prefijo con los tipos d,i,n,o,x para especificar que el argumento es un short int o

con u especifica short unsigned int

Si se pone l

Se utiliza como prefijo de d,i,n,o y x especifica que argumento es un long int o bien usando u para

argumento long unsigned int también con los prefijos f y g indican argumentos double

TIPO

El tipo determina cómo tiene que ser interpretado el dato de entrada si es un carácter, una cadena de

caracteres, o un número

Carácter El argumento es un puntero a

Entrada esperada

d Int Entero con signo base 10

o Int Entero con signo base 8

x, X Int Entero con signo base 16

I Int Entero con signo base 10,8,16 si comienza con 0 es octal, y si

comienza con 0x ,0X es hexadecimal

U Unsigned int Entero sin signo base 10

f,e,E,g y G float Valor con signo de form [-] d.ddd ó notación científica con e o E

c char Un solo carácter

s char Cadena de caracteres

Page 21: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

21

Carácter de fin de fichero

Todo fichero que contiene dato tiene un principio y un final.

Final de Fichero

Inicio de Fichero

Para introducir por teclado el final de fichero se teclea ctrl. + D ( en UNIX) y ctrl. + Z en Windows

Como los ficheros se manejan a través de un flujo, decir final del flujo es sinónimo de decir final de

fichero.

La marca que indica el final de un fichero es EOF, constante definida n el fichero de cabecera stdio.h

Ejemplo:

#include < stdio.h> main ( ) { int r=0; float precio =0; printf( “precio “); r = scanf( “%g “, &precio); (r ==EOF)?printf (“ Fin de entrada de Datos”) : printf(“ %g\n “, precio); }

Carácter de fin de línea

Siempre que se introduce datos por teclado y tecleamos entrar se introduce \n , en la salida este

carácter produce CR+LF ( CR es ASCII 13 y LF es ASCII 10 ).

Si al introducir datos numéricos con scanf en la variable se guardan los datos numéricos validos, pero

no se guarda el carácter ‘\n’ este quedar en el buffer, si después se introducen caracteres, daría

resultados inesperados, el primer carácter valido será el \n que se encuentra en el buffer; para evitar

esto se tiene que limpiar el buffer.

Limpiar buffer (Para limpieza del buffer se utiliza la función fflush.)

Sintaxis #include<stdio.h> int fflush( FILE * flujo); //Compatible con ANSI, UNIX y Windows

Nombre

Direccio

Telefono

Edad

….

Nombre

Direccio

Telefono

Edad

….

Nombre

Direccio

Telefono

Edad

….

Nombre

Dirección

Teléfono

Edad

….

Page 22: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

22

Si se trata de un flujo desde el origen ( flujo desde que el programa lee los datos) como stdin ligado al

teclado , fflush limpia el buffer . ( en UNIX y LINUX) no tiene este efecto, sino cuando se trata flujo

hacia el destino ( flujo en que el programa escribe los resultados) fflush escribe el contenido del buffer

en el fichero o dispositivo ligado a el flujo y limpia el buffer,

Esta función fflush retorna un 0 si se ejecuta correctamente y un EOF si ocurre un error.

ESCRIBIR UN CARÁCTER EN LA SALIDA ESTÁNDAR

función getchar

Se requiere leer un carácter desde el teclado (stdin), existe la función getchar.

Sintaxis # include <stdio.h> int getchar (void); //Compatible con ANSI, UNIX y Windows

Esta función devuelve el carácter leído ó un EOF si detecta el final del fichero.

Ejemplo

#include <stdio.h> main( ) { char car; printf(“introduzca un carácter “); pintf (“ El carácter es %c y su valor ASCII es %d “, car,car); }

función putchar

Para visualizar un carácter por pantalla (stdout) salida estándar, C tiene una función denominada

putchar.

Sintaxis

# include <stdio.h> int putchar (int c); //Compatible con ANSI, UNIX y Windows

Esta función devuelve el carácter leído ó un EOF si ocurre un error.

Ejemplo

putchar (‘\n’); /* Avance a la línea siguiente, equivalente a printf (“\n”) */

putchar (car); /*Escribe el carácter contenido en car, equivalente a printf(“%c”,car); */

Función getch y getchar

La función getch lee un carácter de teclado, pero este al teclearlo no se visualiza (sin eco), la función

getche, también lee un carácter del teclado pero si se visualiza al teclear(con eco).

Sintaxis # include <conio.h> int _getch(void); int _getche(void); //Solo compatible con windows.

Page 23: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

23

Función system

La función system permite enviar cualquier orden al sistema operativo.

Como C no tiene una función para limpiar pantalla se utiliza esta función y la orden correspondiente del

sistema para limpiar la pantalla.

Sintaxis: #include<stdio.h> int system (const char * cadena_de _caracter); //Compatible con ANSI,UNIXy Windows.

Limpiar pantalla.

system(“cls”) // para Windows system (“clear “); // para UNIX

si se requiere realizar una pausa en la ejecución de un programa se llama a la función pause del sistema

operativo.

Así:

system(“PAUSE”);

Page 24: Elementos del lenguage C - ING.KARINA ESQUIVEL ... Mapa de memoria Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para especificaciones distintas.

24

Bibliografía Francisco Javier Ceballos Sierra Programación C/C++ editorial RAMA Programación en C Luis Joyanes Aguilar /Ignacio Zahonero Martin Editorial Mc Graw Hill. http//www.wilpedia.com Plan docente Programación I y II Raúl Hermogenes Ruiz C.