Laboratorio de Sistemas Operativos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Laboratorio de Sistemas Operativos"

Transcripción

1 Laboratorio de Sistemas Operativos Juan Antonio Álvarez, Toñi Reina, David Ruiz, Antonio Tallón, Pablo Neira, José Ángel Bernal y Sergio Segura Boletín 7: Colas de Mensajes Curso 2006/07 Índice 1. Introducción 2 2. Llamadas del sistema relacionadas con colas de mensajes Creación/Acceso de una cola de mensajes. msgget Operaciones con colas de mensajes. msgsnd y msgrcv Control de las colas de mensajes. msgctl Ejercicios 5 A. Ejercicios de Examen 8 1

2 1. Introducción Las colas de mensajes son un mecanismo de comunicación entre procesos que aporta UNIX System V, como ya se mencionó en la práctica anterior. La idea que subyace bajo las colas de mensajes es parecida a la de las tuberías, pero permiten una mayor versatilidad. Las colas de mensajes son gestionadas por el núcleo del SO, es decir, es el SO el que porporciona los mecanismos necesarios para que las escrituras y las lecturas en la misma sean síncronas. En general, en una cola pueden escribir y leer varios procesos. Las operaciones de lecturas son gestionadas siguiendo un política FIFO (First Input First Output), es decir, el primer mensaje que entra es el primer mensaje que sale. Para hacer que la implementación sea más flexible, se ha permitido hacer lecturas filtradas por el tipo de mensaje, con lo cual, se rompe la filosofía FIFO, aunque ésta se sigue manteniendo para todos los mensajes de un mismo tipo. Si se hace una operación de lectura sin especificar el tipo de mensaje, se está forzando a leer el primer mensaje que haya en la cola. Las llamadas para trabajar con colas de mensajes en System V son: msgget, para crear una cola o acceder a una ya existente; msgctl, para acceder y modificar la información de control que el núcleo asocia a cada cola de mensajes; msgsnd, para escribir/enviar un mensaje en la cola, y msgrcv, para leer/recibir un mensaje de la cola. 2. Llamadas del sistema relacionadas con colas de mensajes 2.1. Creación/Acceso de una cola de mensajes. msgget Para crear una cola de mensajes deberemos utilizar la llamada al sistema msgget: #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgget (key_t key, int msgflg); Si todo va bien devuelve el identificador de la cola que ha creado, en caso contrario, devuelve -1 y en errno el código del error. key Es una llave, tal y como se ha visto en el boletín anterior. msgflg Es una máscara de bits cuyos valores son los mismos que se han visto en el boletín de semáforos. IPC CREAT Si este flag está activo, se creará la cola de mensajes, en caso de que no haya sido ya creada. IPC EXCL Esta bandera se utiliza junto con IPC CREAT, para lograr que msgget de un error en el caso de que se intente crear una cola de mensajes que ya exista. En este caso, msgget devolvería -1 e inicializaría la variable errno con un valor EEXIST. permisos Los 9 bits menos significativos de msgflg indican los permisos de la cola de mensajes. Ver el boletín de semáforos para comprobar sus posibles valores. Ejemplo 1 El siguiente trozo de código crea una cola de mensajes. #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #define PERMISOS S_IRUSR S_IWUSR int msqid; key_t llave; 2

3 llave= ftok("prueba", A ); msqid = msgget (llave, IPC_CREAT PERMISOS); if (msqid == -1) /* Error al crear la cola de mensajes */ 2.2. Operaciones con colas de mensajes. msgsnd y msgrcv Para enviar un mensaje utilizando una cola de mensajes utilizamos la llamada al sistema msgsnd y para leer un mensaje de la cola se utiliza msgrcv: #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgsnd (int msqid, void *msgp, int msgsz, int msgflg); int msgrcv (int msqid, void *msgp, int msgsz, long msgtyp, int msgflg); donde msqid Es el descriptor de la cola de mensajes a utilizar. msgp Apunta a la zona de memoria que contiene los datos que vamos a enviar o recibir. Cómo esté organizada esta zona de memoria es cuestión que se ha dejado al programador. El único requisito que ha de cumplir es que el primer campo debe ser de tipo long y hay que utilizarlo para identificar el tipo de mensaje. No hay ningún tipo definido por el sistema, por lo tanto la tipificación de mensajes depende del programador. msgsz Es el tamaño en bytes que ocupa el mensaje a enviar o recibir. En este tamaño no se incluyen los bytes del long que se utiliza para indicar el tipo del mensaje. msgtyp Solamente se utiliza en msgrcv e indica el tipo de mensaje que se quiere leer. De forma que si: msgtyp = 0, entonces se lee el primer mensaje que haya en la cola. msgtyp > 0, entonces se lee el primer mensaje de tipo msgtyp que haya en la cola. msgtyp < 0, entonces se lee el primer mensaje cuyo tipo sea menor o igual al valor absoluto de msgtyp y sea el de menor valor de los que cumplan esta condición. msgflg Es un conjunto de bits que tienen distinto significado dependiendo de si aparece en una operación de lectura o de escritura. En el caso de una escritura (msgsnd) se tiene: Si la cola está llena y el bit IPC NOWAIT está activo, msgsnd devuelve el control inmediatamente, retornando un -1. Es decir, el mensaje no se envía. Si la cola está llena y el bit IPC NOWAIT no está levantado, el proceso suspende su ejecución hasta que haya espacio en la cola y pueda enviar el mensaje. Para la llamada msgrcv, se tiene lo siguiente: Si no hay ningún mensaje del tipo especificado en la cola y el bit IPC NOWAIT está activado, la llamada devuelve el control inmediatamente retornando un -1. Es decir, el mensaje no se recibe. Si no hay ningún mensaje del tipo especificado en la cola, y el bit IPC NOWAIT no está levantado, el procesos suspende su ejecución esperando hasta que haya un mensaje del tipo deseado que poder recibir. Si msgsnd se ejecuta sin ningún tipo de problema, devuelve 0. Si msgrcv se ejecuta sin errores, retorna el número total de bytes que ha recibido en msgp. Como ya hemos visto antes, este tamaño no incluye los bytes que ocupa el campo del tipo del mensaje. En el caso de que haya algún tipo de problema, las llamadas devolverán un -1, y en errno el código del error. 3

