Tarea 2 Programacion I
Tarea 2 Programacion I
Materia
Programación I FGI-104
Matricula
100023115
Facilitador
Eunice Charles R.
Sección
261
Fecha de entrega
25 may. 2024
Instrucción
En esta asignación veremos el concepto del lenguaje en programación que es
algo en lo que sé que en el avance de la materia me ayudara mucho para poder
ampliar más el conocimiento en esa área, también saber la historia y tipos de
lenguajes que se utilizan, además de tipos de datos, y tendremos una práctica de
lenguaje en C, que nos ayudara a comprender mejor otros lenguajes de
programación.
Todo programa en C consta de una o más funciones, una de las cuales se llama
main. El programa comienza en la función main, desde la cual es posible llamar a
otras funciones.
Ejemplo:
declaraciones globales
main( ) {
variables locales
bloque
funcion1( ) {
variables locales
bloque }
Para declarar una variable usando la sintaxis básica, sigue estos pasos:
Elige un nombre que sea descriptivo y fácil de entender. Ten en cuenta las
siguientes reglas:
Ejemplo:
En Java:
1string nombre = "Juan"; // se declara una variable de tipo cadena de caracteres llamada nombre y
2int edad = 25; // se declara una variable de tipo numérico entero llamada edad y se le asigna un v
3float puntosGanados = 7.35; // se declara una variable de tipo flotante llamada puntosGanados y
En PHP:
1$nombre = "María";
2$edad = 31;
3$puntos_ganados = 6.01;
En JavaScript:
En Python:
1nombre = "Carmen"
2edad = 33
3puntos_ganados = 9.99
Las estructuras de datos del lenguaje C son más simples que las que ofrece Java
porque no existe el concepto de “clase” ni de “objeto”. C ofrece tipos de datos
básicos y dos construcciones para crear datos más complejos. El control de
acceso a datos que ofrece Java (métodos y campos privados, públicos y
protegidos) no existe en C. Las variables son globales, locales a un fichero, o
locales a un bloque de código.
Enteros
“short” y “long”: Modifica el tamaño en bits del entero. Existen por tanto tres
tipos de enteros: “int”, “short int” (que se puede abreviar como “short”),
y “long int” (que se puede abreviar como “long”).
El lenguaje C no define tamaños fijos para sus tipos de datos básicos. Lo único
que garantiza es que un short int tiene un tamaño menor o igual que un int y este
a su vez un tamaño menor o igual a un long int. Esta característica del lenguaje
ha complicado la creación de programas que sean compatibles entre varias
plataformas.
Letras y cadenas
Las variables de tipo letra se declaran como “char”. Para referirse a una letra se
rodea de comillas simples: 'M'. Como las letras se representan internamente como
números, el lenguaje C permite realizar operaciones aritméticas como 'M' + 25.
Las cadenas de texto o strings son simplemente tablas de “char”. Las funciones
de biblioteca para manipular estas cadenas asumen que el último byte tiene valor
cero. Las cadenas de texto se escriben en el programa rodeadas de dobles
comillas y contienen el valor cero al final. A continuación, se muestran dos
definiciones:
#define SIZE 6
char a = 'A';
char b[SIZE] = "hello";
Números reales
Los números reales se definen con “float” o “double”. La diferencia entre ambas
es la precisión que ofrece su representación interna. Hay un número infinito de
reales, pero se representan con un número finito de bits. A mayor número de bits,
mayor número de reales se representan y, por tanto, mayor precisión. Los reales
definidos con “double” tienen un tamaño doble a los definidos con “float”. Al
igual que en el caso de los enteros, el tamaño de estas representaciones varía de
una plataforma a otra.
Algunas plataformas ofrecen números reales con tamaño mayor al “double” que
se definen como “long double”. Los tamaños típicos para los
tipos “float”, “double” y “long double” son 4, 8 y 12 bytes respectivamente. A
continuación, se muestran varias definiciones de números reales.
float a = 3.5;
double b = -5.4e-12;
long double c = 3.54e320;
Tablas
Las tablas en C son prácticamente idénticas a las de Java, con el tamaño entre
corchetes a continuación del nombre. Al igual que en Java, los índices de la tabla
comienzan por cero. A continuación, se muestran algunos ejemplos:
int table[SIZE_TABLE];
short st[SIZE_SHORT] = { 1, 2, 3, 4, 5 };
long lt[SIZE_LONG] = { 20, 30, 40};
char name[SIZE_NAME];
Los elementos de la tabla se acceden con el nombre de la tabla seguido del índice
entre corchetes.
Tras este acceso incorrecto pueden suceder dos cosas. La primera es que la
memoria a la que ha accedido por error esté fuera de los límites del programa. En
este caso la ejecución termina de manera abrupta y en el intérprete de comandos
se muestra el mensaje “segmentation fault”. La otra posibilidad es que se acceda
a otro lugar dentro de los datos del programa. Esta situación seguramente
producirá un error cuyos síntomas sean difíciles de relacionar con el acceso
incorrecto.
Tablas de múltiples dimensiones
int matrix[MATRIX_A][MATRIX_B];
long squarematrix[COMMON_SIZE][COMMON_SIZE];
char soup[COMMON_SIZE][COMMON_SIZE];
%[parameter][flags][width][.precision][length]type
Toda marca, por tanto, comienza por el símbolo “%” y termina con su tipo. Cada
uno de los nombres (parameter, flags, width, precision, length y type)
representa un conjunto de valores posibles que se explican a continuación.
Parameter Descripción
Flags Descripción
Rellena con espacios (o con ceros, ver siguiente flag) a la izquierda hasta el
número
valor del número.
Se rellena con ceros a la izquierda hasta el valor dado por el flag anterior.
0 Por ejemplo “%03d” imprime un número justificado con ceros hasta tres
dígitos.
Width Descripción
Igual que el caso anterior, pero el número a utilizar se pasa como parámetro
justo antes del valor. Por ejemplo printf("%*d", 5,
*
10) imprime el número 10, pero con un ancho de cinco dígitos (es decir,
rellenará con 3 espacios en blanco a la izquierda).
Precision Descripción
Igual que el caso anterior, pero el número a utilizar se pasa como parámetro
* justo antes del valor. Por ejemplo printf("%.*s", 3,
"abcdef") imprime “abc”.
Length Descripción
Type Descripción
%g, %G Conversión a coma flotante, usando la notación que requiera menor espacio
%% Imprime el símbolo %
Las marcas de formato que se incluyen como parte de la cadena que se pasa
como primer parámetro a printf ofrece muchas posibilidades. A continuación, se
muestran algunos ejemplos:
printf("%5d\n",num);
se imprime:
12345
12
La función scanf permite leer varios tipos de datos de una sola vez, tales como
enteros, números decimales o cadenas de caracteres.
#include <stdio.h>
int scanf(const char *format,...);
Nota
Al igual que pasaba con gets, es muy peligroso usar scanf para leer cadenas,
pues scanf no tiene en cuenta la longitud de lo leído y admitirá que el usuario
escriba más caracteres que lo que el array definido en el programa pueda
admitir. Como resultado, scanf escribirá los caracteres que ya no quepan en el
array definido en otras porciones de memoria que pueden contener otros datos
que está usando nuestro programa. Esto desembocará en comportamientos
anómalos, en fugas de memoria, etc. Más tarde veremos cómo poder leer
cadenas de caracteres de manera más segura.
1 #include <stdio.h>
2 #define TAM_MAXIMO 80
3
4 int main(void)
5 {
6 char cadena[TAM_MAXIMO];
7 int entero1, entero2;
8 float decimal;
9
10 printf("Introduce dos enteros separados por un
espacio: \n");
11
scanf("%d %d", &entero1, &entero2);
12
printf("Introduce un número decimal:\n");
13
scanf("%f", &decimal);
14
printf("Introduce una cadena:\n");
15
scanf("%s",cadena);
16
printf("Esto es todo lo que has escrito:\n");
17
printf("%d %d %f %s\
18 n",entero1,entero2,decimal,cadena);
19 return 0;
Nota
Nota que en la línea 15 usamos scanf para leer una serie de caracteres, y esos
caracteres (más el caracter de terminación de cadena) se guardan en el array
apuntado por cadena. Sin embargo, aquí no se utiliza el operador de
dirección &, porque el propio nombre de un array (cadena en este caso), apunta
(es equivalente) a la dirección de comienzo del propio array.
Printf sirve para salir, imprimir, en pantalla, y scanf es para entrar, para introducir
datos.
Con todo esto, podemos decir que existen una gran variedad de lenguajes de
programación y que cada uno tiene sus puntos fuertes y debilidades. Dependiendo
del tipo de programa que estemos intentando desarrollar, utilizaremos uno u otro y
tendremos que adaptarnos a lo que requiera cada uno de los lenguajes.
Es tarea del desarrollador elegir entre las diferentes opciones que tenemos a
nuestra disposición para que el programa que se pretenda desarrollar se lleve a
cabo de la forma más eficiente y organizada posible.