Publicado el 14 de Enero del 2017
4.603 visualizaciones desde el 14 de Enero del 2017
149,7 KB
21 paginas
Creado hace 14a (14/02/2011)
Programación II
Bloque temático 1. Lenguajes de programación
Tema 1. Introducción a la programación en lenguaje C
Tema 14.
Introducción a la programación funcional: Lenguaje Haskell
Bloque temático 2. Metodología de programación
Bloque temático 3. Esquemas algorítmicos
Programación II
© M. González y M. Aldea
14/02/11
Tema 1. Introducción a la programación en lenguaje C
Tema 1. Introducción a la programación en
lenguaje C
Instrucciones de control
1.1.
Introducción al lenguaje C
1.2. Estructura de un programa
1.3. Compilación de un programa C
1.4. Tipos de datos y declaraciones de datos
1.5. Operadores y expresiones
1.6. Entrada/salida simple
1.7.
1.8. Punteros
1.9. Funciones y paso de parámetros
1.10. Creación dinámica de variables
1.11. Modularidad y ocultamiento de información
1.12. Preprocesador
1.13. Librería estándar
1.14. Bibliografía
Programación II
© M. González y M. Aldea
14/02/11
Tema 1. Introducción a la programación en lenguaje C
1.1 Introducción al lenguaje C
1.1 Introducción al lenguaje C
El lenguaje C es uno de los lenguajes de programación más
populares que existen hoy en día
Características más importantes:
• lenguaje sencillo (aunque más difícil de aplicar)
• estructurado
• no orientado a objetos
• tipos definidos por el usuario
• no exige tipificación estricta
• permite compilación separada
• es de un nivel relativamente bajo
• compiladores baratos y eficientes
Programación II
© M. González y M. Aldea
14/02/11
1
2
3
Tema 1. Introducción a la programación en lenguaje C
Versiones del lenguaje C
1.1 Introducción al lenguaje C
• Desarrollo inicial por Dennis M. Ritchie en los laboratorios Bell
de AT&T (entre 1969 y 1973)
- descendiente de un lenguaje anterior llamado “B”
• K&R C: en 1978 Brian Kernighan y Ritchie publicaron el libro “El
lenguaje de programación C”
- este libro fue durante años la especificación del lenguaje
• C ANSI o C ISO: estandarización en 1988, y luego en 1990;
versión no ambigua y más portable, que añade
- asignación de estructuras (registros)
- tipos enumerados
- prototipos de funciones
- librerías estándar (funciones matemáticas, entrada/salida,
etc.)
Programación II
Tema 1. Introducción a la programación en lenguaje C
© M. González y M. Aldea
14/02/11
4
1.1 Introducción al lenguaje C
Versiones del lenguaje C (cont.)
• C99: Posteriormente se refina la versión ISO/ANSI en 1999
- las variables se pueden declarar en cualquier sitio
- soporte para caracteres internacionales
- soporte para números complejos
- tipo entero long
- comentarios //
- etc.
En este curso usaremos el ISO C 99
Programación II
© M. González y M. Aldea
14/02/11
Tema 1. Introducción a la programación en lenguaje C
1.2 Estructura de un programa
1.2 Estructura de un programa
C
#include <modulo1.h>
int main()
{
Java
import modulo1.*;
public class Clase {
public static void main
(String[] args)
{
<declaraciones>
<instrucciones>
}
}
Un programa C está compuesto al menos por una función
• la función main()
• que, a su vez, puede llamar a otras funciones y así
<declaraciones>
<instrucciones>
}
sucesivamente
Programación II
© M. González y M. Aldea
14/02/11
5
6
Tema 1. Introducción a la programación en lenguaje C
Ejemplo
1.2 Estructura de un programa
#include <stdio.h>
int main()
{
printf("hola\n"); // printf escribe en pantalla
return 0;
}
public class Hola{
public static void main(String[] args)
{
System.out.println("hola");
}
}
Programación II
© M. González y M. Aldea
14/02/11
Tema 1. Introducción a la programación en lenguaje C
1.2 Estructura de un programa
Ejemplo con varias funciones
#include <stdio.h>
void func2() {
printf("En función 2\n");
}
void func1() {
printf("En función 1, antes de llamar a func2\n");
func2();
printf("En función 1, después de llamar a func2\n");
}
int main() {
printf("En main, antes de llamar a func1\n");
func1();
printf("En main, después de llamar a func1\n");
return 0;
}
Programación II
© M. González y M. Aldea
14/02/11
Tema 1. Introducción a la programación en lenguaje C
Algunas observaciones
1.2 Estructura de un programa
C
Java
idem
idem
se distingue entre mayúsculas y
minúsculas
las instrucciones acaban con “;”,
pero los bloques no
comentarios entre /* */
o empezando con //
todas las variables deben declararse idem
los strings se encierran entre ""
idem
printf: el retorno de línea se
Igual que el printf de Java
En Java también existen println
pone en el string "\n"
y print (no disponibles en C)
además, existen los comentarios de
documentación
Programación II
© M. González y M. Aldea
14/02/11
7
8
9
Tema 1. Introducción a la programación en lenguaje C
1.3 Compilación de un programa C
1.3 Compilación de un programa C
#include <stdio.h>
int main()
{
printf ("Hola\n");
return 0;
}
hola.c
compilación
código
objeto
hola.o
enlazado
librerías y
otros ficheros de código objeto
programa
ejecutable
a.out
Para compilar y enlazar utilizaremos el compilador gcc:
$ gcc -Wall -Werror -std=c99 hola.c
estándar
ISO/ANSI 1999
todos los avisos (“warnings”)
se consideran errores
© M. González y M. Aldea
14/02/11
10
1.3 Compilación de un programa C
Programación II
Tema 1. Introducción a la programación en lenguaje C
Para ejecutar el programa:
$ a.out
hola
$
Otras opciones de gcc:
• Compilar varios ficheros de código
$ gcc -Wall -Werror -std=c99 hola.c un.c otro.c
- sólo uno puede contener una función main()
• Cambiar el nombre del ejecutable
$ gcc -Wall -Werror -std=c99 hola.c -o hola.exe
Programación II
Tema 1. Introducción a la programación en lenguaje C
© M. González y M. Aldea
14/02/11
11
1.4 Tipos de datos y declaraciones de datos
1.4 Tipos de datos y declaraciones de datos
Tipos predefinidos:
Java
C
byte
short
int
long
boolean
char
float
double
String
unsigned char
short, short int
int
long, long int
long long
(se usa int)
char
float
double
long double
char[], char*
Otros tipos C
char
unsigned short int
unsigned int
unsigned long int
unsigned long long
float _Complex
double _Complex
long double _Complex
Programación II
© M. González y M. Aldea
14/02/11
12
1.4 Tipos de datos y declaraciones de datos
Tema 1. Introducción a la programación en lenguaje C
Declaraciones
C
int lower;
char c,resp; // dos variables de tipo char
int i=0;
// variable inicializada
int j=0xA2; // valor en hexadecimal
int k=072;
const float eps=1.0e-5; // constante
#define MAX 8
// valor en octal
// otra constante
Java
int lower;
char c,resp; // dos variables de tipo char
int i=0;
// variable inicializada
int j=0xA2; // valor en hexadecimal
int k=072;
final float eps=1.0e-5; // constante
final int max=8;
// valor en octal
// otra constante
© M. González y M. Aldea
Programación II
Tema 1. Introducción a la programación en lenguaje C
14/02/11
13
1.4 Tipos de datos y declaraciones de datos
Observaciones sobre las declaraciones
Puede observarse que, tanto en C como en Java:
• las variables se pueden inicializar
• se pueden declarar como constantes
• se pueden declarar varias variables juntas
Formato de los identificadores
• todo en minúsculas y “_” para separar las palabras
• ejemplos: cuenta_usuarios,
máxima_velocidad_alcanzada
Programación II
© M. González y M. Aldea
14/02/11
14
Tema 1. Introducción a la programación en lenguaje C
Ámbito de visibilidad
1.4 Tipos de datos y declaraciones de datos
ámbito de
visibilidad
de i (global)
ámbito
de j
ámbito de
i (local)
int i; // variable global
void func2() {
int j; // local a func2()
instrucciones;
}
void func1() {
int i; // local a func1()
// (oculta la i global)
instrucciones;
}
int main() {
instrucciones;
}
Programación II
© M. González y M. Aldea
14/02/11
15
Tema 1. Introducción a la programación en lenguaje C
Tipos enumerados
En C se pueden definir tipos enumerados:
1.4 Tipos de datos y declaraciones de datos
typedef enum {plano_x, plano_y, plano_z} dimension_t;
dimension_t fuerza, linea;
...
fuerza = plano_x;
linea = fuerza + 1; // toma el valor plano_y
La instrucción typedef permite crear tipos de datos nuevos, con
los cuales se pueden crear variables más adelante
Observaciones:
• En C y Java el operador de asignación es “=”
• En C los valores enumerados se tratan como enteros, con
valores 0, 1, 2, ...
- linea toma el valor 1 (plano_y) en el ejemplo
Programación II
Tema 1. Introducción a la programación en lenguaje C
© M. González y M. Aldea
14/02/11
16
Caracteres
Los caracteres en C y Java se representan encerrados entre
apóstrofes:
1.4 Tipos de datos y declaraciones de datos
char c1,c2;
c1 = ’a’;
Los caracteres de control tienen una representación especial:
Carácter
salto de línea
carácter nulo
tabulador
bell (pitido)
apóstrofe
C y Java
’\n’
’\0’
’\t’
’\a’
’\’’
Las variables de tipo char pueden utilizarse en expresiones
aritméticas (igual que ocurría en Java)
Programación II
Tema 1. Introducción a la programación en lenguaje C
© M. González y M. Aldea
14/02/11
17
1.4 Tipos de datos y declaraciones de datos
Arrays
Los arrays de C son muy diferentes de los de Java:
• no tienen un tamaño conocido durante la ejecución
- pero sí un tamaño fijo en memoria
• el usuario es responsable de no exceder su tamaño real
• se pueden manipular mediante punteros
Los arrays de Java son mucho más seguros
Programación II
© M. González y M. Aldea
14/02/11
18
Tema 1. Introducción a la programación en lenguaje C
1.4 Tipos de datos y declaraciones de datos
Arrays (cont.)
Las siguientes declaraciones de arrays en Java:
final int MAX=8;
float[] v1; // creación de la referencia
v1=new float[MAX]; // creación: tamaño de 0 a MAX-1
short[][] c=new short[MAX][MAX];
Tienen el siguiente equivalente en C:
#define MAX 8 // constante
float v1[MAX]; //índice va de 0 a MAX-1
//array creado al declararlo
short int c[MAX][MAX];
En C los arrays de
Comentarios de: Programación II (0)
No hay comentarios