4 Ejemplo 2 El siguiente trozo de código muestra cómo enviar y recibir un mensaje utilizando las dos llamadas anteriores. int msqid; struct long tipo; char cadena[lon_cadena]; mensaje;... int longitud = sizeof(mensaje) - sizeof (mensaje.tipo);... /* Enviar mensaje de tipo 1 */ mensaje.tipo = 1; sprintf(mensaje.cadena, "PRUEBA"); if ( msgsnd(msqid, &mensaje, longitud, 0) == -1) /* Error al enviar el mensaje */... /* Recibir mensaje de tipo 1 */ if (msgrcv (msqid, &mensaje, longitud, 1, 0 ) == -1) /* Error al recibir el mensaje */ 2.3. Control de las colas de mensajes. msgctl Para leer y modificar la información estadística y de control de una cola se utiliza la llamada msgctl. Su declaración es la siguiente: #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgctl (int msqid, int cmd, struct msqid_ds *buf); donde msqid Es el identificador de la cola de mensajes sobre la que se va a actuar. cmd Es la operación a realizar. Sus posibles valores están definidos con las siguientes constantes: IPC STAT Lee el estado de la estructura de control de la cola y lo devuelve en la zona de memoria apuntada por buf. Esta estructura está definida en <msg.h> como sigue: struct msqid_ds struct ipc_perm msg_perm; /* operation permission struct */ struct msg *msg_first; /* ptr to first message on q */ struct msg *msg_last; /* ptr to last message on q */ msglen_t msg_cbytes; /* current # bytes on q */ msgqnum_t msg_qnum; /* # of messages on q */ msglen_t msg_qbytes; /* max # of bytes on q */ pid_t msg_lspid; /* pid of last msgsnd */ pid_t msg_lrpid; /* pid of last msgrcv */ time_t msg_stime; /* last msgsnd time */ time_t msg_rtime; /* last msgrcv time */ time_t msg_ctime; /* last change time */ ; IPC SET Inicializa los campos de la estructura de control de la cola. El valor de estos campos lo toma de la estructura apuntada por buf. IPC RMID Borra del sistema la cola de mensajes cuyo identificador es msqid. 4

5 Ejemplo 3 La siguiente línea de código borra una cola de mensajes que previamente fue creada con msgget. msgctl( msqid, IPC_RMID, 0); Ejemplo 4 La siguiente función comprueba si existen mensajes pendientes de ser leídos en una cola: int Mensaje_Pendiente(int mb) struct msqid_ds buf; msgctl(mb, IPC_STAT, &buf); return ( buf.msg_qnum!= 0 ); 3. Ejercicios 1. Realice una biblioteca de funciones para trabajar con colas de mensajes en UNIX, para ello debe definir los siguientes tipos de datos: typedef int MailBox; typedef struct long mtype; char mtext[max]; Message; y las siguientes funciones para manejarlos: MailBox MailBox_Create(char nombre_buz[]); Esta función sirve para crea una nueva cola, para ello se darán los siguientes pasos: a) Comprobar si existe un archivo llamado /tmp/mailbox.uid.nombre buz, donde uid es el identificador de usuario que crea la cola. b) En caso negativo, se debe generar una llave a partir de ese archivo y crear una nueva cola con dicha llave. c) En caso afirmativo, sólo se tendrá que devolver una referencia a la cola, es decir, devolver el resultado de msgget. void MailBox_Destroy(char nombre_buz[], MailBox buz); Esta función elimina el archivo sobre el que se ha mapeado la cola de mensajes (/tmp/mailbox.uid.nombre buz) y la propia cola. void Message_Create(char contenido[], Message *m); Esta función sirve para crear un mensaje m con texto contenido. El tipo de dicho mensaje siempre será 1. void Message_Destroy(Message *m); Librera la memoria reservada para m. void Message_Print(Message m); Imprime el contenido del mensaje por la salida estándar. void MailBox_Send(MailBox mb, Message m); Envía el mensaje m a la cola mb. En el caso de que la cola esté llena esta función se bloquea hasta que haya espacio. void MailBox_Receive(MailBox mb, Message *m); Recibe un mensaje de mb en m. Si no existen mensajes se esperará a que llegue uno. int MailBox_Has_Message(MailBox mb); Esta función devuelve 1 si existe algún mensaje en la cola mb. 5

