0% encontró este documento útil (0 votos)
37 vistas24 páginas

Estructuradosegundo 20101

ESTRUCTURA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
37 vistas24 páginas

Estructuradosegundo 20101

ESTRUCTURA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

2010

UNAN LEON

Ccomputación

Autor Raúl H Ruiz C


Documento recopilado
Asignatura:
Programación Estructurada

ELEMENTOS DEL LENGUAJE

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
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> Archivos de cabecera


main()
{ Cabecera de Funcion Principal

.........
Sentencias
}

PARTES O ZONAS DE UN PROGRAMA EN C

#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)


{
………………………….

2
Mapa de memoria
Un programa compilado en C crea y usa cuatro regiones de memoria lógicas diferentes, para
especificaciones distintas. Así:

R1: Contiene Realmente el


(heap) Montón(Region 4)
programa

R2:Guarda Variables (stack) Pila (Region 3)


Globales
Variables Globales(Region 2)
R3: Pila
Código de Programa(Region 1)
R4 : Monton

¿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.

Código fuente
(o programa fuente)

Compilador Archivos de
cabecera

Código objeto

Bibliotecas Enlazador

Programa ejecutable

3
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: ERROR
int void( ) Nombre de función no se
{ puede utilizar esta ERROR
int float; palabra Es te es un tipo de dato no se
puede tomar como identificador
}
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

4
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.

5
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 Intervalo mínimo
en bits

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

6
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.

7
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

8
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*/

9
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 l e o n \0

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)

10
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 ?

11
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.

12
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.

13
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);
}

14
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 %

15
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 [-] [Link]

e (double) valor con signo forma [-] [Link] [±]ddd

E (double) valor con signo forma [-] [Link] [±]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

16
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

17
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.

18
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

Pantalla

Teclado Buffer CPU

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

19
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 Entrada esperada


puntero a
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 [-] [Link] ó
notación científica con e o E
c char Un solo carácter
s char Cadena de caracteres

20
Carácter de fin de fichero
Todo fichero que contiene dato tiene un principio y un final.

Final de Fichero
Nombre
Nombre
Direccio
Nombre
Direccio
Nombre Telefono
Direccio
Telefono
Dirección Edad
Telefono
Edad
Teléfono ….
Edad
….
Inicio
Edadde 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

21
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.

22
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”);

23
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//[Link]
Plan docente Programación I y II Raúl Hermogenes Ruiz C.

24

También podría gustarte