- JAVA. Desde el 2001, JAVA es el lenguaje programación más usado. Actualmente cuenta con más de 9 millones desarrolladores que lo usan y está presente en más de 7 mil millones de dispositivos en todo el mundo. Su popularidad se debe a su gran legibilidad y simplicidad.
- Lenguaje C. Creado entre 1969 y 1972 en los Laboratorios Bell, este lenguaje de programación es uno de los más utilizados en el mundo. Lo utilizan la mayoría de los sistemas operativos lo cual hace que sea un lenguaje muy flexible, además, es muy popular para el desarrollo de aplicaciones de escritorio, como el conocido editor gráfico GIMP.
- PYTHON. Es un lenguaje de programación multiplataforma y multiparadigma. Soporta la orientación a objetos, la programación imperativa y funcional. Su simpleza, legibilidad y similitud con el idioma inglés lo convierten en un lenguaje ideal para principiantes.
- C++. Es un lenguaje de programación orientado a objetos y una evolución del lenguaje C. Existe una gran cantidad de programas escritos en C++, como por ejemplo los paquetes de Adobe.
- VISUAL BASIC .NET. Visual Basic .NET te da la posibilidad de automatizar sus propios procesos y crear sus propias aplicaciones web. Es utilizado por una gran cantidad de personas a lo largo del mundo que no cuentan con conocimientos profundos como desarrolladores, por lo que es considerado uno de los lenguajes más amigables para los principiantes de programación.
Mostrando las entradas con la etiqueta Algoritmos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Algoritmos. Mostrar todas las entradas
Programación: lenguajes más utilizados
¿Cuáles fueron los lenguajes de programación más usados en 2018? Los siguientes datos corresponden a enero de 2019.
Recursos para #programadores...
Comparto un excelente repositorio de documentos y enlaces a páginas Web, con buena información para los que desean profundizar en temas de programación y diseño Web. Algunos documentos están en PDF, listos para ser descargados.
Recurso para computación I y II (323/324)
El desarrollo de buenos algoritmos es una competencia clave para quienes se dediquen a construir software. Existen múltiples herramientas que apoyan el aprendizaje en esta materia. Una de ellas es PSeint, que asiste al estudiante en sus primeros pasos en programación.
Mediante un simple e intuitivo pseudolenguaje en español (complementado con un editor de diagramas de flujo), le permite centrar su atención en los conceptos de la algoritmia computacional, minimizando las dificultades propias del aprendizaje de un lenguaje y proporcionando un entorno de trabajo con ayudas y recursos didácticos.
Los algoritmos en pseudolenguaje pueden ser exportados en diversos códigos, como por lenguaje C o Pascal. Es un software libre y gratuito. Bajen la última versión de http://pseint.sourceforge.net/ [ Ver la lista completa de las funcionalidades ]
Los algoritmos en pseudolenguaje pueden ser exportados en diversos códigos, como por lenguaje C o Pascal. Es un software libre y gratuito. Bajen la última versión de http://pseint.sourceforge.net/ [ Ver la lista completa de las funcionalidades ]
RANDOM.ORG
RANDOM.ORG ofrece números aleatorios para cualquier usuario de Internet. Representa una mejor opción que los algoritmos de números pseudo-aleatorios usados en programas de computadoras. RANDOM.ORG es usado para la celebración de sorteos y loterías; para conducir los juegos en línea, para aplicaciones científicas y para el arte y la música.
El servicio existe desde 1998 y fue creado por el Dr. Mads Haahr de la Facultad de Ciencia y Estadística Informática en el Trinity College de Dublín en Irlanda.
Permite utilizar algunas funcionaldades de manera gratuita; otras más complejas, tienen un costo de suscripción. https://www.random.org/
¿Qué lenguaje de programación aprender?
Es una pregunta común en todo los interesados en el mundo de la programación de computadoras; y en un primer momento, la respuesta no es sencilla.
Como se sabe, existe una gran variedad de lenguajes de programación que pueden ser clasificados de diversas maneras. Por ejemplo, existen los denominados lenguajes de bajo nivel, "cercanos" a las máquinas y sus arquitecturas, pasando por diferentes grados de abstracción, hasta los conocidos como lenguajes de alto nivel, "independientes" del hardware o plataforma (es decir, lenguajes que no demandan al programador conocimientos en el hardware en que se ejecutarán los programas que construya) .
Como se sabe, existe una gran variedad de lenguajes de programación que pueden ser clasificados de diversas maneras. Por ejemplo, existen los denominados lenguajes de bajo nivel, "cercanos" a las máquinas y sus arquitecturas, pasando por diferentes grados de abstracción, hasta los conocidos como lenguajes de alto nivel, "independientes" del hardware o plataforma (es decir, lenguajes que no demandan al programador conocimientos en el hardware en que se ejecutarán los programas que construya) .
Ejemplo de algoritmo con PSeint
Ejemplo de un algoritmo que suma las filas de una matriz o arreglo de dos dimensiones (3 x 3). A la matriz mat se le asignan números aleatorios (función Azar). Luego se recorre por cada columna (contador yy) para ir sumando y totalizar cada fila. Al final, se escribe la matriz completa.
Haga clic en la imagen.
Pensamiento algorítmico y programación
Los estudiantes de ingeniería deben desarrollar destrezas y habilidades para pensar "algorítmicamente" y aprender a abordar problemas de forma metódica. Para el caso de los que quieran dominar la programación de computadoras, antes de aprender a programar, es conveniente leer un libro que enseñe a pensar algorítmicamente. Un material que recomiendo lo puede bajar de este enlace. Comparto, además, algunos portales con herramientas para aprender a programar:
- https://developers.google.com/university/?hl=es-419 Ésta es una sección de Google Code en la que se alberga un buen material sobre programación en Linux, AJAX, Python, bases de datos y los lenguajes básicos para el desarrollo web (CSS, HTML, Java Script). Útil contenido, tutoriales fáciles de seguir, herramientas de evaluación...
- http://msdn.microsoft.com/es-es/beginner/default.aspx Es un programa creado por Microsoft con lecciones de VisualBasic, C#, ASP.net, y otros lenguajes, organizado todos en guías multimedia de fácil uso. Por supuesto gran parte está enfocada a la creación de aplicaciones estrictamente para Windows, pero no por eso deja de ser un valioso recurso.
- http://www.codecademy.com/es#!/exercises/0 Es una aplicación web que según sus creadores nace debido a lo frustrante que es en ocasiones el entrar al mundo de la programación, por lo que ofrecen una manera muy sencilla de aprender interactivamente a través de un entorno completamente guiado.
Fuente: http://wwwhatsnew.com/
Material sobre Algoritmos y Lógica Computacional
Un documento bastante interesante sobre Algoritmos y Programación en Pascal. No es nuevo, pero expone algunos puntos de manera muy interesante y didáctica. El libro trata sobre métodos de resolución de problemas mediante el desarrollo de algoritmos y estructuras de datos, desde el principio y paso a paso; así como su materialización en programas de computador.
También les dejo un documento sobre lógica computacional, que incluye temas como lógica proposicional y programación lógica. Para leerlo con detenimiento.
También les dejo un documento sobre lógica computacional, que incluye temas como lógica proposicional y programación lógica. Para leerlo con detenimiento.
- Como es algo "pesado" recomiendo bajarlo y luego abrirlo: documento
Es importante además, consultar estos documentos en línea: programación estructurada y Teorema de Dijkstra
Función recursiva (fibonacci)
Función para la serie de Fibonacci. La definición formal de la serie es la siguiente:
Un programa, aplicando la técnica recursiva para esta serie, se muestra a continuación:
La función es tipo entero, con parámetro N según la definición dada.
Un programa, aplicando la técnica recursiva para esta serie, se muestra a continuación:
La función es tipo entero, con parámetro N según la definición dada.
Recursividad
Palíndromo: es una palabra o frase que se lee igual de izquierda a derecha, que de derecha a izquierda. Ejemplos: anilina; dábale arroz a la zorra el abad.
Aplicando el concepto de "recursividad" podemos escribir una función que determine si una cadena es o no palíndromo.
Asumiendo que la función fRecP recibe una cadena (en una estructura de datos tipo "arreglo") y dos límites (1 y longitud de cadena) la primera vez que se invoca, un algoritmo recursivo para determinar si es palíndromo puede ser este:
Función fRecP (Cadena C, int limIzq, int limDer): lógica
Si (limIzq > limDer) entonces
fRecP = verdadero
de lo contrario
Si C[limIzq] = C[limDer] entonces
fRecP (C, limIzq+1, limDer-1)
de lo contrario
fRecP = falso
Fin
Fin
Fin fRecP
Tipos Abstractos de Datos (TAD)
Un TAD es una especificación abstracta de un tipo de datos en la que se describen:
/* Caso Suma_Matrices /*
void Suma_Matrices (t_matriz A, t_matriz B, t_matriz C)
- Los valores del tipo
- Su interfaz: las operaciones que pueden realizarse con los valores del tipo
- Definición del tipo MATRIZ_ENTEROS: es una agrupación de números enteros ordenados por filas y columnas; el número de elementos en cada fila y cada columna es el mismo.
- La operaciones definidas para el TAD MATRIZ de ENTEROS son: suma, multiplicación e inversa:
- Suma Matrices (A, B: MATRIZ) devuelve C: MATRIZ: se suma elemento a elemento, cada numero entero de la matriz A con el correspondiente número entero de la matriz B. Condición: A y B tienen igual número de filas y columnas.
- Multiplicar Matrices (A, B: MATRIZ) devuelve C: MATRIZ: se multiplican dos matrices que cumplen la condición ...
- Inversa Matriz (A: MATRIZ) devuelve C: MATRIZ: esta se calcula...
#define NUM_COLUMNAS 10
/* Definimos el TAD */
/* Definimos el TAD */
typedef int t_matriz[NUM_FILAS][NUM_COLUMNAS];
/* Definimos una variable */
/* Definimos una variable */
t_matriz M;
/* Caso Suma_Matrices /*
void Suma_Matrices (t_matriz A, t_matriz B, t_matriz C)
{
int i, j;
for (i=0; i < NUM_FILAS; i++)
for (j=0; j < NUM_COLUMNAS; j++)
C [i] [j] = A [i] [j] + B [i] [j] ;
}
Método de ordenación por inserción
El método de Inserción realiza n–1 iteraciones sobre el vector, dejando en la i-ésima etapa (2 ≤ i ≤ n) ordenado el subvector a[1..i]. La forma de hacerlo es colocando en cada iteración el elemento a[i] en su sitio correcto, aprovechando el hecho de que el subvector a[1..i–1] ya ha sido previamente ordenado. Este método puede ser implementado de forma iterativa como sigue:
PROCEDURE Insercion (VAR a: VECTOR; N: INTEGER);
VAR i, j, x: INTEGER;
BEGIN
FOR i := 2 TO N DO
PROCEDURE Insercion (VAR a: VECTOR; N: INTEGER);
VAR i, j, x: INTEGER;
BEGIN
FOR i := 2 TO N DO
Begin
x := a[i];
x := a[i];
j := i-1;
WHILE ( j >= 1 ) AND ( x < a [j] ) DO
WHILE ( j >= 1 ) AND ( x < a [j] ) DO
Begin
a [j+1] := a [ j ];
a [j+1] := a [ j ];
j := j - 1;
END;
a[j+1] := x
END;
END;
a[j+1] := x
END;
END;
Pensamiento Computacional
Pensamiento Computacional (Computational Thinking)
Fuente: http://edubit.blogspot.com/2011/08/pensamiento-computacional-computational.html
En el año 2006 la doctora J. M. Wing, profesora del Departamento de Computación de la Universidad de Carnegie Mellon, utilizó el termino Pensamiento Computacional para describir cómo piensa un científico de computadoras y lo beneficios que esta forma de pensar, podría tener en todos (Wing, 2006, 2010).
En el año 2006 la doctora J. M. Wing, profesora del Departamento de Computación de la Universidad de Carnegie Mellon, utilizó el termino Pensamiento Computacional para describir cómo piensa un científico de computadoras y lo beneficios que esta forma de pensar, podría tener en todos (Wing, 2006, 2010).
Definió al pensamiento computacional como:
“…el proceso de pensamiento envuelto en formular un problema y sus soluciones de manera que las soluciones son representadas de una forma en que pueden ser llevadas a un agente de procesamiento de información.”
En el artículo Computational Thinking: A Digital Age Skill for Everyone, Barr, Harrison y Conery (2011) explican que el Pensamiento Computacional que definió Wing, envuelve conceptos conocidos como:
- Descomposición de problemas
- Representación de datos
- Modelos
- Búsquedas binarias
- Recursión
- Paralelización
Según la Sociedad Internacional para la Tecnología en la Educación y la Asociación de Maestros de Ciencias de Computadoras (ISTE y CSTA, por sus siglas en inglés, 2011) el Pensamiento Computacional es un proceso para la solución de problemas que incluye, pero no se limita, a:
- La formulación de problemas de forma que se pueda usar una computadora y otras herramientas para resolverlos.
- Analizar y organizar los datos de forma lógica.
- Representar los datos de forma abstracta como modelos y simulaciones.
- Automatizar la solución con pensamiento algorítmico (una serie de pasos ordenados)
- Identificar, analizar e implementar posibles soluciones con la meta de logar la más eficaz y eficiente combinación de pasos y recursos.
- Generalizar y transferir este proceso de solución de problemas a otros problemas.
- Confianza al trabajar con la complejidad
- Persistencia al trabajar con problemas difíciles
- Tolerancia a la ambigüedad
- Habilidad para lidiar con problemas abiertos y cerrados
- Habilidad para comunicarse y trabajar con otros para lograr una meta en común y soluciones
- Es un combinación de destrezas de pensamiento única, que cuando se usan juntas, proveen la base para una nueva y poderosa forma de resolver problemas.
- Esta más orientada a las herramientas.
- Utiliza otras formas de solucionar problemas en contextos donde antes era impráctico y ahora es posible por la automatización y las grades velocidades de procesamiento.
- Barr, D., Harrison, J. y Conery, L. (marzo a abril, 2011). Computational Thinking: A Digital Age Skill for Everyone. Learning & Leading with Technology. Disponible el 19 de agosto de 2011 enhttp://www.iste.org/Libraries/Leading_and_Learning_Docs/March-2011-Computational_Thinking-LL386.sflb.ashx
- ISTE y CSTA (2011). Computational Thinking: Teacher Resources. First Edition. Disponible el 19 de agosto de 2011 enhttp://www.iste.org/store/attachmentdownload.aspx?id=2159
- Phillips, P. (2009). Computational Thinking: a Problem – Solving Tool for Every Classroom. CSTA, Microsoft. Diponible el 19 de agosto de 2011 enhttp://education.sdsc.edu/resources/CompThinking.pdf
- Wing, J. (noviembre, 2010). Computational Thinking: What and Why? Disponible el 19 de agosto de 2011 en http://www.cs.cmu.edu/~CompThink/resources/TheLinkWing.pdf
- Wing, J. (marzo, 2006). Computational Thinking. View Point. Comunication of ACM. Vol. 49, No. 3. Pág. 35. Disponible el 19 de agosto de 2011 en http://www.cs.cmu.edu/afs/cs/usr/wing/www/publications/Wing06.pdf
Sitios con cursos de programación gratis (MOOC)
- Codecademy es uno de los sitios más populares... en este se puede tomar un curso de programación, los cuales están dirigidos especialmente a nuevos programadores.
- Udacity es una plataforma que nació en la Universidad de Stanford. En éste decidieron ofrecer una clase introductoria sobre Inteligencia Artificial, de manera gratuita en Internet. Más de 160.000 estudiantes de todo el mundo se inscribieron, así Udacity se convirtió en uno los promotores de lo que ellos mismos llaman la democratización de la educación.
- Khan Academy es una organización sin fines de lucro, cuyo objetivo es llevar educación de primera clase y de manera abierta, a todo el mundo . Los recursos están disponibles sin ningún costo.
- Udemy es una empresa que ofrece cursos sobre diferentes materias para individuos y empresas. En Udemy cualquiera con conocimiento puede crear un curso y ofrecerlo para que sea tomado por los usuarios.
- Coursera es una organización educativa que se asoció con muchas de las mejores universidades del mundo, para ofrecer de manera gratuita cursos en linea que cualquier persona puede tomar.
Fuente: bitelia
Programación recursiva
La programación recursividad es una técnica muy poderosa para resolver problemas de naturaleza recursivos. Se puede usar la recursividad si la solución de un problema está expresada en términos de la resolución de un problema de la misma naturaleza, aunque de menor tamaño, y si se conoce la solución no-recursiva para un determinado caso (llamado caso base). Ver documento
Recursividad
El programa que se presenta (en Turbo Pascal), determina si un número dado (entero positivo) es par o impar, a través de la técnica de resolución de problemas denominada recursividad.
De manera muy simple, la recursividad se puede definir como la propiedad que poseen determinadas funciones por la cual pueden llamarse a sí mismas. Existen lenguajes de programación que permiten escribir programas que pueden llamarse a sí mismos, para la resolución de un problema "recursivo". El ejemplo típico es el cálculo del número factorial: n! = n . (n-1) . (n-2) . (n-3)......1 . 0! (por definición 0! = 1). Se puede observar que la solución de (n-3)! es similar a la de n! (la misma definición), aunque (n-3)! es un problema "más pequeño" que n!.
El concepto de PILA (stack) está asociado a la implementación de la recursividad en un computador.
- Ejemplo en Pascal (ojo, no se valida el valor entero ingresado)
De manera muy simple, la recursividad se puede definir como la propiedad que poseen determinadas funciones por la cual pueden llamarse a sí mismas. Existen lenguajes de programación que permiten escribir programas que pueden llamarse a sí mismos, para la resolución de un problema "recursivo". El ejemplo típico es el cálculo del número factorial: n! = n . (n-1) . (n-2) . (n-3)......1 . 0! (por definición 0! = 1). Se puede observar que la solución de (n-3)! es similar a la de n! (la misma definición), aunque (n-3)! es un problema "más pequeño" que n!.
El concepto de PILA (stack) está asociado a la implementación de la recursividad en un computador.
Métodos de Ordenación (algoritmos y programas)
Asignaturas 323, 324 y 330. Se presenta un conjunto de métodos de ordenación, con el análisis teórico de su complejidad temporal y, en algunos casos, espacial. Se anexa, además, un archivo con la programación de los métodos. Se incluye un manual de pascal bastante completo...
- Aspectos teóricos
- Programa en Turbo Pascal (para imprimir)
- Material de TP
Manejo de archivos en Turbo PASCAL
El programa codificado en turbo pascal que les dejo, fue desarrollado hace algún tiempo... Con él se quiso dar respuesta a la necesidad de controlar una pequeña biblioteca (control de usuarios y control de préstamos).
Ilustra diferentes operaciones (crear, leer, escribir, buscar) sobre tres archivos: Libro.dat, Usuario.dat, Préstamo.dat. Asimismo, maneja ciertos detalles para la captura de errores y alguna validaciones en la entrada de datos.
Suscribirse a:
Entradas (Atom)




