1. Introduccion al lenguaje C (2en1)

Anuncio
INTRODUCCIÓN AL LENGUAJE C
Fundamentos de Informática EUP ULPGC
Jose Torres
1 de 36
Historia de C
Precursores: muchas ideas provienen de BCPL (Martin
Richards, 1967) y de B (Ken Thompson, 1970)
C fue diseñado originalmente en 1972 para el SO UNIX en el
DEC PDP-11 por Dennis Ritchie en los Laboratorios Bell
Primer libro de referencia de C: The C Programming
Language (1978) de Brian Kernighan y Dennis Ritchie
En 1989 aparece el estándar ANSI C
En 1990 aparece el estándar ISO C (actual estándar de C)
WG14 se convierte en el comité oficial del estándar ISO C
En 1994 WG14 crea las primeras extensiones a ISO C
En 1983 aparece C++ (orientado a objetos)
Fundamentos de Informática EUP ULPGC
Jose Torres
2 de 36
Fundamentos de Informática EUP ULPGC
Jose Torres
3 de 36
Características de C
Lenguaje de propósito general ampliamente utilizado
Presenta características de bajo nivel: trabaja con
direcciones de memoria (punteros)
Estrechamente asociado con el sistema operativo UNIX:
UNIX y su software fueron escritos en C
Lenguaje pequeño: sólo ofrece sentencias de control
sencillas y funciones
No ofrece mecanismos de E/S (entrada/salida)
Fuera del lenguaje, se ofrecen como funciones de biblioteca
Fundamentos de Informática EUP ULPGC
Jose Torres
4 de 36
Programas portables: pueden ejecutarse sin cambios en
multitud de computadores
Permite programación estructurada y diseño modular
Inconvenientes de C
Es bastante permisivo con la conversión de datos
Sin una programación metódica puede ser propenso a
errores difíciles de encontrar
La versatilidad de C permite crear programas difíciles
de leer
Fundamentos de Informática EUP ULPGC
Jose Torres
5 de 36
Primer programa en C
#include <stdio.h>
Directiva para usar funciones de E/S
main()
Cabecera del programa principal
{
Empiezan las instrucciones del pp
Todas terminan en “;”
printf ("Hola\n");
‘Instrucción’ para escribir por pantalla
printf (“Adios\n”);
‘Instrucción’ para escribir por pantalla
}
Termina el programa principal
Fundamentos de Informática EUP ULPGC
Jose Torres
6 de 36
¿Cómo crear el programa?
Con un editor de texto
Guardar el programa en un archivo ‘programa1.cpp’
¿Cómo compilar y ejecutar el programa?
Un compilador de C permite:
- Analizar y detectar errores en el código fuente
- Convertir un programa escrito en C en código ejecutable
por el computador (archivo ‘programa1.exe)
Fundamentos de Informática EUP ULPGC
Jose Torres
7 de 36
Fundamentos de Informática EUP ULPGC
Jose Torres
8 de 36
Pasos para crear y ejecutar un programa en C con DevC++
Ejecuta ‘Dev-C++’.
1) Escribir el programa:
Comando ‘Archivo / Nuevo / Código fuente’
Editor de texto específico
2) Compilarlo: para generar un programa ejecutable (‘.exe’)
Comando ‘Ejecutar / Compilar’
Primero guardar el programa en un archivo ‘.cpp’
Fundamentos de Informática EUP ULPGC
Jose Torres
9 de 36
3) Corregir errores sintácticos:
En la parte inferior del área de edición aparecerán
Indican número de línea y mensaje
Habrá que corregirlos (con el editor de texto) y volver a
compilarlo hasta que ya no los haya.
4) Ejecutar el programa:
Comando ‘Ejecutar / Ejecutar’
Se abre una ventana MS-DOS donde se ´verá´ la ejecución
del programa
Habrá que añadir como última instrucción “while (1)”
Si no funciona correctamente:
determinar los fallos, modificar el programa (editor de texto),
compilarlo y ejecutarlo, hasta que funcione correctamente
Fundamentos de Informática EUP ULPGC
Jose Torres
10 de 36
Fundamentos de C
Comentarios
Comienzan con /* y finalizan con */
#include <stdio.h>
/* Funciones de entrada/salida */
/* Este programa muestra un saludo por pantalla */
main()
{
/* Muestra un saludo por pantalla */
printf("Hola y adios\n");
}
Fundamentos de Informática EUP ULPGC
Jose Torres
11 de 36
Identificadores y palabras reservadas
Identificador: nombre definido por el programador que se
asigna a los datos (variables) y funciones dentro de un
programa
Puede incluir los dígitos(del 0 al 9), las letras(mayúsculas y
minúsculas son distintas) y el guión bajo (`_`)
No puede empezar por un dígito
Ejemplos: x, y1, nombres, area, suma_1, valor_medio,
TABLA
Fundamentos de Informática EUP ULPGC
Jose Torres
12 de 36
Palabras reservadas
Identificadores con significado predefinido estándar
No pueden ser usadas como identificadores del
programador
auto do for return typedef
break double goto short union
case else if sizeof unsigned
char enum int static void
const extern long struct volatile
continue oat register switch while
Fundamentos de Informática EUP ULPGC
default
Jose Torres
13 de 36
Variables
Identificador utilizado para representar un cierto tipo de
información
En su forma más sencilla para representar un dato
individual:
- una cantidad númerica
- un carácter alfanumérico
Hace referencia a unas posiciones de memoria que
contendrán un dato de un tipo determinado
A cada variable se le asigna un tipo de dato
Fundamentos de Informática EUP ULPGC
Jose Torres
14 de 36
Una variable puede almacenar diferentes valores en
distintas partes del programa (sentencias de asignación)
No cambia el tipo de dato almacenado
Ejemplos de variables válidas:
numero
_color
identificador_1
Las siguientes variables son todas distintas: pi PI Pi pI
Fundamentos de Informática EUP ULPGC
Jose Torres
15 de 36
Declaración de variables
Una declaración asocia un tipo de datos determinado a
una variable
Reserva las posiciones de memoria que contendrá el valor
que tenga la variable en cada momento
Toda variable usada en un programa debe ser declarada al
principio del mismo (después de ‘{’)
El formato de una declaración es:
tipo_de_datos var1, var2, ..., varN;
Ejemplos: int x;
int num1, num2;
char letra;
Fundamentos de Informática EUP ULPGC
Jose Torres
16 de 36
Tipos de datos elementales (carácter o número)
Tipo
Significado
char
int
short
long
unsigned int
unsigned short
carácter
1
entero
4
entero corto
2
entero largo
4
entero sin signo
2-4
entero corto
sin signo
2
entero largo
sin signo
4
coma flotante(real) 4
coma flotante largo 8
unsigned long
float
double
Tamaño en bytes
Fundamentos de Informática EUP ULPGC
Jose Torres
17 de 36
Ejemplos de declaración de variables:
int a, b, c;
float numero_1, numero_2;
char letra;
unsigned long entero;
Deben asignarse a las variables nombres significativos:
Ejemplo:
int temperatura;
int contador;
Se les puede asignar un valor inicial
tipo_de_datos var1 = valor;
Ejemplo: int num1=63;
Fundamentos de Informática EUP ULPGC
Jose Torres
18 de 36
Literales: representan valores constantes que se pueden
asignar a las variables
(1) Caracteres: entre comillas simples: 'a', 'b', ‘A’, ‘B’…
Ejemplos: char letra1 = ‘a’, letra2 = ‘B’;
(2) Valores enteros:
- Notación decimal: 987
- Notación hexadecimal: 0x25 (37 en decimal) ó 0X25
- Notación octal: 034 (28 en decimal)
- Enteros decimal sin signo: 485U
- Enteros decimal largo: 485L
- Enteros decimal largo sin signo : 485UL
- Valores negativos (signo menos): -987
Ejemplo: int num1 = 987, num2 = 0x25, num3 = 034;
Fundamentos de Informática EUP ULPGC
Jose Torres
19 de 36
(3) Valores reales:
- Punto fijo: 12, 14, 8., .34, 16.583
- Notación exponencial: .2e+9, 1.04E-12
- Valores negativos (signo menos): -12, -2e+9
p.e.: float numero = 1.04E-12;
Variables, tipos y literales:
Importante tener clara la diferencia
Una variable es un identificador que almacena un valor de
un cierto tipo de datos
Un literal representa un valor concreto de un determinado
tipo de datos
Ejemplo: int temperaturaHorno = 234;
Fundamentos de Informática EUP ULPGC
Jose Torres
20 de 36
La función printf
Permite imprimir información por la pantalla
printf (formato, lista_de_argumentos);
formato: cadena de caracteres a imprimir (texto informativo)
y especificadores de formato (cómo se imprimirán) para los
argumentos (valores)
lista_de_argumentos: tantos como especificadores de
formato
Pueden ser literales, variables o expresiones
Ejemplo: printf (“El valor es %d”, num);
Fundamentos de Informática EUP ULPGC
Jose Torres
21 de 36
Especificadores de formato en que se imprime un valor:
Especificador
%c
%d
%u
%o
%ou
%x,%X
%xu,%Xu
%f
%e, %E
Significado
Imprime un carácter individual
Imprime un entero decimal con signo
Imprime un entero decimal sin signo
Imprime un entero octal con signo
Imprime un entero octal sin signo
Imprime un entero hexadecimal con signo
Imprime un entero hexadecimal sin signo
Imprime un real con punto decimal
Imprime un real con notación exponencial
Fundamentos de Informática EUP ULPGC
Jose Torres
22 de 36
Ejemplos:
printf("Hola Lola");
Hola Lola
printf("El valor del numero es %d", 28);
El valor del numero es 28
printf(“El valor del caracter es %c”, ‘f’);
El valor del caracter es f
int numero= 28;
printf("El valor del numero es %d", numero);
El valor del numero es 28
Fundamentos de Informática EUP ULPGC
Jose Torres
23 de 36
char letra=’f’;
printf(“El valor del caracter es %c”, letra);
El valor del caracter es f
printf("El entero es %d y el real es %f", 28, 3.75);
El entero es 28 y el real es 3.75000
int num1=37;
float num2=43.567;
printf (“Los valores son %d y %f”, num1, num2);
Los valores son 37 y 43.56700
Se podría especificar el número de decimales:
printf (“Los valores son %d y %.3f”, num1, num2);
Los valores son 37 y 43.567
Fundamentos de Informática EUP ULPGC
Jose Torres
24 de 36
Secuencias de escape:
Secuencia
\n
\t
\b
\r
\"
\'
\\
\?
Significado
nueva línea
tabulador
backspace
retorno de carro
comillas
apóstrofe
backslash
signo de interrogación
Pe: printf (“Esta es una linea,\n”); printf (“y esta es otra.”)
Esta es una linea,
y esta es otra.
Fundamentos de Informática EUP ULPGC
Jose Torres
25 de 36
Expresiones
Una expresión es una combinación de identificadores
(variables), literales (valores constantes) y operadores, que
representan un valor (número o carácter)
Ejemplos:
345, 87.456
a + b, a + 3
num1 * (num2 + 7)
siendo a, b, num1, num2 variables numéricas
‘+’ y ‘*’ son operadores aritméticos para la suma y el
producto respectivamente
Habrá que evaluar la expresión, aplicando las reglas de los
operadores, para conocer su valor
Fundamentos de Informática EUP ULPGC
Jose Torres
26 de 36
Instrucción de asignación
Asigna un valor a una variable
nombre_variable = expresión;
Ejemplo:
#include <stdio.h>
main()
{
int a = 1;
float b = 4.5;
int c, d;
char letra;
Fundamentos de Informática EUP ULPGC
Jose Torres
27 de 36
c = 10;
letra = ‘a';
d = a + c;
printf("La variable a tiene el valor %d\n", a);
printf("La variable b tiene el valor %f\n", b);
printf("La variable c tiene el valor %d\n", c);
printf("La variable d tiene el valor %d\n", d);
printf("La variable letra tiene el valor %c", letra);
}
La variable a tiene el valor 1
La variable b tiene el valor 4.5
La variable c tiene el valor 10
La variable d tiene el valor 11
La variable letra tiene el valor a
Fundamentos de Informática EUP ULPGC
Jose Torres
28 de 36
Reglas de asignación
Si los dos operandos en una instrucción de asignación son
de tipos distintos, entonces el valor del operando de la
derecha será automáticamente convertido al tipo del
operando de la izquierda.
Además:
1. Un valor en coma flotante se puede truncar si se
asigna a una variable de tipo entero
2. Un valor de doble precisión puede redondearse si se
asigna a una variable de coma flotante de simple precisión
3. Una cantidad entera puede alterarse si se asigna
a una variable de tipo entero más corto o a una variable de
tipo carácter.
Es importante en C utilizar de forma correcta la conversión
de tipos
Fundamentos de Informática EUP ULPGC
Jose Torres
29 de 36
Jose Torres
30 de 36
#include <stdio.h>
main ()
{
int a;
float b=75.6;
char m;
a=b;
printf("El valor de a es %d\n", a);
m=a;
printf("El valor de m es %c", m);
}
El valor de a es 75
El valor de m es K
Fundamentos de Informática EUP ULPGC
Función scanf()
Permite leer datos del usuario introducidos por teclado
scanf(formato, argumentos);
formato: especificadores del formato con el que se van a leer
los valores tecleados
Los mismos que para printf()
argumentos: especifico las variables a las que asigno los
valores tecleados
Fundamentos de Informática EUP ULPGC
Jose Torres
31 de 36
Esta función lee desde teclado la secuencia de caracteres
hasta la tecla de ‘intro’, y asigna ese valor a la variable
correspondiente.
Ejemplos:
scanf("%d”, &numero);
scanf("%c", &letra);
scanf("%f %d %c", &real, &entero, &letra);
# Importante el símbolo &
Fundamentos de Informática EUP ULPGC
Jose Torres
32 de 36
Ejemplo: programa que lee un número entero y lo eleva al
cuadrado
#include <stdio.h> /* Para poder usar las funciones */
/* printf y scanf.
*/
main()
{
int numero, cuadrado;
printf("Introduzca un numero: ");
scanf("%d", &numero);
cuadrado = numero * numero;
printf("El cuadrado de %d es %d\n", numero, cuadrado);
}
Fundamentos de Informática EUP ULPGC
Jose Torres
33 de 36
Introducción a la directiva #define
Permite definir constantes simbólicas en el programa
#define nombre texto
nombre representa un nombre simbólico que suele
escribirse en mayúsculas
texto no acaba en ;
nombre es sustituido por texto en cualquier lugar del
programa
Ejemplo: #define PI 3.141593
Fundamentos de Informática EUP ULPGC
Jose Torres
34 de 36
Ejemplo: programa que lee el radio de un círculo y calcula su
área
#include <stdio.h>
#define PI 3.141593
void main()
{
float radio;
float area;
printf("Introduzca el radio: ");
scanf("%f", &radio);
area = PI * radio * radio;
printf("El area del circulo es %5.4f \n", area);
}
Fundamentos de Informática EUP ULPGC
Jose Torres
35 de 36
Jose Torres
36 de 36
Errores de programación comunes
Problemas con las mayúsculas y minúsculas
Omisión del punto y coma
Uso del punto y coma en una directiva
Comentarios incompletos
Uso de variables no declaradas
Cadenas de caracteres sin dobles comillas
No usar el ‘&’ con en el scanf
Olvido de paréntesis o llaves
Fundamentos de Informática EUP ULPGC
Descargar