6 Para probar el correcto funcionamiento de esta biblioteca cree un proceso emisor de mensajes y otro receptor como sigue: EMISOR: #include "MailBox.h" int main(void) MailBox mb; Message m; char txt[max]; mb = MailBox_Create("mibuzon"); for(;;) sprintf(txt, "%d\0", rand()); printf("voy a enviar un mensaje con contenido %s\n", txt); Message_Create(txt, &m); MailBox_Send(mb,m); sleep(1); MailBox_Destroy("mibuzon", mb); RECEPTOR: #include "MailBox.h" int main(void) MailBox mb; Message m; char txt[max]; mb = MailBox_Create("mibuzon"); for(;;) printf("a la espera de recibir mensajes\n"); MailBox_Receive(mb,&m); printf("recibido mensaje: "); Message_Print(m); printf("\n"); if (!MailBox_Has_Message(mb)) printf("el buzón está temporalmente vacio\n"); 2. Se desea sincronizar y comunicar dos grupos de procesos (productores y consumidores) haciendo uso de la anterior biblioteca de funciones. Los procesos productores se encargan de generar un número entero aleatorio (a través de la llamada rand()) y almacenarlo en un almacen en el que caben como máximo N elementos. Los procesos consumidores se encargan de sacar del almacen siempre que existan elementos. Por ejemplo, una llamada que crease dos productores y un consumidor podría generar la siguiente salida: productor & productor & consumidor [2] 7675 [3] 7676 Produciendo Consumiendo Produciendo Produciendo Produciendo Produciendo Consumiendo Produciendo Consumiendo Consumiendo

7 Consumiendo Produciendo Produciendo Produciendo 2749 Produciendo Produciendo Produciendo 2749 Consumiendo Produciendo 9084 Produciendo Produciendo 9084 Produciendo Consumiendo Realice el ejercicio de los emisores/receptor vistos en el boletín de semáforos haciendo uso sólo de mensajes y prescindiendo de archivo intermedio para almacenar los mensajes que se envían entre los emisores y el receptor. 4. Realice el ejercicio de los lectores/escritor visto en el boletín de semáforos haciendo uso sólo de mensajes. 5. (Ejercicio de Examen 2 a CONV II ) Escriba el código C para la función int Enviar_Mensaje(int cola, Mensaje m), dónde cola es el identificador de la cola de mensajes a la que se quiere enviar el mensaje m, que tiene la siguiente estructura: typedef struct long mtype; char cabecera[64]; char cuerpo[1024]; Mensaje; Esta función devolverá -1 en caso de error ó 0 en caso contrario. NOTA: El mensaje m está creado y contiene todos los campos rellenos con la información a enviar. 7

8 A. Ejercicios de Examen 1. (Ejercicio de Examen 1 a CONV II ) Figura 1: Estructura de procesos Considérese un sistema de archivos en el que hay un proceso que se encarga de la planificación central y procesos representantes o proxies que sirven de intermediarios entre dicho planificador central y las aplicaciones de usuario que quieren hacer uso del sistema de archivos. El número máximo de archivos abiertos está limitado a MAX_FILE. En caso de que no exista ninguna solicitud de archivo pendiente el planificador central se echa a dormir. Cuando un proceso de usuario necesita un archivo, el sistema operativo crea un proxy o proceso representante. En caso de que el número de archivos que tiene que servir el planificador central no exceda de MAX_FILE, el proxy esperará a que el planificador le atienda y terminará con su ejecución. De lo contrario, se generará un error indicado que la petición no puede ser atendida finalizando así la ejecución del proxy. Se pide: a) Haciendo uso de la biblioteca de mensajes realizada en el laboratorio, escriba el código C de los procesos Planificador y Proxy. Omita la inclusión de ficheros de los cabecera. Considere definidas las siguientes funciones: void ProcesaPeticion(Message Peticion): la ejecutará el planificador cada vez que tenga que procesar una nueva petición de archivo. void ErrorMaximoPermitido(void): la ejecutará el proxy cuando el planificador central no pueda atender la petición de archivo. Message Crea_Peticion(char nombre_archivo[]): la ejecutará el proxy para crear un mensaje de petición a partir de un nombre de archivo. Suponga que el proceso de usuario se comunica con su proxy a través de una variable compartida nombre_archivo. Dé una breve explicación de cómo resuelve los problemas de sincronización entre los proxies y el planificador central. 2. (Ejercicio de Examen 1 a CONV II ) Queremos sincronizar 2 tipos de procesos. Tenemos un conjunto de procesos generadores que se dedican a crear mensajes de dos tipos (mensajea, mensajeb) y los envían a 2 colas de mensajes (ColaA, ColaB). Las posiciones de ambos mensajes en sus respectivas colas debe ser la misma. Además dichas colas de mensajes sólo pueden albergar MAX mensajes (cada una de ellas). Cuando hay al menos un mensaje en ambas colas, interviene un proceso transformador que recoge un mensaje de cada una de ellas, realiza una operación sobre ambos y muestra el resultado por la salida estándar. Haciendo uso de la biblioteca de colas de mensajes realizada en el laboratorio, escriba el código C del proceso Transformador y los procesos Generadores. Omita la inclusión de ficheros de cabecera. Explique el número de colas de mensajes necesarios para resolver el problema y dé una breve explicación del uso de cada una de las colas. Disponemos de las siguientes funciones: void genera_mensaje(message *msj,char tipo); Recibe como argumentos un mensaje (que se pasará por referencia) y un carácter que indica si el mensaje es de tipo A o B. Servirá para crear e inicializar el mensaje. 8

