Práctica 0: Repaso de C básico

Documentos relacionados
Elementos de un programa en C

Práctica 0: Programación básica en C

El lenguaje C. 1. Identificadores, constantes y variables

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

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

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

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

Tema 2. El lenguaje JAVA

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

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

Práctica 0: Programación básica en C

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

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Cursada Segundo Cuatrimestre 2012 Guía de Trabajos Prácticos Nro. 1

Ficha de Aprendizaje N 13

Datos y tipos de datos

LENGUAJE. Tema 2 Elementos de un programa

Algoritmos y Programación I

Definición de Memoria

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

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

Práctica de constantes, expresiones y operadores. Programación en C 1

Programación Estructurada

6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores.

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

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

TEMA 4. ESTRUCTURAS DE CONTROL

4. Operadores Operador asignación

Operadores. Javier Fernández Rivera -

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Principios de Computadoras II

Estructuras de Repetición (Hacer-Mientras)

Estructuras de Repetición (Repita para)

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Las plantillas permiten definir funciones genéricas.

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

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

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

Programación 1 Tema 3. Información, datos, operaciones y expresiones

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

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

Java para programadores

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

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

Conceptos de Arquitectura de Computadoras Curso 2015

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Curso de Programación Avanzada en C

OPERADORES Y EXPRESIONES

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

Hoja de ejercicios del Tema 3

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

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

1 Estructura básica de un programa C++

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

Estructuras de Decisión Simples y Dobles

Apuntadores (Punteros)

Datos y tipos de datos

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

LENGUAJE. Tema 1 - Introducción

Expresiones y sentencias

Representación de números enteros: el convenio exceso Z

Programación en java. Estructuras algorítmicas

PRÁCTICA MANEJO INTERNO DE DATOS

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

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

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

Funciones. Parámetros por valor

Práctica 3: Vectores y matrices en C.

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

Estatutos de Control C# Estatutos de Decisión (Selección)

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

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Capitulo 12. Tira de bits

Fundamentos de programación

Las clases como tipos de datos definidos por el usuario

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

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Operadores y Expresiones

Examen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos)

EJEMPLOS DE PROGRAMACIÓN DE FUNCIONES EN C: Página 1 de 5

E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R.

El lenguaje C. if (a>3) { printf("hola"); // bloque printf("%d",a); // de getch(); //código } Partes de un programa en C.

PROGRAMACIÓN EN C. PRÁCTICA 2: Operaciones con bits. Práctica 2: Índice. 2.1 Introducción 2.2 Representación de información binaria en C

Tema 4. Operadores y Expresiones

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

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 7

Programación Estructurada

Hoja de problemas Estructuras de Control

El lenguaje C: Elementos básicos del lenguaje

Guía práctica de estudio 05: Diagramas de flujo

Computación II. Introducción a Visual Basic

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

Representación de la información

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

TIPOS DE DATOS BASICOS EN LENGUAJE C

Transcripción:

Facultad de Ciencias Exactas, Ingeniería y Agrimensura Departamento de Sistemas e Informática Escuela de Electrónica Informática Aplicada Práctica 0: Repaso de C básico Contenido: Esta práctica está diseñada para que el estudiante recuerde los conceptos básicos del lenguaje C vistos en Informática. 1) Realizar un programa que declare las variables x, y, z, les asigne los valores 10, 20 y 30 e intercambie entre si sus valores de forma que el valor de x pasa a y, el de y pasa a z y el valor de z pasa a x (se pueden declarar variables auxiliares aunque se pide que se use el menor número posible). 2) Escriba un programa que lea por teclado diez números enteros distintos de cero y a continuación lea una secuencia de valores enteros indicando si están entre los diez valores leídos. Cuando se lea el valor cero, el programa finalizará. Solución: #include <stdio.h> int main() { int vleidos[10], valor; for (int i=0; i<10; i++){ scanf(" \n %d",&valor); vleidos[i]=valor; printf ("El valor leido es: %d \n",valor); while (valor!= 0){ printf ("Ingrese un valor \n"); scanf(" \n %d",&valor); for (int j=0; j<10; j++){ if (valor==vleidos[j]) printf (" Valor ocupa el lugar : %d del vector \n", j ); else continue; return 0; 3) Se ingresa por teclado la cantidad de agua caída, en milímetros día a día durante un mes. Se pide determinar el día de mayor lluvia, el de menor y el promedio 4) Escriba a) código C para calcular la traza de una matriz cuadrada de double. Se denomina traza de una matriz cuadrada a la suma de los elementos de su diagonal principal. Informática Aplicada Práctica 0 v. 2016 Pág 1 de 6

