pc06-Funciones de operaciones
aritméticas con datos enteros introducidos
por teclado de pantalla y son checados.
/*pc06-Operaciones aritméticas
con datos enteros introducidos
por teclado de pantalla y en main
despues de llamar las funciones,
imprime los resultados:
sumar +
restar -
multiplicar *
dividir /
resto %
*/
/*Ver pc02 y seguir los procedimientos
de introducir el programa con el editor de
CCTools, guardalo con save como pc06.c,
compilar con run, si hay errores corregirlos
en el editor, hasta que se ejecute bien y se
obtengan los resultados deseados*/
/*Un programa en C primero debe
incluir librerías */
#include <stdio.h>
/*Un programa en C esta constituido
por funciones*/
/*Función de suma fsuma recibe de
main los enteros int v1, v2 y
realiza la operación aritmética de
suma y retorna un resultado
entero int r1 a la función main*/
int fsuma(int v1, int v2){
int r1;
r1=v1+v2;
return r1;
}
/*Función de resta fresta recibe de
main los enteros int v1, v2 y
realiza la operación aritmética de
resta y retorna un resultado
entero int r1 a la función main*/
int fresta(int v1, int v2){
int r1;
r1=v1-v2;
return r1;
}
/*Función de multiplica fmultiplica recibe de
main los enteros int v1, v2 y
realiza la operación aritmética de
multiplica y retorna un resultado
entero int r1 a la función main*/
int fmultiplica(int v1, int v2){
int r1;
r1=v1*v2;
return r1;
}
/*Función de divide fdivide recibe de
main los enteros int v1, v2 y
realiza la operación aritmética de
divide y retorna un resultado
entero int r1 a la función main*/
int fdivide(int v1, int v2){
int r1;
r1=v1/v2;
return r1;
}
/*Función de resto fresto recibe de
main los enteros int v1, v2 y
realiza la operación aritmética de
resto y retorna un resultado
entero int r1 a la función main*/
int fresto(int v1, int v2){
int r1;
r1=v1%v2;
return r1;
}
/*Un programa en C esta constituido
por funciones, una debe ser main como
punto de entrada al ejecutarse el programa*/
int main(){
/*Una función como main es una secuencia de
instrucciones que realiza operaciones
con datos. Primero debe definirse los datos asignando
una variable con un nombre, como dato1 y
dato2 y su tipo de datos enteros*/
int dato1,dato2,suma,resta,multiplica,divide,resto;
/*Asignamos un min. y max a los enteros
permitidos*/
int imin = -2000000;
int imax = 2000000;
/*Con la definición anterior solo
se reservo la memoria con un nombre,
ahora hay que darle un valor inicial a los
datos*/
dato1=0;
dato2=0;
suma=0;
resta=0;
multiplica=0;
divide=0;
resto=0;
Desplegamos el entero int máximo y minimo
permitido*/
printf("Entero int Max Permitido: %d \n",imax);
printf("Entero int Min Permitido: %d \n",imin);
/*Desplegamos que se introduzcan
los datos por la pantalla*/
printf("Introduce dato1 entero: ");
scanf("%d",&dato1);
/*Utilizamos la instrucción de decisión o
control if para probar dos condiciones de los
valores de datos introducidos son
permitidos, si alguna o las dos se cumplen,
el programa termina */
if((dato1>=imax) || (dato1<=imin)){
printf("dato1 fuera de rango...");
return 0;
}
printf("Introduce dato2 entero: ");
scanf("%d",&dato2);
if((dato2>=imax) || (dato2<=imin)){
printf("dato2 fuera de rango...");
return 0;
}
/*Desplegar los datos usando la función
printf de la biblioteca stdio*/
printf("Operaciones Aritméticas\ncon datos enteros\n");
printf("dato1 = %d \n",dato1);
printf("dato2 = %d \n",dato2);
/*Ahora se realiza la operación de
suma, llamando la función fsuma */
suma=fsuma(dato1,dato2);
/*Desplegar los datos y el resultado
de las suma usando la función printf
de la biblioteca stdio*/
printf("Suma: dato1 + dato2 = %d \n",suma);
/*Ahora se realiza la operación de
resta, llamando la función fresta*/
resta=fresta(dato1,dato2);
/*Desplegar los datos y el resultado
de la resta usando la función printf de la
biblioteca stdio*/
printf("Resta: dato1 - dato2 = %d \n",resta);
/*Ahora se realiza la operación de
multiplica, llamando la función fmultiplica*/
multiplica=fmultiplica(dato1,dato2);
/*Desplegar los datos y el resultado
de la multiplicación usando la función printf de la
biblioteca stdio*/
printf("Multiplica: dato1 * dato2 = %d \n",multiplica);
/*Ahora se realiza la operación de
divide, llamando la función fdivide*/
divide=fdivide(dato1,dato2);
/*Desplegar los datos y el resultado
de la división usando la función printf de la
biblioteca stdio*/
printf("Divide: dato1 / dato2 = %d \n",divide);
/*Ahora se realiza la operación de
resto de la división, llamando fresto*/
resto=fresto(dato1,dato2);
/*Desplegar los datos y el resultado
del resto usando la función printf de la
biblioteca stdio*/
printf("Resto: dato1 %% dato2 = %d \n",resto);
/*La función main debe tener un retorno
de 0 errores al sistema operativo*/
return 0;
}
Vistas de página en total
martes, 17 de septiembre de 2013
lunes, 16 de septiembre de 2013
Programación Android con CCTools y C - pc05_Ent_teclado
pc05-Operaciones aritméticas
con datos enteros introducidos
con teclado de pantalla:
/*pc05-Operaciones aritméticas
con datos enteros introducidos
con teclado de pantalla:
sumar +
restar -
multiplicar *
dividir /
resto %
*/
/*Ver pc02 y seguir los procedimientos
de introducir el programa con el editor de
CCTools, guardalo con save como pc05.c,
compilar con run, si hay errores corregirlos
en el editor, hasta que se ejecute bien y se
obtengan los resultados deseados*/
/*Un programa en C primero debe
incluir librerías */
#include <stdio.h>
/*Un programa en C esta constituido
por funciones, una debe ser main*/
int main(){
/*Una función como main es una secuencia de
instrucciones que realiza operaciones
con datos. Primero debe definirse los datos asignando
una variable con un nombre, como dato1 y
dato2 y su tipo de datos enteros*/
int dato1,dato2,suma,resta,multiplica,divide,resto;
/*Con la definición anterior solo
se reservo la memoria con un nombre,
ahora hay que darle un valor inicial
de 0 a los datos*/
dato1=0;
dato2=0;
suma=0;
resta=0;
multiplica=0;
divide=0;
resto=0;
/*Desplegamos que se introduzcan
los datos por la pantalla*/
printf("Introduce dato1 entero: ");
scanf("%d",&dato1);
printf("Introduce dato2 entero: ");
scanf("%d",&dato2);
/*Desplegar los datos usando la función
printf de la biblioteca stdio*/
printf("Operaciones Aritméticas\ncon datos enteros\n");
printf("dato1 = %d \n",dato1);
printf("dato2 = %d \n",dato2);
/*Ahora se realiza la operación de suma*/
suma=dato1+dato2;
/*Desplegar el resultado
de la suma usando la función printf
de la biblioteca stdio*/
printf("Suma: dato1 + dato2 = %d \n",suma);
/*Ahora se realiza la operación de resta*/
resta=dato1-dato2;
/*Desplegar los datos y el resultado
de la resta usando la función printf de la
biblioteca stdio*/
printf("Resta: dato1 - dato2 = %d \n",resta);
/*Ahora se realiza la operación de multiplica*/
multiplica=dato1*dato2;
/*Desplegar los datos y el resultado
de la multiplicación usando la función printf de la
biblioteca stdio*/
printf("Multiplica: dato1 * dato2 = %d \n",multiplica);
/*Ahora se realiza la operación de divide*/
divide=dato1/dato2;
/*Desplegar los datos y el resultado
de la división usando la función printf de la
biblioteca stdio*/
printf("Divide: dato1 / dato2 = %d \n",divide);
/*Ahora se realiza la operación
de resto de la división*/
resto=dato1%dato2;
/*Desplegar los datos y el resultado
del resto usando la función printf de la
biblioteca stdio*/
printf("Resto: dato1 %% dato2 = %d \n",resto);
/*La función main debe tener un retorno
de 0 errores al sistema operativo*/
return 0;
}
con datos enteros introducidos
con teclado de pantalla:
/*pc05-Operaciones aritméticas
con datos enteros introducidos
con teclado de pantalla:
sumar +
restar -
multiplicar *
dividir /
resto %
*/
/*Ver pc02 y seguir los procedimientos
de introducir el programa con el editor de
CCTools, guardalo con save como pc05.c,
compilar con run, si hay errores corregirlos
en el editor, hasta que se ejecute bien y se
obtengan los resultados deseados*/
/*Un programa en C primero debe
incluir librerías */
#include <stdio.h>
/*Un programa en C esta constituido
por funciones, una debe ser main*/
int main(){
/*Una función como main es una secuencia de
instrucciones que realiza operaciones
con datos. Primero debe definirse los datos asignando
una variable con un nombre, como dato1 y
dato2 y su tipo de datos enteros*/
int dato1,dato2,suma,resta,multiplica,divide,resto;
/*Con la definición anterior solo
se reservo la memoria con un nombre,
ahora hay que darle un valor inicial
de 0 a los datos*/
dato1=0;
dato2=0;
suma=0;
resta=0;
multiplica=0;
divide=0;
resto=0;
/*Desplegamos que se introduzcan
los datos por la pantalla*/
printf("Introduce dato1 entero: ");
scanf("%d",&dato1);
printf("Introduce dato2 entero: ");
scanf("%d",&dato2);
/*Desplegar los datos usando la función
printf de la biblioteca stdio*/
printf("Operaciones Aritméticas\ncon datos enteros\n");
printf("dato1 = %d \n",dato1);
printf("dato2 = %d \n",dato2);
/*Ahora se realiza la operación de suma*/
suma=dato1+dato2;
/*Desplegar el resultado
de la suma usando la función printf
de la biblioteca stdio*/
printf("Suma: dato1 + dato2 = %d \n",suma);
/*Ahora se realiza la operación de resta*/
resta=dato1-dato2;
/*Desplegar los datos y el resultado
de la resta usando la función printf de la
biblioteca stdio*/
printf("Resta: dato1 - dato2 = %d \n",resta);
/*Ahora se realiza la operación de multiplica*/
multiplica=dato1*dato2;
/*Desplegar los datos y el resultado
de la multiplicación usando la función printf de la
biblioteca stdio*/
printf("Multiplica: dato1 * dato2 = %d \n",multiplica);
/*Ahora se realiza la operación de divide*/
divide=dato1/dato2;
/*Desplegar los datos y el resultado
de la división usando la función printf de la
biblioteca stdio*/
printf("Divide: dato1 / dato2 = %d \n",divide);
/*Ahora se realiza la operación
de resto de la división*/
resto=dato1%dato2;
/*Desplegar los datos y el resultado
del resto usando la función printf de la
biblioteca stdio*/
printf("Resto: dato1 %% dato2 = %d \n",resto);
/*La función main debe tener un retorno
de 0 errores al sistema operativo*/
return 0;
}
Programación Android con CCTools y C - pc04_Op_Aritméticas
pc04 Operaciones aritméticas
/*pc04 Operaciones aritméticas
con datos enteros:
sumar +
restar -
multiplicar *
dividir /
resto %
*/
/*Ver pc02 y seguir los procedimientos
de introducir el programa con el editor de
CCTools, guardalo con save como pc04.c,
compilar con run, si hay errores corregirlos
en el editor, hasta que se ejecute bien y se
obtengan los resultados deseados*/
/*Un programa en C primero debe
incluir librerías a usar*/
#include <stdio.h>
/*Un programa en C esta constituido
por funciones, una debe ser main*/
int main(){
/*Una función como main es una secuencia de
instrucciones que realiza operaciones
con datos. Primero debe definirse los datos asignando
una variable con un nombre, como dato1 y
dato2 y su tipo de datos enteros*/
int dato1,dato2,suma,resta,multiplica,divide,resto;
/*Con la definición anterior solo
se reservo la memoria con un nombre,
ahora hay que darle un valor a los
datos*/
dato1=4567;
dato2=1256;
suma=0;
resta=0;
multiplica=0;
divide=0;
resto=0;
/*Ahora se realiza la operación
de suma*/
suma=dato1+dato2;
/*Desplegar los datos y el resultado
de las suma usando la función printf
de la biblioteca stdio*/
printf("Operaciones Aritméticas\ncon datos enteros\n");
printf("dato1 = %d \n",dato1);
printf("dato2 = %d \n",dato2);
printf("Suma: dato1 + dato2 = %d \n",suma);
/*Ahora se realiza la operación
de resta*/
resta=dato1-dato2;
/*Desplegar los datos y el resultado
de la resta usando la función printf de la
biblioteca stdio*/
printf("Resta: dato1 - dato2 = %d \n",resta);
/*Ahora se realiza la operación
de multiplica*/
multiplica=dato1*dato2;
/*Desplegar los datos y el resultado
de la multiplicación usando la función printf de la
biblioteca stdio*/
printf("Multiplica: dato1 * dato2 = %d \n",multiplica);
/*Ahora se realiza la operación
de divide*/
divide=dato1/dato2;
/*Desplegar los datos y el resultado
de la división usando la función printf de la
biblioteca stdio*/
printf("Divide: dato1 / dato2 = %d \n",divide);
/*Ahora se realiza la operación
de resto de la división*/
resto=dato1%dato2;
/*Desplegar los datos y el resultado
del resto usando la función printf de la
biblioteca stdio*/
printf("Resto: dato1 %% dato2 = %d \n",resto);
/*La función main debe tener un retorno
de 0 errores al sistema operativo*/
return 0;
}
/*pc04 Operaciones aritméticas
con datos enteros:
sumar +
restar -
multiplicar *
dividir /
resto %
*/
/*Ver pc02 y seguir los procedimientos
de introducir el programa con el editor de
CCTools, guardalo con save como pc04.c,
compilar con run, si hay errores corregirlos
en el editor, hasta que se ejecute bien y se
obtengan los resultados deseados*/
/*Un programa en C primero debe
incluir librerías a usar*/
#include <stdio.h>
/*Un programa en C esta constituido
por funciones, una debe ser main*/
int main(){
/*Una función como main es una secuencia de
instrucciones que realiza operaciones
con datos. Primero debe definirse los datos asignando
una variable con un nombre, como dato1 y
dato2 y su tipo de datos enteros*/
int dato1,dato2,suma,resta,multiplica,divide,resto;
/*Con la definición anterior solo
se reservo la memoria con un nombre,
ahora hay que darle un valor a los
datos*/
dato1=4567;
dato2=1256;
suma=0;
resta=0;
multiplica=0;
divide=0;
resto=0;
/*Ahora se realiza la operación
de suma*/
suma=dato1+dato2;
/*Desplegar los datos y el resultado
de las suma usando la función printf
de la biblioteca stdio*/
printf("Operaciones Aritméticas\ncon datos enteros\n");
printf("dato1 = %d \n",dato1);
printf("dato2 = %d \n",dato2);
printf("Suma: dato1 + dato2 = %d \n",suma);
/*Ahora se realiza la operación
de resta*/
resta=dato1-dato2;
/*Desplegar los datos y el resultado
de la resta usando la función printf de la
biblioteca stdio*/
printf("Resta: dato1 - dato2 = %d \n",resta);
/*Ahora se realiza la operación
de multiplica*/
multiplica=dato1*dato2;
/*Desplegar los datos y el resultado
de la multiplicación usando la función printf de la
biblioteca stdio*/
printf("Multiplica: dato1 * dato2 = %d \n",multiplica);
/*Ahora se realiza la operación
de divide*/
divide=dato1/dato2;
/*Desplegar los datos y el resultado
de la división usando la función printf de la
biblioteca stdio*/
printf("Divide: dato1 / dato2 = %d \n",divide);
/*Ahora se realiza la operación
de resto de la división*/
resto=dato1%dato2;
/*Desplegar los datos y el resultado
del resto usando la función printf de la
biblioteca stdio*/
printf("Resto: dato1 %% dato2 = %d \n",resto);
/*La función main debe tener un retorno
de 0 errores al sistema operativo*/
return 0;
}
Programación Android con CCTools y C - pc03_Suma
pc03-Programa suma de dos datos enteros
//Programa suma de dos datos enteros
/*Ver pc02 y seguir los procedimientos
de introducir el programa con el editor de
CCTools, guardalo con save como pc03.c,
compilar con run, si hay errores corregirlos
en el editor, hasta que se ejecute bien y se
obtengan los resultados deseados*/
/*Un programa en C primero debe
incluir librerías necesarias*/
#include <stdio.h>
/*Un programa en C esta constituido
por funciones, una debe ser main*/
int main(){
/*Una función como main es una secuencia de
instrucciones que realiza operaciones
con datos. Primero debe definirse los datos asignando
una variable con un nombre, como dato1 y
dato2 y su tipo de datos enteros*/
int dato1, dato2,suma;
/*Con la definición anterior solo
se reserva la memoria con un nombre,
ahora hay que darle un valor a los
datos*/
dato1=1756;
dato2=1367;
suma=0;
/*Ahora se realiza la operación de
de suma*/
suma=dato1+dato2;
/*Desplegar los datos y el resultado
de la suma usando la función printf de la
biblioteca stdio*/
printf("Suma\n");
printf("dato1 = %d \n",dato1);
printf("dato2 = %d \n",dato2);
printf("dato1 + dato2 = %d \n",suma);
/*La función main debe tener un retorno
de 0 errores al sistema operativo*/
return 0;
}
//Programa suma de dos datos enteros
/*Ver pc02 y seguir los procedimientos
de introducir el programa con el editor de
CCTools, guardalo con save como pc03.c,
compilar con run, si hay errores corregirlos
en el editor, hasta que se ejecute bien y se
obtengan los resultados deseados*/
/*Un programa en C primero debe
incluir librerías necesarias*/
#include <stdio.h>
/*Un programa en C esta constituido
por funciones, una debe ser main*/
int main(){
/*Una función como main es una secuencia de
instrucciones que realiza operaciones
con datos. Primero debe definirse los datos asignando
una variable con un nombre, como dato1 y
dato2 y su tipo de datos enteros*/
int dato1, dato2,suma;
/*Con la definición anterior solo
se reserva la memoria con un nombre,
ahora hay que darle un valor a los
datos*/
dato1=1756;
dato2=1367;
suma=0;
/*Ahora se realiza la operación de
de suma*/
suma=dato1+dato2;
/*Desplegar los datos y el resultado
de la suma usando la función printf de la
biblioteca stdio*/
printf("Suma\n");
printf("dato1 = %d \n",dato1);
printf("dato2 = %d \n",dato2);
printf("dato1 + dato2 = %d \n",suma);
/*La función main debe tener un retorno
de 0 errores al sistema operativo*/
return 0;
}
jueves, 12 de septiembre de 2013
Programación Android con CCTools y C - pc02
La
tecnología de la información actual es resultado de la evolución universal y
desarrollo humano. Estamos inmersos en un ambiente de grandes logros
tecnológicos y científicos, como los sistemas de comunicaciones globales como
internet y el hombre usan las computadoras y teléfonos inteligentes para
comunicarse por internet y otras muchas actividades de los teléfonos
inteligentes como hablar por teléfono, chatear, oír música, tomar fotos y
videos, ver los videos, usar office con Word, Excel, Power Point, Gps para
buscar sitios, comunicarse en las redes sociales de facebook, etc. Es increíble como después de un largo camino
de desarrollo tecnológico de grandes computadoras que utilizaban un gran
espacio y gran consumo de energía, hemos llegado a los teléfonos inteligentes
que ocupan el espació de nuestra mano y el consumo de energía es mínimo y mucho
más rápidos y poderosos. Es importante hacer un estudio exhaustivo de los
teléfonos inteligentes, para comprender como funcionan y de que partes están
hechos, en parte ya hemos creado páginas y blogs que hablan de ello, como la de
teléfonos inteligentes y la serie de programación de android con AIDE y Java en
la que desarrollamos un base de conocimientos EYDH sencilla de la evolución y
desarrollo humano. Pero Java solo esta relacionado a las aplicaciones de
android. Para profundizar en el funcionamiento con los teléfonos inteligentes
Java no es suficiente, necesitamos el lenguaje de Computadora C que está
orientado a un nivel de programación de sistemas, tal como el sistema operativo
Android, los compiladores como Java, editores, Bases de datos como Sqlite entre
otros. Ahora iniciaremos el estudio de Programación Android con CCTools y el
Lenguaje de Computadora C. El programa CCTools es un paquete de desarrollo
integrado que utiliza el lenguaje de Computadora C y C++ y está basado en el
sistema de desarrollo de GCC. Es parecido AIDE que utiliza el lenguaje a Java,
ya existe la opción de programar también en lenguaje de Computadora C
instalando la extensión NDK y que posteriormente trataremos esta opción. La herramienta
de desarrollo de CCTools se obtiene de forma gratuita conectándose al centro de
distribución de Google Play por internet y se descargar el programa de
aproximadamente 100 MBytes. ¿Porque estudiar el lenguaje de Computadora C que
aparentemente es más difícil que Java? La principal razón es que si deseamos
comprender el sistema operativo Android y otros programas de sistemas como
compiladores y los manejadores de base de datos, es necesario conocer el
lenguaje de Computadora C y C++. Además cabe señalar que el sistema operativo
Android, desciende de Linux y este de Unix y los tres sistemas operativos
/Unix/Linux/Android tienen en común el lenguaje de Computadora C.
Pero
también el lenguaje de Computadoras C nos sirve para desarrollar aplicaciones. Iniciamos
nuestro primer programa del Lenguaje de Computadora C con el programa clásico
de Hola…..Mi primer programa en C.
1. Debemos
bajar e instalar el programa CCTools.
2. En la
pantalla principal seleccionamos y presionamos el programa CCTools.
3. Nos da
la primera pantalla y presionamos menu y seleccionamos settings u opciones para quitar la barra de
herramientas, quitamos la palomita.
4. Ahora
tenemos más espacio para nuestros programas y dejamos la secuencia de líneas.
5. Escribimos
con el editor de CCTools el siguiente programa pc01.c
#include
<stdio.h>
int
main(void){
printf(“Hola …..Mi primer programa
en C. \n”);
return 0;
}
6.
Presionamos la tecla de menú y seleccionamos Save as y le damos el nombre de
pc01.c
8. Al
guardar el archivo pc01.c aparece el programa como:
9.
Presionamos menú y seleccionamos Run para compilar el programa pc01.c
10.
Cualquier
programa de computación define primero sus datos y después la secuencia
de
instrucciones que los manipulan. Un programa en lenguaje de Computadora C
está
constituido por funciones, definiedo los parametro de entrada de la
función como en main void y el tipo de datos que le regresara la función
llamada, int en main. Todo programa siempre debe tener una función
principal o main y a
continuación un block de instrucciones encerrado en llaves. Solamente
tenemos una llamada a la función de printf para desplegar el mensaje y
esta en la biblioteca de funciones <stdio.h>. Toda función
incluyendo main, debe
tener un regreso o return a la función que la llamo, en este caso al
sistema
operativo Android.
Al
ejecutarse el programa en la pantalla aparece el mensaje de Hola…..Mi primer
programa en C.
11.
Maravilloso
e increíble, tengo en mi teléfono inteligente Samsung Galaxy mini
con android 2.2, una herramienta de programación como CCTools para
editar los
programas, compilarlos y ejecutarlos en el lenguaje de Computadora C. Mi
teléfono tiene poca capacidad en el disco duro, tuve que quitar muchas
aplicaciones estando en root.
miércoles, 11 de septiembre de 2013
Programación Android con CCTools y C - pc01
Lenguaje C
El lenguaje humano se usa para comunicar a los hombres que forman una sociedad. Desde que el hombre apareció en la tierra, invento un lenguaje primitivo de señas y palabras guturales, para comunicarse y evoluciono hasta llegar a crear la diversidad de lenguas actuales que existen en el mundo. También utilizo su inteligencia para crear herramientas como las armas primitivas para protegerse de los depredadores y creo herramientas que le ayudaron en sus actividades diarias, hasta llegar a la época actual y crear máquinas manuales como la tejedora o para realizar cálculos aritméticos como el ábaco y finalmente máquinas automáticas que pueden ser mecánicas, electromecánicas, eléctricas y electrónicas aplicadas a diferentes ramas industriales.
A partir de 1948 que se inventa la computadora electrónica como una máquina automática que debe programarse para que pueda automatizar alguna actividad del hombre. Para programar una computadora se necesita un lenguaje que conozca el programador y dar instrucciones para manipular datos y se obtenga la solución de un problema científico o técnico de las diversas áreas del conocimiento humano. Todas las computadoras electrónicas solo entienden el lenguaje binario de bits 1 y 0, físicamente el bit 1 se representa por un voltaje de 5 volts o menos y el bit 0 se representa por 0 volts. Un programa es una secuencia de instrucciones que manipulan datos. Las instrucciones de una computadora en general están organizadas en una secuencia de varios bits, una parte corresponde a la propia instrucción y otra parte a los datos. Las instrucciones pueden ser aritméticas, lógicas, transferencia, desplazamiento, condicionales, entrada y salida. Los datos pueden ser enteros, decimales o punto flotante, cadenas de caracteres y arreglos. Programar una computadora a nivel de bits o lenguaje de máquina es muy difícil y laborioso pero no imposible.
Para facilitar la programación de la computadora se crearon los lenguajes de programación de nivel bajo, medio y alto. El lenguaje ensamblador es de nivel bajo y más cercano al lenguaje de máquina. El lenguaje C es de nivel medio. Hay varios lenguajes de nivel superior como los lenguajes Fortran, Cobol, Visual Basic, C++ y Java. Cuando se programa en uno de estos lenguajes es necesario un programa interprete o un traductor a lenguaje de máquina o mejor dicho al lenguaje de máquina del procesador que solo entiende bits de 1 y 0.
Existen varios intérpretes como el Basic y el Pyton. Para realizar un programa con un intérprete se utiliza su editor para escribir las instrucciones del lenguaje, cuando se termina se ejecuta y va procesando instrucción por instrucción hasta encontrar el fin del programa, si no hay errores se guarda el programa con un nombre en un archivo y queda listo para volver a interpretar cada instrucción y ejecutarse hasta finalizar.
Existen varios compiladores para los diferentes niveles de lenguajes y un programa realizado con un lenguaje de nivel bajo como un ensamblador, utiliza un editor para escribir las instrucciones en ensamblador, cuando se termina se guarda con un nombre el programa, ahora se llama al programa compilador o ensamblador y el programa se ensambla, si existen errores se corrigen con el editor y se vuelve a ensamblar, si ya no hay errores se crea un archivo ejecutable con todas las instrucciones y datos del programa, listo para ejecutarse sin volver a ensamblarse.
Un programa realizado con un lenguaje C de nivel medio y alto como Fortran, Cobol o C++, utiliza un editor para escribir las instrucciones en el lenguaje correspondiente, cuando se termina se guarda con el nombre del programa, ahora se llama al programa compilador por ejemplo de C y se compila el programa, si hay errores se corrigen con el editor, se vuelve a compilar, si no da errores deja el programa en lenguaje ensamblador y se realiza un segundo paso para llamar al ensamblador y ensamblar el programa, si existen errores se corrigen con el editor y se vuelve a compilar y ensamblar, si ya no hay errores se crea un archivo ejecutable con todas las instrucciones y datos del programa, listo para ejecutarse sin volver a compilarse y ensamblarse.
Un programa realizado con un lenguaje de nivel alto como Java, utiliza, como hemos tratado en la serie de blogs de Programación Android con AIDE y Java su editor para escribir las instrucciones en el lenguaje de Java, cuando se termina se guarda con el nombre del programa, ahora se llama al programa compilador de Java y compila el programa, si hay errores se corrigen con el editor, se vuelve a compilar, si no da errores deja el programa en lenguaje intermedio de una Máquina Virtual de Java se realiza un segundo paso para llamar al intérprete de la Máquina Virtual de Java y ejecutar el programa, si ya no hay errores se crea un archivo ejecutable jar con todas las instrucciones y datos del programa, listo para ejecutarse sin volver a compilarse. El programa en el archivo jar se puede ejecutar en cualquier sistema operativo que tenga el interprete de la Máquina Virtual Java. Para el caso del sistema operativo Android además de tener el intérprete de la Máquina Virtual Java tiene la Máquina Virtual Dalvik para optimizar los programas de los teléfonos inteligentes que utilizan el sistema operativo Android. Es importante decir que un programa ejecutado por un intérprete es más lento que un programa compilado.
Recordemos que una computadora está hecha de una parte física o hardware y otra de programas o software. La parte física tiene varios dispositivos y equipos periféricos con componentes mecánicos, eléctricos y electrónicos tanto internos y externos. La parte de software o de programas contiene programas del sistema como el sistema operativo, ensambladores, compiladores, interpretes, editores, base de datos, etc. y los programas de aplicaciones que desarrolla el usuario.
Un teléfono inteligente es una computadora de mano pequeña y tiene una parte física o hardware y otra parte de programas o software. La parte física externa visible, muestra una carcasa o paquete rectangular metálico y de plástico con una pantalla táctil y algunos pueden tener un pequeño teclado, pero la mayoría solo tiene la pantalla táctil. Internamente se encuentra el chip o SIM del servicio telefónico, la pila o batería y la tarjeta madre o del sistema que contiene varios chips y componentes electrónicos, alrededor de la tarjea que sale externamente, contiene el botón de encendido, el usb para cargar el teléfono o para conectarse a una PC, el boton de volumen, una abertura para introducir la tarjeta microSD de almacenamiento externo, algunos teléfonos tienen en la parte baja de la pantalla táctil botones de menú, home y regreso. Cuando se enciende el teléfono se activa e inicia la parte software o programas, primero se carga el sistema operativo como Android que contiene todos los programas del sistema que controlan la interacción del usuario con todas las aplicaciones, como las llamadas por teléfono, envió y recepción de mensajes, con la cámara sacar fotos y videos, oír radio, ver y oír videos y películas, encontrar personas o lugares con GPS, conectarse a internet, etc.
El sistema operativo Android es el más utilizado en los teléfonos inteligentes, desciende de Linux y este de Unix, los tres sistemas /Unix/Linux/Android, fueron desarrollados en un mayor porcentaje utilizando el lenguaje C y C++. Pero también se utilizan en crear los compiladores, interpretes, base de datos, así como para desarrollar aplicaciones. Por lo tanto primero estudiaremos en detalle el leguaje C y posteriormente el lenguaje C++ y usaremos como herramienta de programación a CCTools instalado en el teléfono inteligente.
Fundamentos del Lenguaje C
Para programar android con el lenguaje C, es necesario estudiar los fundamentos de C y a continuación explicaremos brevemente la sintaxis del lenguaje, entendiendo que todo programa de una computadora tiene instrucciones que manipulan datos.
Datos
Los datos representan al mundo real de los números que son cantidades de diferentes hechos físicos y son enteros, decimales, booleanos de falso o verdadero y caracteres, arreglos de datos y cadenas de caracteres. Todos los datos pueden ser constantes o variables que son manipulados por las instrucciones de un programa.
Variables
Las variables en un programa se declaran, primero se pone el tipo y luego la variable o lista de variables y a veces sus valores. Cada variable deberá tener un tipo. Los tipos de datos pueden ser como enteros, reales, booleano y como carácter o literal, cadenas de caracteres, arreglos.
Los nombres de las variables deben de seguir las siguientes reglas.
1 El primer carácter del nombre debe ser una letra de a hasta z, de A hasta Z, el carácter _ y $
2 No puede usar el nombre de palabras reservadas del lenguaje C.
3 El nombre debe ser continuo, sin espacios intermedios.
4 Los nombres son sensibles o diferentes con minúsculas y mayúsculas.
Tipos de Datos
Los tipos de datos son los números enteros y reales, booleanos y de caracteres. Los enteros siempre tienen signo. Hay varios tipos de enteros, char, short, int y long. La diferencia está en el tamaño que ocupan y el rango que pueden guardar.
Enteros
Los enteros permiten contar cosas es decir asignar una secuencia numérica. Los enteros se representan por un bit de 1 y 0, dos bits representan 4 combinaciones, en general n bits representan 2 a la n combinaciones. Por ejemplo en 8 bits o un byte se pueden representar 2 a la 8 combinaciones o sea 256 combinaciones, pero la última posición de la izquierda representa el signo, por lo tanto se tiene 2 a la 7 para números positivos y negativos, es decir un rango de -128 a 127. También así se tiene para los enteros de 2, 3 y 4 bytes.
Reales
Los números reales pueden almacenar números con parte decimal. Hay dos tipos de números reales. La diferencia es la cantidad de decimales que pueden representar. Para representar los reales o decimales de simple precisión float se utilizan 4 bytes, una parte para el exponente de valores + o - y la otra parte para la mantisa con valores + o -. Para doble precisión doublé se usan 8 bytes una parte para el exponente con valores + o – y la otra parte para la mantisa con valores + o -.
Booleanos
El tipo boolean representa variables que pueden tener uno de dos valores: true(1) o false(0).
Character
El tipo char ocupa 1 byte para el código ascii y de 2 bytes para el codigo Unicode.
Constantes o Literales
Las literales son caracteres especiales que controlan características en las declaraciones de datos y son de string, carácter, enteras, reales y booleanas.
String
Las literales de string se delimitan entre comillas dobles: "hola mundo". Si se desea que el string tenga comillas dobles es necesario poner el carácter de escape (\). "Alguien dijo: \"hola mundo\"".
Character
Las literales de carácter se delimitan entre comillas sencillas: 'h', '$', '7'. C maneja las literales para caracteres no imprimibles como '\n' para el retorno de carro y '\t' para el tabulador.
Enteras
Las literales enteras se pueden especificar en base 10, por ejemplo 259, pero se pueden especificar en base 8 colocando un cero antes, por ejemplo 064 o en base 16 poniendo 0x, por ejemplo 0xA9.
Reales
Las literales reales se pueden escribir en formato normal, por ejemplo 5.953 o en formato científico, por ejemplo 856.51E10 o 6.988E-2.
Booleanas
Las literales booleanas son las palabras TRUE = 1 y FALSE =0.
Arreglos de Datos
Un arreglo define una estructura de almacenamiento de un número determinado de variables todas del mismo tipo, cada elemento está identificado por un índice de 0 hasta n.
Un arreglo se declarara como:
Tipo de Dato nombre-arreglo[tamaño-arreglo];
Por ejemplo: int num[5] tiene num asignado en memoria 5 posiciones de 0 a 4. También puede declararse sin un tamaño del arreglo como int num[]. En el principio o transcurso del programa se puede asignar valores como: int num[5] = {4, 2, 3, 10, 2};
Los elementos de un arreglo se obtienen mediante un índice que puede valer entre 0 y t – 1, donde t es el tamaño del arreglo. Las siguientes instrucciones son válidas.
Asignar un nuevo valor al elemento de arreglo con índice 1:
num[1] = 10;
Sumar el elemento 0 con otro valor constante de 10 al elemento del arreglo con índice 2:
num[2] = num[0] + 10;
Incrementar el elemento 5 de arreglo:
num[5]++;
Arreglo de Caracteres o Strings
Vamos a ver en detalle el String o cadena de caracteres, que es muy importante para manipular datos alfanuméricos de cadenas de caracteres. Para definir una variable de strings se usa el tipo de datos Char:
Char nombre-arreglo[longuitud-arreglo];
Ejemplo: Vamos a declarar un cadena de caracteres con nombres Char nombre[5] reservando en memoria 5 posiciones de 0 a 4 para nombres. También se puede declarar sin especificar el tamaño como: Char nombre[] y en después se puede asignar valores al arreglo nombres:
Char nombres[5] = {“María”};
Concatenación de strings
Consiste en unir dos cadenas de caracteres cadena1 y cadena2 en una sola, con el operador +.
Char cadena1 = “Cadena1”;
Char cadena2 = “Cadena2”;
Char cadena3 = cadena1 + cadena2 = Cadena1Cadena
También se puede unir datos a una cadena como:
int dato1 = 30;
Char cadena3 = cadena1 + cadena2 +dato1;
Operadores
Un operador es un símbolo especial que representa una operación y que se usa en una expresión aritmética. Una expresión es una instrucción que obtiene un valor. Los operadores son aritméticos, de asignación, relación o comparación, lógicos.
Operadores aritméticos
Utiliza diferentes operadores. El + para la suma, el – para la resta, el * para la multiplicación, el '/' para la división y el '%' para el resto. Si todos los operandos en una expresión son enteros, la expresión regresa un entero. Con uno de los operandos que sea real, el resultado es real. Así la división 2/3 se obtiene 0 y 2/3.0 regresa 0.6666.
Operadores de asignación
El lenguaje C tiene diferentes operadores El símbolo = representa la asignación sencilla: a = 2;
Los símbolos ++ y -- incrementan y decrementan en 1 el valor de la variable: a = 2; a++ y a vale ahora 3
También existen los operadores aritméticos con asignación como muestra a continuación:
Expresión Significado
1) x += y es equivalente a x = x + y
2) x -= y es equivalente a x = x – y
3) x *= y es equivalente a x = x * y
4) x /= y es equivalente a x = x / y
Operadores de relación o comparación
El lenguaje C tiene los operadores de comparación: menor que (<), menor o igual que (<=), mayor que (>), mayor o igual que (>=), igual que (==) y distinto que (!=).
Operadores lógicosAND(Y)
El lenguaje C utiliza el símbolo && para la operación AND (Y), dos condiciones c1 && c2 son verdaderas TRUE(1) si ambas son verdaderas, si alguna de las condiciones es FALSE(0) el resultado es falso.
Ejemplo:
int c1 = 2, c2 = 10;
if ((c1> 0) && (c2++ > 0)){
instrucciones;
}
OR(O)
Para la operación OR (O) utiliza el símbolo ||, dos condiciones c1 || c2 son verdaderas TRUE(1) si cualquiera de ellas es verdadera o las dos, si ambas son falsas las condiciones son falsas.
NOT(No)
Para la operación NOT (no) el operador es el !. si una condición c1 es verdadera, su NOT de la condición c1 resulta falsa.
Expresiones
Una expresión es una instrucción matemática que calcula un valor y se asigna a una variable. Se construyen al combinar operandos como constantes y variables con los operadores que actúan sobre ellas. En expresiones complejas se utilizan paréntesis para indicar el orden de evaluación. El paréntesis agrupa operaciones, primero se realizan los paréntesis, después multiplicaciones y divisiones, y por último sumas y restas. Ver tabla de precedencia.
Ejemplo: A la variable var1 se asigna el resultado de calcular la expresión de la derecha
Var1 = ((x+22)*(789*y))/(123+z)
Todos los operadores binarios que tienen la misma prioridad (excepto los operadores de asignación) son evaluados de izquierda a derecha. Los operadores de asignación son evaluados de derecha a izquierda.
Ejemplo. La siguiente formula da la media aritmética de cinco términos:
Algebra: m = a + b + c + d + e / 5
C: m = ( a + b + c + d + e ) / 5;
Los paréntesis son requeridos, la división tiene mayor precedencia que la suma. Todos los cinco términos entre paréntesis son primero sumados y al final se realiza la división.
Ejemplo. La siguiente formula representa una línea recta.
Algebra: y = mx + b
C: y = m * x + b;
Los paréntesis no son requeridos, la multiplicación se realiza primero y después la suma y el asignamiento el resultado al final.
Ejemplo. Considere la siguiente ecuación de segundo grado.
Algebra (y = ax2 + bx + c):
C y = a * x * x + b * x + c;
6 1 2 4 3 5
Los números indican la secuencia de evaluación.
Para más claridad se pueden colocar paréntesis, pero resulta redundante.
y = ( a * x * x ) + ( b * x ) + c;
Instrucciones
Todo programa de una computadora se ejecuta como una secuencia de instrucciones, como la instrucción que evalúa expresiones que manipulan datos con operaciones matemáticas o lógicas, o de instrucciones de entrada o salida, pero las instrucciones de control y decisión pueden alterar la secuencia de ejecución. Las instrucciones del lenguaje C van separadas por punto y coma. Los bloques de instrucciones se agrupan con llaves que contienen instrucciones {instrucciones}. Aquí un breve repaso de la sintaxis de cada una de las instrucciones principales.
Comentarios
Cuando un comentario ocupa varias líneas se puede delimitar usando los símbolos /* instrucciones comentadas*/. Para una línea se usa el símbolo // para indicar al compilador que ignore lo que sigue hasta el fin de línea.
Instrucción if
Cambia la secuencia de ejecución de las instrucciones del programa cuando se cumpla una o varias condiciones.
Sintaxis:
if (condición){
instrucciónes;
}
La condición se evalúa, si es verdadera se ejecuta la instrucción, si es falsa continúa con la siguiente instrucción. La palabra reservada else sirve para ejecutar una instrucción alterna si la condición es falsa.
Sintaxis:
if (condición){instrucciónes1;
}else{
instrucciónes2;
}
La condición se evalúa, si es verdadera se ejecuta las instrucciónes1, si es falsa se ejecuta la
instrucciónes2.
Ejemplo: El código siguiente muestra el uso de un if para decidir si un número entero es
par o impar.
int n=20;
if ((n % 2) == 0){
printf(" es par %d",n);
}else{
printf (" es impar %d",n);
}
Instrucción for
Repite una secuencia de instrucciones hasta que se cumpla una o varias condiciones.
Sintaxis:
for (inicio; condición; postcondición){
instrucciones;
}
El flujo de control es el siguiente:
1) Se evalúa la expresión de inicio
2) Se evalúa la condición
3) Si la condición es falsa el ciclo termina.
4) Si es verdadera ejecuta la instrucción (puede ser un bloque de instrucciones encerrado entre llaves), evalúa la postcondición y regresa al paso 2.
Ejemplo: El código imprime 10 veces el letrero Hola mundo… en la pantalla:
for (i = 0; i < 20; i++){
printf ("Hola mundo…");
}
Instrucción while
Repite una secuencia de instrucciones mientras que se cumpla una o varias condiciones.
Sintaxis:
while (condición){
instrucciónes;
}
La instrucción o instrucciones se ejecutan mientras la condición sea verdadera.
Ejemplo: El código muestra el uso de un while para escribir el índice del primer elemento negativo de un arreglo o un mensaje de error si no existe ninguno.
int arrayx[] = {...};
int i = 0;
int ok = 0;
while (!ok && (i < arrayx.length)){
if (arrayx[i] < 0){
ok = 1;
}else{
i++;
if (ok){
printf ("El primer número negativo esta en %d", + i);
}else{
printf ("No existe ningún numero negativo");
}
}
}
Instrucción do while
Repite una secuencia de instrucciones hasta que se cumpla una o varias condiciones.
Sintaxis:
do {
instrucciónes;
} while (condición);
La instrucción se ejecuta mientras la condición o condiciones sean verdaderas. La diferencia con el ciclo while es que el do while primero ejecuta la instrucción y luego revisa la condición. Por lo tanto el do while siempre se hace por lo menos una vez.
Ejemplo: El código también imprime 5 veces el mensaje en la pantalla:
i = 0;
do {
printf ("Hola mundo…");
i++;
} while (i < 5);
Instrucción switch
Sustituye a varios ifs y repite una secuencia de instrucciones cuando se cumpla una o varias condiciones.
Sintaxis
switch (expresión) {
case valor 1 : instrucciónes1;
case valor 2 : instrucciónes2;
...
[default : instrucción n;] // El corchete cuadrado indica que es opcional
}
La expresión se evalúa y se compara con cada uno de los valores de la parte case. Si encuentra una coincidencia ejecuta las instrucciones a partir de ese caso. Si no encuentra ninguna coincidencia ejecuta la instrucción correspondiente a la parte default si es que está presente o continua con la siguiente instrucción al switch si no hay default. Se puede indicar que solo ejecute un caso usando la instrucción break.
Ejemplo: Dado de un número entero que representa el mes (1 es enero, 2 es febrero, ..., 12 es diciembre) asigna en la variable día el número de días del mes o –1 si el número de mes está fuera de rango.
switch (mes) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: dia = 31;
break;
case 4:
case 6:
case 9:
case 11: dia = 30;
break;
case 2: dia = 28;
break;
default: dia = -1;
}
Instrucción return
La instrucción return sirve para salir de una función, de una instrucción de control o de decisión. Si el método regresa un valor el return que va seguido de una expresión que se convertirá en el valor del método.
Instrucción break
La instrucción break sirve para salir de un switch. El break también se puede utilizar para terminar un ciclo for, while o do while como en el ejemplo siguiente que escribe 5 veces el letrero "Hola mundo" en la pantalla:
int i = 0;
while (true) {
printf ("Hola mundo…");
i++;
if (i == 5){
break;
}
}
Si el ciclo está anidado dentro de otro ciclo, la ejecución continúa con el ciclo externo.
Instrucción continue
La instrucción continue suspende la ejecución de un ciclo y continúa con la siguiente iteración.
Ejemplo: El código muestra el uso de continue dentro de un ciclo para contar los elementos positivos de un arreglo.
int cuenta = 0;
for (int i = 0; i < arreglo1.length; i++) {
if (arreglo1[i] < 0){
continue;
}
cuenta++;
}
printf ("Los elementos positivos del arreglo son %d",cuenta);
Todo lo estudiado forma parte del lenguaje C básico, donde un programa en C define datos y son manipulados por las instrucciones. Posteriormente estudiaremos punteros, archivos, estructuras de datos, base de datos y redes de comunicación. En los próximos blogs veremos ejemplos aplicando lo estudiado aquí.
El lenguaje humano se usa para comunicar a los hombres que forman una sociedad. Desde que el hombre apareció en la tierra, invento un lenguaje primitivo de señas y palabras guturales, para comunicarse y evoluciono hasta llegar a crear la diversidad de lenguas actuales que existen en el mundo. También utilizo su inteligencia para crear herramientas como las armas primitivas para protegerse de los depredadores y creo herramientas que le ayudaron en sus actividades diarias, hasta llegar a la época actual y crear máquinas manuales como la tejedora o para realizar cálculos aritméticos como el ábaco y finalmente máquinas automáticas que pueden ser mecánicas, electromecánicas, eléctricas y electrónicas aplicadas a diferentes ramas industriales.
A partir de 1948 que se inventa la computadora electrónica como una máquina automática que debe programarse para que pueda automatizar alguna actividad del hombre. Para programar una computadora se necesita un lenguaje que conozca el programador y dar instrucciones para manipular datos y se obtenga la solución de un problema científico o técnico de las diversas áreas del conocimiento humano. Todas las computadoras electrónicas solo entienden el lenguaje binario de bits 1 y 0, físicamente el bit 1 se representa por un voltaje de 5 volts o menos y el bit 0 se representa por 0 volts. Un programa es una secuencia de instrucciones que manipulan datos. Las instrucciones de una computadora en general están organizadas en una secuencia de varios bits, una parte corresponde a la propia instrucción y otra parte a los datos. Las instrucciones pueden ser aritméticas, lógicas, transferencia, desplazamiento, condicionales, entrada y salida. Los datos pueden ser enteros, decimales o punto flotante, cadenas de caracteres y arreglos. Programar una computadora a nivel de bits o lenguaje de máquina es muy difícil y laborioso pero no imposible.
Para facilitar la programación de la computadora se crearon los lenguajes de programación de nivel bajo, medio y alto. El lenguaje ensamblador es de nivel bajo y más cercano al lenguaje de máquina. El lenguaje C es de nivel medio. Hay varios lenguajes de nivel superior como los lenguajes Fortran, Cobol, Visual Basic, C++ y Java. Cuando se programa en uno de estos lenguajes es necesario un programa interprete o un traductor a lenguaje de máquina o mejor dicho al lenguaje de máquina del procesador que solo entiende bits de 1 y 0.
Existen varios intérpretes como el Basic y el Pyton. Para realizar un programa con un intérprete se utiliza su editor para escribir las instrucciones del lenguaje, cuando se termina se ejecuta y va procesando instrucción por instrucción hasta encontrar el fin del programa, si no hay errores se guarda el programa con un nombre en un archivo y queda listo para volver a interpretar cada instrucción y ejecutarse hasta finalizar.
Existen varios compiladores para los diferentes niveles de lenguajes y un programa realizado con un lenguaje de nivel bajo como un ensamblador, utiliza un editor para escribir las instrucciones en ensamblador, cuando se termina se guarda con un nombre el programa, ahora se llama al programa compilador o ensamblador y el programa se ensambla, si existen errores se corrigen con el editor y se vuelve a ensamblar, si ya no hay errores se crea un archivo ejecutable con todas las instrucciones y datos del programa, listo para ejecutarse sin volver a ensamblarse.
Un programa realizado con un lenguaje C de nivel medio y alto como Fortran, Cobol o C++, utiliza un editor para escribir las instrucciones en el lenguaje correspondiente, cuando se termina se guarda con el nombre del programa, ahora se llama al programa compilador por ejemplo de C y se compila el programa, si hay errores se corrigen con el editor, se vuelve a compilar, si no da errores deja el programa en lenguaje ensamblador y se realiza un segundo paso para llamar al ensamblador y ensamblar el programa, si existen errores se corrigen con el editor y se vuelve a compilar y ensamblar, si ya no hay errores se crea un archivo ejecutable con todas las instrucciones y datos del programa, listo para ejecutarse sin volver a compilarse y ensamblarse.
Un programa realizado con un lenguaje de nivel alto como Java, utiliza, como hemos tratado en la serie de blogs de Programación Android con AIDE y Java su editor para escribir las instrucciones en el lenguaje de Java, cuando se termina se guarda con el nombre del programa, ahora se llama al programa compilador de Java y compila el programa, si hay errores se corrigen con el editor, se vuelve a compilar, si no da errores deja el programa en lenguaje intermedio de una Máquina Virtual de Java se realiza un segundo paso para llamar al intérprete de la Máquina Virtual de Java y ejecutar el programa, si ya no hay errores se crea un archivo ejecutable jar con todas las instrucciones y datos del programa, listo para ejecutarse sin volver a compilarse. El programa en el archivo jar se puede ejecutar en cualquier sistema operativo que tenga el interprete de la Máquina Virtual Java. Para el caso del sistema operativo Android además de tener el intérprete de la Máquina Virtual Java tiene la Máquina Virtual Dalvik para optimizar los programas de los teléfonos inteligentes que utilizan el sistema operativo Android. Es importante decir que un programa ejecutado por un intérprete es más lento que un programa compilado.
Recordemos que una computadora está hecha de una parte física o hardware y otra de programas o software. La parte física tiene varios dispositivos y equipos periféricos con componentes mecánicos, eléctricos y electrónicos tanto internos y externos. La parte de software o de programas contiene programas del sistema como el sistema operativo, ensambladores, compiladores, interpretes, editores, base de datos, etc. y los programas de aplicaciones que desarrolla el usuario.
Un teléfono inteligente es una computadora de mano pequeña y tiene una parte física o hardware y otra parte de programas o software. La parte física externa visible, muestra una carcasa o paquete rectangular metálico y de plástico con una pantalla táctil y algunos pueden tener un pequeño teclado, pero la mayoría solo tiene la pantalla táctil. Internamente se encuentra el chip o SIM del servicio telefónico, la pila o batería y la tarjeta madre o del sistema que contiene varios chips y componentes electrónicos, alrededor de la tarjea que sale externamente, contiene el botón de encendido, el usb para cargar el teléfono o para conectarse a una PC, el boton de volumen, una abertura para introducir la tarjeta microSD de almacenamiento externo, algunos teléfonos tienen en la parte baja de la pantalla táctil botones de menú, home y regreso. Cuando se enciende el teléfono se activa e inicia la parte software o programas, primero se carga el sistema operativo como Android que contiene todos los programas del sistema que controlan la interacción del usuario con todas las aplicaciones, como las llamadas por teléfono, envió y recepción de mensajes, con la cámara sacar fotos y videos, oír radio, ver y oír videos y películas, encontrar personas o lugares con GPS, conectarse a internet, etc.
El sistema operativo Android es el más utilizado en los teléfonos inteligentes, desciende de Linux y este de Unix, los tres sistemas /Unix/Linux/Android, fueron desarrollados en un mayor porcentaje utilizando el lenguaje C y C++. Pero también se utilizan en crear los compiladores, interpretes, base de datos, así como para desarrollar aplicaciones. Por lo tanto primero estudiaremos en detalle el leguaje C y posteriormente el lenguaje C++ y usaremos como herramienta de programación a CCTools instalado en el teléfono inteligente.
Fundamentos del Lenguaje C
Para programar android con el lenguaje C, es necesario estudiar los fundamentos de C y a continuación explicaremos brevemente la sintaxis del lenguaje, entendiendo que todo programa de una computadora tiene instrucciones que manipulan datos.
Datos
Los datos representan al mundo real de los números que son cantidades de diferentes hechos físicos y son enteros, decimales, booleanos de falso o verdadero y caracteres, arreglos de datos y cadenas de caracteres. Todos los datos pueden ser constantes o variables que son manipulados por las instrucciones de un programa.
Variables
Las variables en un programa se declaran, primero se pone el tipo y luego la variable o lista de variables y a veces sus valores. Cada variable deberá tener un tipo. Los tipos de datos pueden ser como enteros, reales, booleano y como carácter o literal, cadenas de caracteres, arreglos.
Los nombres de las variables deben de seguir las siguientes reglas.
1 El primer carácter del nombre debe ser una letra de a hasta z, de A hasta Z, el carácter _ y $
2 No puede usar el nombre de palabras reservadas del lenguaje C.
3 El nombre debe ser continuo, sin espacios intermedios.
4 Los nombres son sensibles o diferentes con minúsculas y mayúsculas.
Tipos de Datos
Los tipos de datos son los números enteros y reales, booleanos y de caracteres. Los enteros siempre tienen signo. Hay varios tipos de enteros, char, short, int y long. La diferencia está en el tamaño que ocupan y el rango que pueden guardar.
Enteros
Los enteros permiten contar cosas es decir asignar una secuencia numérica. Los enteros se representan por un bit de 1 y 0, dos bits representan 4 combinaciones, en general n bits representan 2 a la n combinaciones. Por ejemplo en 8 bits o un byte se pueden representar 2 a la 8 combinaciones o sea 256 combinaciones, pero la última posición de la izquierda representa el signo, por lo tanto se tiene 2 a la 7 para números positivos y negativos, es decir un rango de -128 a 127. También así se tiene para los enteros de 2, 3 y 4 bytes.
Reales
Los números reales pueden almacenar números con parte decimal. Hay dos tipos de números reales. La diferencia es la cantidad de decimales que pueden representar. Para representar los reales o decimales de simple precisión float se utilizan 4 bytes, una parte para el exponente de valores + o - y la otra parte para la mantisa con valores + o -. Para doble precisión doublé se usan 8 bytes una parte para el exponente con valores + o – y la otra parte para la mantisa con valores + o -.
Booleanos
El tipo boolean representa variables que pueden tener uno de dos valores: true(1) o false(0).
Character
El tipo char ocupa 1 byte para el código ascii y de 2 bytes para el codigo Unicode.
Constantes o Literales
Las literales son caracteres especiales que controlan características en las declaraciones de datos y son de string, carácter, enteras, reales y booleanas.
String
Las literales de string se delimitan entre comillas dobles: "hola mundo". Si se desea que el string tenga comillas dobles es necesario poner el carácter de escape (\). "Alguien dijo: \"hola mundo\"".
Character
Las literales de carácter se delimitan entre comillas sencillas: 'h', '$', '7'. C maneja las literales para caracteres no imprimibles como '\n' para el retorno de carro y '\t' para el tabulador.
Enteras
Las literales enteras se pueden especificar en base 10, por ejemplo 259, pero se pueden especificar en base 8 colocando un cero antes, por ejemplo 064 o en base 16 poniendo 0x, por ejemplo 0xA9.
Reales
Las literales reales se pueden escribir en formato normal, por ejemplo 5.953 o en formato científico, por ejemplo 856.51E10 o 6.988E-2.
Booleanas
Las literales booleanas son las palabras TRUE = 1 y FALSE =0.
Arreglos de Datos
Un arreglo define una estructura de almacenamiento de un número determinado de variables todas del mismo tipo, cada elemento está identificado por un índice de 0 hasta n.
Un arreglo se declarara como:
Tipo de Dato nombre-arreglo[tamaño-arreglo];
Por ejemplo: int num[5] tiene num asignado en memoria 5 posiciones de 0 a 4. También puede declararse sin un tamaño del arreglo como int num[]. En el principio o transcurso del programa se puede asignar valores como: int num[5] = {4, 2, 3, 10, 2};
Los elementos de un arreglo se obtienen mediante un índice que puede valer entre 0 y t – 1, donde t es el tamaño del arreglo. Las siguientes instrucciones son válidas.
Asignar un nuevo valor al elemento de arreglo con índice 1:
num[1] = 10;
Sumar el elemento 0 con otro valor constante de 10 al elemento del arreglo con índice 2:
num[2] = num[0] + 10;
Incrementar el elemento 5 de arreglo:
num[5]++;
Arreglo de Caracteres o Strings
Vamos a ver en detalle el String o cadena de caracteres, que es muy importante para manipular datos alfanuméricos de cadenas de caracteres. Para definir una variable de strings se usa el tipo de datos Char:
Char nombre-arreglo[longuitud-arreglo];
Ejemplo: Vamos a declarar un cadena de caracteres con nombres Char nombre[5] reservando en memoria 5 posiciones de 0 a 4 para nombres. También se puede declarar sin especificar el tamaño como: Char nombre[] y en después se puede asignar valores al arreglo nombres:
Char nombres[5] = {“María”};
Concatenación de strings
Consiste en unir dos cadenas de caracteres cadena1 y cadena2 en una sola, con el operador +.
Char cadena1 = “Cadena1”;
Char cadena2 = “Cadena2”;
Char cadena3 = cadena1 + cadena2 = Cadena1Cadena
También se puede unir datos a una cadena como:
int dato1 = 30;
Char cadena3 = cadena1 + cadena2 +dato1;
Operadores
Un operador es un símbolo especial que representa una operación y que se usa en una expresión aritmética. Una expresión es una instrucción que obtiene un valor. Los operadores son aritméticos, de asignación, relación o comparación, lógicos.
Operadores aritméticos
Utiliza diferentes operadores. El + para la suma, el – para la resta, el * para la multiplicación, el '/' para la división y el '%' para el resto. Si todos los operandos en una expresión son enteros, la expresión regresa un entero. Con uno de los operandos que sea real, el resultado es real. Así la división 2/3 se obtiene 0 y 2/3.0 regresa 0.6666.
Operadores de asignación
El lenguaje C tiene diferentes operadores El símbolo = representa la asignación sencilla: a = 2;
Los símbolos ++ y -- incrementan y decrementan en 1 el valor de la variable: a = 2; a++ y a vale ahora 3
También existen los operadores aritméticos con asignación como muestra a continuación:
Expresión Significado
1) x += y es equivalente a x = x + y
2) x -= y es equivalente a x = x – y
3) x *= y es equivalente a x = x * y
4) x /= y es equivalente a x = x / y
Operadores de relación o comparación
El lenguaje C tiene los operadores de comparación: menor que (<), menor o igual que (<=), mayor que (>), mayor o igual que (>=), igual que (==) y distinto que (!=).
Operadores lógicosAND(Y)
El lenguaje C utiliza el símbolo && para la operación AND (Y), dos condiciones c1 && c2 son verdaderas TRUE(1) si ambas son verdaderas, si alguna de las condiciones es FALSE(0) el resultado es falso.
Ejemplo:
int c1 = 2, c2 = 10;
if ((c1> 0) && (c2++ > 0)){
instrucciones;
}
OR(O)
Para la operación OR (O) utiliza el símbolo ||, dos condiciones c1 || c2 son verdaderas TRUE(1) si cualquiera de ellas es verdadera o las dos, si ambas son falsas las condiciones son falsas.
NOT(No)
Para la operación NOT (no) el operador es el !. si una condición c1 es verdadera, su NOT de la condición c1 resulta falsa.
Expresiones
Una expresión es una instrucción matemática que calcula un valor y se asigna a una variable. Se construyen al combinar operandos como constantes y variables con los operadores que actúan sobre ellas. En expresiones complejas se utilizan paréntesis para indicar el orden de evaluación. El paréntesis agrupa operaciones, primero se realizan los paréntesis, después multiplicaciones y divisiones, y por último sumas y restas. Ver tabla de precedencia.
Ejemplo: A la variable var1 se asigna el resultado de calcular la expresión de la derecha
Var1 = ((x+22)*(789*y))/(123+z)
Todos los operadores binarios que tienen la misma prioridad (excepto los operadores de asignación) son evaluados de izquierda a derecha. Los operadores de asignación son evaluados de derecha a izquierda.
Ejemplo. La siguiente formula da la media aritmética de cinco términos:
Algebra: m = a + b + c + d + e / 5
C: m = ( a + b + c + d + e ) / 5;
Los paréntesis son requeridos, la división tiene mayor precedencia que la suma. Todos los cinco términos entre paréntesis son primero sumados y al final se realiza la división.
Ejemplo. La siguiente formula representa una línea recta.
Algebra: y = mx + b
C: y = m * x + b;
Los paréntesis no son requeridos, la multiplicación se realiza primero y después la suma y el asignamiento el resultado al final.
Ejemplo. Considere la siguiente ecuación de segundo grado.
Algebra (y = ax2 + bx + c):
C y = a * x * x + b * x + c;
6 1 2 4 3 5
Los números indican la secuencia de evaluación.
Para más claridad se pueden colocar paréntesis, pero resulta redundante.
y = ( a * x * x ) + ( b * x ) + c;
Instrucciones
Todo programa de una computadora se ejecuta como una secuencia de instrucciones, como la instrucción que evalúa expresiones que manipulan datos con operaciones matemáticas o lógicas, o de instrucciones de entrada o salida, pero las instrucciones de control y decisión pueden alterar la secuencia de ejecución. Las instrucciones del lenguaje C van separadas por punto y coma. Los bloques de instrucciones se agrupan con llaves que contienen instrucciones {instrucciones}. Aquí un breve repaso de la sintaxis de cada una de las instrucciones principales.
Comentarios
Cuando un comentario ocupa varias líneas se puede delimitar usando los símbolos /* instrucciones comentadas*/. Para una línea se usa el símbolo // para indicar al compilador que ignore lo que sigue hasta el fin de línea.
Instrucción if
Cambia la secuencia de ejecución de las instrucciones del programa cuando se cumpla una o varias condiciones.
Sintaxis:
if (condición){
instrucciónes;
}
La condición se evalúa, si es verdadera se ejecuta la instrucción, si es falsa continúa con la siguiente instrucción. La palabra reservada else sirve para ejecutar una instrucción alterna si la condición es falsa.
Sintaxis:
if (condición){instrucciónes1;
}else{
instrucciónes2;
}
La condición se evalúa, si es verdadera se ejecuta las instrucciónes1, si es falsa se ejecuta la
instrucciónes2.
Ejemplo: El código siguiente muestra el uso de un if para decidir si un número entero es
par o impar.
int n=20;
if ((n % 2) == 0){
printf(" es par %d",n);
}else{
printf (" es impar %d",n);
}
Instrucción for
Repite una secuencia de instrucciones hasta que se cumpla una o varias condiciones.
Sintaxis:
for (inicio; condición; postcondición){
instrucciones;
}
El flujo de control es el siguiente:
1) Se evalúa la expresión de inicio
2) Se evalúa la condición
3) Si la condición es falsa el ciclo termina.
4) Si es verdadera ejecuta la instrucción (puede ser un bloque de instrucciones encerrado entre llaves), evalúa la postcondición y regresa al paso 2.
Ejemplo: El código imprime 10 veces el letrero Hola mundo… en la pantalla:
for (i = 0; i < 20; i++){
printf ("Hola mundo…");
}
Instrucción while
Repite una secuencia de instrucciones mientras que se cumpla una o varias condiciones.
Sintaxis:
while (condición){
instrucciónes;
}
La instrucción o instrucciones se ejecutan mientras la condición sea verdadera.
Ejemplo: El código muestra el uso de un while para escribir el índice del primer elemento negativo de un arreglo o un mensaje de error si no existe ninguno.
int arrayx[] = {...};
int i = 0;
int ok = 0;
while (!ok && (i < arrayx.length)){
if (arrayx[i] < 0){
ok = 1;
}else{
i++;
if (ok){
printf ("El primer número negativo esta en %d", + i);
}else{
printf ("No existe ningún numero negativo");
}
}
}
Instrucción do while
Repite una secuencia de instrucciones hasta que se cumpla una o varias condiciones.
Sintaxis:
do {
instrucciónes;
} while (condición);
La instrucción se ejecuta mientras la condición o condiciones sean verdaderas. La diferencia con el ciclo while es que el do while primero ejecuta la instrucción y luego revisa la condición. Por lo tanto el do while siempre se hace por lo menos una vez.
Ejemplo: El código también imprime 5 veces el mensaje en la pantalla:
i = 0;
do {
printf ("Hola mundo…");
i++;
} while (i < 5);
Instrucción switch
Sustituye a varios ifs y repite una secuencia de instrucciones cuando se cumpla una o varias condiciones.
Sintaxis
switch (expresión) {
case valor 1 : instrucciónes1;
case valor 2 : instrucciónes2;
...
[default : instrucción n;] // El corchete cuadrado indica que es opcional
}
La expresión se evalúa y se compara con cada uno de los valores de la parte case. Si encuentra una coincidencia ejecuta las instrucciones a partir de ese caso. Si no encuentra ninguna coincidencia ejecuta la instrucción correspondiente a la parte default si es que está presente o continua con la siguiente instrucción al switch si no hay default. Se puede indicar que solo ejecute un caso usando la instrucción break.
Ejemplo: Dado de un número entero que representa el mes (1 es enero, 2 es febrero, ..., 12 es diciembre) asigna en la variable día el número de días del mes o –1 si el número de mes está fuera de rango.
switch (mes) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: dia = 31;
break;
case 4:
case 6:
case 9:
case 11: dia = 30;
break;
case 2: dia = 28;
break;
default: dia = -1;
}
Instrucción return
La instrucción return sirve para salir de una función, de una instrucción de control o de decisión. Si el método regresa un valor el return que va seguido de una expresión que se convertirá en el valor del método.
Instrucción break
La instrucción break sirve para salir de un switch. El break también se puede utilizar para terminar un ciclo for, while o do while como en el ejemplo siguiente que escribe 5 veces el letrero "Hola mundo" en la pantalla:
int i = 0;
while (true) {
printf ("Hola mundo…");
i++;
if (i == 5){
break;
}
}
Si el ciclo está anidado dentro de otro ciclo, la ejecución continúa con el ciclo externo.
Instrucción continue
La instrucción continue suspende la ejecución de un ciclo y continúa con la siguiente iteración.
Ejemplo: El código muestra el uso de continue dentro de un ciclo para contar los elementos positivos de un arreglo.
int cuenta = 0;
for (int i = 0; i < arreglo1.length; i++) {
if (arreglo1[i] < 0){
continue;
}
cuenta++;
}
printf ("Los elementos positivos del arreglo son %d",cuenta);
Todo lo estudiado forma parte del lenguaje C básico, donde un programa en C define datos y son manipulados por las instrucciones. Posteriormente estudiaremos punteros, archivos, estructuras de datos, base de datos y redes de comunicación. En los próximos blogs veremos ejemplos aplicando lo estudiado aquí.
Suscribirse a:
Entradas (Atom)