9 int MailBox_Exist(char nombre_buzon[ ]); Esta función amplía la biblioteca de colas de mensajes realizada en el laboratorio. Recibe el nombre de una cola de mensajes y devuelve 1 en caso de que exista esa cola y 0 en caso contrario. 3. (Ejercicio de Examen 2 a CONV II ) Deseamos modelar el funcionamiento de una peluquería de niños en un sistema cuyo único mecanismo de comunicación entre procesos son las colas de mensajes. La peluquería se modela con un conjunto de procesos abuelo que llevan a sus nietos para que los pelen. El número de nietos de cada proceso abuelo vendrá indicado por un parámetro de la linea de argumentos, de forma que para lanzar a un proceso abuelo, habrá que hacerlo de la siguiente forma: $ abuelo <num_nietos> La peluquería tiene un aforo máximo de MAX_NINIOS y es atendida por un proceso peluquero. Los abuelos tienen las siguientes restricciones de sincronización y comunicación: a) Los nietos estarán identificados por una cadena con el siguiente formato <pid-abuelo>-<indice>. Por ejemplo, el proceso abuelo cuyo pid es 15048, tiene 3 nietos, que estarán identificados, respectivamente por , y b) En el caso de que no exista ningún niño pendiente de pelar, el peluquero se echa a dormir, en caso contrario, permanecerá despierto. c) En caso de que un abuelo llegue con varios nietos a la peluquería y alguno de ellos no pueda ser pelado, se irán todos. Solamente en el caso de que todos puedan ser atendidos, se quedarán. Haciendo uso de la biblioteca de colas de mensajes realizada en el laboratorio, escriba el código C del proceso Peluquero y los procesos Abuelo. Omita la inclusión de ficheros de cabecera. En caso de recibir la señal SIGINT (cuando se pulsa ctrl+c) se deberán liberar los recursos asignados. NOTAS: Los nietos se modelarán con el tipo de dato Message visto en laboratorio, con la particularidad de que el campo texto deberá incluir una cadena con el identificador del niño. La operación de dejar a un niño en la peluquería por parte de un abuelo se simulará con un mensaje por la salida estándar que tenga el siguiente formato: Enviando niño a pelar...<identificador-niño>. La operación de pelar a un niño se simulará con el mensaje Pelando a <identificador-niño> impreso por la salida estándar. Suponga que la biblioteca de Colas de mensajes implementada en clase tiene una nueva función int MailBox_Num_Messages (MailBox); que recibe una Cola de Mensajes y devuelve el número de mensajes que hay en dicha cola. Explique claramente el número de buzones necesarios para resolver el problema, y cómo utiliza cada uno de ellos. 4. (Ejercicio de Examen 3 a CONV II ) Se desea modificar la biblioteca creada en el laboratorio para colas de mensajes. Concretamente la función MailBox_Send de manera que acepte tanto mensajes del tipo Message definido en clase, como de otro tipo de mensajes definidos o por definir. El prototipo de la función será void MailBox_Send(MailBox mb,void *mensaje, int tamanyo_mensaje). El primer argumento es el buzón de mensajes al que vamos a enviar el mensaje, el segundo argumento es un puntero a la dirección de memoria dónde se encuentra nuestro mensaje y el último es el número de bytes que ocupa la estructura completa del mensaje. 5. (Ejercicio de Examen 4 a CONV II ) Se quiere convertir la librería de mensajes realizada en clase de un mecanismo asíncrono a un mecanismo síncrono, de tal forma que un proceso emisor, se detenga hasta que esté seguro de que el receptor haya recibido el mensaje. La forma de conseguir esto, es utilizando un nuevo buzón en el que el receptor enviará un mensaje de confirmación de recepción (ACK). Se pide implementar la función void MailBox_Send_Sinc (Mailbox mb, Mailbox sincro, Mensaje m);, que tome como entrada el buzón al que se quiere enviar el mensaje, mb; el buzón que se utiliza para sincronizar el envío, sincro; y el mensaje a enviar, m. NOTAS: No dispone de la librería de mensaje realizada en los laboratorios para resolver la cuestión. Los buzones se suponen creados y vacíos. 9

