Ejercicios de la sesión 4 de C resueltos

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

Download "Ejercicios de la sesión 4 de C resueltos"

Transcripción

1 Ejercicios de la sesión 4 de C resueltos 1. Usando el procedimiento del ejercicio 2 del seminario anterior, escribe un programa que multiplique dos matrices A y B leídas de ficheros, la primera de tamaño n m y la segunda de tamaño m p. Las matrices deben leerse cada una de un fichero distinto y el resultado debe estar en otro fichero. El formato del fichero es el siguiente: en la primera línea habrán 2 enteros, indicando el tamaño de la matriz en cada dimensión. A continuación vienen las filas de la matriz, cada una en una misma línea. Los valores son números reales. El resultado debe estar en otro fichero con el mismo formato. Por ejemplo, un fichero de definición de una matríz podría ser el siguiente: Los nombres de los ficheros serán los argumentos del programa o (si no existen) se solicitarán a través del teclado. Solución: Una posible implementación sería ésta: #include <stdlib.h> #include <limits.h> #include <string.h> * * Crea una matriz de doubles de tamaño N x M, reservando la memoria de * forma dinámica. double *creamatriz(int m, int n) { return calloc(m*n, sizeof (double)); * * Multiplica dos matrices A y B, escribiendo el resultado en una tercera C. * Las matrices a multiplicar deben ser de dimensiones compatibles, en otro * caso se devuelve el valor NULL como resultado. Si todo funciona correctamente, * se devuelve como resultado un puntero a C. Si C, que se pasa como parámetro, * tiene como valor NULL, se reserva espacio para una nueva matriz y se devuelve * el puntero como resultado. * Parametros: * - double *A: puntero a la matriz A * - int m: filas de A * - int n: columnas de A * - double *B: puntero a la matriz B * - int r: filas de B * - int s: columnas de B * - double *C: puntero a la matriz C (puede ser NULL si se quiere crear) * - int *t: puntero a filas de C (para poder escribirlo en caso de crearla) * - int *u: puntero a columnas de C (para poder escribirlo en caso de crearla) 1/13

