Unidad 4 - GEOCITIES.ws

Anuncio
Unidad 4
Principios del lenguaje C
1
Objetivos
n
n
n
n
n
n
n
Conocer la historia y los fundamentos del
Lenguaje C.
Conocer la estructura y el aspecto general
de un programa en C.
Conocer las herramientas básicas que
ofrece este lenguaje de programación:
tipos de datos, constantes, operadores,
etc. con el fin de que el alumno comience
a usar el lenguaje en sencillos programas
de lectura proceso y escritura de
variables.
Usar los operadores conociendo su orden
de prioridad y asociatividad.
Conocer las distintas conversiones de
tipos de datos para construir
correctamente las expresiones.
Conocer las funciones de E/S y la librería
que las contiene.
Hacer consciente al alumno de que tiene
un lenguaje de programación para dar
órdenes a la máquina y que dependiendo
del uso, correcto o incorrecto, que haga de
él conseguirá un funcionamiento bueno o
malo de la misma.
n
n
n
n
n
n
n
Distinción de las tres estructuras básicas
de la programación estructurada escritas
en C.
Correcta composición y escritura de las
expresiones lógicas que sirven como
condiciones con las herramientas que C
nos proporciona.
Diferenciación entre procesos que se
excluyen y procesos dependientes en la
sintaxis correspondiente en C.
Correcto control de los bucles, y
utilización de contadores y
acumuladores en algoritmos que se
codifican en lenguaje C.
Realización de procesos de lectura en
número indeterminado utilizando para
ello las funciones que el lenguaje nos
proporciona.
Conocimiento y empleo de las variables
de control de proceso (indicadores o
flags) con los tipos de datos
incorporados.
Distinción entre los distintos tipos de
estructuras de control de que dispone C
y elección de la más adecuada a cada
caso concreto.
2
1
Contenidos
n
n
n
INTRODUCCIÓN
ESTRUCTURA GENERAL DE UN PROGRAMA EN C
q
Comandos del preprocesador
q
Definiciones de constantes
q
Definiciones de tipos
q
Declaración de prototipos de funciones y procedimientos
q
Declaración de objetos globales
q
Función main
q
Definición de subprogramas
ALGUNOS COMPONENTES LÉXICOS DEL LENGUAJE
n
TIPOS DE DATOS ELEMENTALES
n
VARIABLES
n
MODIFICADORES DE ALMACENAMIENTO
q
automatic o auto (sólo para objetos locales)
q
register (sólo para objetos locales)
q
static (para objetos, funciones y uniones anónimas)
q
extern (para objetos y funciones)
n
CONSTANTES
n
OPERADORES
q
Operadores aritméticos
q
Operadores relacionales
q
Operadores lógicos
q
Otros operadores
n
EXPRESIONES
q
Expresiones lvalue y rvalue
q
Conversiones de tipo
q
Espaciado y paréntesis
q
Precedencia y asociatividad de operadores
n
FUNCIONES BÁSICAS DE ENTRADA/SALIDA EN C
n
SENTENCIAS
n
ESTRUCTURA SECUENCIAL
n
ESTRUCTURAS DE SELECCIÓN SIMPLE
n
ESTRUCTURAS REPETITIVAS
.
n
n
ESTRUCTURA DE SELECCIÓN MÚLTIPLE
PROPOSICIONES ESPECIALES
q
break
q
continue
q
goto
3
Historia
ORÍGENES DEL C
[1967] Martin Richards desarrolló BCPL como lenguaje para escribir software de sistemas operativos y
compiladores
[1970] Ken Thompson desarrolló B con él que se construyeron las primeras versiones de UNIX para los
Laboratorios Bell (ATT).
[1972] Ritchie implementó en un DEC -PDP-11 de los Lab. Bell una evolución del B: C. Con él se desarrolló
UNIX.
El Sistema Operativo, el compilador de C y esencialmente todos los programas de aplicación de UNIX
están escritos en C [ K&R, p. xi]
[1978] Kernighan y Ritchie: The C programming Language. Prentice Hall. Consolida el C tradicional, clásico
o C de Kernighan y Ritchie.
[1988] Segunda edición de K y R.. Anuncian el ANSI/ISO
[1989] Se aprobó el standard ANSI/ISO para el C.
[1990] Se publicó el documento que fija el C ANSI/ISO.
C++
[1980-5] Bjarne Stroustrup desarrolló en Lab. Bell el C++. Orientación a Objetos
[1997] Stroustrup: The C++ Programming Language, tercera edición. Addison-Wesley . La segunda era del
1991.
[1998] Publicación del documento ANSI/ISO sobre C++
C#
[2002] Es un lenguaje derivado de C/C++ y Java desarrollado por Microsoft.
4
2
Características del lenguaje C
n
n
n
n
n
n
n
Lenguaje de nivel medio
Es un lenguaje estructurado
De propósito general
Portable y compacto
Pocas palabras reservadas (43 en C y 48 en C++)
Gramática sencilla y flexible
Variedad de operadores
5
Estructura general de un programa en C
<
<
<
<
Comandos del preprocesador >
Definición de constantes>
Definición de tipos >
Declaración de prototipos de funciones y
procedimientos >
< Declaración de objetos globales >
Función main
{
< Declaración de objetos locales>
< instrucciones ejecutables>
}
< Definición de funciones y procedimientos >
/*Ejemplo1: Escribir un programa en C que cree una tabla de conversión de
Euros a pesetas desde 1 a 100 Euros (Nota: 1 Euro = 166.386 pts).*/
#include <stdio.h>
#define LOWER 0
#define UPPER 100
#define EURO 166.386
int main()
{
int euro; /* Declaración de variables */
for (euro = LOWER; euro <= UPPER; euro = euro + 5)
{
printf ("%3d\t%8.2f\n", euro, euro * EURO);
}
return (0);
}
6
3
Primera aproximación
•Preprocesador
•Definiciones de nuevos tipos: typedef tipo nombre_nuevo tipo
Di cuáles son permitidos y cuales no:
•Objetos globales y locales
1. Int
•Función main
2. Enteros
•Subprogramas
Precio_venta
3. Precio venta
•Comentarios
4. P_V_P
nDelimitadores: ; , ( ) { } [ ]
5. 5horas horas5
n
identificadores : permiten referenciar a constantes, variables,
funciones y otros objetos definidos por el usuario.
q Comienzan por letra o _ (normalmente en librerías estándar )
q Seguido por letras, números o _
q No puede tener espacios o caracteres de puntuación
q Tamaño máximo depende del compilador
q Mayúsculas <> minúsculas
q No permitidas ni palabras reservadas ni funciones de C
7
Tipos de datos
Modificadores de tipo: short, long, signed y unsigned
8
4
Variables
Declaración
n
[ modif. Almacenamiento ] [ modif. Tipo ] tipo lista_variables;
char continuar = ‘s’;
long int Tipos_Especias ;
float sueldo = 2590.54;
n
Tipos de variables
q Local
Declarada y conocida dentro de la función o estructura que la usa.
q global
Declarada antes del main y conocida por todo el programa.
NO DEBEN USARSE:
. Efectos laterales
. Afectan a la independencia y modularidad
Página 169 . Distintos tipos de almacenamientos
9
Variables II
n
Modificadores de almacenamiento
q automatic o auto .
Es el modo por defecto de las variables locales
. Se crean en la pila
. No suele especificarse
q Register
Se
almacenan
en un registro del micro.
q static
Se almacenan en el segmento de datos. . Contadores rápidos
. Usado en objetos globales por defecto
. El compilador los inicializa a 0
. Si se declara dentro de una función conservará su valor entre una llamada y otra.
q extern
Las funciones son externas por defecto
. Si la variable es global nos indica que ya está declarada en otro archivo fuente.
. Si la variable es local indica que está declarada en otra parte de la función.
Ver ejemplo página 169
10
5
Constantes
n
n
Literales: se usan directamente. Ej: 4, L87, 3.14, 1.2 e + 3, ‘a’, “ hola”
Simbólicas: # define nombre_identificador valor_constante
Operadores aritméticos
11
Operadores relacionales
Operadores lógicos
12
6
Asignación =
Incremento ++
a = 5;
b = ++ a;
En la salida : a vale 6 y b vale 6
decremento – –
a = 5;
b = a ++;
En la salida : a vale 6 y b valen 5
sizeof ( tipo-dato )
devuelve un entero, la cantidad de bytes de su operando
sizeof (float) à devuelve 4
char caracter à sizeof ( caracter) à devuelve 1
int array [30] à sizeof (array) à devuelve 30 x 2 = 60
13
Prioridad de los operadores
Página 180 del libro – corregir menor precedencia
14
7
Conversiones de tipo
Al evaluar una expresión: ésta se va convirtiendo al tamaño del dato mayor
Para forzar una conversión: (tipo) operador à (int) real
En expresiones: al de mayor tamaño.
En asignaciones:
char, unsigned char, signed char, short
6
unsigned
6
long
6
unsigned long
6
float
6
double
float a = 5, b = 2;
float resul = a / b; // resul = 2.5
int resul2 = (int) a / b; // resul2= 2
sin pérdida:
float a = 375;
int b = ‘ H’;
long c = - 45;
double d = 9.6;
float e = 250;
con pérdida:
char a = 450;
int b = 520745;
int c = 75.45;
float d = 1.58 e – 62;
6
long double
15
Salida estándar : printf ( ) – I –
n
n
printf ("cadena de control”,arg1,arg2, arg3,..., argn);
Caracteres de control
Secuencias de escape
16
8
Salida estándar : printf ( ) – II –
modificadores de formato:
n
q
q
q
q
ajuste a la izquierda: longitud mínima de campo: n
precisión: n.m (n mínimo parte entera y m decimales a visualizar, si lo aplicamos a
caracteres tendremos tamaño mínimo n y tamaño máximo m si la cad ena es más larga
se truncan los caracteres).
modificador variable: *.*, los tamaños se pasan como parámetros.
Ejemplos:
#include <stdio.h>
#define texto “¡BUENOS DIAS!”
void main (void)
{
printf ( “///// %2s\n”,texto);
printf (“///// %22s\n”,texto);
printf (“///// %22.5s\n”,texto);
printf (“///// %-22.5s\n”,texto);
}
SALIDA:
/////¡BUENOS DIAS!
///// ¡BUENOS DIAS!
/////
¡BUEN
/////¡BUEN
17
Salida estándar : printf ( ) – III–
Ejemplos:
#include <stdio.h>
#define texto “¡BUENOS DIAS!”
void main (void)
{
SALIDA: (ø espacio blanco)
^ ø ø 123.2300, 448^
^123.2300 ø ø, 448 ø ø ø ø ø ^
^123.2, 1.2323e+02^
^ ø ø ø ø ø 123.3^
el dinero no lo tengo, tengo 7000
de las antiguas pesetas
printf ( “^ %10.4f, %2d^\n”,123.23, 448);
printf (“^ %-10.4f, %-8d^\n”,123.23, 448);
printf (“^ %-3.1f, %e^\n”,123.23, 123.23);
printf (“^ %*.*f\n”,10, 1,1234.34);
printf (“el dinero no lo tengo”);
printf (“, tengo %u \nde las antiguas pesetas \n”, 7000);
}
18
9
Entrada estándar: scanf ( ) – I –
n
n
n
scanf ("cadena de control”, &arg1, &arg2, &arg3,..., &argn);
Caracteres de control son los mismos que con printf( ).
Hay que añadir %[ ] – datos permitidos - y el %*d – lee y no carga -
Ejemplo1:
Ejemplo2 (para %*d):
#include <stdio.h>
#include <stdio.h>
void main (void)
void main (void)
{
{
int edad, hoy;
int n;
char nombre[25];
printf (“ Introduce 3 números: \n”);
printf (“ Deme su nombre: ”);
scanf (“%*d %*d %d”, &n);
scanf (“%s”, nombre);
printf (“El número leido es: %d.”, n);
printf (“ Deme su edad: ”);
}
scanf (“%d”, &edad);
printf (“ Deme el año actual con 4 cifras: ”);
scanf (“%d”, &hoy);
printf (“%s, nacistes el año %d.”, nombre, hoy - edad);
}
19
Entrada estándar: scanf ( ) – I I–
Ejemplo 3 (para %[ ]d):
#include <stdio.h>
void main (void)
{
char c;
printf (“ Deme la afirmación correcta: \n ”);
printf (“ a) El ; marca el fin de una instrucción en C \n”);
printf (“ b) El } marca el fin de una instrucción en C \n”);
printf (“ c) No es necesario marcar el fin de una instrucción en C \n”);
printf (“ ¿Opción?: ”);
scanf (“%[abc] c”, &c); /* podemos decir scanf (“%[a-c]c”, &c); */
switch ( c )
{
case ‘a ‘:
printf (“ Correcto!!!!!! ”);
break;
case ‘b’:
case ‘c’:
printf (“ A ESTUDIAR!!!!!! ”);
break;
default:
printf (“Opción no permitida”);
}
}
20
10
Estructura secuencial
Estructuras iterativas
n
if (expresión-condicional)
proposición1
[else]
proposición2
while
while (expresión-condicional)
proposición1
Ejemplo: página 191
Ejemplo: página 190
Sentencias o
proposiciones
n
n
do
Simple: contienen una única
instrucción y acaban en
Compuesta o doble: conjunto
de instrucciones simples
colocadas entre
;
n
do-while
proposición1
while (expresión-condicional);
Ejemplo: página 192
{}
21
Estructura repetitiva para
n
exp1
for
for ([exp1]; [exp2]; [exp3])
proposición
• for (;;);
bucle infinito.
• for (;i < 5 && n > 0;)
{
printf ( “ deme número”);
scanf (“%d”,&n);
if (n > 0)
i++;
}
bucle para con sólo exp2
exp2
proposición
exp3
22
11
Estructura de selección múltiple
switch (expresión)
{
case const 1:
const 1
proposición 1
break
proposición1
[ break;]
case const 2:
const 2
proposición 2
default
proposición n
proposición2
[break;]
…
case const 3:
proposición n
[break;]
[default:]
proposición
} /* Fin de switch. */
break
Ejemplo: página 195
23
Estructuras de salto: sólo usaremos break en switch
break;
Salida de la estructura que lo contiene.
continue;
Devuelve el control a la expresión condicional de la estructura en la que se
encuentra.
goto etiqueta;
Salto incondicional a la etiqueta llamada. La etiqueta debe ser colocada y debe
acabar en “:”
Ejemplo: apoyo4_1.cpp
24
12
Descargar