Mecanismos IPC System V

Mecanismos IPC System V Mecanismos IPC System V Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Mecanismos IPC System V: generalidades (1) Existen tres tipos de mecanismos IPC

Más detalles

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Tema 5 : Comunicación entre Procesos mediante Tuberías Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción Algunas

Más detalles

IPC SYSTEM V. Técnicas Digitales III Ing. Gustavo Nudelman 2011. Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

IPC SYSTEM V. Técnicas Digitales III Ing. Gustavo Nudelman 2011. Universidad Tecnológica Nacional - Facultad Regional Buenos Aires IPC SYSTEM V Técnicas Digitales III Ing. Gustavo Nudelman 2011 IPC System V En la década del 70, se incorpora a Unix una gran cantidad de funcionalidades llamadas System V entre las cuales aparecen tres

Más detalles

System V MENSAJES. Francisco Javier Montero Vega Francisco García Rodríguez DSO 2004-05

System V MENSAJES. Francisco Javier Montero Vega Francisco García Rodríguez DSO 2004-05 IPC en Unix System V MENSAJES Francisco Javier Montero Vega Francisco García Rodríguez DSO 2004-05 1 Inter-Proces Comunicaction Paso de mensages(colas) Sincronización (semáforos, cerrojos) Memoria compartida

Más detalles

Procesos e Hilos en C

Procesos e Hilos en C Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.

Más detalles

Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores.

Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores. Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores. En esta práctica se tratará de resolver el problema de los productores/consumidores

Más detalles

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 1: Punteros Objetivos Se hará hincapié en la aritmética de punteros

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Tema 14: Arreglos estáticos en C

Tema 14: Arreglos estáticos en C Tema 14: Arreglos estáticos en C Solicitado: Ejercicios 05: Ejercicios con arreglos estáticos unidimensionales M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom

Más detalles

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 2: Memoria dinámica y Bibliotecas Objetivos Practicar conceptos

Más detalles

Tema 13: Apuntadores en C

Tema 13: Apuntadores en C Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción

Más detalles

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C. El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

Más detalles

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación 1 Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera Fundamentos de programación Agenda Caracteres y Cadenas Conversión de Datos Introducción a las funciones y procedimientos

Más detalles

Programación. Test Autoevaluación Tema 3

Programación. Test Autoevaluación Tema 3 Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

Más detalles

Escuela Politécnica Superior de Elche

Escuela Politécnica Superior de Elche EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA)jUJ jhshshs SEPTIEMBRE 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++, una clase derivada puede acceder

Más detalles

Desarrollo de Aplicativos con winsockets

Desarrollo de Aplicativos con winsockets Seminario de Redes de Computadoras 66.48 Desarrollo de Aplicativos con winsockets Docentes: Ing. Marcelo Utard Ing. Pablo Ronco Alumnos: Baños, Germán Gámez, Pablo Rabino, Juan Pablo Salas, Federico Introducción

Más detalles

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema

Más detalles

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros

Más detalles

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía Tema 3 SUBRUTINAS ÍNDICE Definición e instrucciones básicas Soporte para el tratamiento de subrutinas (ejecución de la subrutina y gestión del bloque de activación) Interrupciones vs llamadas a procedimiento

Más detalles

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS Departamento de Ciencias de la Computación e IA Subprogramas en C Objetivo Una vez que tengamos un programa que resuelva un problema concreto, ser capaces de usarlo

Más detalles

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Laboratorio de Arquitectura de Redes. Entrada y salida estándar Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada

Más detalles

Sistemas Operativos Practica 1: procesos y concurrencia.

Sistemas Operativos Practica 1: procesos y concurrencia. Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo

Más detalles

Apuntadores en C y C++

Apuntadores en C y C++ Apuntadores en C y C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Prof. Marcos A. Gil T. 8 de diciembre de 2004 1. Introducción Los apuntadores en C y C++ son una herramienta

Más detalles

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño? Sistemas Operativos. Grado Ingeniería Informática. TGR-2.1 Procesos. Noviembre 2014 Problemas para hacer en clase FIFO cpu C A 1. Dos procesos A y B tienen una ráfaga de CPU de 50 ms y un proceso C tiene

Más detalles

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:

Más detalles

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez 1. PUNTEROS 2. MEMORIA DINÁMICA 2 1. PUNTEROS 3 Qué es un puntero? Un tipo de variable cuyo valor es la dirección de memoria de otra variable.

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando

Más detalles

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES. APUNTADORES. La memoria de una máquina esta ordenada en forma de celdas numeradas consecutivamente y que se pueden manipular individualmente o en grupos contiguos. La siguiente figura muestra una representación

Más detalles

TIPOS DE DATOS BASICOS EN LENGUAJE C

TIPOS DE DATOS BASICOS EN LENGUAJE C TIPOS DE DATOS BASICOS EN LENGUAJE C TIPO char int float double void ANCHO EN BIT 64 0 TIPOS DE DATOS RANGO EN PC -12 a 127 3.4E-3 a 3.4E+3 1.7E-30 a 1.7E+30 sin valores TIPO ANCHO EN BIT RANGO EN PC char

Más detalles

Seguridad. Mecanismos de protección Canales encubiertos Seguridad multinivel

Seguridad. Mecanismos de protección Canales encubiertos Seguridad multinivel Seguridad Mecanismos de protección Canales encubiertos Seguridad multinivel Mecanismos de protección Un dominio de protección es un conjunto de pares (objetos, permisos) que especifica para cada objeto

Más detalles

funciones printf scanf

funciones printf scanf FUNCIONES EN C FUNCIONES Los módulos en C se llaman funciones. Hemos estado utilizando funciones de la biblioteca estandar stdio.h como por ejemplo printf y scanf. Comenzaremos viendo algunas funciones

Más detalles

Lenguaje de Programación

Lenguaje de Programación UG C++ C++ Universidad de Guanajuato Sesión 33 Una estructura es un grupo de variables las cuales pueden ser de diferentes tipos sostenidas o mantenidas juntas en una sola unidad. La unidad es la estructura.

Más detalles

Apuntadores (Punteros)

Apuntadores (Punteros) Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable

Más detalles

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1.- Resumen de Prog1 Comentarios es C++ Declaraciones de variables.

Más detalles

-> Todo socket viene definido por dos características fundamentales:

-> Todo socket viene definido por dos características fundamentales: LOS SOCKETS. Los sockets no son más que puntos o mecanismos de comunicación entre procesos que permiten que un proceso hable (emita o reciba información) con otro proceso incluso estando estos procesos

Más detalles

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Métodos que devuelven valor Dado el siguiente triángulo rectángulo: Métodos que devuelven valor Dado el siguiente triángulo rectángulo: hipotenusa altura base Para dibujar este triángulo necesitamos los siguientes datos: base y altura La base y la altura, se utilizarán

Más detalles

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO TIPOS DE DATOS BÁSICOS: Tipo Tipo Tamaño aproximado en bits Rango mínimo Carácter char 8 0 a 55 Entero int 16-3767 a 3767 Real float 3

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:

Más detalles

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales

Más detalles

USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++

USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++ USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++ Bruno López Takeyas Instituto Tecnológico de Nuevo Laredo Reforma Sur 2007, C.P. 88250, Nuevo Laredo, Tamps. México http://www.itnuevolaredo.edu.mx/takeyas

Más detalles

2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA

2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA Universidad Rafael Urdaneta Facultad de Ingeniería Escuela de Ingeniería de Computación Cátedra: Programación I Laboratorio - Semestre 2012-1 (Sección C ) Profesor: Jaime Soto Examen #1 - Fecha: 07-03-2012

Más detalles

TADs en C. Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013

TADs en C. Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013 TADs en C Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013 1. Objetivos Definición de TADs en C Ocultación de la implementación del TAD Manejo básico de memoria dinámica 2. Usando

Más detalles

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006 Lenguaje C Elementos de un Programa Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006 Objetivos Conocer los elementos que conforman un programa en C 1. Elementos léxicos de un Programa Cuando el programa

Más detalles

Estructuras de Datos Declaraciones Tipos de Datos

Estructuras de Datos Declaraciones Tipos de Datos Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación

Más detalles

Programación. Práctica Final

Programación. Práctica Final Programación Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero Jose A. Iglesias Martínez Jose Luis Mira 1 1. Introducción. El objetivo de esta práctica

Más detalles

ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO

ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO 16.1 INTRODUCCIÓN: El teclado se comunica con la BIOS a través de puertos de comunicación controlados por las interrupciones de la

Más detalles

Bloque IV: El nivel de red. Tema 12: ICMP

Bloque IV: El nivel de red. Tema 12: ICMP Bloque IV: El nivel de red Tema 12: ICMP Índice Bloque IV: El nivel de red Tema 12: ICMP Introducción ICMP: Puerto inalcanzable ICMP: Fragmentación requerida Ping Traceroute Referencias Capítulo 4 de Redes

Más detalles

Diagramas de secuencia

Diagramas de secuencia Facultad de Ingeniería Departamento de Ingeniería de Sistemas y Computación Diagramas de secuencia Interacciones básicas 1 Para qué sirven los diagramas de secuencia? 2 Para qué sirven los diagramas de

Más detalles

MIA RICARDO GONZALEZ LOZANO APLICACIONES EN LENGUAJE C