b) código C para determinar la matriz transpuesta de otra (conteniendo números de tipo double). Una matriz transpuesta de otra, es aquella que tiene los mismos elementos pero dispuestos en forma distinta. Las columnas de la matriz original se transforman en filas de la matriz transpuesta. c) código C para calcular el producto de dos matrices cuadradas de dimensión n. 5) Dada una frase en una cadena, mostrar en pantalla cada palabra que la compone: a) sin usar las funciones estándar. b) usando las funciones estándar. 6) Escriba un programa para ver las longitudes y valores máximos y mínimos en bytes de los tipos básicos de programación en C en su máquina: Solución: #include <stdio.h> #include <limits.h> #include <float.h> int main(){ char a; short int b; int c; long int d; unsigned char e; unsigned short int f; unsigned int g; unsigned long int h; float i; double j; long double k; printf ("Longitud de cada uno de los tipos basicos \n\n"); printf ("La longitud de char a= %d\n",sizeof(a)); printf ("La longitud de short int b= %d\n",sizeof(b)); printf ("La longitud de int c= %d\n",sizeof(c)); printf ("La longitud de long int d= %d\n",sizeof(d)); printf ("La longitud de unsigned char e= %d\n",sizeof(e)); printf ("La longitud de unsigned short int f= %d\n",sizeof(f)); printf ("La longitud de unsigned int g= %d\n",sizeof(g)); printf ("La longitud de unsigned long int h= %d\n",sizeof(h)); printf ("La longitud de float i= %d\n",sizeof(i)); printf ("La longitud de double j= %d\n",sizeof(j)); printf ("La longitud de long double k= %d\n",sizeof(k)); printf("\nvalores minimos y maximos de cada uno de los tipos\n\n"); printf ("Minimo y maximo de char a= %d\t\t%d\n",char_min,char_max); printf ("Minimo y maximo de short int b=%d\t\t%d\n",shrt_min,shrt_max); printf ("Minimo y maximo de int c= %d\t\t%d\n",int_min,int_max); printf ("Minimo y maximo de long int d=%d\t\t%d\n",long_min,long_max); printf ("Maximo de unsigned char e= %d\n",uchar_max); printf ("Maximo de unsigned short int f= %d\n",ushrt_max); printf ("Maximo de unsigned int g= %d\n",uint_max); printf ("Maximo de unsigned long int h= %d\n",ulong_max); printf ("Minimo y maximo de float i= %d\t\t%d\n",flt_min,flt_max); printf ("Minimo y maximo de double j= %d\t\t%d\n",dbl_min,dbl_max); printf ("Minimo y maximo de long double k=%d\t\t%d\n",ldbl_min,ldbl_max); 7) Escribir una directiva de preprocesador para realizar cada una de las siguientes tareas: a. Si la constante simbólica TRUE está definida, eliminarla y volverla a definir como 1. Informática Aplicada Práctica 0 v. 2016 Pág 2 de 6

