Академический Документы
Профессиональный Документы
Культура Документы
LENGUAJE DE PROGRMACION I
2
Taller # 1 - Conceptos Básicos
1) Programación de computadores.
¿Qué es la programación de computadores?
¿Definición de cada uno de los pasos llevados a cabo para escribir una aplicación
o programa?
4) Lenguaje C:
¿Definición?
¿Historia?
¿Características?
5) Cuadro comparativo entre C y C++
3
SOLUCION
1) Programación de computadores.
1.1 ¿Qué es la programación de computadores?
Programación de computadoras es un proceso de componer y organizar un conjunto
de instrucciones. Éstas le indican a una computadora/software qué hacer en un
lenguaje comprensible para la computadora. Estas instrucciones pueden
presentarse en diferentes lenguajes, tales como C++, Java, JavaScript, HTML,
Python, Ruby y Rust.
La programación informática es el proceso por medio del cual se diseña, codifica, limpia y
protege el código fuente de programas computacionales. El objetivo de la programación es
la de crear software, que después será ejecutado de manera directa por el hardware de la
computadora, o a través de otro programa.
1.2 ¿Definición de cada uno de los pasos llevados a cabo para escribir una
aplicación o programa?
b) Hemos de ser conscientes de que si no tenemos fundamentos básicos para llevar un coche
(programa) seguramente tendremos una avería (el programa no funcionará) dando lugar no sólo a
que no alcancemos el objetivo, sino, lo que puede ser más frustrante, a no tener ni idea de lo que
está pasando. Por ejemplo, si no sabemos lo que significa que se encienda el indicador de
temperatura y continuamos circulando terminaremos por fundir el motor dando por terminado el viaje
en nuestro coche.
4
reconsiderar el problema (viabilidad) o el dejarlo en manos de profesionales (programas comerciales
o programadores profesionales).
d) Existen unas normas de circulación (normas de sintaxis y construcción del lenguaje informático
que utilicemos) que pueden variar de un país a otro (de un lenguaje a otro). Desconocer o infringir
las normas de circulación puede llevarnos a la imposibilidad de alcanzar el objetivo, incluso siendo
éste de poca entidad.
e) El simple hecho de conocer las normas de circulación no asegura el éxito del viaje, pues
cumpliendo las normas podemos perdernos o establecer recorridos circulares que no llevan a ningún
sitio.
f.2) La ruta del viaje (estructura del programa), que no es fruto de la inspiración divina, sino del
estudio conjunto de objetivos - medios disponibles - normas - restricciones, etc. Invertir tiempo en el
estudio de la ruta supondrá que el viaje sea más cómodo y satisfactorio que si nos ponemos
precipitadamente al volante.
f.3) En general, pero sobre todo para viajes complicados, conviene dividir el problema en apartados
como podrían ser:
- Tránsito por carreteras secundarias (algoritmos de procesos poco relevantes). Si el tránsito por
autopistas está mal planteado de poco valdrá el haber afinado en la elección del tránsito por
carreteras.
g) Distintas rutas (estructuras de programa) pueden llevar al mismo objetivo. Puede ocurrir que dos
rutas sean igualmente buenas.
Vistos ya, basándonos en un símil, qué son, para qué sirven y cuestiones básicas relacionadas con
los "fundamentos de programación", sobre los que tratamos en nuestra web, vayamos al segundo
paso: desarrollar programas utilizando un lenguaje. Siguiendo el símil, equivaldría a realizar viajes
(programas), planificándolos correctamente y utilizando un modelo de coche (lenguaje) que sirva
adecuadamente a nuestras pretensiones.
5
1.3 Clasificación de los lenguajes de programación (bajo nivel, nivel medio y
alto nivel) Y Lenguajes de programación utilizados en cada clasificación.
Lenguajes de alto nivel: Son aquellos que permiten una máxima flexibilidad al programador a
la hora de abstraerse o de ser literal. Permiten un camino bidireccional entre el lenguaje máquina
y una expresión casi oral entre la escritura del programa y su posterior compilación. Estos
lenguajes suelen estar orientados a objetos, a eventos o a funciones, pudiendo estos
combinarse. A su vez estos pueden ser compilados o interpretados.
6
2) Realizar Mapa mental con la información del punto # 1
7
Tipos más comunes de paradigmas de programación
En general, la mayoría son variantes de los dos tipos principales, imperativa y declarativa:
8
Si bien puede seleccionarse la forma pura de estos paradigmas al momento de programar, en
la práctica es habitual que se mezclen, dando lugar a la programación multiparadigma
o lenguajes de programación multiparadigma.
4) Lenguaje C
4.1 Definición
4.2 Historia
El desarrollo inicial de C se llevó a cabo en los Laboratorios Bell de AT&T entre 1969 y 1973;
según Dennis Ritchie, el periodo más creativo tuvo lugar en 1972. Se le dio el nombre "C" porque
muchas de sus características fueron tomadas de un lenguaje anterior llamado "B".
Hay muchas leyendas acerca del origen de C y el sistema operativo con el que está íntimamente
relacionado, Unix. Algunas de ellas son:
El desarrollo de C fue el resultado del deseo de los programadores de jugar con Space
Travel. Habían estado jugando en el mainframe de su compañía, pero debido a su poca
capacidad de proceso y al tener que soportar 100 usuarios, Ken Thompson y Dennis
Ritchie no tenían suficiente control sobre la nave para evitar colisiones con los asteroides,
por ese motivo decidieron portar el juego a un PDP-7 de la oficina que no se utilizaba; pero
esa máquina no tenía sistema operativo, así que decidieron escribir uno. Finalmente
decidieron portar el sistema operativo del PDP-11 que había en su oficina, pero era muy
9
costoso, pues todo el código estaba escrito en lenguaje ensamblador. Entonces decidieron
usar un lenguaje de alto nivel y portátil para que el sistema operativo se pudiera portar
fácilmente de un ordenador a otro, consideraron usar B pero carecía de las funcionalidades
necesarias para aprovechar algunas características avanzadas del PDP-11 entonces
empezaron a crear un nuevo lenguaje, C.
La justificación para obtener el ordenador original que se usó para desarrollar Unix fue crear
un sistema que automatizase el archivo de patentes. La versión original de Unix se
desarrolló en lenguaje ensamblador. Más tarde, el lenguaje C se desarrolló para poder
reescribir el sistema operativo.
El C de Kernighan y Ritchie
En 1973, el lenguaje C se había vuelto tan potente que la mayor parte del kernel Unix,
originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. Éste fue uno
de los primeros núcleos de sistema operativo implementados en un lenguaje distinto al
ensamblador. (Algunos casos anteriores son el sistema Multics, escrito en PL/I, y Master
Control Program para el B5000 de Burroughs, escrito en ALGOL en 1961).
En 1978, Ritchie y Brian Kernighan publicaron la primera edición de El lenguaje de
programación C, también conocido como La biblia de C. Este libro fue durante años
la especificación informal del lenguaje. El lenguaje descrito en este libro recibe habitualmente
el nombre de "el C de Kernighan y Ritchie" o simplemente "K&R C" (La segunda edición del libro
cubre el estándar ANSI C, descrito más abajo).
Kernighan y Ritchie introdujeron las siguientes características al lenguaje:
10
4.3 Características
Núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones
matemáticas y de manejo de archivos, proporcionadas por bibliotecas.
Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más
empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de
ruptura).
Un sistema de tipos que impide operaciones sin sentido.
Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como
definir macros e incluir múltiples archivos de código fuente.
Acceso a memoria de bajo nivel mediante el uso de punteros.
Interrupciones al procesador con uniones.
Un conjunto reducido de palabras clave.
Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia
se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos
parámetros.
Punteros a funciones y variables estáticas, que permiten una forma rudimentaria
de encapsulado y polimorfismo.
Tipos de datos agregados ( struct ) que permiten que datos relacionados (como un
empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un
todo (en una única variable "empleado").
Lenguaje muy eficiente puesto que es posible utilizar sus características de bajo nivel para
realizar implementaciones óptimas.
A pesar de su bajo nivel es el lenguaje más portado en existencia,
habiendo compiladores para casi todos los sistemas conocidos.
Proporciona facilidades para realizar programas modulares y/o utilizar código o bibliotecas
existentes.
Dificultades
El mayor problema que presenta el lenguaje C frente a los lenguajes de tipo de dato dinámico
es la gran diferencia en velocidad de desarrollo: es más lento programar en C, sobre todo para
el principiante. La razón estriba en que el compilador de C se limita a traducir código sin apenas
añadir nada. La gestión de la memoria es un ejemplo clásico: en C el programador ha de
reservar y liberar la memoria explícitamente. En otros lenguajes (como BASIC, Matlab o C#) la
memoria es gestionada de forma transparente para el programador. Esto alivia la carga de
trabajo humano y en muchas ocasiones evita errores, aunque también supone mayor carga de
trabajo para el procesador.
Cabe destacar el contexto y época en la que fue desarrollado C. En aquellos tiempos existían
muy pocos programadores, los cuales, a su vez, eran prácticamente todos expertos en el área.
De esta manera, se asumía que los programadores eran conscientes de sus trabajos y capaces
de manejar perfectamente el lenguaje. Por esta razón es muy importante que los recién iniciados
adopten buenas prácticas a la hora de escribir en C y manejar la memoria, como por ejemplo
11
un uso intensivo de indentación y conocer a fondo todo lo que implica el manejo de punteros y
direcciones de memoria.
Recolección de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la
"libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm.
Soporte para programación orientada a objetos, aunque la implementación original
de C++ fue un preprocesador que traducía código fuente de C++ a C. Véase también la
librería GObject.
Funciones anidadas, aunque GCC tiene esta característica como extensión.
Soporte nativo para programación multihilo. Disponible usando librerías como libpthread.
Aunque la lista de las características útiles de las que carece C es larga, este factor ha sido
importante para su aceptación, porque escribir rápidamente nuevos compiladores para nuevas
plataformas, mantiene lo que realmente hace el programa bajo el control directo del
programador, y permite implementar la solución más natural para cada plataforma. Ésta es la
causa de que a menudo C sea más eficiente que otros lenguajes. Típicamente, sólo la
programación cuidadosa en lenguaje ensamblador produce un código más rápido, pues da
control total sobre la máquina, aunque los avances en los compiladores de C y la complejidad
creciente de los microprocesadores modernos han reducido gradualmente esta diferencia.
En algunos casos, una característica inexistente puede aproximarse. Por ejemplo, la
implementación original de C++ consistía en un preprocesador que traducía código fuente C++
a C. La mayoría de las funciones orientadas a objetos incluyen un puntero especial, que
normalmente recibe el nombre "this", que se refiere al objeto al que pertenece la función.
Mediante el paso de este puntero como un argumento de función, esta funcionalidad puede
desempeñarse en C.
12
C++ Multiplataforma, Tiene un Es potente en No es
orientado a conjunto cuanto a lo que atractivo
objetos, completo de se refiere a visualmente,
imperativo y instrucciones de creación de no soporta
programación control, permite sistemas para la
genética la agrupación complejos un creación de
de lenguaje muy páginas web.
instrucciones, robusto.
incluye el
concepto de
punteo, los
argumentos de
la funciones se
transfieren por
su valor.
BIBLIOGRAFÍA
https://0.academia-
photos.com/attachment_thumbnails/54695017/mini_magick20180818-11899-
1bh43ba.png?1534586765
http://www.examtime.com/es/
https://www.wikipedia.org/
13
14