MIA RICARDO GONZALEZ LOZANO APLICACIONES EN LENGUAJE C MIA RICARDO GONZALEZ LOZANO APLICACIONES EN LENGUAJE C Antes de comenzar a desarrollar aplicaciones podemos crear el programa en cualquier editor de textos, solo hay que guardarlo con la extensión X.c

Más detalles

Guía rápida para gestionar el puerto paralelo del PC

Guía rápida para gestionar el puerto paralelo del PC Guía rápida para gestionar el puerto paralelo del PC Descarga desde: http://eii.unex.es/profesores/jisuarez/descargas/ip/guia_rapida_pp.pdf José Ignacio Suárez Marcelo Universidad de Extremadura Escuela

Más detalles

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C Laboratorio de Arquitectura de Redes Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones con punteros Operaciones

Más detalles

Tema 4 : señales. Sistemas Operativos: Programación de Sistemas. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez.

Tema 4 : señales. Sistemas Operativos: Programación de Sistemas. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez. Tema 4 : señales Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Señales Las señales son un mecanismo para comunicar eventos

Más detalles

SOLUCION EXAMEN junio 2006

SOLUCION EXAMEN junio 2006 SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los

Más detalles

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM) s s Comunicación punto-a-punto entre procesos Los s son los extremos de la comunicación Diferentes dominios UNIX: Entre procesos de un mismo equipo Internet: Entre procesos de diferentes equipos (TCP/IP)

Más detalles

El lenguaje C. 1. Estructuras. Principios de Programación. 1.1. Definicion de estructuras

El lenguaje C. 1. Estructuras. Principios de Programación. 1.1. Definicion de estructuras Principios de Programación El lenguaje C 1. Estructuras Las estructuras son colecciones de variables relacionadas bajo un nombre. Las estructuras pueden contener variables de muchos tipos diferentes de

Más detalles

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,

Más detalles

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

Tema 16: Tipos de datos estructurados en lenguaje C

Tema 16: Tipos de datos estructurados en lenguaje C Tema 16: Tipos de datos estructurados en lenguaje C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo

Más detalles

Programación En Lenguaje C

Programación En Lenguaje C Programación En Lenguaje C Introducción Básica para Primero de Bachillerato TECNOLOGÍA DE LA INFORMACIÓN IES PALAS ATENEA Lenguaje C Estructurado Secuencial De alto Nivel Altamente portable Necesita un

Más detalles

The Atomik Microkernel API Reference, version 0.1 february 2014 (Spanish)

The Atomik Microkernel API Reference, version 0.1 february 2014 (Spanish) Atomik Kernel API loader Una de las funciones del microkernel consiste en ejecutar diversos tipos de procesos (hilos del kernel, procesos de sistema y procesos de usuario). Para el caso de los procesos

Más detalles

Informática I para Bachillerato

Informática I para Bachillerato CIMAT C++ C/C++ de Datos CIMAT Sesión 15 Una estructura es un grupo de variables las cuales pueden ser de diferentes tipos sostenidas o mantenidas juntas en una sola unidad, a diferencia de los arreglos

Más detalles

Tema 10: Tipos de datos definidos por el usuario

Tema 10: Tipos de datos definidos por el usuario Tema 10: Tipos de datos definidos por el usuario Indice 1. Introducción 2. Registros 2.1. Elementos de un registro 2.2 Arrays de registros 2.3. Registros con arrays 2.4. Registros con registros 2.5. Paso

Más detalles

Programación estructurada (Introducción a lenguaje C)

Programación estructurada (Introducción a lenguaje C) Programación estructurada (Introducción a lenguaje C) M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 15-I Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

Tema 3. Aplicaciones de Tipo Consola

Tema 3. Aplicaciones de Tipo Consola Tema 3. Aplicaciones de Tipo Consola Una aplicación de consola es aquella que se ejecuta dentro de una ventana de línea de comandos. Este tipo de ventana recibe diferentes denominaciones: Símbolo del sistema,

Más detalles

Tema: Clases y Objetos en C#. Parte II.

Tema: Clases y Objetos en C#. Parte II. Programación II. Guía No. 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Clases y Objetos en C#. Parte II. Objetivos Implementar clases, objetos, propiedades, métodos y

