Está en la página 1de 105

BLOQUE 1

PROGRAMACIÓN
MULTIPROCESO
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES UN PROGRAMA?
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES UN PROGRAMA?
Toda la información (código + datos) que están almacenados en

disco de una aplicación que dan solución a una necesidad del

usuario que lo ha ejecutado


PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES UN PROCESO?
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES UN PROCESO?
Es un programa en ejecución

No sólo datos y código, además todo lo necesario para la ejecución:

- Contador del Programa (en qué paso está la ejecución)

- Imagen de memoria (espacio de memoria en uso por el proceso)

- Estado del procesador (valor de los registros del procesador en la ejecución)


PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES UN EJECUTABLE?
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES UN EJECUTABLE?
Fichero que contiene toda la información necesaria para crear un

proceso a partir de los datos almacenados de un programa, esto es,

Fichero que permite poner el programa en ejecución como proceso


PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES EL SISTEMA OPERATIVO?


PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES EL SISTEMA OPERATIVO?


Programa que hace de intermediario entre el usuario y las aplicaciones que usa
así como con el hardware del ordenador

Objetivos del SO:

- Ejecutar programas del usuario (crea los procesos a partir de ejecutables


y controla ejecución para evitar errores
- Interfaz entre usuario y hardware, permite acceso de ficheros y memoria
dispositivos hardware - abstracción del hardware
- Usar recursos del ordenador de manera eficiente
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES EL SISTEMA OPERATIVO?


PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES UN DEMONIO?
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción

¿QUÉ ES UN DEMONIO?
Proceso no interactivo que se ejecuta continuamente en segundo plano

Controlado por el SO, usuario no puede intervenir

Proporcionan un servicio básico para el resto de procesos


PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción
▸ Programación Concurrente
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Programación Concurrente
▸ Permite tener en ejecución varias tareas interactivas al
mismo tiempo

▸ Escuchar música, imprimir documento, ver un vídeo


de Youtube, descargar un fichero

▸ ¿Cuánto tardaríamos en hacer todo esto sin


concurrencia?
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Programación Concurrente

▸ Las tareas se pueden ejecutar de estas formas:

Único Procesador Varios núcleos


Sólo un proceso en ejecución en un Cada núcleo ejecuta un proceso al
momento determinado, asignando mismo tiempo.
orden y cambiando proceso cada poco El SO planifica los trabajos por ejecutar
tiempo. en cada núcleo.
El usuario piensa que todos se ejecutan Todos los núcleos comparten la
a la vez memoria

PROGRAMACIÓN CONCURRENTE PROGRAMACIÓN PARALELA


PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Programación Concurrente

▸ Las tareas se pueden ejecutar de tres formas:

Varios ordenadores en Red


Cada uno con sus propios
procesadores y propia memoria
Gestión de ordenadores en paralelo
La memoria no se comparte, por lo que
la comunicación requiere métodos más
costosos a través de la red

PROGRAMACIÓN DISTRIBUIDA
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Programación Paralela
▸ Cada ejecución en cada núcleo será una tarea del
mismo programa, pudiendo cooperar entre sí

▸ Cada tarea se ejecuta de forma independiente, en un


hilo de ejecución
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Introducción
▸ Programación Concurrente
▸ Estados de un proceso
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Estados de un proceso
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Estados de un proceso
▸ NUEVO, proceso creado por fichero ejecutable
▸ LISTO, preparado para ser ejecutado, a la espera de
que el SO le asigne un procesador mediante el
planificador

▸ EN EJECUCIÓN, proceso ejecutándose. Si necesita


recurso, llamada al sistema. Si ejecución supera máximo
de tiempo, se interrumpe y pasa a LISTO
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Estados de un proceso
▸ BLOQUEADO, a la espera de suceso. Cuando ocurre,
espera a que el planificador lo ponga en ejecución.

▸ TERMINADO, ha finalizado ejecución y libera la


memoria. Debe indicar al sistema que ha terminado,
aunque el propio sistema puede matarlo (excepción)
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Colas de proceso
▸ El SO trabaja para admitir varios procesos en la memoria para
maximizar el uso del procesador.

▸ La multiprogramación se consigue organizando varias colas y


mueve los procesos de unas a otras:

▸ 1 Cola de Procesos, con todos los procesos del sistema


▸ 1 Cola de Procesos Preparados, procesos estado “LISTO”
▸ Varias Colas de Dispositivos, procesos esperando operación E/S
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Planificación de Procesos
▸ Planificador mueve procesos en las colas.
▸ Dos tipos de planificación:
▸ A corto plazo, de LISTO a EJECUCIÓN
▸ A largo plazo, de NUEVO a LISTO
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ Cambio de Contexto
▸ Cuando procesador pasa a ejecutar otro proceso, el SO debe
guardar el contexto del proceso actual y restaurar el del
nuevo proceso.

▸ Contexto
▸ Estado del Proceso
▸ Estado del Procesador
▸ Espacio de memoria reservada para el proceso
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ EJERCICIO PLANIFICACIÓN DE PROCESOS
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ EJERCICIO 1
▸ Crea un programa en Java que muestre la cuenta atrás
de 10 a 0
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ EJERCICIO 1
▸ Crea un programa en Java que muestre la cuenta atrás
de 10 a 0
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ EJERCICIO 1
▸ Crea un programa en Java que muestre la cuenta atrás
de 10 a 0
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPASO CLASE ANTERIOR
▸ PROCESO
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPASO CLASE ANTERIOR
▸ PROCESO
▸ Programa que se ejecuta en espacio de memoria
propio de forma independiente

▸ ¿SO multitarea puede ejecutar más de un proceso a la


vez?
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPASO CLASE ANTERIOR
▸ PROCESO
▸ Programa que se ejecuta en espacio de memoria
propio de forma independiente

▸ ¿SO multitarea puede ejecutar más de un proceso a la


vez?

▸ Definitivamente, sí
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ HILO o THREAD
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ HILO o THREAD
▸ Unidad de procesamiento mínima que se puede
ejecutar en un SO

▸ Un proceso puede estar formado por varios hilos


de ejecución
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ HILO o THREAD
▸ Ejemplo
▸ Navegador Chrome como proceso
▸ Cada pestaña abierta considerada como hilo
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 2_PROGRAMACIÓN CONCURRENTE


▸ HILO o THREAD
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ HILO o THREAD
▸ PROCESO
▸ Programa en ejecución
▸ Ejecución secuencial
▸ Asociado a un contexto
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ HILO o THREAD
▸ PROCESO
▸ Programa en ejecución
▸ Ejecución secuencial
▸ Asociado a un contexto
▸ Registros de CPU
▸ Contador de Programa
▸ Pila (stack)
▸ Información de control
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ HILO o THREAD
▸ PROCESO
▸ Proceso en UNIX
▸ Estado de la pila
▸ Estado de la memoria
▸ Estado de E/S
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ HILO o THREAD
▸ PROCESO
▸ Hilo en UNIX
▸ Pila
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ CAMBIO DE CONTEXTO
▸ SO realiza representación de procesos
▸ Da soporte al cambio de contexto entre procesos
▸ Permite el uso compartido del recurso CPU
▸ Acceso a otros recursos compartidos y comunicación
entre procesos relacionados requieren mecanismos de
sincronización dentro del SO
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPRESENTACIÓN DE PROCESOS
▸ Para representar los procesos, el SO multiprogramado
debe guarda información
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPRESENTACIÓN DE PROCESOS
▸ Para representar los procesos, el SO multiprogramado debe
guardar información:

▸ Identificador de proceso (int)


▸ Estado del proceso para manter transición de estados
▸ Planificar siguiente proceso en entrar en CPU (scheduling).
Necesita criterios de planificación para organizar

▸ Contabilizar uso de recursos por el proceso


PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPRESENTACIÓN DE PROCESOS
▸ Para representar los procesos, el SO multiprogramado
debe guardar información:
▸ Gestionar contexto de procesos (estado procesador,
pila, memoria y E/S)

▸ Gestionar memoria (punteros a tablas de página)


▸ Soportar E/S, peticiones pendientes, dispositivos
asignados, etc.
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPRESENTACIÓN DE PROCESOS
▸ Toda esta información se puede almacenar en forma de
estructura

▸ BLOQUE DE CONTROL DEL PROCESO o BCP


▸ Los BCP se enlazan para formar listas encadenadas
▸ Los BCPs incluyen uno o más apuntadores para formar
la lista
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPRESENTACIÓN DE PROCESOS
▸ BLOQUE DE CONTROL DE PROCESOS
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPRESENTACIÓN DE PROCESOS
▸ BLOQUE DE CONTROL DE PROCESOS
▸ Podemos definir el SO como un modelo de procesos
que se representa mediante sistema de colas
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ REPRESENTACIÓN DE PROCESOS
▸ BLOQUE DE CONTROL DE PROCESOS
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ Comando ps (process status) en Linux
▸ Muestra información asociada a un proceso
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ Comando ps (process status) en Linux
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ Comando ps (process status) en Linux
▸ PID: Id de proceso
▸ TTY: terminal asociado del
que lee o al que escribe

▸ TIME: tiempo de CPU


▸ CMD: nombre
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ Comando ps (process status) en Linux
▸ La orden ps -f muestra más información
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ Comando ps -f
▸ UID: nombre de usuario
▸ PPID: PID del padre de cada proceso
▸ STIME: hora de inicio del proceso
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ Comando ps -AF: muestra todos los procesos activos
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ Comando ps -AF: muestra todos los procesos activos
▸ C: porcentaje de CPU usada por proceso
▸ SZ: tamaño virtual de la imagen en el proceso
▸ RSS: tamaño de parte residente en memoria (KB)
▸ PSR: procesador asignado al proceso
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ LINUX (Ubuntu)
▸ Interfaz gráfica que muestra info de procesos
▸ sudo gnome-system-monitor
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ LINUX (Ubuntu) - sudo gnome-system-monitor
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ WINDOWS
▸ Desde línea de comandos del DOS
▸ tasklist
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ WINDOWS - tasklist
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ WINDOWS
▸ Desde interfaz gráfica
▸ Teclas Ctrl + Alt + Supr
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ PROCESOS Y SISTEMA OPERATIVO
▸ WINDOWS - Ctrl + Alt + Supr
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ ESTADO DE UN PROCESO
▸ EN EJECUCIÓN: proceso ejecutándose (uso de CPU)
▸ BLOQUEADO: esperando a que ocurra un evento
▸ LISTO: parado temporalmente pero listo para continuar
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ TRANSICIONES ENTRE ESTADOS
▸ EN EJECUCIÓN - BLOQUEADO: espera a que ocurra
algo

▸ BLOQUEADO - LISTO: ocurre aquello que estaba


esperando

▸ LISTO - EN EJECUCIÓN: se le asigna tiempo de CPU


▸ EN EJECUCIÓN - LISTO: se acaba el tiempo de CPU
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ TRANSICIONES ENTRE ESTADOS
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C
▸ El lenguaje de programación C es un lenguaje de
programación de "bajo nivel”

▸ C maneja los elementos básicos del ordenador como


caracteres, números y direcciones de memoria

▸ C fue creado por Brian Kernighan y Dennis Ritchie en


los laboratorios Bell de AT&T.

▸ El sistema operativo Unix está escrito principalmente


en C
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C
▸ Dispone de Librerías de funciones externas al
lenguaje, la cual cosa lo convierte en portable
independientemente de la máquina que ejecuta el
programa

▸ La descripción del lenguaje se realiza siguiendo las


normas del ANSI C, por lo tanto, todo lo expresado
será utilizable con cualquier compilador
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Características (I)
▸ Programación Estructurada
▸ Economía de expresiones
▸ Gran cantidad de operadores y tipos de datos
▸ Codificación en alto y bajo nivel simultáneamente
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Características (II)
▸ Reemplaza ventajosamente la programación en
ensamblador

▸ Utilización natural de las funciones primitivas del


sistema operativo (Unix)

▸ De propósito general.
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Ventajas
▸ Lenguaje potable (independiente de la arquitectura
de la máquina)

▸ Eficiente y claro
▸ Compilador muy pequeño y gran versatilidad debido
al número de librerías
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Desventajas
▸ La excesiva libertad en la escritura del código fuente
hace que muchas veces se cometan errores de
programación, que, por ser correctos sintácticamente
no se detectan en tiempo de compilación

▸ Carece de instrucciones de entrada y salida, de


manejo de strings (cadenas de caracteres),
quedando el trabajo en manos de las bibliotecas
provocando con esto algunos problemas de
portabilidad
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Forma general del Lenguaje
▸ Para crear un programa en C, se
escribe el código fuente (programa),
luego se compila y finalmente se
enlaza con las bibliotecas

▸ Para hacer un programa en C, lo


primero que se debe hacer es crear el
programa fuente (con extensión ".c")
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Compiladores
▸ Para el sistema operativo Linux:
▸ Gcc/ g++
▸ Para el sistema operativo Windows:
▸ Turbo C/C++
▸ Borland C/C++
▸ Visual C++
▸ Editores de texto para Linux:
▸ Vi, gedit, kedit, jed, emacs, etc..
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Compilación
▸ Compilación en el sistema operativo Linux:
▸ gcc nombre_programa.c -o nombre_ejecutable
▸ Ejecución de un programa en Linux
▸ ./nombre_ejecutable
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Estructura de un programa
▸ Todos los programas en C consisten en una o más
funciones

▸ La única función que debe estar absolutamente


presente es la denominada main() , es la función por
la que comienza la ejecución del programa
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Abecedario C
▸ Todo lenguaje de programación posee palabras claves,
estas son aquellas palabras que reserva el lenguaje para
identificar ciclos, estructuras y en general cualquier cosa
que sea parte de instrucciones

▸ Por ejemplo, las palabras while, if, struct son palabras


claves en C

▸ En C las palabras claves o reservadas deben escribirse


en minúsculas, esto ya que C diferencia entre mayúsculas
y minúsculas (a diferencia del lenguaje Pascal)
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Estructura de un programa
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Estructura de un programa
▸ El programa quedaría de la siguiente forma:
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Librerías
▸ Conjunto de funciones que se identifican con un
nombre y que tenemos que llamar al principio del
programa para utilizar unas funciones concretas
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Librerías
▸ Lista de librerías usuales:
▸ Stdio.h funciones de entrada-salida
▸ Conio.h mas funciones de entrada-salida
▸ Math.h funciones matemáticas
▸ Stdlib.h mas funciones matemáticas
▸ Ctype.h funciones de conversión de caracteres
▸ String.h funciones de cadena
▸ Graphics.h funciones gráficas
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Variables (I)
▸ Son combinaciones de letras y números que permiten
almacenar cualquier valor en la memoria del
ordenador

▸ Estos valores los podremos utilizar en el programa


haciendo referencia al nombre de la variable

▸ Al finalizar la ejecución del programa las variables se


borran
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Variables (II)
▸ Tipos de variables: Dependiendo del valor a guardar
tendremos que determinar el tipo de la variable
▸ Tipos:
▸ char, valores carácter
▸ int, valores numéricos enteros
▸ float, valores numéricos grandes con decimales
▸ double, valores numéricos grandes con decimales
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Variables (III)
▸ Modificadores de variables: Son parámetros que permiten
modificar los rangos de los tipos de variables,
principalmente del tipo (int)

▸ Modificadores:
▸ Signed
▸ Unsigned
▸ Long
▸ short
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Variables (IV)
▸ Modificador -> signed
▸ Es el modificador por defecto que utiliza “C”, en el caso de una variable definida
como:

▸ signed int -> almacenara valores entre -32000 y 32000


▸ Modificador unsigned
▸ Este modificador en una variable INT se definirá como :
▸ unsigned int -> almacenara valores entre o y 65000 (pasa todo el rango
de números negativos a positivos)

▸ Modificador long
▸ Este modificador en una variable INT se definirá como:
▸ long int. -> almacenara valores entre -2000000000 y 2000000000
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Variables (IV)
▸ Declaración de una variable como un entero
▸ int variable;
▸ Int variable2;
▸ Declaración de variables y asignación de valores en una línea
▸ int variable = 1000, variable2 = 2, variable3;
▸ Declaración de variables tipo texto
▸ char variable ;
▸ Con tamaño fijo de caracteres:
▸ char variable[15];
▸ Con asignación de valor
▸ char variable = 'a' ;
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ El Lenguaje C se escribe a partir de un programa
principal y de funciones, el programa principal también es
una función (función principal), y se denomina main(),
esta debe estar siempre presente y es la primera en ser
llamada

▸ Para hacer un programa en C, lo primero que se debe


hacer es crear el programa fuente (con extensión ".c") de
la siguiente manera:
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ Crea un programa que reciba un número entero por
teclado y calcule el cuadrado de dicho número para
seguidamente, mostrar el resultado por pantalla
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ Crea un programa que reciba un
número entero por teclado y
calcule el cuadrado de dicho
número para seguidamente,
mostrar el resultado por
pantalla
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ Cuando se escribe el programa se recomienda usar el
siguiente formato:

▸ llamadas a bibliotecas
▸ declaración de funciones (prototipos de funciones)
▸ declaración de variables globales
▸ declaración de variables locales
▸ sentencias
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ Cada vez que se escribe una línea, esta debe llevar ";" al
final, con lo cual el compilador entiende que llega al final
de una instrucción o proposición

▸ Los Identificadores son simplemente los nombres que


pueden asumir variables o constantes dentro del
programa

▸ No deben ser iguales a nombres de palabras reservadas o


bibliotecas, deben empezar con una letra o ‘_’ y no
pueden incluir espacios en blanco
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ Un comentario es una cadena de caracteres que no es
tomada en cuenta por el compilador, esta va dentro de
"/*" y “*/“

▸ Desde la versión ANSI 9 C se incluye como comentario en


linea con “//“
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ Entrada / Salida estándar
▸ Librería stdio.h
▸ printf() y scanf()
▸ Ej: printf("a * b = %d \n", c );
▸ Ej: scanf("%d",&numdato);
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ Operadores Matemáticos
▸ - menos unuario
▸ - resta
▸ + suma
▸ * producto
▸ / división
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ Operadores de Relación, que se utilizan dentro de
proposiciones del tipo while, if, for; es decir, en
estructuras de control

▸ < menor que


▸ > mayor que
▸ <= / > = menor o igual / mayor o igual que
▸ == / != igual a / distinto de
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - Programando en C
▸ Operadores Lógicos,
▸ ! negación
▸ && : y lógico
▸ || : o lógico
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 1. Escribe un programa que lea del teclado tu nombre
y muestre un mensaje por pantalla: “Hola <tu
nombre>, buenos días”
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 2. Escribe un programa que pida dos números
enteros, calcule la suma y el producto y muestre por
pantalla los resultados
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 3. Escribe un programa que pida tres números por
teclado e intercambie el valor de orden según al
siguiente, pasando el último a ser el primero. El
programa debe mostrar el valor antes y después de
las variables
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 4. Escribe un programa que pida un número por
teclado en indique si es par o impar, teniendo en
cuenta de que el valor 0 es par
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 5. Escribe un programa que a partir de los datos
sobre la distancia de cada planeta de nuestro sistema
solar al sol, muestre el listado de planetas, pida al
usuario uno de ellos para mostrar la distancia del
mismo a la estrella principal de nuestro sistema solar
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 5. Escribe un programa que pida introducir la hora,
los minutos y los segundos y calcule qué hora será
justo un segundo después, mostrando el resultado en
formato HH:MM:SS

▸ La hora debe estar en [0,23]


▸ Los minutos deben estar en [0,59]
▸ Los segundos deben estar en [0,59]
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 6. Escribe un programa que pida al usuario el valor de
la arista (real) de un cubo y controle que este valor
deber ser mayor que cero. Si el valor es erróneo,
deberá solicitar de nuevo un valor para la arista.
Cuando lo cumpla, deberá calcular el área de un cubo
y mostrar el resultado por pantalla

▸ area_cubo = 6 * arista^2
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 7. Escribe un programa que muestre por pantalla
todos los números pares que hay entre el 1 y el 50,
ambos inclusive
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 8. Escribe un programa que pida 5 números enteros
por pantalla y muestre por pantalla cuántos números
pares e impares se han introducido
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 9. Escribe un programa que valide una fecha introducida por teclado, en
formato día, mes y año
El programa debe mostrar FECHA CORRECTA / INCORRECTA según sea
el caso

▸ Recuerda que el mes debe ser [1,12]


▸ El día debe ser dependiendo del mes:
▸ 31 días: enero, marzo, mayo, julio, agosto, octubre y diciembre
▸ 30 días: abril, junio, septiembre y noviembre
▸ 28 días: febrero no bisiesto
▸ 29 días: febrero bisiesto
PROGRAMACIÓN DE SERVICIOS Y PROCESOS

BLOQUE 1_PROGRAMACIÓN MULTIPROCESO


▸ LENGUAJE C - EJERCICIOS
▸ 10. Escribe un programa que muestre un menú de 5 opciones
▸ 1. Sumar dos números
▸ 2. Restar dos números
▸ 3. Multiplicar dos números
▸ 4. Dividir dos números
▸ 0. Salir
▸ El programa solicitará una opción válida, pedirá los dos
números y mostrará el resultado

También podría gustarte