Fundamentos de Programación (Cuestionario 1)
Fundamentos de Programación (Cuestionario 1)
Fundamentos de Programación (Cuestionario 1)
CUESTIONARIO 1
FUNDAMENTOS DE PROGRAMACION
GRUPO: 1751488
Los algoritmos deben ser precisos e indicar el orden lógico de realización de cada uno de los pasos, debe ser
definido y esto quiere decir que si se ejecuta un algoritmo varias veces se debe obtener siempre el mismo
resultado, también debe ser finito o sea debe iniciar con una acción y terminar con un resultado o solución de
un problema.
Por ejemplo:
- No ingresar un dato de nacimiento que sea mayor que la fecha actual.
- No ingresar un número negativo donde deber ir uno positivo o sin decimales;
- No ingresar un valor numérico donde solo debe ir texto;
- No ingresar un valor fuera del rango establecido;
etc.,
En casos de generar algun error, el programa tendra que enviar al usuario un mensaje indicándole esto y
dándole la oportunidad de corregir.
En los casos en que deba ingresar una clave de acceso, no se debe permitir que la ingrese más de 3 veces. En
este caso se supone que no es la persona autorizada y el programa no debe permitirle seguir "probando" y
normalmente lo cerramos sin más (luego de ponerle un cartelito en donde le indicamos de tal circunstancia).
Una vez todo haya funcionado bien en el papel, entonces ya podemos escribir el pseudocódigo siguiendo el
diagrama de flujo.
Esta prueba es para no perder tiempo escribiendo el programa y luego tener que buscar EN DONDE está el
error y como debemos corregirlo.
También sirve para optimizar un algoritmo viendo como podemos llegar a un determinado resultado con menos
pasos.
IMPORTANTE: Casi siempre pasa que NUNCA el programa va a funcionar correctamente la primera vez.
SIEMPRE deberemos hacerle ajustes y correcciones. Y eso es parte de la garantía que damos cuando
diseñamos un Sistema a medida.
NO OLVIDAR que el programa deber ser lo más intuitivo posible y tener, en algunos casos, carteles de ayuda
cuando presione la tecla programada (generalmente la F1 como cualquier programa comercial). Para salir
utilizar la tecla ESC (como en cualquier...)
Esto hace a la profesionalidad del sistema.
7. ¿Cuáles son las estructuras lógicas necesarias para construir un algoritmo, y en que consiste cada estructura?
La estructura de un algoritmo sirve para organizar a los elementos que aparecen en él.
• En pseudocódigo, todos los algoritmos tienen la misma estructura, la cual viene definida por tres secciones:
– Declaraciones: En esta sección se declaran las constantes, los tipos de datos y las variables que se usan en el
algoritmo. La sintaxis es:
[ constantes
<declaraciones_de_constantes> ]
[ tipos_de_datos
<declaraciones_de_tipos_de_datos> ]
[ variables
<declaraciones_de_variables> ]
Para resolver el problema planteado en el apartado anterior, es necesario declarar una constante y dos variables:
constantes
PI = 3.141592
variables
real area, radio
– Cuerpo: En el cuerpo se escriben todas las instrucciones del algoritmo. La sintaxis es:
inicio
<instrucción_1>
<instrucción_2>
...
<instrucción_n>
fin
Los operadores lógicos se pueden aplicar a operandos de tipo números enteros o punteros. Los operadores
lógicos interpretan los operandos de puntero como valores de números enteros sin signo. Al igual que los
operadores lógicos y relacionales en D, los operandos son verdaderos (true) si tienen un valor de número entero
distinto a cero y falsos (false) si tienen un valor de numero entero cero-
En este caso, las proposiciones simples son dos, p y q. Luego, la tabla de verdad tiene filas.
Empezando por llenar las columnas de las proposiciones simples, la tabla queda de la forma
V V
V F
F V
F F
V V F
V F V
F V F
F F V
La cuarta columna la llenamos usando el bicondicionante para las columnas uno y dos. Tenemos
V V F V
V F V F
F V F F
F F V V
Llenamos la quinta columna usando la conjunción para las columnas cuatro y tres. Tenemos
V V F V F
V F V F F
F V F F F
F F V V V
Para llenar la sexta columna usamos la conjunción para las columnas uno y tres. Tenemos
V V F V F F
V F V F F V
F V F F F F
F F V V V F
Finalmente, para llenar la séptima y última columna de la tabla, usamos la condicionante para las columnas
quinta y sexta, teniéndose que
V V F V F F V
V F V F F V V
F V F F F F V
F F V V V F F
De esta forma, vemos que para que la proposición compuesta tenga valor de verdad falso, debe cumplirse
que cada proposición simple, p y q, deben tener valor de verdad falso.
Lenguajes de bajo nivel. Se trata de lenguajes de programación que están diseñados para un hardware
específico y que por lo tanto no pueden migrar o exportarse a otros computadores. Sacan el mayor provecho
posible al sistema para el que fueron diseñados, pero no aplican para ningún otro.
Lenguajes de alto nivel. Se trata de lenguajes de programación que aspiran a ser un lenguaje más universal,
por lo que pueden emplearse indistintamente de la arquitectura del hardware, es decir, en diversos tipos de
sistemas. Los hay de propósito general y de propósito específico.
Lenguajes de nivel medio. Este término no siempre es aceptado, que propone lenguajes de programación que
se ubican en un punto medio entre los dos anteriores: pues permite operaciones de alto nivel y a la vez la
gestión local de la arquitectura del sistema.
Otra forma de clasificación a menudo es la siguiente:
Lenguajes imperativos. Menos flexibles, dada la secuencialidad en que construyen sus instrucciones, estos
lenguajes programan mediante órdenes condicionales y un bloque de comandos al que retornan una vez llevada
a cabo la función.
Lenguajes funcionales. También llamados procedimentales, estos lenguajes programan mediante funciones
que son invocadas conforme a la entrada recibida, que a su vez son resultado de otras funciones
13. ¿Qué son lenguajes máquina, lenguajes ensambladores y lenguajes de alto nivel?
Consulte y presente un ejemplo básico de un programa en cada uno de ellos (lenguaje máquina, ensambladores
y alto nivel).
El lenguaje máquina es el único que entiende la computadora digital, es su "lenguaje natural". En él sólo se
pueden utilizar dos símbolos: el cero (0) y el uno (1). Por ello, al lenguaje máquina también se le denomina
lenguaje binario. La computadora sólo puede trabajar con bits, sin embargo, para el programador no resulta
fácil escribir instrucciones tales como:
10100010
11110011
00100010
00010010
Una dificultad añadida a los lenguajes binarios es el hecho de que son dependientes de la máquina (o mejor
dicho, del procesador), es decir, cada procesador utiliza un lenguaje máquina distinto (un juego de
instrucciones distinto) que está definido en su propio hardware. En consecuencia, un programa escrito para un
tipo de procesador no se podrá usar en otro equipo que utilice un procesador distinto, ya que, el programa no
será portable o transportable. Para que dicho programa pueda funcionar en una segunda computadora, habrá
que traducir todas las instrucciones escritas en el lenguaje máquina del primer equipo al lenguaje binario de la
segunda computadora.
.model small
.stack
.data
Cadena1 DB 'Hola Mundo.$'
.code
programa:
mov ax, @data
mov ds, ax
mov dx, offset Cadena1
mov ah, 9
int 21h
int 20h
end programa
15. Escriba en su respectivo orden los primeros 20 lenguajes de programación de la lista de los lenguajes más
importantes, según el ranking de la IEEE (la versión más actualizada 2018).
16. En el campo de la programación informática ¿Qué es un intérprete, y que un compilador? Escriba las ventajas y
desventajas de cada uno.
Hay dos formas de ejecutar programas escritos en un lenguaje de alto nivel. El más común es compilar el
programa y el otro método es pasar el programa a través de un intérprete. Tanto el intérprete como el
compilador tienen como finalidad traducir las instrucciones recibidas a un lenguaje que el equipo pueda
entender.
Un intérprete traduce instrucciones de alto nivel en una forma intermedia para ser ejecutado. En contraste, un
compilador, traduce instrucciones de alto nivel directamente en lenguaje de máquina.
El intérprete traduce un programa línea a línea mientras que el compilador traduce el programa entero y luego
lo ejecuta.
El intérprete detecta si el programa tiene errores y permite su depuración durante el proceso de ejecución,
mientras que el compilador espera hasta terminar la compilación de todo el programa para generar un informe
de errores.
Un programa compilado es más seguro que uno interpretado, porque no contiene el código fuente, que puede
ser modificado incorrectamente por el usuario.
Ambos, intérpretes y compiladores están disponibles en la mayoría de los lenguajes de alto nivel.
La principal diferencia entre un lenguaje compilado y uno interpretado es que el lenguaje compilado requiere
un paso adicional antes de ser ejecutado, la compilación, que convierte el código que escribes a lenguaje de
máquina. Un lenguaje interpretado, por otro lado, es convertido a lenguaje de máquina a medida que es
ejecutado.
Ejemplos de lenguajes compilados incluyen C, C++, Java, Go y Rust, entre muchos otros. Ejemplos de
lenguajes interpretados incluyen Ruby, Python y JavaScript, entre muchos otros. A todos estos lenguajes se les
conoce como lenguajes de alto nivel.
En general, el ciclo de desarrollo (el tiempo entre el momento en que escribes el código y lo pruebas) es más
rápido en un lenguaje interpretado. Eso se debe a que en lenguajes compilados es necesario realizar el proceso
de compilación cada vez que cambias el código fuente, aunque con herramientas adicionales se puede
automatizar.
Otra desventaja de un lenguaje compilado es que cuando compilas un programa debes crear ejecutables para
cada uno de los sistemas operativos en los que lo vayas a utilizar. Un ejecutable creado para Linux no va a
servir en Windows por ejemplo.
Sin embargo, un lenguaje compilado es mucho más rápido que uno interpretado. Esto se debe a que cuando es
ejecutado ya se encuentra en código de máquina y eso también le permite hacer algunas optimizaciones que no
son posibles con un lenguaje interpretado.
Además de la velocidad, otra desventaja de un lenguaje interpretado es que, para ser ejecutado, debes tener
instalado el interpretador. Esto no es necesario en un lenguaje compilado que es convertido a lenguaje de
máquina1.
En general, un lenguaje compilado está optimizado para el momento de la ejecución, aunque esto signifique
una carga adicional para el programador. Por otro lado, un lenguaje interpretado está optimizado para hacerle la
vida más fácil al programador, aunque eso signifique una carga adicional para la máquina.
17. Consulte y presente 10 diferentes lenguajes de programación con un poco de su historia y sus características
principales.
•SQL: son las siglas de Structured Query Language (Lenguaje Estructurado de Consulta). Su función principal
es actuar sobre una base de datos y extraer su contenido para almacenar, introducir, actualizar, eliminar y
consultar información. Suele ser usado en la construcción de páginas web y aplicaciones de escritorio.
• PHP: es un acrónimo recursivo que significa PHP Hypertext Pre-processor. Es utilizado para el desarrollo de
sitios online, ya que es posible combinarlo con HTML. Es un lenguaje de lado del servidor, es decir, que
primero se ejecuta en éste y posteriormente regeresa al navegador del usuario como resultado una página web.
• C: lenguaje orientado principalmente a los sistemas operativos. Se puede crear un software para sistemas
operativos como Windows o Linux, también es muy usado en robótica para crear simuladores o para
experimentos informáticos, físicos, matemáticos, etc.
• Java: es uno de los lenguajes favoritos ya que permite construir programas que gestionan la memoria del
dispositivo donde reside la aplicación, como por ejemplo herramientas, juegos y apps. Es utilizado en
dispositivos móviles, aparatos de televisión y computadores personales. Suele ser asociado a Java Script, que es
otro tipo de lenguaje para crear pequeños programas encargados de realizar acciones dentro de páginas webs,
como por ejemplo crear efectos especiales o para definir la interactividad con los usuarios.
•Python: es uno de los lenguajes que muchos desarrolladores adoran y muchos otros adoran odiar. Es un
lenguaje muy similar a un script, que tiene la gran ventaja de ser bastante compacto y en general, rápido de
escribir. Con eso viene la desventaja de ser un lenguaje interpretado, con todos los problemas de seguridad y
rendimiento potencial que conlleva. Muchas empresas ven la velocidad (y la ubicuidad) como razones para
superar las preocupaciones de seguridad, y hay marcos muy sólidos que se ocupan de muchos problemas.
Dado que Python no es tan complejo como algunos de los lenguajes de programación "superiores",
generalmente puede ser competente con una menor inversión de tiempo. Es una inversión que puede dar
grandes dividendos a la hora de buscar el próximo desarrollo.
•Visual Basic .NET: te da la posibilidad de automatizar sus propios procesos y crear sus propias aplicaciones
web.
Es uno de los lenguajes más amigables para los principiantes de programación, sobre todo a comparación de
C#.
•Assembly Language : se trata de un lenguaje de programación de bajo nivel utilizado para interactuar con
hardware informático.
•Javascript: si confía en que nunca se le pedirá que escriba una aplicación basada en la Web, entonces puede
ignorar Javascript de forma segura. Si existe la posibilidad de que una aplicación web (o, para ser honestos, una
aplicación móvil) esté en su futuro, entonces tomarse el tiempo para aprender Javascript podría ser una
inversión muy inteligente.
Javascript no es el tipo de lenguaje que utilizará para la programación del sistema o para escribir aplicaciones
de análisis de dinámica de fluidos en una supercomputadora, pero es increíblemente popular y útil para lo que
hace para agregar peso e interactividad al HTML. Es un lenguaje que no muestra ningún signo de
desvanecimiento en la próxima media década.
•C++: Cuando llega el momento de la programación del sistema o aplicaciones avanzadas de cualquier tipo,
C++ sigue siendo el lenguaje que con más frecuencia se necesita para el trabajo. Este lenguaje que surgió de un
preprocesador orientado a objetos para C, ha existido por más de 30 años y tiene la distinción de ser un idioma
heredado y un idioma que todavía se enseña en una enorme cantidad de programas de informática en todo el
mundo.
No es tan fácil de aprender como algunos de los lenguajes de scripting en la lista, pero hay poco que no puedas
hacer con eso. Si la programación empresarial "seria" está en su lista de carrera, entonces C++ realmente debe
estar en su lista de lenguages para aprender.
•Swift: es el lenguaje de programación de Apple para iOS y OSX, un lenguaje que recientemente (en la versión
2.2) ha convertido en código abierto. Ahora hay versiones de Swift disponibles para plataformas Linux y
Microsoft, e IBM ha puesto Swift disponible en su Swift Sandbox.
Swift surgió de Objective-C, lo que significa que si has pasado algún tiempo en cualquiera de las variantes del
lenguaje C, deberías poder elegir Swift bastante rápido. Incluso si no eres fanático de Apple, el soporte de IBM
debería hacer que Swift se utilice en más y más entornos empresariales. Tener a Swift en su cartera debería ser
una de esas cosas que rinde frutos en los años venideros.
Es posible que un mismo IDE pueda funcionar con varios lenguajes de programación. Este es el caso de
Eclipse, al que mediante plugins se le puede añadir soporte de lenguajes adicionales.
19. ¿Qué es Arduino?
Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de
desarrollo (software), diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.
Arduino se puede utilizar para crear elementos autónomos, conectándose a dispositivos e interactuar tanto con
el hardware como con el software. Nos sirve tanto para controlar un elemento, pongamos por ejemplo un motor
que nos suba o baje una persiana basada en la luz existente es una habitación, gracias a un sensor de luz
conectado al Arduino, o bien para leer la información de una fuente, como puede ser un teclado o una página
web, y convertir la información en una acción como puede ser encender una luz y escribir por un display lo
tecleado.
Con Arduino es posible automatizar cualquier cosa para hacer agentes autónomos (si queréis podemos
llamarles Robots). Para controlar luces y dispositivos, o cualquier otra cosa que se pueda imaginar, es posible
optar por una solución basada en Arduino, especialmente en desarrollos de dispositivos conectados a Internet.
Un jardín automatizado
Recoge datos y se encarga de regar las plantas de nuestro huerto urbano de manera automática. Con
este proyecto, si tienes la información adecuada, mantener un huerto es cuestión de menos dedicación.
Un reloj de madera digital
Una placa controladora Arduino o compatible, madera y hasta 85 LEDs. Es la base para construir tu
propio reloj digital en madera. De tu maña con el bricolaje dependerá el mejor o peor acabado del
proyecto.
Brazo robótico
Si te alucina el vídeo tanto como a nosotros, te animamos a realizar este proyecto en el que un brazo
robótico es capaz de, tras coger un objeto con unas pinzas, no chocar contra obstáculos gracias a un
sensor de ultrasonidos.
22. Escriba un proyecto personal que a usted le gustaría realizar con la plataforma Arduino.
Como persona sin automóvil, no necesito llevar llaves a todas partes. Debido a esto, me han excluido de mi
propia casa varias veces. Es una pena esperar a alguien con una llave, así que pensé que haría algo al respecto.
Este proyecto es mi forma de resolver este problema, mientras tengo la oportunidad de interactuar con
un impresionante escáner de huellas digitales (también conocido como: FPS).