Más detalles

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009 Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009 1. [PROCESOS] a) Considerar el siguiente código: void main() { int j=10; pid_t pid; for (int i=0; i

Más detalles

Funciones Tipos de funciones y Recursividad

Funciones Tipos de funciones y Recursividad Funciones Tipos de funciones y Recursividad SESION 4 Definición Una función es una subrutina o subprograma que forman un programa que realiza tareas bien definidas. Todo programa en C consta de una o más

Más detalles

Examen de Fundamentos de sistemas distribuidos

Examen de Fundamentos de sistemas distribuidos Examen de Fundamentos de sistemas distribuidos Tiempo total: 2 horas Problema: Programa: Rendezvous con semáforos(5 puntos) Utilizando como único mecanismo de sincronización los semáforos descritos en

Más detalles

LENGUAJE. Tema 1 - Introducción

LENGUAJE. Tema 1 - Introducción LENGUAJE Tema 1 - Introducción HISTORIA DEL LENGUAJE C El lenguaje de programación C fue creado por Dennis Ritchie cuando trabajaba en Bell Laboratories de AT&T junto con Ken Thompson en el diseño del

Más detalles

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos. / OBJETIVOS Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos. LABORATORIO 6 MANEJO DE ARCHIVOS DE TEXTO Y BINARIOS Msc. Walter Fernandez

Más detalles

Práctica 5MODBUS: Bus Modbus

Práctica 5MODBUS: Bus Modbus Práctica 5MODBUS: Bus Modbus 1 Objetivos El objetivo de esta práctica es la utilización y la programación de una red Modbus. El alumno debe ser capaz de: Diferenciar los tres niveles fundamentales de la

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 2 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº 2 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Reserva

Más detalles

Outlook Express de la A a la Z

Outlook Express de la A a la Z Outlook Express de la A a la Z 2.- Leer, escribir, recibir y enviar emails El correo electrónico ha invadido nuestras vidas y se ha convertido en uno de los medios de comunicación preferidos entre particulares

Más detalles

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas. LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.

Más detalles

Generador de analizadores léxicos FLEX

Generador de analizadores léxicos FLEX Generador de analizadores léxicos FLEX Procesadores de Lenguajes 4 o Informática PL curso 2008-2009 (CCIA) CCIA Octubre 2008 PL 0809 (CCIA) Introducción a FLEX Octubre-2008 1 / 12 Uso de FLEX FLEX: traduce

Más detalles

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Asertos en C++ Mecanismo de excepciones: Declaración de excepciones Lanzar excepciones

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 2 Nombre: El lenguaje de programación C Contextualización Una constante en todos los lenguajes de programación (viejos y nuevos) es la implementación

Más detalles

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas Unidad II Fundamentos de programación en Java Ing. José Luis Llamas Cárdenas En java para poder escribir se emplea el objeto System.out, t pero para leer del teclado es necesario emplear System.in Et Este

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. 1 Programación II, Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. Objetivos Utilizar la sintaxis de las funciones

Más detalles

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2008-2009 Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Planteamiento del problema En esta práctica se trata de realizar, mediante el

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

La sintaxis básica para definir una clase es la que a continuación se muestra:

La sintaxis básica para definir una clase es la que a continuación se muestra: DEFINICIÓN DE CLASES Y OBJETOS EN C# Sintaxis de definición de clases La sintaxis básica para definir una clase es la que a continuación se muestra: class nombreclase miembros De este modo se definiría

Más detalles

TEMA 4. ESTRUCTURAS DE CONTROL

TEMA 4. ESTRUCTURAS DE CONTROL M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.

Más detalles

Arduino. Teclado matricial. Col1 Col2 Col3 Col4

Arduino. Teclado matricial. Col1 Col2 Col3 Col4 TECLADO MATRICIAL 4x4 Información: http://www.prometec.net/teclados-matriciales/ Un teclado es una matriz de teclas organizadas en filas y columnas. Suelen ser de 4x4, como el de la figura, pero si no

Más detalles

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad EJERCICIOS RESUELTOS 1. Escribe una función que calcule el factorial de un número, dado como parámetro. A continuación realiza un programa que lea por teclado

Más detalles

Nota: El protocolo ICMP está definido en la RFC 792 (en inglés, en español) Área de datos del datagrama IP. Área de datos de la trama

Nota: El protocolo ICMP está definido en la RFC 792 (en inglés, en español) Área de datos del datagrama IP. Área de datos de la trama Protocolo ICMP Debido a que el protocolo IP no es fiable, los datagramas pueden perderse o llegar defectuosos a su destino. El protocolo ICMP (Internet Control Message Protocol, protocolo de mensajes de

Más detalles

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */ Principios de Programación El lenguaje C 1. Variables locales y globales 1.1. Variables locales Las funciones permiten al programador modularizar un programa. Todas las variables declaradas en las definiciones

Más detalles

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN 4.1 Definiciones y palabras reservadas básicas del C El lenguaje C++ está compuesto por: 32 palabras clave (estándar ANSI), comunes a todos los compiladores de

Más detalles

7. Manejo de Archivos en C.

7. Manejo de Archivos en C. 7. Manejo de Archivos en C. Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo de

Más detalles

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente:

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente: (3 ptos) Memoria Compartida y Semáforos R/W 1. Objetivo En esta práctica se pretende crear una librería que dé la funcionalidad de un semáforo para resolver problemas con múltiples lectores y escritores

Más detalles

Universidad Francisco Gavidia

Universidad Francisco Gavidia La UNIVERSIDAD FRANCISCO GAVIDIA ahora dispone de un conjunto de herramientas web, de correo electrónico y colaboración que pueden ayudarte a trabajar más deprisa y obtener habilidades para el área de

Más detalles

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una

Más detalles