b. Ídem pero sin usar la directiva #ifdef. c. Si la constante simbólica TRUE está definida, eliminarla y volverla a definir como 1, usar la directiva #ifdef. Ayuda para directivas del preprocesador: http://www.lpsi.eui.upm.es/weblc/tema12.pdf http://mondrian.die.udec.cl/~mmedina/clases/lenprog/2008-1/alp18-preprocesador.pdf Kernighan/Ritchie 4.11 El preprocesador de C 8) Escribir una macro de función MINIMO2 que determine el menor de dos números pasados como argumento. Escribir un programa que use una macro MINIMO3 para determinar el menor de tres valores numéricos. Dicha macro deberá utilizar la macro MINIMO2. 9) Escribir la función paridad_par que recibe un byte y retorna un byte. El byte devuelto debe ser igual al byte recibido o, igual al byte recibido con el bit más significativo modificado, de forma tal que la configuración del byte entregado contenga un número par de unos. 10) Generar una función unsigned rightrot(unsigned x,int n) que rote a derecha los últimos n bits de x. Asumir que el bit menos significativo de x, ocupa la posición cero y que n siempre asume valores positivos. Solución: unsigned rightrot(unsigned x,int n){ for(int i =0; i<n; i++){ if ((x & 1) == 0 ) //el ultimo bit es cero x = x >> 1; else { //el ultimo bit es 1 x = x >> 1; x = x 0x80; return x; int main() { x = 0xB7; xx= rightrot(x,5); return 0; 11) Generar una función unsigned setbits(unsigned x, int p) que setee ajustado a izquierda los p bits menos significativos de x. El resto de los bits deben ser cero Asumir que el bit menos significativo de x, ocupa la posición cero y que p siempre asume un valor positivo que debe ser menor o igual a 7. 12) Generar una función unsigned getbits(unsigned x,int p, int n) que retorne ajustado a derecha los n bits de x, más a la izquierda que la posición indicada por p. Asumir que el bit menos significativo de x, ocupa la posición cero 0 y que n y p siempre asumen valores positivos, por ejemplo: getbits(x,4,3) deberá retornar los 3 bits que ocupen las posiciones 4, 5 y 6 dentro de x (ver si puede sintetizar la operación en una sola instrucción). Informática Aplicada Práctica 0 v. 2016 Pág 3 de 6

13) Escriba un programa que intercambie el valor de dos enteros num1 y num2 sin utilizar variables temporales, usando el operador XOR. 14) Escriba una función que determine si existe, por lo menos un bit entre las posiciones baja y alta (con baja<=alta) con valor 1, de un número entero llamado num pasado a dicha función como puntero. Si es así dicha función debe retornar un 1, en caso contrario retornará 0. 15) Para un programa que hará uso del puerto paralelo de una PC se necesita disponer de funciones que permitan colocar a nivel lógico 1 o 0, un bit determinado dentro de un byte a ser presentado al puerto paralelo. Se pide: a) Escribir una función llamada Set(), que obedezca al siguiente prototipo: unsigned char Set(unsigned char Datos, short Linea); que reciba un byte sobre la variable datos y el número de línea que será forzada a nivel lógico 1, devolviendo el resultado de la operación. Ejemplo: Si en datos se recibe 1000 0001 y Linea = 3, se debe retornar el byte 1000 1001. b) Dar un ejemplo de invocación de la función. c) Ídem a) pero para una función llamada Clear() que coloque a nivel lógico 0 la línea indicada, y devuelva el resultado de la operación. Ejemplo: Si en Datos se recibe 0111 1100 y Linea = 3, se debe devolver el byte 0111 0100. d) Dar un ejemplo de invocación de la función. ACLARACION: La línea 0 se corresponde con el bit menos significativo (LSB) del byte, y la linea 7 con el bit más significativo (MSB) del byte. 16) Un sintetizador de una radio digital posee un generador de frecuencia controlado por el siguiente registro: AFT: Control de Sintonía Fina Automática (1 = ON, 0 = OFF). BAND: Control de selección de banda (1 = AM, 0 = FM). E, D, C, B, A: Factor de división de la frecuencia de reloj (ver tabla, FE DE ERRATAS: EN LA COLUMNA FDIV DONDE DICE 30 DEBERÍA DECIR 31 Y DONDE DICE 31 SERÍA 32). SYN: Control de activación del sintetizador (1 = ON, 0 = OFF). Informática Aplicada Práctica 0 v. 2016 Pág 4 de 6

