domingo, 24 de febrero de 2013
Funciones Básicas de Entrada Y Salida
INTRODUCCIÓN
La gran mayoría de los programas necesitan la interacción
entre el usuario y la máquina. Desde la simple calculadora, hasta las complejas
GUIs necesitan que el usuario introduzca datos. En este tutorial vamos a
complicar un poco las cosas y vamos a construir un programa que no funcionará
si no interactuas con él.
Primero vamos a estudiar un poco la función scanf. Ésta es
el equivalente e inverso de la función printf, de hecho también se incluye en la librería estándar de
C (stdio.h). Funciona exactamente igual que printf, pero al inverso. Es decir
en vez de "devolver" datos, "recibirá". No te costará
aprenderla.
FUNCIONES BÁSICAS DE ENTRADA Y SALIDA
Hay varias maneras de usar entrada/salida en ensamblador,
vamos a presentar la más sencilla, usando funciones de alto nivel del lenguaje
de programación C. En C, las instrucciones básicas de entrada salida son printf
y scanf, las cuales permiten respectivamente enviar (print, imprimir) o recibir
(scan, leer) información.
La función printf permite escribir en la salida estándar
(monitor), proporcionando un formato específico para los datos a escribir.
Esta función recibe una cantidad variable de argumentos, en
los que solo uno de ellos es obligatorio: la cadena de formato. Este parámetro
es una cadena que permite indicar el formato que tendrá la impresión que se
quiere realizar, y en base a la cual se determina la cantidad y tipo de los
parámetros restantes.
Dicha cadena puede contenter caracteres comunes y
corrientes, los cuales se mostrarán en pantalla exactamente como se encuentran
en la cadena, y un segundo tipo de caracteres conocidos como especificadores de
formato, los cuales están formados por un símbolo de porcentaje (%) y un código
de formato.
Además de la cadena de formato, deben existir tantos
parámetros adicionales como especificadores de formato contenga la cadena, ya
que cada uno de los mismos proporciona el valor por el cual será sustituido
cada especificador al momento de mostrar la cadena por la pantalla. Dicho de
otra manera, la cadena de formato puede ser vista como una plantilla, mientras
que el resto de los parámetros son los valores que completan los campos vacíos
de dicha plantilla.
La función scanf permite leer desde la entrada estándar,
proporcionando un formato específico para los datos a recibir. De forma análoga
a la función printf, esta función permite reconocer los tipos de datos
especificados por el estándar ANSI de C tales como números, caracteres y
cadenas.
Los argumentos recibidos por la función scanf son similares
a los de la función printf, siendo de nuevo el primero de ellos la cadena de
formato. Sin embargo en este caso la cadena de formato es utilizada para especificar
una "plantilla" que deberá ser completada con la entrada
proporcionada por el usuario.
En este caso, por cada especificador de formato que se
encuentre en la cadena será necesario proporcionar un apuntador a la dirección
de memoria en la que será almacenado el elemento reconocido. Los
especificadores de formato compatibles con la función scanf son los mismos que
para printf.
Una diferencia importante entre las funciones printf y scanf
consiste en la manera en que se les pasan los argumentos. Todos los argumentos
de una llamada a la función scanf (a excepción de la cadena de formato) son
pasados por referencia, es decir, se proporciona la dirección de la variable y
no su valor. Esto se debe a que la función utiliza estas variables para
almacenar un valor leido de la entrada estándar y en consecuencia necesita
saber la posición de memoria en la que el mismo será almacenado.
En contraparte, la función printf no necesita conocer la
dirección de las variables, sino el valor que contienen para poder escribirlo
en la salida estándar. Por esta razón, todos los tipos de dato simple (enteros,
caracteres, etc.) son pasados por valor. Algunas otras variables como los
arreglos y las estructuras (esto incluye las cadenas ya que son arreglos de
caracteres) son pasados por referencia, pero esto se debe a limitaciones del
pase de parámetros por valor (ya que los parámetros se almacenan en la pila,
véase el capítulo de procedimientos) y no a que la función printf necesite
conocer la dirección de dichos argumentos per se.
Para ilustrar la utilización de ambas funciones desde un
programa en lenguaje ensamblador, se presentan dos ejemplos sencillos. Sin
embargo es importante hacer una acotación en este punto. Cuando se hace una
llamada a las funciones printf y scanf (o a cualquier otro procedimiento), el contenido
de los registros %eax, %ecx y %edx corre el riesgo de ser modificado. El motivo
de esto se explica en la parte de procedimientos, sin embargo, es importante
tener en cuenta este hecho al momento de programar, tomando las precauciones
necesarias para no perder información importante al llevar a cabo las
operaciones de lectura o escritura.
Para terminar una línea de salida y hacer que el cursor pase
a la línea siguiente se utiliza \n dentro del formato de salida.
/*Entrada y
Salida: scanf*/
#include
<stdio.h>
int main()
{
float a;
char b;
scanf("%f",&a);
getchar();
scanf("%c",&b);
getchar();
getchar();
return 0;
}
Ahora:
float a;
char b;
Declaramos
las variables, una de tipo float y una de tipo char.
printf("Introduce un numero: ");
Mostramos
por pantalla el mensaje entre comillas "".
scanf("%f",&a);
printf("Intrduciste el numero:
%f\n",a);
Y aquí
está scanf. Lo que hace está función es "escanear el teclado, en busca de
una tecla activa". Ahora vamos a ver como se utiliza. Entre paréntesis
tenemos un % y una letra, al igual que en printf usamos el % acompañado de una
letra para indicar con qué tipo de dato estamos trabajando. En este caso
estamos diciendo que el teclado escanee en busca de números flotantes. Al final
de las comillas encontramos otro argumento &a esto hace que lo que se
introduzca en el teclado, quede guardado en la variable a (declarada
anteriormente y de tipo float) y termina la función con su ; obligatorio.
El número,
entero (ej:2.00000) o decimal (ej:2.3456) quedó guardado en la variable a.
Ahora, para comprobar si la función scanf funciona, vamos a pedir que el
programa muestre la variable a en pantalla, esto ya lo conoces. ¡Sorpresa! En
pantalla aparece el número que introducimos previamente. Así de simple operan y
pueden coexistir las funciones más importantes de C.
En el
mismo programa incluyo otro ejemplo similar, pero, trabajando con caracteres.
Antes de
empezar con esta parte, quiero que se note el getchar() entre los dos
"bloques". La máquina interpreta el código ya compilado en el orden
en que fue escrito, sin ese getchar(), al imprimir en pantalla, se
"brincaría" a la siguiente parte, llegando incluso a dar errores
extraños, para mantener esto controlado, ponemos esta función, que espera a que
se presione "Enter" para seguir.
Ahora sí:
printf("Introduce una letra: ");
scanf("%c",&b);
printf("Introduciste la letra
%c\n\n",b);
Imprimimos
en pantalla el mensaje. Llamamos a scanf, pero fíjate que ahora usamos un %c,
por lo tanto escaneará en busca de caracteres (Recuerda que char, también puede
almacenar un entero, por lo tanto podrás introducir un número sin problemas) y
almacenamos en b (Previamente declarada como tipo char).
Después
imprimimos b en pantalla, el resultado es el mismo que introducimos
previamente.
Finalmente,
terminamos el programa con una frase "Presiona Enter para salir".
Quiero que se note que los signos guardan cierta
congruencia; por ejemplo, a es tipo float, en él se almacena un número y al
imprimirlo lo imprimimos como tipo float; b es del tipo char, va a almacenar un
caracter t se imprime como tal. Tal vez te pueda parecer redundante, pero puede
ser un error muy dificil de encontrar.
CONCLUSIONES
La E/S por consola se refiere a todas las operaciones que se
producen en el teclado y la pantalla de la computadora.
En el lenguaje de programación C utilizamos las funciones de
entrada y salida printf y scanf.
ANEXOS
Los especificadores de formato, más
usados, compatibles con la función printf son los siguientes:
Especificador
|
Formato
|
%c
|
Caracter
simple
|
%d
|
Entero con
signo en base decimal
|
%s
|
Cadena de
caracteres
|
%u
|
Entero sin
signo en base decimal
|
%x
|
Entero con
signo en base hexadecimal
|
TABLA 1 –
Especificadores de formato
martes, 19 de febrero de 2013
Variables Y Constantes
INTRODUCCIÓN
Uno de los
elementos fundamentales a la hora de diseñar programas, ya sea en el lenguaje
Pascal o en cualquiera de los otros de los lenguajes de programación
existentes, son las variables, de allí es su importancia en el aprendizaje de
la programación. Así pues, veamos en primer lugar qué son las variables.
Básicamente, una
variable es un espacio de memoria en donde podemos almacenar temporalmente datos
de cualquier tipo de información que necesitemos para realizar un proceso, y
tal como su nombre lo indica, las variables pueden cambiar su valor a lo largo
de la ejecución de un programa.
Además de las
variables, existe también lo que se denomina constantes, cuya función es
similar a la de las variables ya que también permiten almacenar datos
temporalmente en un espacio de memoria; pero a diferencia de éstas, los valores
que las constantes almacenan se mantienen fijos durante la ejecución de un programa;
de modo que, si durante la ejecución se intenta variar su valor se producirá un
error. Al igual que a las variables, a las constantes también debemos darles un
nombre para ser reconocidas dentro de un programa.
VARIABLES
Y CONSTANTES
En programación, las variables son espacios reservados en la
memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de
la ejecución de un programa. Una variable corresponde a un área reservada en la
memoria principal del ordenador pudiendo ser de longitud:
Ø
Fija.- Cuando el tamaño de la misma no variará a
lo largo de la ejecución del programa. Todas las variables, sean del tipo que
sean tienen longitud fija, salvo algunas excepciones — como las colecciones de
otras variables (arrays) o las cadenas.
Ø
Variable.- Cuando el tamaño de la misma puede
variar a lo largo de la ejecución. Típicamente colecciones de datos.
Las variables se representan con identificadores que hacen
referencia a un lugar de la memoria del programa en donde se almacena un dato.
Una variable está asociada a un tipo de datos, el cual y en función del tamaño
del mismo determina la cantidad de bytes que serán necesarios para almacenar la
variable. En el caso de colecciones y al contrario que con el resto de tipo de
datos, ya sean primitivos u objetos complejos, la memoria asignada a almacenar
tales variables no se conoce de antemano, lo cual lleva a establecer políticas
de reserva de memoria:
Ø
Reserva fija de memoria.- Implica predeterminar
la cantidad de memoria que se asignará a la colección. Es una política
extremadamente rígida, ya que llegados al final de la zona de memoria no se
podrían almacenar nuevos elementos.
Ø
Reserva variable de memoria.- Se dedica una zona
de memoria, pudiendo ser de un tamaño predeterminado o no, y en caso de
sobrepasarse dicha zona de memoria se vuelve a asignar otra zona, contigua o
no, para impedir la restricción mencionada arriba.
Por su contenido
®
Variables Numéricas: Son aquellas en las cuales
se almacenan valores numéricos, positivos o negativos, es decir almacenan
números del 0 al 9, signos (+ y -) y el punto decimal.
Ejemplo:
iva = 0.15 pi = 3.1416 costo = 2500
®
Variables Lógicas: Son aquellas que solo pueden
tener dos valores (cierto o falso) estos representan el resultado de una
comparación entre otros datos.
®
Variables Alfanuméricas: Está formada por
caracteres alfanuméricos (letras, números y caracteres especiales).
Ejemplo: letra = a apellido = lopez direccion = Av.
Libertad #190
Por su uso
®
Variables de Trabajo: Variables que reciben el
resultado de una operación matemática completa y que se usan normalmente dentro
de un programa. Ejemplo: Suma = a + b /c
®
Contadores: Se utilizan para llevar el control
del número de ocasiones en que se realiza una operación o se cumple una
condición. Con los incrementos generalmente de uno en uno.
®
Acumuladores: Forma que toma una variable y que
sirve para llevar la suma acumulativa de una serie de valores que se van
leyendo o calculando progresivamente.
En programación, una constante es un valor que no puede ser
alterado durante la ejecución de un programa.
Una constante corresponde a una longitud fija de un área
reservada en la memoria principal del ordenador, donde el programa almacena valores
fijos.
Por ejemplo:
Ø
El valor de pi = 3.1416
Por conveniencia, el nombre de las constantes suele
escribirse en mayúsculas en la mayoría de lenguajes.
En C las constantes se declaran con la directiva #define,
esto significa que esa constante tendrá el mismo valor a lo largo de todo el
programa. El identificador de una constante así definida será una cadena de
caracteres que deberá cumplir los mismos requisitos que el de una variable (sin
espacios en blanco, no empezar por un dígito numérico, etc).
Ejemplo:
#include <stdio.h>
#define PI
3.1415926
int main()
{
printf("Pi vale %f", PI);
return 0;
}
Lo cual mostrará por pantalla:
Pi vale 3.1415926
Es decir, PI es una constante a la que le hemos asignado el
valor 3.1415926 mediante la directiva #define.
La directiva #define también se puede utilizar para definir
expresiones más elaboradas con operadores (suma, resta, multiplicación etc) y
otras constantes que hayan sido definidas previamente, por ejemplo:
#define X 2.4
#define Y 9.2
#define Z X + Y
En C++ el uso de #define está totalmente desaconsejado, para
declarar una constante simbólica (equivalente a constante en C) se usa la
palabra clave const seguido del tipo de dato que queramos incluir.
CONCLUSIONES
Las constantes son un
dato numérico o bien, alfanumérico fijo, que no cambia durante la ejecución de
un programa. En el lenguaje de programación C, que es el programa que
utilizamos en este curso de algoritmos y programación, las constantes se
declaran con #define, quiere decir, que el valor de la constante será el mismo,
o sea, tendrá el mismo valor.
Las variables son espacios reservados en la memoria del
programa, estas variables pueden cambiar constantemente de valor a lo largo del
programa. Pueden ser de longitud fija o variable. Ya que no conocemos el lugar
en el que se almacenan estas variables, se establecen políticas de reserva de
memoria, que son reserva fija de memoria y reserva variable de memoria.
Las variables se clasifican en:
v
Numéricas
v
Lógicas
v
Alfanuméricas
v
De trabajo
v
Contadores
v
Acumuladores
Elementos De Léxico Y Sintaxis
INTRODUCCIÓN
Todo ser humano
para comunicarse necesita un lenguaje para poder entenderse, pues precisamente
lo mismo ocurre dentro de un lenguaje de programación con la única diferencia
de que para comprender dicho lenguaje, necesitamos de elementos y caracteres
especiales que definan o le den sentido al mensaje que intentamos enviar,
dichos elementos bien inmersos dentro de otros elementos, correspondientes al
léxico y sintaxis de un programa.
ELEMENTOS
DE LÉXICO Y SINTAXIS
Conjunto de
símbolos que se pueden usar en un lenguaje.
Estos símbolos o elementos básicos del
lenguaje, podrán ser de los siguientes:
a.
Identificadores:
nombres simbólicos que se darán a ciertos elementos de programación (p.e.
nombres de variables, tipos, módulos, etc.).
b.
Constantes:
datos que no cambiarán su valor a lo largo del programa.
c.
Operadores:
símbolos que representarán operaciones entre variables y constantes.
d.
Instrucciones:
símbolos especiales que representarán estructuras de procesamiento, y de
definición de elementos de programación.
e.
Comentarios:
texto que se usará para documentar los programas
Consta de unas definiciones, denominadas reglas sintácticas
o producciones que especifican la secuencia de símbolos que forman una frase
del lenguaje. Estas reglas dicen si una frase está bien escrita o no.
Las reglas sintácticas pueden contener dos tipos de
elementos:
®
Elementos Terminales (∈
Vocabulario)
®
Elementos no Terminales, que son construcciones
intermedias de la gramática.
Existen diversas formas de especificar las reglas, pero
únicamente vamos a ver dos de ellas:
®
Notación BNF (Backus-Naur Form). Es de las
primeras notaciones que se empezó a utilizar para especificar lenguajes de
programación.
®
Notación BNF: <elemento no terminal>::=
Definición1 | Definición2 | ...
Los elementos terminales, o sea, que pertenecen al
vocabulario, se escriben tal cual.
Los elementos no terminales se escriben entre los símbolos
<>.
Ejemplo: Descripción sintáctica de una expresión matemática
en notación BNF:
---> 4*(3+1)
<expresión> ::= <numero> | (<expresión>) |
<expresión><operador><expresión>
<operador> ::= + | - | * | /
<numero> ::= <digito> |
<numero><digito>
<digito> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
®
Diagramas sintácticos. Es una representación
gráfica de la sintaxis. Tiene la ventaja de ser más intuitivo.
Los elementos terminales se inscriben en una elipse. Los
elementos no terminales se escriben en un rectángulo.
CONCLUSIONES
El léxico, podríamos definirlo como la serie de símbolos
básicos que se utilizan en el lenguaje de programación, estos símbolos o
elementos son operadores, constantes, identificadores, instrucciones y
comentarios.
Por otra parte, la sintaxis, consta de ciertas reglas que
nos dicen el orden en el que los símbolos o elementos que forman frases en el
lenguaje de programación, dichas reglas nos indican si la frase es correcta o
no lo es.
martes, 12 de febrero de 2013
Puntos Importantes De La Unidad 1
A mi criterio, los puntos más importantes en esta unidad, fueron los siguientes:
Lo que significa un lenguaje de programación; es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo.
Los tipos de lenguaje de programación que podemos encontrar, como son los lenguajes de bajo nivel, de medio nivel (entre ellos el lenguaje C, que es el lenguaje que manejaremos) y de alto nivel. También la historia y desarrollo de dicho lenguaje C.
Al igual que el manejo de memoria del lenguaje C, donde encontramos la memoria dinámica, que es aquella que se reserva en tiempo de ejecución, su tamaño puede variar durante la ejecución del programa; y también encontramos la memoria estática, que es el espacio de memoria que se crea al declarar variables de cualquier tipo de dato. En esta memoria podemos ver funciones como: malloc, calloc, realloc, free, sizeof.
Las palabras reservadas de igual manera son un punto muy importante, estas palabras se utilizan como identificadores internos clave, para sus tipos de datos, estructuras de control, sus instrucciones y características propias del lenguaje.
La realización de la práctica en el programa Borland C++, ya que nos sirvió para entender mejor las tareas de investigación antes elaboradas.
La elaboración de diagramas de flujo, el como elaborar dichos diagramas.
Y por supuesto, el concepto básico de pseudocódigo y el ver algunos ejemplos para comprender de una forma más completa dicho concepto.
Pseudocódigos
Se
denomina pseudocódigo a un lenguaje basado en normas léxicas y gramaticales
similares a las utilizadas por los lenguajes de programación. El pseudocódigo
combina lenguaje coloquial con las normas
gramaticales de los lenguajes de programación. Es una herramienta útil en las
fases de análisis y diseño de software.
El
pseudocódigo permite diseñar algoritmos utilizando frases en lenguaje común,
instrucciones de programación y palabras clave para definir las estructuras
básicas de control. Los algoritmos escritos en pseudocódigo se puede convertir
fácilmente a cualquier lenguaje de programación.
Ejemplos de Pseudocódigo
Ejemplo: Realizar el pseudocódigo de
un programa que permita calcular el área de un rectángulo. Se debe introducir
la base y la altura para poder realizar el cálculo..
Programa; área
Entorno: BASE,
ALTURA, AREA son número enteros
Algoritmo:
escribir “Introduzca
la base y la altura”
leer BASE,
ALTURA
calcular AREA
= BASE * ALTURA
escribir “El
área del rectángulo es “AREA
Finprograma
Ejemplo: Realizar el pseudocódigo que
permita al usuario introducir por teclado dos notas, calculando la suma y el
producto de las notas.
Programa: SumaProducto
Entorno: NOTA1,NOTA2,SUMA,PRODUCTO son
números enteros
Algoritmo:
escribir “Introduzca
las notas”
leer NOTA1,NOTA2
calcular SUMA =
NOTA1 + NOTA2
calcular PRODUCTO
= NOTA1 * NOTA2
escribir “La
suma de las dos notas es:” SUMA
escribir “El
producto de las dos notas es :”PRODUCTO
Finprograma
Ejemplo: Realizar el pseudocódigo de
un programa que permita saber si un número es mayor, menor o igual a cero.
Programa: ComparaNúmeros
Entorno:
NUMERO es un número entero
Algoritmo:
Escribir “Introduzca
un número “
leer NUMERO
SI NUMERO>0
ENTONCES
escribir “El
número introducido es positivo”
SI NO
SI NUMERO<0 ENTONCES
escribir “El
número introducido es negativo”
SI NO
escribir “El
número es cero”
FINSI
FINSI
Finprograma
Práctica 1
PRÁCTICA #1
Objetivo: Identificar los principales elementos del entorno de
programación.
Instrucciones:
1) Abrir el programa “Borland C++”.
2) Elaborar una lista de elementos en el menú:
®
cortar
®
pegar
®
bordes de página
®
fuentes
®
temas
®
gráfico
®
encabezado
®
wordArt
®
símbolo
®
ortografía
3) Dibujar las diferentes partes del entorno.
4) Escribir códigos.
Suscribirse a:
Entradas (Atom)