Вы находитесь на странице: 1из 14

TALER #1

LENGUAJE DE PROGRMACION I

JUAN CAMILO ESPINOSA RAMIREZ


240172001

UNIDAD CENTRAL DEL VALLE DEL CAUCA


FACULTAD DE INGENIERIAS
INGENIERIA ELECTRONICA
TULUA (V)
2019
TALLER #1
LENGUAJE DE PROGRAMACION I

JUAN CAMILO ESPINOZA RAMIREZ


240172001

Taller #1 de Lenguaje de programación I, presentado a Ing. Luis Adrián Lasso

UNIDAD CENTRAL DEL VALLE DEL CAUCA


FACULTAD DE INGENIERIAS
INGENIERIA ELECTRONICA
TULUA (V)
2019

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?

¿Clasificación de los lenguajes de programación (bajo nivel, nivel medio y alto


nivel)?

¿Lenguajes de programación utilizados en cada clasificación?

2) Realizar Mapa mental con la información del punto # 1

3) Paradigmas de programación. Breve descripción de c/u de ellos y enunciar los


lenguajes de programación utilizados.

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.

Usando un lenguaje apropiado, puedes programar/crear todo tipo de software. Por


ejemplo, un programa que ayude a científicos con cálculos complejos; una base de
datos que almacene grandes cantidades de datos; un sitio web que permita a la
gente descargar música, o un software de animación que permita a la gente crear
películas animadas.

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?

a) Antes de usar un modelo de coche concreto (lenguaje) es conveniente conocer


generalidades sobre los coches (tener unos fundamentos de programación).

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.

c) Debemos saber discernir objetivos plausibles, difíciles, e inalcanzables. Recorrer 100 km en


media hora es un objetivo fuera de lo que se puede considerar habitual: en este caso conviene

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) Antes de emprender viaje (programar), debemos tener claro:

f.1) Dónde queremos ir (qué queremos que haga el programa).

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 autopistas (algoritmo principal o guía del programa).

- Tránsito por carreteras principales (algoritmos de procesos relevantes).

- 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.

El manejo de un lenguaje debe basarse en la progresividad, en la práctica y en el reciclaje.


Progresividad en cuanto a que debe comenzarse con las instrucciones básicas que permitan la
ejecución de pequeños programas. Posteriormente se introducirán, gradualmente, los aspectos de
mayor complejidad. Práctica porque, como en casi toda disciplina, la experiencia que vamos
acumulando aumenta nuestra destreza. Y reciclaje porque, para bien o para mal, los lenguajes
evolucionan y aparecen nuevas versiones o variantes. Aunque en relación con esto, siempre hay
quien prefiere un buen clásico a las modernidades.

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.

Lenguaje de bajo nivel: Un lenguaje de programación de características bajo nivel es aquel en


el que sus instrucciones ejercen un control directo sobre el hardware y están condicionados por
la estructura física de las computadoras que lo soportan. El uso de la palabra bajo en su
denominación no implica que el lenguaje sea menos potente que un lenguaje de alto nivel, sino
que se refiere a la reducida abstracción entre el lenguaje y el hardware. Por ejemplo, se utiliza
este tipo de lenguajes para programar tareas críticas de los sistemas operativos, de aplicaciones
en tiempo real o controladores de dispositivos.

 Por ejemplo: Assembler x86, JMP y MULT.



Lenguajes de medio nivel: Son aquellos que, basándose en los juegos de instrucciones
disponibles (chip set), permiten el uso de funciones a nivel aritmético, pero a nivel lógico
dependen de literales en ensamblador. Estos lenguajes están orientados a procedimientos. Los
procedimientos se componen de procesos.

 Ejemplos: C, Basic. De mayor nivel pero aún así considerables de nivel


medio: C++, Fortran, Cobol, Lisp

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.

 Ejemplos: Java, PHP, Python, Javascript, C#

6
2) Realizar Mapa mental con la información del punto # 1

3) Paradigmas de programación. Breve descripción de c/u de ellos y enunciar


los lenguajes de programación utilizados.
Un paradigma de programación es una propuesta tecnológica adoptada por una comunidad
de programadores, y desarrolladores cuyo núcleo central es incuestionable en cuanto que
únicamente trata de resolver uno o varios problemas claramente delimitados; la resolución de
estos problemas debe suponer consecuentemente un avance significativo en al menos un
parámetro que afecte a la ingeniería de software.
Un paradigma de programación representa un enfoque particular o filosofía para diseñar
soluciones. Los paradigmas difieren unos de otros, en los conceptos y la forma de abstraer los
elementos involucrados en un problema, así como en los pasos que integran su solución del
problema, en otras palabras, el cómputo.
Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de
definición. Es un estilo de programación empleado.
Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y uso,
porque nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o
totalmente

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:

 Programación imperativa o por procedimientos: es el más usado en general, se basa en dar


