0% encontró este documento útil (0 votos)
91 vistas22 páginas

Tarea 2 Programacion I

Cargado por

201900172
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
91 vistas22 páginas

Tarea 2 Programacion I

Cargado por

201900172
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

Nombre del participante

Carlos Luis Gil

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.

1) Investiga en la web y elabora un informe acerca de los


siguientes temas:

1.1 Estructura general de un programa en C.


Un programa en C consta de una o más funciones, la función principal se llama main. Cada
función debe contener: cabecera, argumentos y sentencias.

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.

Cada función estará formada por la cabecera de la función, compuesta por el


nombre de la misma y la lista de argumentos, la declaración de las variables a
utilizar y la secuencia de sentencias a ejecutar.

Ejemplo:

declaraciones globales

main( ) {

variables locales

bloque

funcion1( ) {

variables locales

bloque }

1.2 Concepto de variable.

En la mayoría de los lenguajes de programación nos encontramos con el concepto


de variable. Las variables son herramientas poderosas que permiten manejar
datos y optimizar el proceso de programación. Sigue leyendo para aprender qué
son y cómo declarar variables para utilizarlas en funciones y operaciones de forma
correcta.

¿Qué es una variable en programación y para qué sirve?

Una variable representa un contenedor o un espacio en la memoria física o virtual


de una computadora, donde se almacenan distintos tipos de datos (valores)
durante la ejecución de un programa. A cada variable se le asigna un nombre
descriptivo o un identificador que se refiere al valor guardado. Los datos
almacenados pueden cambiar de valor o ser constantes.

Las variables sirven para guardar y recuperar datos, representar valores


existentes y asignar unos nuevos. Las variables permiten que los programadores
se refieran a un valor con un nombre representativo en vez de tener que recordar
este valor, lo que facilita muchas tareas complejas.

Así, puedes usar valores almacenados en cálculos, operaciones de entrada y


salida, comparaciones y otros tipos de procesamiento de datos. Por ejemplo, en
un programa de contabilidad, una variable puede almacenar el saldo de una
cuenta, y otra variable representa el monto de una transacción. A través de las
variables, puedes realizar fácilmente operaciones matemáticas para actualizar el
saldo de la cuenta.

Tipos de variables en programación

Los tipos de variables dependen del lenguaje de programación. Cada lenguaje


tiene sus propios tipos de datos y formas de definir variables. El tipado puede ser
estático, cuando los tipos de variables se establecen a la hora que se declaren, o
dinámico, cuando el tipo se determina y se asigna durante la ejecución del
programa.
Algunos de los tipos de variables más comunes son:
 Variables numéricas que almacenan números enteros.
 Variable de punto flotante que guardan números con decimales.
 Variables de caracteres que representan símbolos o caracteres.
 Variables de cadena de caracteres que contienen palabras y textos.
 Variables lógicas o booleanasque sirven para almacenar valores lógicos
(verdadero o falso).

¿Cómo declarar una variable en programación?

Antes de usar una variable, debes declararla reservando un espacio necesario en


la memoria de la computadora para almacenar su valor. La forma de crear una
variable en programación varía en diferentes lenguajes de programación. Por
ejemplo, en JavaScript las variables siempre se declaran con las palabras
claves var, let o const, mientras que el lenguaje PHP exige que el nombre de la
variable siempre empiece con el símbolo “$”.

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:

 Cada identificador de la variable debe ser único dentro de un programa.


 Evita usar palabras claves reservadas por el lenguaje de programación, por
ejemplo, var, function, if, for, while, etc.
 El nombre puede incluir letras, caracteres ($, # y @) y números, pero no
puede empezar con un número.
 Los nombres de las variables no pueden empezar ni terminar con un punto.

 Las variables no permiten espacios entre palabras. Para separar palabras


en el nombre, usa el guión bajo (_) o cambia de letra minúscula a
mayúscula.

 Especifica el tipo de dato que la variable va a almacenar, como int para


valores numéricos enteros, float para números con decimales, char si
trabajas con un solo carácter, string si quieres almacenar un
texto, boolean para guardar un valor booleano, etc. En algunos lenguajes
de programación, como Python y PHP, no es necesario declarar el tipo de
dato de una variable antes de asignar un valor a ella: se determina
automáticamente a la hora de ejecutar el programa.

 Para asignarle un valor a tu variable, aplica el operador de asignación “=”,


que establece la relación entre el identificador de la variable y el valor que
tiene almacenado. Una vez declarada tu variable, puedes asignar o cambiar
de valor en cualquier momento durante la ejecución del programa.

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:

1let nombre = "Pedro";


2let edad = 28;
3let puntosGanados = 8.26;

En Python:

1nombre = "Carmen"
2edad = 33
3puntos_ganados = 9.99

1.3 Tipos de datos en lenguaje C


El lenguaje C dedica nueve palabras para la identificación de los tipos de dato
primitivos: void, char, int, float, double, short, long, signed e unsigned.

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.

Tipos de datos básicos

C ofrece tres tipos de datos básicos:

 Números enteros definidos con la palabra clave int


 Letras o caracteres definidos con la palabra clave char
 Números reales o en coma flotante definidos con las palabras
claves float o double

Enteros

Se definen con “int” y admiten de forma opcional dos prefijos modificadores:

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

“unsigned”: define un número natural (mayor o igual a cero).

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:

#define SIZE_TABLE 100


#define SIZE_SHORT 5
#define SIZE_LONG 3
#define SIZE_NAME 10

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.

Una de las diferencias entre C y Java es que el acceso a una tabla en C no se


verifica. Cuando se ejecuta un programa en Java si se accede a una tabla con un
índice incorrecto, se genera una excepción de tipo “ArrayIndexOutOfBounds”.
Estas comprobaciones no se hacen nunca en C (a no ser que se escriban
explícitamente en el programa). Si se accede a una tabla con un índice incorrecto
se manipulan datos en una zona de memoria incorrecta y el programa continua su
ejecución.

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

C permite la definición de tablas de múltiples dimensiones escribiendo los


diferentes tamaños rodeados de corchetes y concatenados. El acceso se realiza
concatenando tantos índices como sea preciso rodeados de corchetes. Al igual
que en el caso de las tablas unidimensionales, no se realiza ningún tipo de
comprobación de los índices cuando se accede a un elemento. A continuación, se
muestra la definición de tablas de más de una dimensión.

#define MATRIX_A 100


#define MATRIX_B 30
#define COMMON_SIZE 10

int matrix[MATRIX_A][MATRIX_B];
long squarematrix[COMMON_SIZE][COMMON_SIZE];
char soup[COMMON_SIZE][COMMON_SIZE];

Tamaño de los tipos de datos básicos

En C, el tamaño de los tipos de datos básicos puede variar de una plataforma a


otra. Esta característica está detrás de buena parte de las críticas que recibe este
lenguaje, pues de ella se derivan problemas de compatibilidad (una aplicación se
comporta de forma diferente cuando se ejecuta en plataformas diferentes).

A modo de ejemplo, en la siguiente tabla se incluyen los tamaños de los tipos de


datos para las plataformas Linux/Intel i686.

Tabla 2.1. Tamaños de los tipos de datos en C en la plataforma Linux/Intel


i686

Tipo Tamaño (bytes)


char, unsigned char 1
short int, unsigned short int 2
int, unsigned int, long int, unsigned long int 4
float 4
double 8
Tipo Tamaño (bytes)
long double 12

1.4 función printf()


La función printf

La función printf (que deriva su nombre de “print formatted”) imprime un mensaje


por pantalla utilizando una “cadena de formato” que incluye las instrucciones para
mezclar múltiples cadenas en la cadena final a mostrar por pantalla. Lenguajes
como Java también incluyen funciones similares a esta (ver Método printf de la
clase PrintStream).

printf es una función especial porque recibe un número variable de parámetros. El


primer parámetro es fijo y es la cadena de formato. En ella se incluye texto a
imprimir literalmente y marcas a reemplazar por texto que se obtiene de los
parámetros adicionales. Por tanto, printf se llama con tantos parámetros como
marcas haya en la cadena de formato más uno (la propia cadena de formato). El
siguiente ejemplo muestra cómo se imprime el valor de la variable contador.

printf("El valor es %d.\n", contador);

El símbolo “%” denota el comienzo de la marca de formato. La marca “%d” se


reemplaza por el valor de la variable contador y se imprime la cadena resultante.
El símbolo “\n” representa un salto de línea. La salida, por defecto, se justifica a la
derecha del ancho total que le hallamos dado al campo, que por defecto tiene
como longitud la longitud de la cadena.

Si en la cadena de formato aparecen varias marcas, los valores a incluir se toman


en el mismo orden en el que aparecen. La siguiente figura muestra un ejemplo en
el que la cadena de formato tiene tres marcas, %s, %d y %5.2f, que se procesan
utilizando respectivamente la cadena “red”, el entero 1234567 y el número
real 3.14.
No se comprueba que el número de marcas en la cadena de formato y el número
de parámetros restantes sea consistente. En caso de error, el comportamiento
de printf es indeterminado.

Las marcas en la cadena de formato deben tener la siguiente estructura (los


campos entre corchetes son optativos):

%[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

Se reemplaza “n” por un número para cambiar el orden en el que se


n$ procesan los argumentos. Por ejemplo %3$d se refiere al tercer argumento
independientemente del lugar que ocupa en la cadena de formato.

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.

+ Imprimir el signo de un número

Justifica el campo a la izquierda (por defecto ya hemos dicho que se


-
justifica a la derecha)
Formato alternativo. Para reales se dejan ceros al final y se imprime siempre
# la coma. Para números que no están en base 10, se añade un prefijo
denotando la base.

Width Descripción

número Tamaño del ancho del campo donde se imprimirá el valor.

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

Tamaño de la parte decimal para números reales. Número de caracteres a


número
imprimir para cadenas de texto

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

hh Convertir variable de tipo char a entero e imprimir

h Convertir variable de tipo short a entero e imprimir

l Para enteros, se espera una variable de tipo long.

ll Para enteros, se espera una variable de tipo long long.


L Para reales, se espera una variable de tipo long double.
z Para enteros, se espera un argumento de tipo size_t.

Type Descripción

%c Imprime el carácter ASCII correspondiente

%d, %i Conversión decimal con signo de un entero

%x, %X Conversión hexadecimal sin signo

%p Dirección de memoria (puntero)

%e, %E Conversión a coma flotante con signo en notación científica


%f, %F Conversión a coma flotante con signo, usando punto decimal

%g, %G Conversión a coma flotante, usando la notación que requiera menor espacio

%o Conversión octal sin signo de un entero

%u Conversión decimal sin signo de un entero

%s Cadena de caracteres (terminada en '\0')

%% Imprime el símbolo %

Ejemplos de marcas de formato

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:

 Especificar el ancho mínimo: Podemos poner un entero entre el símbolo de


porcentaje (%) y el especificador de formato, para indicar que la salida
alcance un ancho mínimo. Por ejemplo, %10f asegura que la salida va a
tener al menos 10 espacios de ancho. Esto es útil cuando se van a imprimir
datos en forma de columnas. Por ejemplo, si tenemos:

 int num = 12;


 int num2 = 12345;
 printf("%d\n",num2);

printf("%5d\n",num);

se imprime:
12345
12

 Alinear la salida: Por defecto, la salida cuando se especifica ancho mínimo


está justificada a la derecha. Para justificarla a la izquierda, hay que
preceder el dígito de la anchura con el signo menos (-). Por ejemplo, %-
12d especifica un ancho mínimo de 12, saca la salida justificada a la
izquierda.

 Especificador de precisión: Puedes poner un punto (.) y un entero después


de especificar un ancho de campo mínimo para especificar la precisión. En
un dato de tipo float, esto permite especificar el número de decimales a
sacar. En un dato de tipo entero o en cadenas de caracteres, especifica el
ancho o longitud máxima.

1.5 función scanf()

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,...);

Aquí se pueden indicar varios especificadores de formato en la variable de tipo


puntero format, dependiendo del tipo que se quiere leer, como con printf. Si
todo va bien, devuelve el número de datos leídos. Si hay algún error,
devuelve EOF.
Si usamos el especificador %s para leer una cadena, la función lee caracteres
hasta encontrar un espacio, un intro, un tabulador, un tabulador vertical o un
retorno de carro. Los caracteres que lee se guardan en un array que debe ser
lo suficientemente grande como para almacenarlos. Añade el carácter nulo al
final automáticamente.

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.

Con scanf, a diferencia de printf, hay que pasar punteros a los


argumentos para que scanf pueda modificar sus valores.

El siguiente programa muestra el uso de scanf para distintos especificadores de


formato.

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.

1.6 Diferencias entre printf() y scanf()

Printf sirve para salir, imprimir, en pantalla, y scanf es para entrar, para introducir
datos.

2.1 Declarar 3 variables del tipo entero: cantidad_1,cantidad_2 y


resultado
3) Mostrar y leer lo siguiente:
Entre primera cantidad ...:
Entre segunda cantidad ..:

Leer a cantidad_1 y cantidad_2 y mostrarlo en resultado mediante las


siguientes salidas:
1) resultado = cantidad_1 + cantidad_2 imprimir el resultado.
2) resultado = cantidad_1 - cantidad_2 imprimir el resultado.
3) resultado = cantidad_1 * cantidad_2 imprimir el resultado.
4) resultado = cantidad_1 / cantidad_2 imprimir el resultado.
Conclusión

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.

También podría gustarte