TEMA 5: Subprogramas. Programación modular EJERCICIOS DE TRAZAS

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

PROGRAMACION ALGORITMOS Y ESTRUCTURAS DE DATOS PRACTICA N 4

PUNTEROS DOBLES EN C XIII CUIEET MASPALOMAS. Sidonio Pérez Matilla EUITI de Eibar UPV

Funciones: Pasos por Referencia Recursividad

Cadenas y Estructuras

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

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

Tema 2: La clase string

for(i = 0; i <= 45; i+=5) { x = (i*3.1416)/180; printf( seno(%d) = %f\n,i,seno(x));

Tema 2: La clase string. Índice. Notas. Programación 2. Curso Notas. Definición Declaración Entrada / salida Métodos Operaciones

TEMA 8: Gestión dinámica de memoria

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009

Funciones Propias con C++ (funciones definidas por el usuario)

Examen de Programación I

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

Estructura de datos y de la información Boletín de problemas - Tema 9

Ejercicios entrada-salida

Examen de prácticas de Programación 1

Programación 1 Tema 5. Instrucciones simples y estructuradas

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

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

Ejercicios De Programación De C++ Algoritmos. Lenguaje De Programación C++:

Cátedra I Informática Autor I Carlos Bartó

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

#include <stdio.h> float cubica(float numero) { float cubica; cubica = numero * numero * numero; return cubica; }

Tema 6: Memoria dinámica

strings i estructures de dades

Los lenguajes como C y C++ no definen una forma estandar de imprimir.

1. Qué se muestra en pantalla si se ejecutan las siguientes sentencias (suponiendo que el resto del programa que no se presenta es correcto)?

Programación. Test Autoevaluación Tema 5

PROBLEMA 1. Rellena el hueco 1 (línea 23). Realiza la reserva de memoria para almacenar los n puntos.

8. Vectores (arrays)

#include <fstream.h> ifstream descriptor ( nombre.extensión ); ofstream descriptor ( nombre.extensión );

Fundamentos de Programción (I)

Estructuras de repetición hacer-mientras y repita hasta

Programación 2. Lección 4. Metodología de diseño de algoritmos recursivos

ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Octubre 2015

Práctica 6 SMPCache: simulador de cachés para multiprocesadores simétricos. 1. Objetivos. 2. Desarrollo. 2.1 El simulador SMPCache

Programación. Test Autoevaluación Tema 5

Ejercicios aplicando estructuras de asignación.

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Fundamentos de la programación

PROGRAMACION MODULAR FUNCIONES

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

PROGRAMACIÓN ORIENTADA A OBJETOS

Unidad 2 Recursividad. 2.1 Definición 2.2 Procedimientos Recursivos 2.3 Ejemplos de Casos Recursivos

FUNDAMENTOS DE PROGRAMACIÓN. 1º ING. INFORMÁTICA (Plan 2000) 2ª Convocatoria. 21 de junio de 2001

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Introducción a Funciones

ESTRUCTURA DE DATOS: Tema 3. Recursividad

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:

Estructuras de Repetición (Hacer-Mientras)

Entrada y Salida en C++

* Operador de Indirección ( o de referencia ) ( o de desreferencia )

ESTRUCTURA DE DATOS: Tema 3. Recursividad

PROBLEMAS DEL TEMA 8: Estructuras de Datos Complejas

Cuales son los tipos de instrucciones que se utilizan en la programación?

Hoja de ejercicios del Tema 9

PARTES DE UN PROGRAMA EN C/C++

Prof. Dr. Paul Bustamante

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

Examen escrito de Programación 1

Presentación. Programación I. Conceptos Avanzados de Programación. :: Prof. Yeniffer Peña

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

Transcripción:

TEMA 5: Subprogramas. Programación modular EJERCICIOS DE TRAZAS 1.- Escribir la traza y decir que imprime por pantalla cada uno de los siguientes programas: a.- /* Ejercicio de traza 1 */ int a, b, c; void E1(); 1 a = 11; 2 b = 12; 3 c = 13; 4 E1(); cout << a << b << c; void E1() int b; 5 a = 1; 6 b = 2; 7 c = 3; a b c 1 11?? 2 11 12? 3 11 12 13 b 1 4 11 12 13? 5 1 1 12 13? 6 1 1 12 13 2 7 1 1 12 3 2 4 1 12 3

b.- /* Ejercicio de traza 2 */ int a, b; void E2(int a, int b); 1 a = 1; 2 b = 2; 3 E2(b, a); cout << a << b; void E2(int a, int b) 4 a = 10; cout << a << b; a b Pantalla 1 1? 2 1 2 a 1 b 1 3 1 1 2 2 1 4 1 11 12 10 1 10 1 3 1 2 1 2

c.- /* Ejercicio de traza 3 */ int y, z; void Cambiar(int & i, int j); 1 y = 21; 2 z = 7; 3 Cambiar(y, z); 4 Cambiar(z, y); cout << 'z=' << z << ' y=' << y; void Cambiar(int & i, int j) int k; 5 k = j; 6 i = k + j; 7 k = i; y z Pantalla 1 21? 2 21 7 i 1 /y j 1 k 1 3 21 7 21 7? 5 1 21 7 21 7 7 6 1 14 7 14 7 7 7 1 14 7 14 7 14 3 14 7 i 2 /z j 2 k 2 4 14 7 7 14? 5 2 14 7 7 14 14 6 2 14 28 28 14 14 7 2 14 28 28 14 28 4 14 28 z=28 y=14

d.- /* Ejercicio de traza 4 */ int x; void Calculo(); 1 x = 10; 2 Calculo(); cout << x; void Calculo() int x; 3 x = x + 7; x Pantalla 1 10 x 1 2 10? 3 1 10?+7 2 10 10

e.- /* Ejercicio de traza 5 */ int x; void Calculo(int & n); 1 x = 20; 2 Calculo(x); cout << x; void Calculo(int & n) 3 x = x + 5; 4 n = n + 3; x Pantalla 1 20 n 1 /x 2 20 20 3 1 25 25 4 1 28 28 2 28 28

f.- /* Ejercicio de traza 7 */ typedef int Vector[5]; int F(Vector vec, int n); int z; 1 Vector vec = 1,3,2,6,0; 2 z = F(vec, 3); cout << z; int F(Vector vec, int n) int s; if (n < 1) 3 s = 0; 4 n = n 1; 5 s = F(vec, n); 6 s = s + vec[n]; return s; z vec 1? (1,3,2,6,0) vec 1 /vec n 1 s 1 2? (1,3,2,6,0) (1,3,2,6,0) 3? 4 1? (1,3,2,6,0) (1,3,2,6,0) 2? vec 2 /vec 1 n 2 s 2 5 1? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 2? 4 2? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 1? vec 3 /vec 2 n 3 s 3 5 2? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 1? (1,3,2,6,0) 1? 4 3? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 1? (1,3,2,6,0) 0? vec 4 /vec 3 n 4 s 4 5 3? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 1? (1,3,2,6,0) 0? (1,3,2,6,0) 0? 3 4? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 1? (1,3,2,6,0) 0? (1,3,2,6,0) 0 0 5 3? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 1? (1,3,2,6,0) 0 0 0 6 3? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 1? (1,3,2,6,0) 0 1 5 2? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 1 1 1 6 2? (1,3,2,6,0) (1,3,2,6,0) 2? (1,3,2,6,0) 1 4 5 1? (1,3,2,6,0) (1,3,2,6,0) 2 4 4 6 1? (1,3,2,6,0) (1,3,2,6,0) 2 6 6 (1,3,2,6,0) 6

2.- Dados los siguientes programas, realiza sus trazas y di que muestran por pantalla: a.- b.- int Funcion (int y, int & x) int z; z = x + 1; x += 3; y = (z - y) * 2; return y; int x, y, z; x = 1; y = -2; z = Funcion (x, y); y = Funcion (x, z); cout << x << y << z; int Funcion (int & y, int x) int aux; x += 2; y = (x - y) * 3; return y; int x, y, z; x = 1; y = -2; z = Funcion (x, y); y = Funcion (x, z); cout << x << y << z; 3.- Dados los siguientes programas, realiza sus trazas: a.- b.- int Funcion (int y) int x, aux; if (y < 0) x = 1; aux = Funcion (y - 2); x = aux + 2 * (y - 1) + 1; int Funcion (int y) int x, aux; if (y == 0) x = 0; aux = Funcion (y - 1); x = aux + 2 * (y - 1) + 1; return x; return x; int x, y; x = 5; y = Funcion (x); int x, y; x = 3; y = Funcion (x);

4.- Realiza la traza del siguiente programa: #include <stdlib.h> int opera (int a, int b, int & d) int c = 0; if (a < b) c = opera (b, a, d); while (a > b) a -= b; c++; d = a; return c; int a = 5; int b = 16; int c, d; d = opera (a, b, c); cout << "a y b: " << a << ", " << b << endl; cout << "c y d: " << c << ", " << d << endl; 5.- Realiza la traza del siguiente programa y averigua qué se escribe en pantalla. float a; void f1(int &x, int &y) int z = x; x = (y + x) / 2 + a; y = z - y; a = a - y; int f2 (int &y, int x) int a; a = x; x = x - y / 2; y = a + y / 2; a = x; x = x + y; return a; void main() int y, z; z = 3; y = 5; a = 10; f1 (y, z); a = a + z; y = f2 (z, y); cout << y - a << " : " << z - a << endl;

6.- Realiza las trazas de los siguientes programas y di que muestran por pantalla: #include <stdlib.h> #include <stdlib.h> int f(int); ; int a, b; b = 3; a = f(b); cout << a; int f(int a) int b, c, d; if (a == 0) d = 0; if (a == 1) d = 1; b = f(a - 1); c = f(a - 2); d = b + c; return d; int const BASE = 5; int main (void); int Examen (int); int x, y; x = 10; y = Examen (x); cout << "y = " << y << endl; system("pause"); int Examen (int y) int x; if (y == 0) x = 0; x = Examen (y / BASE); x = x * 10 + y % BASE; return x; 7.- Realiza la traza del siguiente programa y di que muestra por pantalla: int x; int f(int x, int & y); int a; x = 2; int f(int x, int & y) y = y + x; x = x 1; return x; a = f(x - 1,x); cout << a << x;

8.- Realiza la traza del siguiente programa y di que muestra por pantalla: int f(int a, int b); int f(int a, int b) int r; int a; a = f(1,1); cout << a; 9.- Dado el siguiente programa: void f(int x, int & y); int f(int x, int & y) x = x + 4; y = y + 2; if(a + b == 0) r = 0; r = f(2 * a, b a 1); r = r + a; return r; int x = 1; int y = 2; f(y, x); y = y + x; cout << "x:" << x << "y:" << y; Qué valores visualizará para x e y? 10.- Dado el siguiente programa: void f(int & x, int y); int x = 1; int y = 2; f(y, x); y = y + x; cout << y; void f(int & x, int y) x = x + 3; y = y + 1; Qué visualizará? Elegir una opción: a) 3 b) 6 c) 7 d) 8