instrucciones al ordenador de cómo hacer las cosas en forma de algoritmos. La
programación imperativa es la más usada y la más antigua, el ejemplo principal es
el lenguaje de máquina. Ejemplos de lenguajes puros de este paradigma serían
el C, BASIC o Pascal.
 Programación orientada a objetos: está basada en el imperativo, pero encapsula elementos
denominados objetos que incluyen tanto variables como funciones. Está representado
por C++, C#, Java o Python entre otros, pero el más representativo sería el Smalltalk que
está completamente orientado a objetos.
 Programación dinámica: está definida como el proceso de romper problemas en partes
pequeñas para analizarlos y resolverlos de forma lo más cercana al óptimo, busca resolver
problemas en O(n) sin usar por tanto métodos recursivos. Este paradigma está más basado
en el modo de realizar los algoritmos, por lo que se puede usar con cualquier lenguaje
imperativo.
 Programación dirigida por eventos: la programación dirigida por eventos es un paradigma
de programación en el que tanto la estructura como la ejecución de los programas van
determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que
ellos mismos provoquen.
 Programación declarativa: está basado en describir el problema declarando propiedades y
reglas que deben cumplirse, en lugar de instrucciones. Hay lenguajes para la programación
funcional, la programación lógica, o la combinación lógico-funcional. Unos de los primeros
lenguajes funcionales fueron Lisp y Prolog.
 Programación funcional: basada en la definición los predicados y es de corte más
matemático, está representado por Scheme (una variante de Lisp)
o Haskell. Python también representa este paradigma. 1
 Programación lógica: basado en la definición de relaciones lógicas, está representado
por Prolog.
 Programación con restricciones: similar a la lógica usando ecuaciones. Casi todos los
lenguajes son variantes del Prolog.
 Programación multiparadigma: es el uso de dos o más paradigmas dentro de un programa.
El lenguaje Lisp se considera multiparadigma. Al igual que Python, que es orientado a
objetos, reflexivo, imperativo y funcional.1
 Programación reactiva: Este paradigma se basa en la declaración de una serie de objetos
emisores de eventos asíncronos y otra serie de objetos que se "suscriben" a los primeros
(es decir, quedan a la escucha de la emisión de eventos de estos) y *reaccionan* a los
valores que reciben. Es muy común usar la librería Rx de Microsoft (Acrónimo de Reactive
Extensions), disponible para múltiples lenguajes de programación.
 Lenguaje específico del dominio o DSL: se denomina así a los lenguajes desarrollados para
resolver un problema específico, pudiendo entrar dentro de cualquier grupo anterior. El más
representativo sería SQL para el manejo de las bases de datos, de tipo declarativo, pero los
hay imperativos, como el Logo.

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

C es un lenguaje de programación originalmente desarrollado por Dennis


Ritchie entre 1969 y 1972 en los Laboratorios Bell,2 como evolución del anterior lenguaje B, a
su vez basado en BCPL.
Al igual que B, es un lenguaje orientado a la implementación de Sistemas operativos,
concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje
de programación más popular para crear software de sistemas, aunque también se utiliza para
crear aplicaciones.
-Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de medio nivel, ya
que dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de
construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen
ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o
acceder directamente a memoria o dispositivos periféricos.
La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El
lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en
1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es
muy amplia por lo que, si los programas creados lo siguen, el código es portable entre
plataformas y/o arquitecturas.

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:

 El tipo de datos struct .


 El tipo de datos long int .
 El tipo de datos unsigned int .
 Los operadores =+ y =- fueron sustituidos por += y -= para eliminar la ambigüedad
sintáctica de expresiones como i=-10 , que se podría interpretar bien como i =- 10 o
bien como i = -10 .
El C de Kernighan y Ritchie es el subconjunto más básico del lenguaje que un compilador debe
de soportar. Durante muchos años, incluso tras la introducción del ANSI C, fue considerado "el
mínimo común denominador" en el que los programadores debían programar cuando deseaban
que sus programas fueran transportables, pues no todos los compiladores soportaban
completamente ANSI, y el código razonablemente bien escrito en K&R C es también código
ANSI C válido.
En las primeras versiones del lenguaje, la definición de funciones se hacía mediante un
'prototipo de función' (function prototype), el cual indicaba al compilador el tipo de retorno de la
función. Aunque este método tiene una gran desventaja respecto al nuevo, debido a que no
comprueba el número ni el tipo en la lista de argumentos; en otras palabras, es mucho más fácil
cometer errores al hacer una llamada a una función con argumentos incorrectos.

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.

5) Cuadro comparativo entre C y C++

Lenguaje Paradigma Características Ventajas Desventajas


C Programación Tiene un Rápido No es
imperativa conjunto eficiente, es un popular para
completo de lenguaje la creación
instrucciones de orientado a la de aplicación,
control, permite implementación sintaxis
la agrupación de sistemas compleja.
de operativos,
instrucciones, concretamente
incluye el Unix.
concepto de
punteo,
lenguaje
estructurado.

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

Вам также может понравиться