2 * * Devuelve: NULL en caso de error. Un puntero a la matriz resultante en otro * caso. Si C era NULL, se creará una nueva matriz. En *t y *u se escribiran * las dimensiones de la nueva matriz. double *multiplicamatrices(double *A, int m, int n, double *B, int r, int s, double *C, int *t, int *u) { int i, j, k; if (n!= r) return NULL; //Dimensiones incompatibles if (C && (m>*t s>*u)) return NULL; //Dimensiones del C existente incorrectas if (!C) { // Si C es NULL, creamos la matriz resultado C = creamatriz(m, s); *t = m; *u = s; for (i = 0; i < m; i++) { //Recorremos filas for (j = 0; j < s; j++) { //Recorremos columnas C[i * s + j] = 0; //Inicializamos el valor para la posicion i,j for (k = 0; k < n; k++) { C[i * s + j] += A[i * n + k] * B[k * s + j]; return C; * Lee una matriz del fichero indicado nombrefichero, reservando la memoria * en M e indicando las dimensiones en m y n. Devuelve M=NULL en caso de * error, indicando el codigo de error en n. void leematriz(char *nombrefichero, double **M, int *m, int *n) { FILE *f; f = fopen(nombrefichero, "r"); if (!f) { *M = NULL; *m = 0; *n = 1; // El fichero no se ha podido abrir return; if (fscanf(f, "%d %d\n", m, n)!= 2) { *M = NULL; *m = 0; *n = 2; // Las dimensiones no se han podido leer return; *M = creamatriz(*m, *n); if (!*M) { *M = NULL; *m = 0; 2/13

3 *n = 3; //Imposible reservar la memoria return; int i, j; float v; for (i = 0; i<*m; i++) { for (j = 0; j<*n; j++) { fscanf(f, "%f", &v); (*M)[i * (*n) + j] = v; * Escribe la matriz M con dimensiones m X n en el fichero indicado * nombrefichero. Devuelve 0 en caso de ejecución correcta. int escribematriz(char *nombrefichero, double *M, int m, int n) { FILE *f; int i, j; f = fopen(nombrefichero, "w"); if (!f) { return 1; //No se puede crear el fichero fprintf(f, "%d %d\n", m, n); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { fprintf(f, "%g ", M[i * n + j]); putc('\n', f); return 0; * Imprime una matriz por la salida estándar void imprimematriz(double *M, int m, int n) { int i, j; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { printf("%g ", M[i * n + j]); putchar('\n'); Principal int main(int argc, char *argv[]) { double *A, *B, *C = NULL; int am, an, bm, bn, cm, cn; // Dimensiones char *matriza, *matrizb, *matrizc; int sz; if (argc < 2) { 3/13

4 printf("indique el nombre del fichero con la matriz A: "); matriza = malloc(path_max + 1); fgets(matriza, PATH_MAX, stdin); if (!(sz = strlen(matriza))) { return EXIT_SUCCESS; if (matriza[sz - 1] == '\n') matriza[sz - 1] = '\0'; else { matriza = argv[1]; leematriz(matriza, &A, &am, &an); if (!A) { printf(" Imposible leer A de %s, código de error %d!\n", matriza, an); printf("leido A =\n"); imprimematriz(a, am, an); if (argc < 3) { printf("indique el nombre del fichero con la matriz B: "); matrizb = malloc(path_max + 1); fgets(matrizb, PATH_MAX, stdin); if (!(sz = strlen(matrizb))) { return EXIT_SUCCESS; if (matrizb[sz - 1] == '\n') matrizb[sz - 1] = '\0'; else { matrizb = argv[2]; leematriz(matrizb, &B, &bm, &bn); if (!B) { printf(" Imposible leer B de %s, código de error %d!\n", matrizb, bn); printf("leido B =\n"); imprimematriz(b, bm, bn); C = multiplicamatrices(a, am, an, B, bm, bn, C, &cm, &cn); if (!C) { printf(" Imposible multiplicar AxB!\n"); printf("\nc = AxB =\n"); imprimematriz(c, cm, cn); if (argc < 4) { printf("indique el nombre del fichero donde guardar la matriz C: "); matrizc = malloc(path_max + 1); fgets(matrizc, PATH_MAX, stdin); if (!(sz = strlen(matrizc))) { return EXIT_SUCCESS; if (matrizc[sz - 1] == '\n') matrizc[sz - 1] = '\0'; 4/13

5 else { matrizc = argv[3]; if (escribematriz(matrizc, C, cm, cn)) { printf(" Imposible escribir C en %s!\n", matrizc); Liberamos la memoria free(a); free(b); free(c); if (argc < 2) free(matriza); if (argc < 3) free(matrizb); if (argc < 4) free(matrizc); return (EXIT_SUCCESS); 2. Dado el programa escrito en el ejercicio anterior (cálculo del producto de dos matrices) dividir el código en tres módulos: Ficheros (funciones de entrada salida), Matematico (tipo de datos matriz y producto de matrices) y Principal (programa principal). Crea un fichero makefile para generar automáticamente el programa ejecutable. Solución: Una posible implementación sería ésta: * Fichero: matematico.h #ifndef _MATEMATICO_H #define _MATEMATICO_H * * Crea una matriz de doubles de tamaño N x M, reservando la memoria de * forma dinámica. double *creamatriz(int m, int n); * * Multiplica dos matrices A y B, escribiendo el resultado en una tercera C. * Las matrices a multiplicar deben ser de dimensiones compatibles, en otro * caso se devuelve el valor NULL como resultado. Si funciona correctamente, * se devuelve como resultado un puntero a C. Si C tiene como valor NULL, * se reserva espacio para una nueva matriz y se devuelve el puntero. * Parametros: * - double *A: puntero a la matriz A * - int m: filas de A * - int n: columnas de A * - double *B: puntero a la matriz B * - int r: filas de B * - int s: columnas de B 5/13

6 * - double *C: puntero a la matriz C (puede ser NULL si se quiere crear) * - int *t: puntero a filas de C (para poder escribirlo en caso de crearla) * - int *u: puntero a columnas de C (para poder escribirlo) * * Devuelve: NULL en caso de error. Un puntero a la matriz resultante en otro * caso. Si C era NULL, se creará una nueva matriz. En *t y *u se escribiran * las dimensiones de la nueva matriz. double *multiplicamatrices(double *A, int m, int n, double *B, int r, int s, double *C, int *t, int *u); #endif _MATEMATICO_H * Fichero: matematico.c #include "matematico.h" #include <stdlib.h> * * Crea una matriz de doubles de tamaño N x M, reservando la memoria de * forma dinámica. double *creamatriz(int m, int n) { return calloc(m*n, sizeof (double)); * * Multiplica dos matrices A y B, escribiendo el resultado en una tercera C. * Las matrices a multiplicar deben ser de dimensiones compatibles, en otro * caso se devuelve el valor NULL como resultado. Si todo funciona correctamente, * se devuelve como resultado un puntero a C. Si C, que se pasa como parámetro, * tiene como valor NULL, se reserva espacio para una nueva matriz y se devuelve * el puntero como resultado. * Parametros: * - double *A: puntero a la matriz A * - int m: filas de A * - int n: columnas de A * - double *B: puntero a la matriz B * - int r: filas de B * - int s: columnas de B * - double *C: puntero a la matriz C (puede ser NULL si se quiere crear) * - int *t: puntero a filas de C (para poder escribirlo en caso de crearla) * - int *u: puntero a columnas de C (para poder escribirlo en caso de crearla) * * Devuelve: NULL en caso de error. Un puntero a la matriz resultante en otro * caso. Si C era NULL, se creará una nueva matriz. En *t y *u se escribiran * las dimensiones de la nueva matriz. double *multiplicamatrices(double *A, int m, int n, double *B, int r, int s, 6/13

7 double *C, int *t, int *u) { int i, j, k; if (n!= r) return NULL; //Dimensiones incompatibles if (C && (m>*t s>*u)) return NULL; //Dimensiones del C existente incorrectas if (!C) { // Si C es NULL, creamos la matriz resultado C = creamatriz(m, s); *t = m; *u = s; for (i = 0; i < m; i++) { //Recorremos filas for (j = 0; j < s; j++) { //Recorremos columnas C[i * s + j] = 0; //Inicializamos el valor para la posicion i,j for (k = 0; k < n; k++) { C[i * s + j] += A[i * n + k] * B[k * s + j]; return C; * File: ficheros.h #ifndef _FICHEROS_H #define _FICHEROS_H * Lee una matriz del fichero indicado nombrefichero, reservando la memoria * en M e indicando las dimensiones en m y n. Devuelve M=NULL en caso de * error, indicando el código de error en n. void leematriz(char *nombrefichero, double **M, int *m, int *n); * Escribe la matriz M con dimensiones m X n en el fichero indicado * nombrefichero. Devuelve 0 en caso de ejecución correcta. int escribematriz(char *nombrefichero, double *M, int m, int n); #endif _FICHEROS_H * File: ficheros.c #include "ficheros.h" #include <stdio.h> #include "matematico.h" 7/13

8 * Lee una matriz del fichero indicado nombrefichero, reservando la memoria * en M e indicando las dimensiones en m y n. Devuelve M=NULL en caso de * error, indicando el código de error en n. void leematriz(char *nombrefichero, double **M, int *m, int *n) { FILE *f; f = fopen(nombrefichero, "r"); if (!f) { *M = NULL; *n = 1; // El fichero no se ha podido abrir return; if (fscanf(f, "%d %d\n", m, n)!= 2) { *M = NULL; *n = 2; // Las dimensiones no se han podido leer return; *M = creamatriz(*m, *n); if (!*M) { *M = NULL; *n = 3; //Imposible reservar la memoria return; int i, j; float v; for (i = 0; i<*m; i++) { for (j = 0; j<*n; j++) { fscanf(f, "%f", &v); (*M)[i * (*n) + j]=v; * Escribe la matriz M con dimensiones m X n en el fichero indicado * nombrefichero. Devuelve 0 en caso de ejecución correcta. int escribematriz(char *nombrefichero, double *M, int m, int n) { FILE *f; int i, j; f = fopen(nombrefichero, "w"); if (!f) { return 1; //No se puede crear el fichero fprintf(f, "%d %d\n", m, n); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { fprintf(f, "%g ", M[i * n + j]); putc('\n', f); 8/13

9 return 0; * File: principal.c #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <string.h> #include "matematico.h" #include "ficheros.h" * Imprime una matriz por la salida estándar void imprimematriz(double *M, int m, int n) { int i, j; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { printf("%g ", M[i * n + j]); putchar('\n'); * Programa de prueba int main(int argc, char *argv[]) { double *A, *B, *C = NULL; int am, an, bm, bn, cm, cn; // Dimensiones char *matriza, *matrizb, *matrizc; int sz; if (argc < 2) { printf("indique el nombre del fichero con la matriz A: "); matriza = malloc(path_max + 1); fgets(matriza, PATH_MAX, stdin); if (!(sz = strlen(matriza))) { return EXIT_SUCCESS; if (matriza[sz - 1] == '\n') matriza[sz - 1] = '\0'; else { matriza = argv[1]; leematriz(matriza, &A, &am, &an); if (!A) { printf(" Imposible leer A de %s, código de error %d!\n", matriza, an); printf("leido A =\n"); imprimematriz(a, am, an); 9/13

10 if (argc < 3) { printf("indique el nombre del fichero con la matriz B: "); matrizb = malloc(path_max + 1); fgets(matrizb, PATH_MAX, stdin); if (!(sz = strlen(matrizb))) { return EXIT_SUCCESS; if (matrizb[sz - 1] == '\n') matrizb[sz - 1] = '\0'; else { matrizb = argv[2]; leematriz(matrizb, &B, &bm, &bn); if (!B) { printf(" Imposible leer B de %s, código de error %d!\n", matrizb, bn); printf("leido B =\n"); imprimematriz(b, bm, bn); C = multiplicamatrices(a, am, an, B, bm, bn, C, &cm, &cn); if (!C) { printf(" Imposible multiplicar AxB!\n"); printf("\nc = AxB =\n"); imprimematriz(c, cm, cn); if (argc < 4) { printf("indique el nombre del fichero donde guardar la matriz C: "); matrizc = malloc(path_max + 1); fgets(matrizc, PATH_MAX, stdin); if (!(sz = strlen(matrizc))) { return EXIT_SUCCESS; if (matrizc[sz - 1] == '\n') matrizc[sz - 1] = '\0'; else { matrizc = argv[3]; if (escribematriz(matrizc, C, cm, cn)) { printf(" Imposible escribir C en %s!\n", matrizc); Liberamos la memoria free(a); free(b); free(c); if (argc < 2) free(matriza); if (argc < 3) free(matrizb); if (argc < 4) free(matrizc); 10/13

11 return (EXIT_SUCCESS); ## -*- Makefile -*- CFLAGS = -g -Wall # Enlaza todos los.o en un fichero final ejecutable a.out: principal.o matematico.o ficheros.o gcc $(CFLAGS) -o $@ principal.o matematico.o ficheros.o # Compila ficheros fuente en ficheros.o principal.o: principal.c matematico.h ficheros.h gcc $(CFLAGS) -c principal.c matematico.o: matematico.c matematico.h gcc $(CFLAGS) -c matematico.c ficheros.o: ficheros.c ficheros.h matematico.h gcc $(CFLAGS) -c ficheros.c #### Para limpiar el directorio de ficheros generados #### clean: rm -f a.out *.o 3. Escribe un programa que dado un nombre de fichero, que se pasará como parámetro en la línea de comandos, haga que la primera letra de cada palabra esté en mayúsculas. Se deberá poder compilar en modo debug, mostrando en ese caso los principales pasos de ejecución. Crea un fichero makefile para generar automáticamente el programa ejecutable. Solución: Una posible implementación sería ésta: * File: ponmayusculas.h #ifndef _PONMAYUSCULAS_H #define _PONMAYUSCULAS_H * * Abre el fichero *nombrefichero* en modo lectura escritura y cambia la * primera letra de capa palabra a mayúsculas. * Devuelve 0 si todo va bien, un código de error en otro caso. int ponmayusculas(char *nombrefichero); #endif _PONMAYUSCULAS_H * File: ponmayusculas.c 11/13

12 #include "ponmayusculas.h" #include <stdio.h> #include <ctype.h> int ponmayusculas(char* nombrefichero) { FILE *f; int c; f = fopen(nombrefichero, "r+"); if (!f) { #ifdef DEBUG fprintf(stderr, "El fichero %s no se ha podido abrir correctamente\n", nombrefichero); #endif return 1; #ifdef DEBUG fprintf(stderr, "Fichero %s abierto correctamente\n", nombrefichero); #endif while (!feof(f)) { #ifdef DEBUG fprintf(stderr, "Buscando inicio de palabra... "); #endif while (!isalnum(c = getc(f)) &&!feof(f));//buscamos principio palabra if (feof(f)) break; #ifdef DEBUG fprintf(stderr, "encontrado '%c', convirtiendo en '%c'\n", c, toupper(c)); #endif fseek(f, -1, SEEK_CUR); //Nos movemos uno atrás para sobreescribir putc(toupper(c), f); //Sobreescribimos con la versión en mayúsculas while (isalpha(c = getc(f)) &&!feof(f)); //Saltamos el resto palabra #ifdef DEBUG fprintf(stderr, "\nfichero %s procesado completamente\n", nombrefichero); #endif return 0; * File: principal.c #include <stdio.h> #include <stdlib.h> #include "ponmayusculas.h" void imprimeuso(char *ejecutable) { fprintf(stderr, "Uso del programa:\n\t%s <nombre_fichero_a_procesar>\n", ejecutable); 12/13

13 fputs(" Este programa modifica el 'fichero_a_procesar' convirtiendo", stderr); fputs("cada primera letra de cada palabra a mayusculas.", stderr); int main(int argc, char** argv) { if (argc < 2) { imprimeuso(argv[0]); if (ponmayusculas(argv[1])) { fprintf(stderr, "El fichero %s ha sido imposible de procesar\n", argv[1]); imprimeuso(argv[0]); return (EXIT_SUCCESS); ## -*- Makefile -*- CFLAGS = -g -Wall -DDEBUG #CFLAGS = -g -Wall # Enlaza todos los.o en un fichero final ejecutable a.out: principal.o ponmayusculas.o gcc $(CFLAGS) -o $@ principal.o ponmayusculas.o # Compila ficheros fuente en ficheros.o principal.o: principal.c ponmayusculas.h gcc $(CFLAGS) -c principal.c ponmayusculas.o: ponmayusculas.c ponmayusculas.h gcc $(CFLAGS) -c ponmayusculas.c #### Para limpiar el directorio de ficheros generados #### clean: rm -f a.out *.o 13/13

Taller de Sistemas Operativos Introducción

Taller de Sistemas Operativos Introducción Taller de Sistemas Operativos Introducción Escuela de Ingeniería Civil en Informática Universidad de Valparaíso, Chile http:// Conceptos generales 2 Proceso stdin Descriptor Flujo (FILE*) 0 stdout 1 Proceso

Más detalles

Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida

Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida Prueba de Laboratorio APELLIDOS: NOMBRE: GRUPO DE LABORATORIO: Indicaciones: No se permiten libros, apuntes ni teléfonos móviles. Cuando tenga una solución al ejercicio muéstrela al profesor (compilación

Más detalles

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org>

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org> El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por

Más detalles

PRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato

PRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato Contenido Introducción...1 Dato...1 Valor...1 Tipo de Dato...2 Tipo Abstracto

Más detalles

Programación en C. (Segunda Parte) DATSI, FI, UPM José M. Peña. jmpena@fi.upm.es. Programación en C

Programación en C. (Segunda Parte) DATSI, FI, UPM José M. Peña. jmpena@fi.upm.es. Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña jmpena@fi.upm.es 1 Índice Estructura de un programa C. Variables básicas. Operaciones aritméticas. Sentencias de control. Arrays y Strings. Funciones. Estructuras

Más detalles

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

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática Tema 7 Fundamentos de Informática Índice 1. Qué es un vector? 2. Vectores unidimensionales 3. Cadenas de caracteres 4. Paso de vectores unidimensionales a funciones. 5. Vectores multidimensionales: matrices

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

Esquema de un programa en C: bloques básicos

Esquema de un programa en C: bloques básicos Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,

Más detalles

Uso avanzado de punteros

Uso avanzado de punteros Uso avanzado de punteros Mario Medina C. mariomedina@udec.cl Punteros Contienen direcciones de memoria Punteros a tipos de datos simples int, char, float, double Punteros a estructuras Punteros a vectores

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 11 Nombre: Manejo de archivos Contextualización En los lenguajes de programación estructurada como C, que carecían de una conexión a base

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

EDITRAN/TR. Windows/Unix. Manual de referencia

EDITRAN/TR. Windows/Unix. Manual de referencia EDITRAN/TR Windows/Unix Manual de referencia INDRA 30 de octubre de 2014 ÍNDICE 1. INTRODUCCIÓN.... 1-1 2. INTERFAZ DE PROGRAMACIÓN.... 2-1 2.1. DESCRIPCION... 2-1 2.2. FUNCIONES DE ENVIO Y RECEPCION...

Más detalles

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

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria. Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea

Más detalles

Modelos de Computación I. Ingeniería Informática

Modelos de Computación I. Ingeniería Informática Prácticas Pag. 1 Modelos de Computación I Ingeniería Informática Práctica 1 Lex como localizador de expresiones regulares con acciones asociadas Curso 2008-2009 Profesores: Carlos J. Mantas Ruiz Aida Jiménez

Más detalles

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

Sistemas Operativos: Programación de Sistemas. Curso 2006-07. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Tema 2 : entorno programación linux Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Francisco J. Santana 1 Programación

Más detalles

FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.

FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura. FICHEROS El sistema de archivos de C está diseñado para secuencias que son independientes del dispositivo. Existen dos tipos se secuencias: de texto que es una ristra de caracteres organizados en líneas

Más detalles

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

Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL Clase No. 5: Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL MAT 251 Dr. Alonso Ramírez Manzanares CIMAT, A.C. e-mail: alram@ cimat.mx

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

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Directivas del procesador Main() { Declaraciones Definiciones proposiciones }

Más detalles

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

TEMA 3: EL LENGUAJE C: PRESENTACIÓN TEMA 3: EL LENGUAJE C: PRESENTACIÓN Historia del lenguaje C Características del lenguaje C Estructura de un programa en C El editor de textos: elementos Funciones: de usuario y de librería Librerías de

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

Introducción a C++ y Code::Blocks

Introducción a C++ y Code::Blocks Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete

Más detalles

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1. Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1. Anjuta es un entorno de desarrollo de C que podemos encontrar en cualquier distribución de GNU/Linux. Si nuestra distribución no dispone de ella,

Más detalles

Arquitectura de Computadores: Exámenes y Controles

Arquitectura de Computadores: Exámenes y Controles 2º curso / 2º cuatr. Grado en Ing. Informática Doble Grado en Ing. Informática y Matemáticas Arquitectura de Computadores: Exámenes y Controles Examen de Prácticas AC 05/07/2013 resuelto Material elaborado

Más detalles

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

Reglas básicas de la programación en lenguaje C 0. Introducción Reglas básicas de la programación en lenguaje C ISO - SO Departament d'arquitectura de Computadors Universitat Politècnica de Catalunya C es un lenguaje de programación de propósito general.

Más detalles

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

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

Generador de analizadores sintácticos BISON

Generador de analizadores sintácticos BISON Generador de analizadores sintácticos BISON PROCESADORES DE LENGUAJES 4 o Informática http://ccia.ei.uvigo.es/docencia/pl noviembre-2008 2008 ccia PL 1. Introducción Traduce la especificación de una gramática

Más detalles

1. Cuestiones. Ejercicios resueltos de C. Diego Rodríguez-Losada 1. //a) #include <stdio.h> main( ) { int x = 0, y = 0; //b) #include <stdio.

1. Cuestiones. Ejercicios resueltos de C. Diego Rodríguez-Losada 1. //a) #include <stdio.h> main( ) { int x = 0, y = 0; //b) #include <stdio. 1. Cuestiones Enunciado Febrero 04. Ejercicio Tercero. (2 puntos 30 minutos) Resolver los siguientes problemas indicando, en la parte inferior, cual es el resultado de cada programa. En caso de que el

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

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

Preliminares. Tipos de variables y Expresiones

Preliminares. Tipos de variables y Expresiones Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación Avanzada en C

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación Avanzada en C Rutinas de conversión. De enteros a caracteres. Ltoa. Long to Ascii. Pasar de un número en representación interna a una secuencia de caracteres, permite desplegar en la salida los valores de las variables

Más detalles

Lenguaje C Preprocesador, Compilación y Enlazado.

Lenguaje C Preprocesador, Compilación y Enlazado. Lenguaje C Preprocesador, Compilación y Enlazado. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Directivas de Compilación Las directivas

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

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

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

Se guardan en archivos con extencion c y los cabezales con extension h Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767

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

Problemas de Redes de Computadores. Conjunto de problemas 1

Problemas de Redes de Computadores. Conjunto de problemas 1 Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde la dirección IP 130.206.1.1,

Más detalles

#include <stdio.h> /* Factorial de un número - versión 1- */

#include <stdio.h> /* Factorial de un número - versión 1- */ Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos desde teclado. Primera versión: /* Factorial de un número - versión 1- */ long int factorial (int x) /*definición de función*/ int

Más detalles

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

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos Contenido Introducción...1 Objeto...2 Atributo...2 Métodos...2 Clase...3

Más detalles

Instituto Politécnico Nacional

Instituto Politécnico Nacional Instituto Politécnico Nacional Secretaria Académica Dirección de Estudios Profesionales Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Culhuacan Ingeniería en Comunicaciones y Electrónica Academia

Más detalles

Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1

Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Preguntas cortas Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde

Más detalles

El lenguaje C: Elementos básicos del lenguaje

El lenguaje C: Elementos básicos del lenguaje Facultad de Ciencias Exactas, Ingeniería y Agrimensura Departamento de Sistemas e Informática Escuela de Electrónica Informática II El lenguaje C: Elementos básicos del lenguaje Este material debe utilizarse

Más detalles

Fundamentos de programación

Fundamentos de programación Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador

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

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

Entrada y Salida de Datos. Lectura de archivos.

Entrada y Salida de Datos. Lectura de archivos. 1 Entrada y Salida de Datos. Lectura de archivos. Son innumerables los casos en los que son necesarios guardar datos entre ejecuciones de un programa para poder ser recuperados en futuras sesiones. Los

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

Formatos para prácticas de laboratorio

Formatos para prácticas de laboratorio Fecha de efectividad: CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA LSC 2003-1 5221 Lenguaje de Programación Estructurada PRÁCTICA No. 8 LABORATORIO DE NOMBRE DE LA PRÁCTICA Licenciado

Más detalles

Tema 5: Diseño modular. Índice. Notas. Programación 2. Curso 2014-2015. Notas. Ejemplo. La herramienta make. 1 Diseño modular.

Tema 5: Diseño modular. Índice. Notas. Programación 2. Curso 2014-2015. Notas. Ejemplo. La herramienta make. 1 Diseño modular. : Programación 2 Curso 2014-2015 Índice 1 2 3 (1/2) Cuando el programa crece es necesario dividirlo en módulos Cada módulo agrupa una serie de funciones con algo en común El módulo puede reutilizarse en

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

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

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 10 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante INDICE 1.1 EJERCICIO 1: MI PRIMER FICHERO EN BINARIO... 1 1.2 EJERCICIO 2: LEYENDO MI PRIMER FICHERO

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

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

Lenguajes de programación

Lenguajes de programación Lenguajes de programación Un computador solo entiende lenguaje binario Un procesador tiene un conjunto finito de operaciones binarias Un programa de computador es una secuencia de estas instrucciones Etapas

Más detalles

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

Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma: Arreglos unidimensionales y multidimensionales Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua.

Más detalles

Práctica de gsoap. int ns enviar (unsigned nodo, std::string cadena, std::string &resultado); int ns recibir(unsigned nodo, std::string &resultado);

Práctica de gsoap. int ns enviar (unsigned nodo, std::string cadena, std::string &resultado); int ns recibir(unsigned nodo, std::string &resultado); Práctica de gsoap Para desarrollar programas que utilicen gsoap para llevar a cabo las comunicaciones, debemos bajar el paquete gsoap linux 2.7.tgz disponible en: http://atc.ugr.es/pedro/docencia/irhc/irhc.html

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

Sistemas Operativos Práctica 3

Sistemas Operativos Práctica 3 Sistemas Operativos Práctica 3 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que

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

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial FUNDAMENTOS DE INFORMÁTICA º PRÁCTICA 4: Funciones y vectores CURSO 5/6 Área de Ingeniería de Sistemas y Automática ISA-UMH R-2-FI4v. FUNDAMENTOS DE INFORMÁTICA PRÁCTICA 4: Funciones y vectores curso 25-26

Más detalles

Tema 5: Herramientas de programación y diseño modular

Tema 5: Herramientas de programación y diseño modular : Herramientas de programación y diseño Programación 2 Curso 2013-2014 Índice 1 2 3 4 El proceso de compilación (1/2) La tarea de traducir un programa fuente en ejecutable se realiza en dos fases: : El

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

SOR -::- Prácticas -::- Curso 05/06. RCP es un estándar desarrollado por Sun Microsystems y usado por muchos distribuidores de sistemas UNIX.

SOR -::- Prácticas -::- Curso 05/06. RCP es un estándar desarrollado por Sun Microsystems y usado por muchos distribuidores de sistemas UNIX. RPC RCP es un estándar desarrollado por Sun Microsystems y usado por muchos distribuidores de sistemas UNIX. El RPC es una interfaz de programación de aplicación (API) disponible para el desarrollo de

Más detalles

INTRODUCCIÓN AL LENGUAJE C

INTRODUCCIÓN AL LENGUAJE C INTRODUCCIÓN AL LENGUAJE C Fundamentos de Informática EUP ULPGC Jose Torres 1 de 36 Historia de C Precursores: muchas ideas provienen de BCPL (Martin Richards, 1967) y de B (Ken Thompson, 1970) C fue diseñado

Más detalles

!! Identificar las señales que llegan a la consola.

!! Identificar las señales que llegan a la consola. Objetivos TEMA 9 Gestión de Errores y Excepciones!! Describir el mecanismo de gestión de señales en Windows API y la gestión de excepciones.!! Identificar las señales que llegan a la consola. Estudio de

Más detalles

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

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Lenguaje C Funciones Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Qué es una función o rutina/subrutina? Se presenta como un subalgoritmo

Más detalles

LENGUAJE ANSI C Guía de referencia

LENGUAJE ANSI C Guía de referencia Apéndice W2 LENGUAJE ANSI C Guía de referencia C.1. Elementos básicos de un programa El lenguaje C fue desarrollado en Bell laboratories para su uso en investigación y se caracteriza por un gran número

Más detalles

Programación. Ejercicios Tema 5. Funciones

Programación. Ejercicios Tema 5. Funciones Programación Ejercicios Tema 5 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 SOLUCIONES 1. Escriba una función

Más detalles

Programación en lenguaje C

Programación en lenguaje C 1 Introducción UNIVERSIDAD NACIONAL ANDRÉS BELLO Programación en lenguaje C Lenguaje de programación creado en 1972 por Dennis Ritchie, es la evolución del lenguaje de programación B. Linux, kernel del

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

Seminario 1. Conexión a Oracle

Seminario 1. Conexión a Oracle Seminario 1. Conexión a Oracle Laboratorio de Programación Curso 2007/2008 Fran J. Ruiz Emilio Sobreviela Diseño E/R usuario contrasena Usuarios 1:1 es id_cliente nombre 1:1 Clientes apellidos edad 1 Creación

Más detalles

Lenguaje C. Lenguaje C. Erwin Meza Vega

Lenguaje C. Lenguaje C. Erwin Meza Vega Lenguaje C Erwin Meza Vega Outline 1 Introducción 2 Tipos básicos de datos 3 Estructuras de control 4 Funciones 5 Ejemplos de funciones 6 Tipos compuestos de datos 7 Arreglos 8 Apuntadores (punteros) 9

Más detalles

1 Estructura básica de un programa C++

1 Estructura básica de un programa C++ Elementos básicos de un lenguaje de alto nivel: C++ CONTENIDOS 1. Estructura básica de un programa C++. 2. Tipos de datos simples. 3. Constantes y variables en C++. Declaración. 4. Operadores y expresiones.

Más detalles

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la

Más detalles

ESTRUCTURAS CONDICIONALES SIMPLES: ESTRUCTURAS CONDICIONALES DOBLES: ESTRUCTURAS CONDICIONALES ANIDADAS:

ESTRUCTURAS CONDICIONALES SIMPLES: ESTRUCTURAS CONDICIONALES DOBLES: ESTRUCTURAS CONDICIONALES ANIDADAS: ESTRUCTURAS CONDICIONALES SIMPLES: Si (Condición) entonces if (Condición) { ESTRUCTURAS CONDICIONALES DOBLES: Si (Condición) entonces if (Condición) { { ESTRUCTURAS CONDICIONALES ANIDADAS: Si (Condición1)

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

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

Lenguaje C Bucles, Condicionales, operadores y Algoritmos.

Lenguaje C Bucles, Condicionales, operadores y Algoritmos. Lenguaje C Bucles, Condicionales, operadores y Algoritmos. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Operadores Los operadores son aquellos

Más detalles

Introducción al tipo de dato ARRAY

Introducción al tipo de dato ARRAY CONTENIDOS. Introducción al tipo de dato ARRAY. Definición, Características, Declaración, Acceso e Inicialización.. Arrays multidimensionales Definición, Declaración, Acceso e Inicialización. Introducción

Más detalles

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

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 TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 1.1 VECTORES O ARRAYS UNIDIMENSIONALES 2 1.2 ARRAYS MULTIDIMENSIONALES 3 1.3 INICIALIZACIÓN DE ARRAYS 4 1.3.1 INICIALIZACIÓN DE ARRAYS SIN

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

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

Práctica 0 Introducción a la programación en C

Práctica 0 Introducción a la programación en C DEPARTAMENTO DE AUTOMÁTICA ARQUITECTURA Y TECNOLOGÍA DE COMPUTADORES OBJETIVO Grado en Ingeniería de Computadores COMPUTACIÓN DE ALTAS PRESTACIONES Práctica 0 Introducción a la programación en C Se pretende

Más detalles

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES CADENAS DE CARACTERES Arrays unidimensionales de caracteres \0 es el carácter nulo Toda cadena debe acabar en \0 Lo que hay después de \0 en el array no se considera parte de la cadena Las cadenas constantes

Más detalles

PROGRAMACION / Clave: 11214

PROGRAMACION / Clave: 11214 PRACTICA 10. Programas en DevC++ 1.- Programa que imprima las tablas de multiplicar del 1 al 10, se deberá hacer una pausa entre tabla y tabla de multiplicar. 2.- Programa que se repita N cantidad de veces

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

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

Metodología y Tecnología de la Programación Tema 4. Abstracción procedimental y de datos 1. Cuál es el error del siguiente programa? import java.util.scanner; class Respuesta{ static Scanner leer=new Scanner(System.in); int valor = lectura(); System.out.println(valor);

Más detalles

Estructuras de Repetición (Hacer-Mientras)

Estructuras de Repetición (Hacer-Mientras) Estructuras de Repetición (Hacer-Mientras) Material Original: Prof. Flor Narciso Modificaciones: Prof. Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería

Más detalles

Hoja de problemas Estructuras de Control

Hoja de problemas Estructuras de Control Departamento de Estadística, I.O. y Computación Ingeniería Técnica Industrial - Electrónica Industrial Fundamentos de Informática Hoja de problemas Estructuras de Control 1. Cuál es el efecto de las siguientes

Más detalles

//Esta función es llamada cuando se produce un evento //de teclado void keycallback (void *userdata, SoEventCallback *eventoteclado) {

//Esta función es llamada cuando se produce un evento //de teclado void keycallback (void *userdata, SoEventCallback *eventoteclado) { Solución 4: /******************************************************** * * Este programa permite visualizar ficheros iv (vrml) * ********************************************************/ //Según el sistema

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

Estructuras de control

Estructuras de control Estructuras de control Programación estructurada Estructuras condicionales La sentencia if La cláusula else Encadenamiento y anidamiento El operador condicional?: La sentencia switch Estructuras repetitivas/iterativas

Más detalles

Introducción a la programación en C

Introducción a la programación en C AULA POLITÈCNICA / ETSETB Marco A. Peña Basurto José M. Cela Espín Introducción a la programación en C EDICIONS UPC Primera edición: septiembre de 2000 Diseño de la cubierta: Manuel Andreu Los autores,

Más detalles

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Lenguaje C. Tipos de Datos Simples y Estructuras de Control Lenguaje C Tipos de Datos Simples y Estructuras de Control Lenguaje C C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje

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

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras ARCHIVOS 1. Introducción 2. Definición de archivo 3. Archivos de acceso secuencial 3.1. fopen 3.2. fclose 3.3. fcloseall 3.4. putc 3.5. getc 3.6. fscanf 3.7. fprintf 4. Gestión de un archivo secuencial

Más detalles

Una introducción al compilador C de GNU

Una introducción al compilador C de GNU Una introducción al compilador C de GNU Héctor Adrián Valdecantos Departamento de Ciencias de Computación Facultad de Ciencias Exactas y Tecnología - UNT Materia: Programación Carrera: Programador Universitario

Más detalles

PROGRAMACIÓN N C++ CONSTRUCTORES PROG.C++ L11 CONSTRUCTORES DEL LENGUAJE

PROGRAMACIÓN N C++ CONSTRUCTORES PROG.C++ L11 CONSTRUCTORES DEL LENGUAJE L11 CONSTRUCTORES DEL LENGUAJE CLASES class { } PLANTILLAS template { } ESPACIOS DE NOMBRES namespace { } EXCEPCIONES try catch.. SOBRECARGA DE OPERADORES operator (parametros) BIBLIOTECA

Más detalles