You are on page 1of 13

Instituto de Formación Técnica Superior N° 18

Mansilla 3643 (C1425BBW), Ciudad Autónoma de Buenos Aires
Técnico Superior en Análisis de Sistemas
Guía N°0
Asignatura:
Paradigmas de Programación
Autor:
Leandro E. Colombo Viña
última modificación:
21 de agosto de 2013
Resumen
Este apunte es una guía de auto estudio de algunos conceptos básicos sobre el
Lenguaje de Programación C que son interesantes que los alumnos dominen.
La realización de la presente guía no es de caracter obligatoria pero sí es reco-
mendable. Aborda conceptos básicos que se vieron en asignaturas anteriores y
también otros nuevos que se pueden encontrar rápidamente en Internet y en la
bibliografía sugerida de la materia.
La intención del presente trabajo es fortalecer los conocimientos que el
alumno necesita para abordar la materia de mejor manera. Y así sentirse más
confiado con los saberes y por ende rendir mejor en la misma.
Índice general
1. Preguntas 2
1.1. Sobre el Lenguaje C y su entorno . . . . . . . . . . . . . . . . . . 2
2. Ejercicios 5
2.1. Entendiendo el código . . . . . . . . . . . . . . . . . . . . . . . . 5
1
Capítulo 1
Preguntas
1.1. Sobre el Lenguaje C y su entorno
1. Si quiero darle a alguien un programa que escribí, ¿qué archivos debo
darle?
2. Después de haber creado un archivo ejecutable, ¿necesito guargar el ar-
chivo fuente (.C) y el archivo objeto (.o ó .Obj)?
3. Si mi compilador viene con un editor, ¿tengo que usarlo?
4. ¿Puedo ignorar los mensajes de advertencia?
5. ¿Qué hace el compilador?
6. ¿Cuáles son los pasos en el ciclo de desarrollo de programa?
7. ¿Qué extensión se debe usar para los archivos fuente del C?
8. Si se ejecuta un programa que se ha compilado y no funciona como espe-
raba, ¿qué se debe hacer?
9. ¿Qué es lenguaje de máquina?
10. ¿Qué hace el enlazador?
11. ¿Qué efecto tienen los comentarios en un programa?
12. ¿Cuál es la diferencia entre un enunciado y un bloque?
13. ¿Cómo se llama a un grupo de uno o más enunciados del C encerrados
entre llaves?
14. ¿Cuál es el único componente obligatorio de todo programa en C?
15. ¿Cómo se añaden comentarios al programa y para qué se usan?
16. ¿Qué es una función?
17. El lenguaje C proporciona dos tipos de funciones. ¿Qué son y cómo se
diferencian?
2
18. ¿Para qué se usa la directiva #include?
19. ¿Se pueden anidar los comentarios?
20. ¿Los comentarios pueden ser más grandes que una línea?
21. ¿Qué es un archivo de inclusión o de cabecera?
22. ¿Qué pasa si asigno un número con decimal a una variable entera?
23. ¿Qué pasa si pongo un número muy grande como para guardarlo en la
variable asignada?
24. ¿Qué pasa si pongo un número negativo en una variable sin signo?
25. ¿Con qué caracteres podemos asignar nombres a las variables?
26. ¿Cuál es la diferencia entre una constante simbólica y una literal?
27. ¿Qué efecto tienen los espacios y las líneas en blanco en la ejecución del
programa?
28. ¿Cuál es la diferencia entre operadores unarios y binarios?
29. ¿Qué es una expresión?
30. En una expresión que tiene varios operadores, ¿qué determina el orden en
que se ejecutan las operaciones?
31. Si la variable x tiene el valor de 10, ¿cuáles son los valores de x y de
a después de cada uno de los siguientes enunciados si se los ejecuta por
separado?
a) a = x++;
b) a = ++x;
32. ¿Cuál es el resultado de la expresión 10 %3?
33. ¿Cuál es el resultado de la expresión 5 + 3 * 8 / 2?
34. Reescriba la expresión anterior utilizando paréntesis de manera tal que dé
como resultado 32.
35. Si una expresión evalúa falso, ¿qué valor numérico tiene esa expresión?
36. ¿Qué operador tiene mayor precedencia?
a) == o <
b) * o +
c) != o ==
d) >= o >
37. ¿Tiene que ser la función main() la primer función escrita en el código
fuente?
38. ¿Está usando lo que se conoce como programación estructurada cuando
escribe sus programas en C?
3
39. ¿Cuál debe ser la primera línea de una definición de función qué informa-
ción contiene?
40. ¿Qué tantos valores puede regresar una función?
41. Si una función no regresa un valor, ¿con qué tipo debe ser declarada?
42. ¿Cuál es la diferencia entre una definición de función y un prototipo de
función?
43. ¿Qué es una variable local?
44. ¿Cómo sé que enunciado de control de programa debo usar, el for, el
while o el do-while?
45. ¿A qué tanta profundidad puedo anidar mis ciclos?
46. ¿Puedo anidar diferentes comandos de ciclos?
47. ¿Cuál es el valor del índice del primer elemento de un arreglo?
48. ¿Cuál es la diferencia entre un enunciado for y un enunciado while?
49. ¿Cuál es la diferencia entre un enunciado while y un enunciado do-while?
50. ¿Es cierto que un enunciado while puede ser usado y obtener los mismos
resultados que al codificar con un enunciado for?
51. ¿Puede un enunciado while anidarse en un enunciado do-while?
52. ¿Por qué debo usar puts() si printf() puede hacer lo mismo y más?
53. ¿Qué pasa si no pongo el operador & en una variable de scanf()?
54. ¿Qué archivo de encabezado se debe incluir cuando se usa printf()?
55. ¿Qué hacen las siguiente secuencias de escape?
a) \\
b) \b
c) \n
d) \t
e) \a
56. ¿Qué especificadores de conversión se deben utilizar si se quiere imprimir
lo siguiente?
a) Una cadena.
b) Un entero decimal con signo.
c) Un número decimal de punto flotante.
57. ¿Cuál es la diferencia entre usar cada uno de los siguientes en el texto
literal de puts()?
a) b
b) \b
c) \
d) \\
4
Capítulo 2
Ejercicios
2.1. Entendiendo el código
1. Iznogud Bagdad Milyunanoches ha preparado el siguiente programa, y se
lo presenta a usted para que se lo revise. A ver si puede darle una mano.
1 include stdio.h
2 main{} /* Escribe los dias de la semana /*
3 (
4 int d
5 d := 9
6 print(Hay d dias en una semana.);
2. Indicar cuál sería la salida de cada una de las siguientes sentencias, supo-
niendo que forman parte de un programa completo:
a) printf(“Yo tenia una ovejita Lucera.");
printf ("Que de campanitas yo le he hecho un collar.\n");
b) printf(“Parate, oh Sol\n Yo te saludo!");
c) printf (“Cuan gritan\esos/nmalditos\n");
d) int num;
num = 2;
printf (" %d + %d = %d", num, num, num + num);
3. Escriba un programa que imprima su nombre.
4. Escriba un programa que escriba su nombre y dirección, utilizando tres o
más líneas.
5. Escriba un programa que convierta su edad de años a días. Por el momento,
no se preocupe de fracciones de años y de años bisiestos.
6. Realizar un programa para leer dos valores A y B, calcular su suma S e
imprimirla
7. Realizar un programa para leer dos valores A y B y si A es mayor a B
calcular su suma S en caso contrario su diferencia D = B – A; Imprimir D
ó S según corresponda .
5
8. Realizar un programa que permita ingresar dos números enteros A y B e
imprima un texto que indique si la resta del primero menos el segundo es
positiva, negativa o cero.
9. Realizar un programa que permita ingresar cinco números en cinco regis-
tros diferentes e imprimir aquellos valores mayores al primero.
10. Realizar un programa en el que se ingresen los tres lados A, B y C de un
triángulo y se imprima una leyenda indicando si es ESCALENO, ISOS-
CELES ó EQUILATERO.
11. Realizar un programa que determine el área y el perímetro de un círculo
a partir del radio.
12. Realizar un programa que permita ingresar 5 números y que al finalizar
imprima el mayor valor.
13. El siguiente programa presenta un error. Tecleelo en el editor y compílelo.
¿Qué línea genera mensaje de error? ¿Por qué? ¿Cómo se soluciona?
1 #include<stdio.h>
2 main();
3 {
4 printf("Segui buscando! ");
5 printf("Ya lo vas a encontrar...");
6 return 0;
7 }
14. Busque los errores en el siguiente código fuente:
1 #include <stdio.h>
2 main()
3 {
4 printf("Este es un programa que tiene");
5 do_it("problema");
6 return 0;
7 }
15. Busque los errores en el siguiente código fuente:
1 #include <stdio.h>
2 define B farol
3 define X 10
4 main ( )
5 {
6 int edad;
7 char nombre;
8 printf ("Introduzca su nombre.");
9 scanf ("%s", nombre);
10 printf ("Muy bien, %c, que edad tienes?\n",nombre);
11 scanf ("%f", edad);
12 xp = edad + X;
13 printf ("Eso es un %s! Por lo menos tienes %d.\n", B, xp);
14 }
6
16. Busque los errores en el siguiente código fuente:
1 #include <stdio.h>
2 main ( )
3 {
4 int i = 1,
5 float n;
6 printf ("Ojo, que va una lista de fracciones! \n")
7 while (i < 30)
8 n = 1 / i;
9 printf (" %f", n);
10 printf ("Eso es todo, amigos!\n");
11 }
17. ¿Qué hace el siguiente programa?
1 #include<stdio.h>
2 int x,y;main(){ printf(
3 "\nIngrese dos numeros");scanf(
4 "%d%d", &x&y); printf(
5 "\n\n%d es mas grande", (x>y)?x:y); return 0;}
18. Cambie la línea que contiene el printf() por la siguiente: printf (“ %c",
1 ); ¿Qué sucede y por qué?
19. Escriba el programa más pequeño posible.
20. ¿Qué tipo de variable sería más adecuado para guardar los siguientes va-
lores?
a) La edad de una persona redondeada a años.
b) El peso de una persona en gramos.
c) El radio de un círculo.
d) El salario anual.
e) El costo de algo.
f ) La calificación máxima de un exámen (Suponga siempre 100).
g) La temperatura.
h) El valor neto de una cosa.
i) La distancia a una estrella, en kilómetros.
21. Determine nombres válidos para las variables del ejercicio anterior.
22. Escriba las declaraciones para las variables nombradas del ejercicio ante-
rior.
23. ¿Cuáles de los siguientes nombres de variables son nombres válidos en C?
a) 123variable
b) x
c) anotación_total
7
d) Peso_en_#s
e) uno
f ) costo-bruto
g) RADIO
h) Radio
i) radio
j) ésta_es_una_variable_para_guardar_el_ancho_de_una_caja
24. El siguiente código no está bien escrito. Tecléelo y compílelo a ver si fun-
ciona:
1 #include<stdio.h>
2 int x,y;main(){ printf(
3 "\nIngrese dos numeros");scanf(
4 "%d%d", &x&y); printf(
5 "\n\n%d es mas grande", (x>y)?x:y); return 0;}
25. Vuelva a escribir el código del ejercicio anterior de forma que sea más
legible.
26. Modifique el siguiente programa para que en vez de listar en forma des-
cendente lo haga en forma ascendente:
1 #include <stdio.h>
2 int a, b;
3 main()
4 {
5 a = b = 5;
6 printf("\nEl valor de \"a\" = %d y el de \"b\" = %d", a, b);
7 printf("\nEl valor de \"a\" = %d y el de \"b\" = %d", a--, --b);
8 printf("\nEl valor de \"a\" = %d y el de \"b\" = %d", a--, --b);
9 printf("\nEl valor de \"a\" = %d y el de \"b\" = %d", a--, --b);
10 printf("\nEl valor de \"a\" = %d y el de \"b\" = %d", a--, --b);
11 printf("\nEl valor de \"a\" = %d y el de \"b\" = %d", a--, --b);
12 printf("\n");
13 return 0;
14 }
27. Si x = 4, y = 6 y z = 2, determine si cada uno de los siguientes enuncia-
dos evalúa verdadero o falso:
a) if (x == 4)
b) if (x != y – z)
c) if (z = 1)
d) if (y)
28. Escriba un programa que determine según la edad de la persona si es
legalmente mayor de edad (18 años) pero no un jubilado (65 años).
8
29. Componga el siguiente programa para que funcione correctamente
1 #include<stdio.h>
2 int x = 1:
3 main()
4 {
5 if(x = 1) ;
6 printf ("x es igual a 1");
7 otherwhise
8 printf ("x no es igual a 1");
9 return
10 }
30. Escriba un encabezado para una función llamada hazlo(), que tome tres
variables de tipo char y regrese un tipo float al programa que la llama.
31. Escriba un encabezado para una función llamada imprime_un_numero(),
que tome un sólo argumento del tipo int y no devuelva nada.
32. ¿Qué tipo de valores regresan las siguientes funciones?
a) int imprime_error(float num_error);
b) long lee_registro(int num_reg , int longitud);
33. Escriba una función que reciba dos números como argumentos y devuelva
el valor de su producto.
34. Escriba una función que reciba dos números como argumentos. La fun-
ción debe dividir el primer número entre el segundo. No divida cuando el
segundo número sea cero.
35. Escriba una función que llame a las dos funciones anteriormente escritas.
36. Escriba un programa que use una función para encontrar el promedio de
cinco números ingresados por el usuario.
37. Escriba una función recursiva que calcule las potencias de 2. Es decir, si
se le pasa el valor 4 a la función, ésta debe devolver el valor 16.
38. ¿Qué error tenemos en el siguiente código fuente?
1 #include<stdio.h>
2 void print_msg ( void );
3 main()
4 {
5 print_msg ("Este es un mensaje a imprimir");
6 }
7 void print_msg ( void )
8 {
9 puts ("Este es un mensaje a imprimir");
10 return 0;
11 }
9
39. ¿Qué error tenemos en la definición de la siguiente función?
1 int twice (int y);
2 {
3 return (2 * y);
4 }
40. Escriba una declaración para un arreglo que guarde 50 valores de tipo
long.
41. Escriba el enunciado que asigne el valor 123.456 al quincuagésimo elemento
del arreglo del ejercicio anterior.
42. ¿Cuál es el valor de x luego de que termina el ciclo for?
for ( x = 0 ; x <100 ; x++ );
43. ¿Cuál es el valor de contador luego de que termina el siguiente enunciado?
for ( contador = 2 ; contador <10 ; contador += 3 );
44. ¿Qué tantas X imprime lo siguiente?
for ( x = 0 ; x <10 ; x++ )
for ( y = 5 ; y >0 ; y– )
puts (“X”);
45. Escriba un enunciado for que cuente de 1 a 100 en incrementos de 3.
46. Escriba un enunciado while que cuente de 1 a 100 en incrementos de 3.
47. Escriba un enunciado do-while que cuente de 1 a 100 en incrementos de
3.
48. ¿Qué está equivocado en el siguiente fragmento de código?
1 record = 0;
2 while(record < 100)
3 {
4 printf ("\nRecord %d", record);
5 printf ("\nGetting next number...");
6 }
49. ¿Qué está equivocado en el siguiente fragmento de código? (MAXVALUE no
es el error)
for (counter = 1 ; counter <MAXVALUE ; counter++);
printf ("\nCounter = %d", counter);
50. Escriba un enunciado que imprima una nueva línea con printf() y otro
con puts().
10
51. Escriba los enunciados para obtener un valor entero e imprimirlo.
52. Modifique el programa anterior para que sólo acepte valores pares.
53. Escriba un programa que ingrese 6 valores o hasta que se teclee 99. Utilice
un arreglo para guardar los valores. Imprímalos en una lista en pantalla.
54. Modifique el programa anterior para que los valores se listen en una única
línea con tabulaciones para separar los valores.
55. Encuentre el error:
printf (“Jack said, “Peter Piper picked a peck of pickled
peppers.);
56. Encuentre el error en el siguiente código:
1 int get_1_or_2 (void)
2 {
3 int answer = 0;
4 while(answer < 1 || answer > 2)
5 {
6 printf (Enter 1 for YES, 2 for NO);
7 scanf("%f", answer);
8 }
9 }
57. Escriba un programa que reciba 10 valores y luego devuelva su suma.
58. Modifique el programa anterior para que el ingreso de valores termine
cuando se ingresa un cero y luego imprima los valores máximos y mínimos
del arreglo.
59. Escriba un programa que le permita ingresar la hora y los minutos del
día (en formato de 24hs) y devuelva cuántos minutos pasaron de la hora
00:00.
60. Escriba un programa que permita al usuario ingresar su nombre y su peso
y el programa devuelva el equivalente del peso en libras (Use un arrreglo
para el nombre).
11