FECHA PARCIAL PARTE TEÓRICA
LUNES 26 DE AGOSTO DE 2019
SE HARÁ EN DOS HORAS CÁTEDRAS:
1ºY2º ó 5ºY6º
PARTE TEÓRICA:
1. Mencione cuáles son los
componentes de un Algoritmo.
Un algoritmo manipula la información que se le
suministra para generar resultados.
Los elementos que componen un algoritmo son:
datos y
sentencias para operar sobre los
datos. Los datos se almacenan como variables
o constantes y se involucran en expresiones.
Las sentencias describen las acciones que pueden ser
ejecutadas y en general realizan asignaciones,
entradas/salidas de datos y control del flujo del algoritmo. A continuación se definen
cada uno de estos términos.
2. Explique brevemente en las
ciencias de la computación: ¿Qué es un programa?
Un lenguaje de
programación es un conjunto de símbolos
y palabras (instrucciones y sentencias) que el usuario tiene a su disposición
para elaborar un programa. Formalmente,
u n lenguaje de programación se define como un conjunto de símbolos, reglas sintácticas y
reglas semánticas que se utiliza para
controlar el comportamiento físico y lógico de un ordenador. Las reglas
sintácticas definen la estructura del lenguaje y las reglas semánticas definen
el significado de sus elementos y expresiones. Aunque muchas veces se usan los
términos 'lenguaje de programación' y 'lenguaje informático' como si fuesen
sinónimos, no es del todo correcto, ya que los lenguajes informáticos engloban
a los lenguajes de programación y a otro tipo de lenguajes, como por ejemplo
HTML que es un lenguaje de marcas. Un lenguaje de programación permite
especificar de manera precisa sobre qué datos debe trabajar un ordenador, cómo
se deben almacenar o transmitir dichos datos y qué acciones deben tomar bajo un
amplio conjunto de circunstancias
3. ¿Cómo se clasifican según la forma de ejecución los
lenguajes de programación?
3.2.1.
Lenguajes compilados
Antes de poder ejecutar un programa escrito en un
lenguaje de programación compilado es necesario invocar a un traductor
denominado compilador que se encarga de
traducir (compilar) el programa original (código fuente) al programa
equivalente escrito en lenguaje máquina o ensamblador (código objeto). Los
binarios son los programas ejecutables y los únicos necesarios para el
funcionamiento del programa.
3.2.2.
Lenguajes interpretados
Cada vez que se usa el programa debe invocarse a un traductor llamado intérprete que se
encarga de traducir (interpretar) las instrucciones del programa original
(código fuente) a código máquina según
van siendo utilizadas. Para el funcionamiento del programa siempre es necesario
disponer del código original y del
intérprete.
4. Mencione en orden las Fases en la creación y ejecución de programas en C.
Fase I: Edición
•Se crea un programa con la ayuda de un editor
•Se almacena en un fichero con extensión .c
Fase II: Preprocesamiento
•El preprocesador realiza sustituciones textuales en
el texto del programa escrito en C.
Fase III: Compilación
•El compilador lee el código C tras su
preprocesamiento.
•Si se detectan errores sintácticos, el compilador nos
informa de ello.
•Se genera el código máquina (en ficheros .o ó .obj)
Fase IV: Enlace
• El enlazador [linker] junta todos los ficheros
objeto que sean necesarios para crear el ejecutable (.exe en Windows).
Fase V: Carga
•El sistema operativo lee el fichero ejecutable de
disco y lo carga en la memoria principal del ordenador.
Fase VI: Ejecución
•Comienza la ejecución de la función main de nuestro
programa.
NOTA:
Conforme se ejecuta el programa, se hace uso de la
memoria principal para almacenaros datos con los que trabaja la aplicación.
5. En lenguaje C mencione los
Modificadores que conoce. Por ej: SHORT (Int por defecto).
Tamaño
del dato
short (int por
defecto)
long
(int por defecto)
Signo
Aplicable a los tipos char, short, int y
long
Signed (con signo)
Unsigned (sin signo)
Modo de almacenamiento
No
se suele usar
register
Auto (por defecto)
Static
Extern
PARTE PRÁCTICA:
Realizar y compilar en lenguaje C un programa que pida
tres números y detecte si se han introducido en orden creciente. Guardarlo en el Disco Auxiliar de la PC, con
su nombre y apellido. Llamar al Profesor, para que lo vea operativo. ¡Gracias!
#include
<stdio.h>
#include
<stdlib.h>
int main(void)
{
int
num1,num2,num3;
printf("Introduzca número 1:");
scanf("%d",&num1);
printf("Introduzca número 2:");
scanf("%d",&num2);
printf("Introduzca número 3:");
scanf("%d",&num3);
if
(num1<num2)
{
if (num2<num3)
{
printf("Orden creciente");
}
else
{
printf("No están introducidos en orden creciente ");
}
}
else
{
printf("No están introducidos en orden creciente ");
}
system("PAUSE");
return 0;
}
PARTE TEÓRICA:
1.
Defina qué es un Algoritmo.
Un algoritmo es una sucesión de pasos que se deben realizar para
resol ver un determinado problema.
2.
Detalle las Fases del proceso de resolución de un
problema.
El desarrollo de un proyecto software para la
resolución de un problema requiere de los siguientes pasos:
1. Definición
y análisis del problema
2. Diseño del
algoritmo
3.
Codificación del programa
4. Compilación
5. Depuración
de errores y verificación del programa
6.
Explotación, documentación y mantenimiento.
3.
Mencione y detalle los
Paradigmas de programación.
Los lenguajes de programación también pueden
clasificarse teniendo en cuenta el paradigma que siguen. Un paradigma de programación representa un
enfoque particular o filosofía para la construcción de software. Si bien puede
seleccionarse la forma pura de estos paradigmas a la hora de programar, en la
práctica es habitual que se mezclen, dando lugar a la programación
multi-paradigma. Los diferentes paradigmas de programación son:
3.3.1.
Imperativo
Este modelo de programación también se conoce con los
nombres de algorítmico, o por procedimientos.
Es el más común. Describe la programación en términos del estado del
programa y sentencias que cambian dicho estado. Los programas imperativos son
un conjunto de instrucciones que le indican al computador cómo realizar una
tarea. La implementación de hardware de la mayoría de computadores es
imperativa ya que el hardware está diseñado para ejecutar código de máquina que
es imperativo.
3.3.2.
Declarativo
También se denomina a este paradigma predicativo. Se
basa en el uso de predicados lógicos (lógico) o funciones matemáticas
(funcional), su objetivo es conseguir lenguajes expresivos en los que no sea necesario especificar cómo
resolver el problema (programación convencional imperativa), sino qué problema
se desea resolver. Los intérpretes de los lenguajes declarativos tienen
incorporado un motor de inferencia genérico que resuelve los problemas a partir de su especificación.
• Lógico. El
mecanismo de inferencia genérico se basa en los procedimientos de deducción de
fórmulas válidas en un sistema axiomático.
• Funcional.
El mecanismo de inferencia genérico se
basa en la reducción de una expresión funcional a otra equivalente
simplificada.
3.3.3.
Orientado a objetos.
Se utiliza cada vez más, sobre todo en combinación con
el modelo imperativo. De hecho los lenguajes orientados a objetos permiten la
programación imperativa. Usa objetos y sus interacciones para diseñar
aplicaciones y programas. Está basado en varias técnicas, incluyendo herencia,
modularidad, polimorfismo y encapsulamiento.
4.
Mencione en orden las Fases en la
creación y ejecución de programas en C.
Fase I: Edición
•Se crea un programa con la ayuda de un editor
•Se almacena en un fichero con extensión .c
Fase II: Preprocesamiento
•El preprocesador realiza sustituciones textuales en
el texto del programa escrito en C.
Fase III: Compilación
•El compilador lee el código C tras su
preprocesamiento.
•Si se detectan errores sintácticos, el compilador nos
informa de ello.
•Se genera el código máquina (en ficheros .o ó .obj)
Fase IV: Enlace
• El enlazador [linker] junta todos los ficheros
objeto que sean necesarios para crear el ejecutable (.exe en Windows).
Fase V: Carga
•El sistema operativo lee el fichero ejecutable de
disco y lo carga en la memoria principal del ordenador.
Fase VI: Ejecución
•Comienza la ejecución de la función main de nuestro
programa.
NOTA:
Conforme se ejecuta el programa, se hace uso de la
memoria principal para almacenaros datos con los que trabaja la aplicación.
5.
En lenguaje C: Detalle la
clasificación de los tipos de datos.
Especificación de un dominio (rango de
valores) y de un conjunto válido de operaciones a los que normalmente los
traductores asocian un esquema de representación interna propio.
Clasificación de los tipos de datos
En
función de quién los define:
•Tipos de datos estándar
•Tipos de datos definidos por el usuario
En
función de su representación interna:
•Tipos de datos escalares o simples
•Tipos de datos estructurados
PARTE PRÁCTICA:
Realizar y compilar en lenguaje C un
programa que pida tres números y detecte si se han introducido en orden
decreciente. Guardarlo en el Disco Auxiliar de la PC, con su nombre y apellido.
Llamar al Profesor, para que lo vea operativo. ¡Gracias!
#include
<stdio.h>
#include
<stdlib.h>
int main(void)
{
int
num1,num2,num3;
printf("Introduzca número 1:");
scanf("%d",&num1);
printf("Introduzca número 2:");
scanf("%d",&num2);
printf("Introduzca número 3:");
scanf("%d",&num3);
if (num1>num2)
{
if (num2>num3)
{
printf("Orden decreciente");
}
else
{
printf("No están introducidos en orden decreciente ");
}
}
else
{
printf("No están introducidos en orden decreciente ");
}
system("PAUSE");
return 0;
}
PARTE TEÓRICA:
1. Mencione cómo se llama el elemento
del algoritmo que posee un valor y
que es conocido unívocamente por un determinado nombre o identificador.
Las variables llevan asociadas un determinado tipo de datos,
generalmente definido al comienzo del algoritmo, y que especifica el tipo de
valores que pueden ser almacenados en la variable.
2. Explique brevemente en las
ciencias de la computación: ¿Qué es un programa?
Implementación de un algoritmo en un lenguaje de
programación
Conjunto ordenado de instrucciones que se dan al
ordenador indicándole las operaciones o tareas que ha de realizar para resolver
un problema.
3.
¿Cómo se clasifican los lenguajes de
programación teniendo en cuenta el paradigma que siguen?
El paradigma de
programación es el estilo de programación empleado. Algunos lenguajes
soportan varios paradigmas, y otros sólo uno. Se puede decir que históricamente
han ido apareciendo para facilitar la tarea de programar según el tipo de
problema a abordar, o para facilitar el mantenimiento del software, o por otra
cuestión similar, por lo que todos corresponden a lenguajes de alto nivel (o
nivel medio), estando los lenguajes ensambladores “atados” a la arquitectura de
su procesador correspondiente. Los principales son:
- Lenguajes de programación procedural: Divide el problema en partes más
pequeñas, que serán realizadas por subprogramas (subrutinas, funciones,
procedimientos), que se llaman unas a otras para ser ejecutadas. Ejemplos:
C, Pascal.
- Lenguajes de programación orientada a objetos: Crean un sistema de clases y
objetos siguiendo el ejemplo del mundo real, en el que unos objetos
realizan acciones y se comunican con otros objetos. Ejemplos: C++,
Java.
- Lenguajes de programación funcional: La tarea se realiza evaluando
funciones, (como en Matemáticas), de manera recursiva. Ejemplo: Lisp.
- Lenguajes de programación lógica:
La tarea a realizar se expresa empleando lógica formal matemática. Ej
Prolog
4.
Mencione en orden las Fases en la
creación y ejecución de programas en C.
Fase
I: Edición
Se
crea un programa con la ayuda de un editor
Se
almacena en un fichero con extensión .c
Fase
II: Preprocesamiento
El
preprocesador realiza sustituciones textuales en el texto del programa escrito
en C.
Fase
III: Compilación
El
compilador lee el código C tras su preprocesamiento.
Si
se detectan errores sintácticos, el compilador nos informa de ello.
Se
genera el código máquina (en ficheros .o ó .obj)
Fase
IV: Enlace
El
enlazador [linker] junta todos los ficheros objeto que sean necesarios para
crear el ejecutable (.exe en Windows).
Fase
V: Carga
El
sistema operativo lee el fichero ejecutable de disco y lo carga en la memoria
principal del ordenador.
Fase
VI: Ejecución
Comienza
la ejecución de la función main de nuestro programa.
NOTA:
Conforme
se ejecuta el programa, se hace uso de la memoria principal para almacenaros datos
con los que trabaja la aplicación.
5.
En lenguaje C detalle los Tipos de datos y sus
características.
Tipos de datos básicos
Char Caracteres
Int Números enteros
Float Números en coma flotante (32 bits)
Double Números en coma flotante de doble
precisión (64 bits)
void Tipo nulo
Punteros Direcciones de memoria
PARTE PRÁCTICA:
Realizar y
compilar en lenguaje C un programa que pida una letra y detecte si es una
vocal. Guardarlo en el Disco Auxiliar de
la PC, con su nombre y apellido. Llamar al Profesor, para que lo vea operativo.
¡Gracias!
Que pida una
letra y detecte si es una vocal.
#include
<stdio.h>
#include
<stdlib.h>
int main(void)
{
char
c;
printf("Introduzca un carácter:");
scanf("%c",&c);
switch
(c)
{
case 'a':
printf ("Es
vocal
");
break;
case 'e':
printf ("Es vocal
");
break;
case 'i':
printf ("Es vocal
");
break;
case 'o':
printf ("Es vocal
");
break;
case 'u':
printf ("Es vocal
");
break;
default:
printf ("No es vocal
");
break;
}
system("PAUSE");
return 0;
}
PARTE TEÓRICA:
1.
Mencione
y explique los principales atributos de
un algoritmo.
Son que ha de ser finito, definido, preciso e
independiente de lenguaje de programación.
Que sea finito significa que debe tener un número finito de pasos así su
tiempo de realización está limitado y también el número de operaciones que
realiza. Ser definido implica que ante los mismos datos de entrada se obtienen
los mismos datos de salida. La precisión de un algoritmo se refiere a que es
necesario que se indique de una forma inequívoca el orden de realización de
cada paso.
Finalmente, la independencia del lenguaje de
programación significa que debe ser de propósito general, y no contener ningún
paso que dependa de un lenguaje particular de manera que permita su
implementación en cualquier lenguaje de programación, y por tanto, en cualquier
tipo de máquina algorítmica. El atributo de independencia es el que marca la
diferencia entre lo que es un algoritmo y lo que es programa de ordenador. Un
algoritmo siempre ha de existir ante s que el programa de ordenador. Es decir, un algoritmo
se puede codificar mediante diversos lenguajes de programación, dando
lugar a diferentes programas de ordenador.
2.
Defina
en Programación a qué llamamos Sentencias, y explique al menos dos de ellas
Son los
elementos que describen lo que debe hacer el algoritmo. Podemos decir que existen tres tipos
diferentes de sentencias:
• Sentencias de
asignación: las sentencias de asignación almacenan un valor en una variable o
constante, la operación de asignación se muestra en los algoritmos con el símbolo ‘←’ o con el símbolo ‘=’, denotando que el valor
situado a su derecha se almacena en la variable o constante situada a su
izquierda. Esta operación es destructiva, es decir, implica un movimiento de
datos hacia el elemento situado a la
izquierda, perdiéndose el valor que
pudiera tener asignado anteriormente ese
elemento .
• Sentencias de entrada/salida: la operación de
lectura o de entrada permite introducir los datos desde dispositivos externos
(teclado) o desde ficheros externos
(unidad de disco). Este método es el más adecuado si se pretende realizar un
programa que permita, cuando se codifique el algoritmo, manipular diferentes datos cada vez que se
ejecute el programa. Por otro lado, la sentencia de salida o de escritura,
permite que los resultados que se obtienen de un algoritmo puedan visualizarse
mediante algún dispositivo externo
(impresora, pantalla) o puedan almacenarse
en algún fichero externo. o en un
puerto de E/S (tarjeta de adquisición de datos).
Sentencias de control del flujo: todo algoritmo puede
ser escrito usando tres estructuras de control básicas: secuenciales,
selectivas y repetitivas o cíclicas. Las
estructuras de control secuenciales son aquellas en las que todas las
instrucciones o sentencias se ejecutan una después de la otra. Empezando por el
principio o inicio del algoritmo y terminando por su final. Las estructuras de
control selectivas, también denominadas de decisión o alternativas, se utilizan
para tomar decisiones lógicas. En este
tipo de estructuras se evalúa una expresión lógica o relacional, y en función
de su resultado se selecciona cuál de las posibles opciones se toma. Esta
estructura permite codificar bifurcaciones en el cuerpo del algoritmo así como
salidas múltiples, según los datos que tengamos en cada caso.
3.
Según la forma de ejecución los lenguajes de programación ¿Cómo se clasifican?
3.2.1.
Lenguajes compilados
Antes de poder ejecutar un programa escrito en un
lenguaje de programación compilado es necesario invocar a un traductor
denominado compilador que se encarga de
traducir (compilar) el programa original (código fuente) al programa
equivalente escrito en lenguaje máquina o ensamblador (código objeto). Los
binarios son los programas ejecutables y los únicos necesarios para el
funcionamiento del programa.
3.2.2.
Lenguajes interpretados
Cada vez que se usa el programa debe invocarse a un traductor llamado intérprete que se
encarga de traducir (interpretar) las instrucciones del programa original
(código fuente) a código máquina según
van siendo utilizadas. Para el funcionamiento del programa siempre es necesario
disponer del código original y del
intérprete.
4. En lenguaje C ¿Qué nos permiten los operadores?
Igual
que en Matemáticas, realizan una acción específica:
-Suelen
estar definidos en el núcleo del compilador(aunque también pueden estar
definidos en bibliotecas externas)
-Suelen
representarse con tokens formados por símbolos.
-Suelen
utilizar notación infija.
-Pueden
aplicarse a uno o varios operandos (argumentos).
-Suelen devolver un valor.
5. Mencione los elementos léxicos del lenguaje de programación C
(tokens)
Palabras reservadas
Identificadores
Literales
Operadores
Delimitadores
Comentarios
Apéndices
Construcción de expresiones en C
Precedencia y asociatividad de los operadores en C
Token
Componente
léxico de un lenguaje de programación
Palabra reservada
Palabra que tiene un significado
concreto en el lenguaje de programación, sin necesidad de que se lo asignemos
nosotros.
PARTE PRÁCTICA:
Realizar y compilar en lenguaje C un programa que pueda LEER UNA PALABRA
Y ESCRIBIRLA AL REVÉS.
/* fichero alreves.c */
/* Este programa lee una palabra y la escribe al revés */
#include <stdio.h>
void main (void) {
char c, palabra[21];
int i;
printf("Teclea una palabra de menos de 20 letras:
");
scanf("%s", palabra);
i=0;
while (palabra[i++]!='�')
;
printf("%s tiene %d letras.
", palabra, i-1);
printf("%s escrita al reves es: ", palabra);
while (i>0)
printf("%c", palabra[--i]);
printf("
");
}
PARTE TEÓRICA:
1.
Mencione
cómo se llama el elemento del algoritmo que
posee un valor y que es
conocido unívocamente por un determinado nombre o identificador.
a.
Las variables llevan
asociadas un determinado tipo de datos, generalmente definido al comienzo del
algoritmo, y que especifica el tipo de valores que pueden ser almacenados en la
variable
2.
Defina
en Programación a qué llamamos Expresión
a.
de variables, constantes,
valores constantes, operadores y funciones que al evaluarla en el orden
correcto tiene un valor concreto. Por
ejemplo, la fórmula anterior para el cálculo del área de un círculo es una expresión.
3.
Según
el nivel de abstracción los lenguajes de programación ¿Cómo se clasifican?
a.
Según el nivel de
abstracción los lenguajes de programación se clasifican en:
b.
3.1.1. Lenguajes de bajo nivel
c.
En este tipo se
encuentran los lenguajes máquina directamente entendible por la máquina (el ordenador), siendo sus
instrucciones cadenas binarias (de 0 y 1).
El lenguaje máquina es el
lenguaje en el que hay que expresar cualquier cosa que se desee que realice un
ordenador. Es obvio que para los humanos expresarse en estos términos es muy
complicado, y por eso este tipo de lenguaje dejó de utilizarse, a causa de su
complejidad y de la facilidad para cometer errores al utilizarlo. El lenguaje ensamblador fue el primer lenguaje de programación que
trató de sustituir al lenguaje máquina por uno mucho más parecido al de los
seres humanos. Las instrucciones en lenguaje ensamblador son instrucciones
conocidas como nemónicos: por ejemplo, para indicar que se quiere realizar una
suma se usa una instrucción llamada ADD.
d.
Para que el programa
escrito en lenguaje ensamblador pueda ejecutarse es necesario traducirlo a
lenguaje máquina mediante un programa intérprete denominado también
ensamblador (assembler).
El principal inconveniente del lenguaje ensamblador es que está muy ligado al
tipo de máquina en que se ejecuta, lo que impide su portabilidad. Además,
aunque constituye un importante paso para liberarse del código binario, se
necesitan muchas instrucciones para realizar tareas simples y exige gr andes
conocimientos sobre los componentes hardware de la máquina, por lo que
programar en ensamblador resulta aún muy complejo.
e.
3.1.2. Lenguajes de alto nivel
f.
Estos lenguajes están
diseñados para que los programadores escriban y entiendan instrucciones lo más
parecidas al lenguaje humano (normalmente el inglés), lo cual hace que se
necesite menos tiempo para aprender a programar; por ello son los más
utilizados por los programadores. Además, los lenguajes de programación de alto
nivel son independientes de la máquina y se pueden ejecutar, prácticamente sin
modificaciones en diferentes tipos de ordenadores. Como es lógico, el código
fuente escrito en un lenguaje de alto nivel debe ser traducido a código máquina
mediante un compilador o un intérprete.
4. En determinadas ocasiones, ¿Por qué nos interesa convertir el tipo de un
dato en otro tipo?
a.
Para poder operar con el
mismo
5. Mencione los elementos léxicos del lenguaje de programación C
PARTE PRÁCTICA:
Realizar y compilar en lenguaje C un
programa que pueda SUMAR LOS CINCO PRIMEROS NÚMEROS NATURALES.
/* fichero sumaInt.c */
/* Programa para calcular la suma de los enteros del 1 al 5 */
#include <stdio.h>
void main(void) {
int i=1, suma=0;
while (i<=5) { /* se ejecuta el bloque mientras i<=5 */
suma+=i; /* equivale a suma=suma+i; */
++i; /* equivale a i=i+1; */
}
printf("suma = %d
", suma);
}
Comentario: El bucle while realiza la sentencia simple
o compuesta que le sigue mientras la condición definida entre paréntesis sea
verdadera (es decir distinta de cero). El bucle while del programa anterior podía también haberse escrito en
la siguiente forma (más
compacta):
while (i<=5) /* se ejecuta el
bloque mientras i<=5 */
suma += i++; /* equivale a suma=suma+i e i=i+1; */
No hacen falta las llaves porque sólo
hay una sentencia simple detrás del while.