10.- Dados los siguientes programas: #include<iostream.h> #include<string> int main (void); string f (string s); string f(string s) char c; string res; if(s == "") res = ""; c = s[0]; s.erase(0,1); res = f(s); res = res + c; return res; string s = "hola"; cout << f(s); #include<iostream.h> #include<string> string f(char c, string s); ; string f(char c, string s) string s2, s3; if (s!="") s2 = s.substr(1, s.length()-1); s3 = f(c,s2); if (s[0] == c) s = s3; s = s[0] + s3; return s; string s; s = "ana"; s = f('a', s); cout << s; Realiza su traza y di que mostrarán por pantalla. erase(pos, num): Método que elimina num caracteres de un string empezando en la posición pos (inclusive). length(): Método que devuelve el número de caracteres del string. substr(ini, num): Método que devuelve un substring que empieza en la posición ini (inclusive) y contiene num caracteres. 11.- Sea el siguiente programa en C++: #include<iostream.h> int main (void); int f (int n); cout << f(1101); int f(int n) int a; int res; Realiza una traza del programa y di que mostrará por pantalla. if(n <= 1) res = n; a = f(n / 10) * 2; res = a + n % 10; return res;

12.- Sea el siguiente programa en C++: int f(int & x); Escribe qué muestra por pantalla. int x = 1; int y = 2; y = y + f(x); y = y + x; cout << y; int f(int & x) x = x + 2; return(x - 2); 13.- Sea el siguiente programa en C++: int f(int a) int b,c; int x; if (a <= 1) c = a; b = a % 2; a = a / 2; c = f(a); c = c * 10 + b; return c; x = f(5); cout << x << endl; Realiza una traza del programa y di cuál será el valor final de x.