Estructura de un programa en C Índice - Universidad de Alcalá

Introducción a la programación
Conceptos básicos
Elementos básicos de C
Estructura de un programa en C
Departamento de Automática
Universidad de Alcalá
Sistemas Operativos
Estructura de un programa en C
1 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Índice
1
2
3
Introducción a la programación
¿Por qué programar?
¿Por qué usar C?
Vocabulario básico de programación
Conceptos básicos
Historia de C
Estándares de C
Primer contacto
Fases de desarrollo de un programa
Visión general
Elementos básicos de C
Variables
Constantes
Sentencias de control
Vectores
Funciones
Sistemas Operativos
Estructura de un programa en C
2 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
¿Por qué programar?
¿Por qué usar C?
Vocabulario básico de programación
Introducción a la programación
¿Por qué programar?
Nuestra civilización funciona sobre software
Casi todas las actividades de la ingeniería implican software:
Diseño, control, monitorización, simulación, optimización, ...
La mayor parte del software no es visible
Los programas NO suelen correr sobre un PC con pantalla,
teclado y una caja bajo la mesa
Una minoría de los programas son parecidos a la ofimática
Los programas corren sobre microprocesadores
Los micros se integran en casi todo: Sistemas empotrados
Programar es necesario porque:
Casi todo sistema digital está programado
El software aporta inteligencia a los dispositivos
Razones pedagógicas: Estructura la mente y potencia
pensamiento lógico
... y además, programar es divertido
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Estructura de un programa en C
3 / 29
¿Por qué programar?
¿Por qué usar C?
Vocabulario básico de programación
Introducción a la programación
¿Por qué programar? Áreas de aplicación: Robótica
Control
Monitorización
Visión artificial
Inteligencia artificial
Sistemas Operativos
Automatización
Estructura de un programa en C
4 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
¿Por qué programar?
¿Por qué usar C?
Vocabulario básico de programación
Introducción a la programación
¿Por qué programar? Áreas de aplicación: Aeroespacial
Comunicaciones
Procesado de señal
Navegación
Navegación
Diseño de ala y motores
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Planificación de la misión
Estructura de un programa en C
5 / 29
¿Por qué programar?
¿Por qué usar C?
Vocabulario básico de programación
Introducción a la programación
¿Por qué programar? Áreas de aplicación: Informática personal
¡Hasta sirve para hacer
procesadores de texto y
videojuegos!
Sistemas Operativos
Estructura de un programa en C
6 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
¿Por qué programar?
¿Por qué usar C?
Vocabulario básico de programación
Introducción a la programación
¿Por qué usar C?
Características de C
Es pequeño, eficiente y estable
Hay mucho código C escrito
C es la base de muchos otros lenguajes
C++, Java, AWK, PHP, ...
C es muy usado en sistemas empotrados
También se usan otros lenguajes: C++, ADA, e incluso Java
No todo son ventajas
Bajo nivel (puede ser ventaja)
Poco estructurado: Difícil de aprender
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Estructura de un programa en C
7 / 29
¿Por qué programar?
¿Por qué usar C?
Vocabulario básico de programación
Introducción a la programación
Vocabulario básico de programación
Términos comunes en programación
Código fuente: Lo que escribe el programador
Compilar : Generar un ejecutable a partir del código fuente
Ejecutable: Programa en código máquina que se ejecuta
Biblioteca: Funciones externas que realizan ciertas tareas
Palabra: Según el micro, 16, 32 ó 64 bits
Algoritmo: Secuencia de acciones para solucionar un problema
Términos importantes en Ingeniería Industrial
Sistema empotrado: Ordenador insertado en un objeto
Sistema crítico: Sistema que nunca debe fallar
Sistema de tiempo real: Sistema con restricciones de tiempo
Sistemas Operativos
Estructura de un programa en C
8 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Conceptos básicos
Historia de C
Estándares de C
Conceptos básicos
Fases de desarrollo de un programa
Visión general
Historia de C
Creado por Brian Kernighan y Dennis Ritchie en los
laboratorios AT&T
Originariamente se creó para codificar UNIX
UNIX fue creado por Ritchie junto con Ken Thompson
Programar un SO en un lenguaje de alto nivel fue
revolucionario
UNIX fue portado a distintas máquinas y plataformas
Originariamente C se describió en la primera edición del K&R
(1978)
El K&R fue usado como estándar de facto de C
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Conceptos básicos
Estructura de un programa en C
9 / 29
Historia de C
Estándares de C
Conceptos básicos
Fases de desarrollo de un programa
Visión general
Estándares de C
1988: Segunda edición del K&R, actualizado con ANSI C,
incorpora biblioteca estándar
1989 (C89): Nuevas órdenes para el preprocesador y nuevas
palabras reservadas: const, volatile, declaraciones y
chequeo de tipos
1995 (C89): Nuevas cabeceras: iso646.h, wctype.h,
textttwchar.h, ampliación de printf/scanf, nuevas funciones
y tipos
1999 (C99 or ISO/IEC 9899): Vectores de tamaño variable,
tipos booleanos, mejor soporte para caractéres no ingleses,
mejor soporte de coma flotante y comentarioes estilo C++
2011 (C11 or ISO/IEC 9899:2011): Define noreturn,
elimina gets, estructuras y uniones anónimas, aserciones
estáticas
Sistemas Operativos
Estructura de un programa en C
10 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Conceptos básicos
Historia de C
Estándares de C
Conceptos básicos
Fases de desarrollo de un programa
Visión general
Primer contacto (I)
Hola, mundo
include define funciones
externas
/⇤
⇤ Mi programa en C
⇤/
#i n c l u d e <s t d i o . h>
En este caso stdio.h
El programa empieza en main()
i n t main ( ) {
p r i n t f ( " Hola , mundo\n " ) ;
}
r e t u r n 0 ; // F i n
return finaliza la ejecución
// y /* ... */ son comentarios
C ignora fin de línea
El ; indica fin de instrucción
Sistemas Operativos
Conceptos básicos
Primer contacto (II)
printf imprime una cadena
Estructura de un programa en C
11 / 29
Historia de C
Estándares de C
Conceptos básicos
Fases de desarrollo de un programa
Visión general
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Conceptos básicos
Fases de desarrollo de un programa
Ciclo de desarrollo
1 Edición
2
Compilación
3
Ejecución
4
Depuración
Edición
Compilación
vi, vim, emacs, gedit, etc.
$ vi enteros.c
Depuración
cc (gcc), make, ar,
etc.
$ gcc enteros.c –o enteros
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Conceptos básicos
gdb, ddd
$ gdb enteros
Estructura de un programa en C
13 / 29
Historia de C
Estándares de C
Conceptos básicos
Fases de desarrollo de un programa
Visión general
Fases de desarrollo de un programa: Compilación
Preprocesamiento Compilación
Generación
Enlace
y optimización de código objeto
gcc
cpp
cpp
programa.c
comp
comp
programa.i
as
as
programa.s
Sistemas Operativos
ld
ld
programa.o
Estructura de un programa en C
a.out
14 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Conceptos básicos
Historia de C
Estándares de C
Conceptos básicos
Fases de desarrollo de un programa
Visión general
Visión general
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Estructura de un programa en C
15 / 29
Variables
Constantes
Sentencias de control
Vectores
Funciones
Variables (I)
Los programas necesitan
almacenar datos
Cada dato se guarda en una
variable
Todas las variables se
definen al principio
La definición indica el
tipo de dato
Sistemas Operativos
Tipos de datos básicos en C
Entero: int
Coma flotante: float
Carácter: char
Hay otros muchos tipos de datos
Estructura de un programa en C
16 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Variables
Constantes
Sentencias de control
Vectores
Funciones
Variables (II)
Cálculo de una media
#i n c l u d e <s t d i o . h>
i n t main ( ) {
i n t v a r 1 =3 , v a r 2 =5;
f l o a t v a r 3 =1.5 , r e s u l t a d o ;
r e s u l t a d o = ( var1 + var2 + var3 ) / 3;
p r i n t f ( " La media de %d , %d y %d e s %f \n " ,
var1 , var2 , var3 , r e s u l t a d o ) ;
}
return 0;
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Estructura de un programa en C
17 / 29
Variables
Constantes
Sentencias de control
Vectores
Funciones
Constantes (I)
A veces se necesita usar
valores constantes
Conviene definirlas como
tales
¡Mejor no usar variables!
Sistemas Operativos
Constantes en C
#define valor contenido
valor es igual a contenido
valor, por convenio, se
pone en mayúsculas
Estructura de un programa en C
18 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Variables
Constantes
Sentencias de control
Vectores
Funciones
Constantes (II)
Cálculo del área de un círculo
#i n c l u d e <s t d i o . h>
#d e f i n e PI 3 . 1 4 1 5 9 2 6 5
i n t main ( ) {
float radio = 1.5;
f l o a t area ;
a r e a = PI ⇤ r a d i o ⇤ r a d i o ;
p r i n t f ( " R a d i o= %f , a r e a= %f " , r a d i o , a r e a ) ;
}
return 0;
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Estructura de un programa en C
19 / 29
Variables
Constantes
Sentencias de control
Vectores
Funciones
Sentencias de control (I)
Los programas necesitan
repetir operaciones
Un bucle es una porción de
código que se repite
Todo bucle tiene una
condición
La condición determina si
se sigue repitiendo o no
¡Cuidado con los bucles
infinitos!
Sistemas Operativos
Tipos de bucle
while: Mientras se cumple
una condición
for: Para una condición
inicial, mientras se cumpla,
se hace una acción
Estructura de un programa en C
20 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Variables
Constantes
Sentencias de control
Vectores
Funciones
Sentencias de control (II)
Ejemplo de bucle (versión 1)
#i n c l u d e <s t d i o . h>
i n t main ( ) {
int variable = 0;
}
w h i l e ( v a r i a b l e < 5) {
p r i n t f ( " V a r i a b l e = %d\n " ) ;
v a r i a b l e ++;
}
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Estructura de un programa en C
21 / 29
Variables
Constantes
Sentencias de control
Vectores
Funciones
Sentencias de control (III)
Ejemplo de bucle (versión 2)
#i n c l u d e <s t d i o . h>
i n t main ( ) {
int variable ;
}
f o r ( v a r i a b l e =0; v a r i a b l e <5; v a r i a b l e ++) {
p r i n t f ( " V a r i a b l e = %d\n " , v a r i a b l e ) ;
}
Sistemas Operativos
Estructura de un programa en C
22 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Variables
Constantes
Sentencias de control
Vectores
Funciones
Sentencias de control (IV)
A veces interesa ejecutar o
no código según una
condición
Puede ser numérica o
lógica
¡Cuidado con los bucles
infinitos!
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Ejecución condicional
if: Ejecuta código según una
condición
else: Ejecuta código si la
condición no se cumple
(optativo)
Estructura de un programa en C
23 / 29
Variables
Constantes
Sentencias de control
Vectores
Funciones
Sentencias de control (V)
Ejemplo de if (versión 1)
i n t edad = 1 9 ;
i f ( edad > 1 8 ) {
p r i n t f ( " Mayor de edad " ) ;
} else {
p r i n t f ( " Menor de edad " ) ;
}
Ejemplo de if (versión 2)
i n t num = 2 0 ;
i f ( ( num > 1 0 ) && ( num %2 == 0 ) ) {
p r i n t f ( "num e s mayor de 10 y p a r " ) ;
}
Sistemas Operativos
Estructura de un programa en C
24 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Variables
Constantes
Sentencias de control
Vectores
Funciones
Vectores (I)
También llamados arrays
Son datos consecutivos del
mismo tipo
Similar a un vector
matemático
˛v = (a0 , a1 , a2 , ..., an )
Se accede por índice: v [3]
Los elementos se manejan
como variables
int v[4]
v[0]
3
v[1]
5
v[2]
2
Definición de vector
tipo nombre[tamaño];
Ejemplo: int vector[10];
Ejemplo: vector[2] = 4;
Ejemplo:
printf("$d", vector[2]);
v[3]
0
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Estructura de un programa en C
25 / 29
Variables
Constantes
Sentencias de control
Vectores
Funciones
Vectores (II)
Ejemplo de vector
int vector [10];
int i ;
f o r ( i =0; i <10; i ++) {
v e c t o r [ i ] = 8⇤ i ;
}
p r i n t f ( " Tabla d e l 8" ) ;
f o r ( i =0; i <10; i ++) {
p r i n t f ( " 8 x %d = %d\n " , i , v e c t o r [ i ] ) ;
}
Sistemas Operativos
Estructura de un programa en C
26 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Variables
Constantes
Sentencias de control
Vectores
Funciones
Vectores (III): Cadenas de caracteres
Las cadenas de caracteres se
manejan como vectores
Definición:
char nombre[tamaño];
char cad[5]
cad[0]cad[1] cad[2]cad[3] cad[4]
'h'
'o'
'l'
'a'
\0
Fin de cadena se marca con ’\0’
Tamaño = longitud + 1
Ejemplo de cadena (versión 1)
Ejemplo de cadena (versión 2)
char cadena [ 5 ] ;
char cadena = " ho l a " ;
cadena [0]= ’ h ’ ; cadena [1]= ’ o ’ ;
cadena [2]= ’ l ’ ; cadena [3]= ’ a ’ ;
c a d e n a [ 4 ] = ’ \0 ’ ;
p r i n t f ( " %s " , c a d e n a ) ;
Sistemas Operativos
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
p r i n t f ( " %s " , c a d e n a ) ;
Estructura de un programa en C
27 / 29
Variables
Constantes
Sentencias de control
Vectores
Funciones
Funciones (I)
Un programa típico contiene
mucho código
Incluso millones de líneas
Descomponer el problema
Divide y vencerás
Las funciones son trozos de
código reutilizables
Implementan una tarea
Función especial: main()
Las funciones pueden
devolver un valor
Ejemplo
void imprimir () {
p r i n t f ( " Hola , mundo " ) ;
}
i n t main ( ) {
imprimir () ;
}
return 0;
Regla: Meter en una función el código que se use más de una vez
Sistemas Operativos
Estructura de un programa en C
28 / 29
Introducción a la programación
Conceptos básicos
Elementos básicos de C
Elementos básicos de C
Variables
Constantes
Sentencias de control
Vectores
Funciones
Funciones (II)
Ejemplo con funciones
i n t sumar ( i n t a , i n t b ) {
int c = a + b;
return c ;
}
i n t main ( ) {
i n t v a r 1 = 3 , v a r 2 =2 , r e s u l t a d o ;
r e s u l t a d o = sumar ( a , b ) ;
p r i n t f ( " R e s u l t a d o = %d " , r e s u l t a d o ) ;
}
return 0;
Sistemas Operativos
Estructura de un programa en C
29 / 29