Se pide: a) Defina un tipo enumerativo denominado "band" con los símbolos AM y FM, para representar las bandas del sintonizador. b) Escriba el código de una función denominada "get_synthesizer_divider()" que devuelva el factor de división a partir de los bits A, B, C, D y E contenidos en el byte de control. El prototipo de la función pedida es: int get_synthesizer_divider (unsigned char); c) Dar un ejemplo de invocación de la función. d) Escriba el código de una función denominada "get_band()" que reciba como parámetro el registro de control, y retorne la banda seleccionada como un tipo enumerativo "band". Dar un ejemplo de invocación. NOTA: Debe utilizarse máscaras y operadores de bits para operar con los bits del registro de datos. 17) Un microcontrolador posee el siguiente registro para el manejo de datos a través de un puerto serie que puede conectarse a una PC. RXCIE Cuando este bit es 1 indica que se ha terminado de recibir un dato por el puerto serie. TXCIE Cuando este bit es 1 indica que se ha terminado de enviar un dato por el puerto serie. UDRIE Cuando este bit es 1 habilita las interrupciones de hardware durante el envío y recepción de datos por el puerto serie. RXEN Cuando este bit es 1 habilita al puerto serie a recibir datos, si vale 0 RXCIE no tiene funcionalidad. TXEN Cuando este bit es 1 habilita al puerto serie a enviar datos, si vale 0 TXCIE no tiene funcionalidad. CHR9 Cuando este bit es 1 el dato tiene 9 bits de longitud más 1 bit de inicio y otro de fin. Cuando vale 0, la longitud del dato es de 8 bits más 1 de inicio y otro de fin. RXB8 Si CHR9 es 1, este bit contiene el noveno bit del dato a ser recibido. TXB8 Si CHR9 es 1, este bit contiene el noveno bit del dato a ser transmitido. Se pide: a) Defina un tipo enumerativo denominado bit_t con los símbolos HI y LO, para representar un bit. Defina otro tipo enumerativo denominado bool_t con los símbolos TRUE y FALSE. b) Escriba el código de una función denominada transmision_completa() que indique, a partir del contenido del byte de control (bit TXCIE), y mediante la devolución de un valor si se ha completado o no la transmisión de un símbolo por el puerto serie. El prototipo de la función pedida es: bit_t transmision_completa(unsigned char); c) Dar un ejemplo de invocación de la función. Informática Aplicada Práctica 0 v. 2016 Pág 5 de 6

18) Para un aplicativo a ejecutarse sobre una plataforma de 32 bits que contendrá una interfaz gráfica de usuario (GUI), se requiere disponer de funciones para el tratamiento de colores de los elementos gráficos de la interfaz. El color de cualquier elemento gráfico se almacenará en una variable de tipo int sin signo, de acuerdo a la convención RGB (ejemplo: un color con representación RGB = 0xFFCCAA se corresponde con 0xFF, 0xCC y 0xAA para las componentes Rojo, Verde y Azul, respectivamente). Se pide: a) Escribir una función denominada "Rojo()" que reciba como argumento el color en representación RGB sobre una variable de tipo int sin signo, y que devuelva la componente de color rojo como un char sin signo. Dar un ejemplo de invocación de la función. b) Idem a) para una función denominada "Verde()" que devuelva la componente verde. Dar un ejemplo de invocación de la función. c) Idem a) para una función denominada "Azul()" que devuelva la componente Azul. Dar un ejemplo de invocación de la función. d) Escribir una función llamada componentesrgb() que reciba como argumentos el color en notación RGB Referencias: 1. Algunos ejercicios se extrajeron de: http://materias.fi.uba.ar/7502e/material.html Informática Aplicada Práctica 0 v. 2016 Pág 6 de 6