Auxiliar 1 - CC31A Programación de software sistema

Documentos relacionados
Se guardan en archivos con extencion c y los cabezales con extension h

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

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Examen Principios de Programación Febrero 2012

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

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

Primer Parcial de Programación 3 (1/10/2009)

Tema 10: Tipos de datos definidos por el usuario

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso

Generador de analizadores léxicos FLEX

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

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal

Escuela Politécnica Superior de Elche

FACULTAD DE INGENIERÍA, U.B.A. Seminario de Sistemas Embebidos TRABAJO PRÁCTICO 0

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

Entrada y salida de datos en C y C++

Instituto Politécnico Nacional

funciones printf scanf

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

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

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

Informática I. Código Semestre Para Ingeniería Electrónica e Ingeniería de Telecomunicaciones Profesor: Sebastián Isaza

4. Memoria, Stack, Strings

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Algoritmos y Programación I

Generador de analizadores sintácticos BISON

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

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.

Prácticas: Introducción a la programación en Java. Informática (1º Ingeniería Civil) Curso 2011/2012

Contenido. Capítulo 1. Introducción a lenguaje C 1

Estructura de Datos. Arreglos. Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1

Introducción al lenguaje C

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Tema 2: La clase string

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

1 Estructura básica de un programa C++

Proyecto 6. Árboles de decisión: Un árbol de decisión es un modelo de predicción utilizado en el ámbito de la inteligencia artificial.

Practicas de Programación Estructurada. Clave: 12125

Elementos de un programa en C

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

Tema 13: Apuntadores en C

Estructuras de Datos Declaraciones Tipos de Datos

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

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

El concepto de función en programación se fundamenta en el concepto de función matemática 1

Tema 2 Introducción a la Programación en C.

Estructuras de Datos Dinámicas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas

Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma:

Tablas Hash y árboles binarios

Uso de archivos en C++

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Programación Estructurada

µ-c: Manual de referencia del lenguaje Micro-C

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN

Lección 2 Introducción al lenguaje C

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Reglas básicas de la programación en lenguaje C

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Clases y Objetos. Informática II Ingeniería Electrónica

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación

Bloque 4. La descomposición funcional y el diseño descendente

Vectores. 27/05/05 Programación Digital I 1

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

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

Examen escrito de Programación 1

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Fundamentos de programación

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones.

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

EXAMEN PARCIAL 23 de Octubre de 2015 Programación I. Grado en Matemáticas e Informática ETSIINF UPM

Árboles balanceados. Alonso Ramírez Manzanares Computación y Algoritmos Thursday, April 30, 15

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior PUNTEROS

Guía - Taller # 2 (JAVA)

PROGRAMACION / Clave: 11214

Lenguajes de programación

Reconocímíentes y Agradecimientos 5 Indice 6 Prólogo 11

Apuntadores (Punteros)

Preliminares. Tipos de variables y Expresiones

Examen de Fundamentos de sistemas operativos

Metodología y Tecnología de la Programación

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Capitulo 12. Tira de bits

5. Subprogramas Fundamentos de Informática

Organización de Computadoras

El lenguaje C: Elementos básicos del lenguaje

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Uso avanzado de punteros

LENGUAJE. Tema 1 - Introducción

Programación Estructurada

Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL

Transcripción:

Auxiliar 1 - CC31A Programación de software sistema Auxiliar: Paul Leger 31 de marzo de 008 Pregunta 1 Para esta pregunta, no puede utilizar funciones de biblioteca de C, salvo malloc. Escriba un programa que utilize una función que concatena dos strings en un string nuevo (copia distinta de sus parámetros, obtenido con malloc) y lo retorna. La función debe tener la siguiente firma: char *concat(char *s1, char *s); Pregunta Escriba un programa en C que invierte las líneas de su entrada en su salida, es decir: %./programa 1 linea 3 final ˆD 3 final 1 linea % Las funciones para leer y escribir líneas son: 1

char *fgets(char *s, int tam, FILE *flujo); int fputs(const char *s, FILE *flujo); La salida estándar es stdout y la entrada estándar es stdin, y se pasan como flujo. Puede suponer un máximo de largo de cada línea (500 chars). No puede suponer un número máximo de líneas en el archivo. Pregunta 3 Programe un scheduler con prioridades para una administración de printjobs. Cada printjob tiene una entidad llamada Job que lo representa en la impresora. Un printjob contiene el tiempo de demora, la prioridad y una descripción opcional del printjob, estos campos son asignados cuando sea una entidad printjob. El scheduler tiene una cola jobs donde están esperando los printjobs para imprimirse. Cuando un job ingresa al scheduler su prioridad es igual a su tiempo de demora, y decrementa mientras esta en la cola y no es ejecutado. El scheduler elige el printjob con menor prioridad para ejecutarlo y extraerlo de la cola en cada ciclo de tiempo. Cuando el scheduler ejecuta un printjob, y por ende lo extrae de cola, permite ingresar otro printjob. Diseñe e implemente las estructuras y funciones necesarias para simular el funcionamiento del scheduler mencionado. Pregunta 4 Para esta pregunta, no puede utilizar funciones de biblioteca de C, salvo malloc. Escriba un programa que implemente la función que busca un patrón dentro de un string. El patrón puede calzar en forma parcial y en ese caso debemos retornar el calce más largo que figura en el string. El string retornado, que es un substring del patrón, debe estar en memoria nueva (pedida con malloc). Si no se encuentra ningún calce de ningún tipo, debe retornar el string vacío. char *substring(char *patron, char *string); Ejemplos: substring("arm", "artista") --> "ar" substring("arm", "arte armado")

--> "arm" substring("arm", "XXXXX") --> "" Pregunta 5 En esta sección ud. debe construir programas que utilizen las siguientes funciones. 1. char *DescomponerNumero(int). La función debe recibir un número entero y debe entregar un string que contenga la descomposición del número en números primos. printf( Descomposicion 100 es %s,descomponernumero(140)); Descomposicion 100 es **5*5. int contardigitos(int). La función devuelve cuantos digitos tiene un numero. printf( Los digitos de 4535 es %d,contardigitos(4535)); Los digitos de 4535 es 4 Pregunta 6 Escriba un programa que construya un árbol binario con una función recursiva que construya un árbol binario de búsqueda (los hijos izquierdos siempre tienen elementos menores al nodo y los hijos derechos siempre tienen elementos mayores). La función debe retornar un árbol binario nuevo (pedido con malloc) que contiene los elementos de un arreglo ordenado de menor a mayor. La función es: typedef struct Tree { int val; struct Tree *left; 3

struct Tree *right; }Tree; Tree *maketree(int a[], int i, int j); La función solo usa los elementos entre a[i] y a[j] (inclusives). Por lo que la primera llamada para obtener todos los elementos de un arreglo con n elementos es: int a[n]; tree = maketree(a[], 0, n-1); La lógica de la función es siempre dejar como raíz del árbol al elemento que está en la mitad del arreglo y dejar en el sub-árbol izquierdo los elementos anteriores a ese y en el sub-árbol derecho a los posteriores. Pregunta 7 Explique claramente cual es el problema de este programa. Por qué se produce el error?. Nota: Grafique el uso de la memoria. #include<stdio.h> int contar = 0; void recursiva() { contar++; if (contar%100 == 0 ) printf("\nllamada %d",contar); } recursiva(); int main() { recursiva(); 4

} printf("\nfinal \n"); return 0; 5