Vistas de página en total

domingo, 27 de abril de 2014

Programación android con PHP y MySQL - ph02

Progamación android con PHP y MySQL
en una red local.
Introducción al Lenguaje HTML
VER VIDEO ph01-ph02



<html lang="">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <style type="text/css">
       h2 {font-style:italic}
       p {color:brown;background-color :#F7BE81}
       body {
background-color:#FAAC58;
}
h3{
    color:#FF0000;
}
h4{
     color:#B43104;
}
table{
     background-color:#F7BE81;
}
th{
     background-color:#FE9A2E;
}
      </style>
<link rel="stylesheet" href="" type="text/css"/>
</head>
<body>
<h1>EYDH</h1>
<p>Mi primer programa en html..con encabezado h1...
</p>

<h2>EYDH</h2>
<p><strong>Mi primer programa en html...con h2 y strong</strong></p>
<h3>EYDH</h3>
<p><em>Mi primer programa en html...con h3 y em</em></p>
<h4>EYDH</h4>
<p><small>Mi primer programa en html...con h4 y small</small></p>
<h5>EYDH</h5>
<p>Mi primer programa en html..con h5...</p>
<h6>EYDH</h6>
<p>Mi primer programa en html..con h6...</p>

<p>Mi primer programa en html...<br>Trataremos de ver todas las instrucciones de html</p>

<p>Mi primer programa en html...<br>Trataremos de ver todas las instrucciones de html</p>

<p><strong>Lista desordenada</strong></p>
<ul>
<li>linea 1
<li>linea 2
<li>linea 3
<li>linea 4
</ul>

<p><strong>Lista ordenada</strong></p>
<ol>
<li>linea 1
<li>linea 2
<li>linea 3
<li>linea 4
</ol>

<p><strong>Enlaces o links</strong></p>
<a href="http://evolucionydesarrollohumano.blogspot.com" title="EYDH">Mi blog en google</><br><br>
<a href="eydh.html">Mi pagina de EYDH</>
<p><strong>Imagenes</strong></p><br>
<img src="0000-gran-explosion.gif" alt="Gran explosion" title="Gran explosion" width="100" hight="50" />

<p><strong>Tablas</strong></p><br>
<table><tr><td>dato11</td><td>dato12</td><td>dato13</td></tr>
<tr><td>dato21</td><td>dato22</td><td>dato23</td></tr>
  <tr><td>dato31</td><td>dato32</td><td>dato33</td></tr></table>
 
<p><strong>Tabla con border 1</strong></p><br>
<table border="1"><tr><td>dato11</td><td>dato12</td><td>dato13</td></tr>
<tr><td>dato21</td><td>dato22</td><td>dato23</td></tr>
  <tr><td>dato31</td><td>dato32</td><td>dato33</td></tr></table><br>
 
  <p><strong>Tabla con color</strong></p><br>
<table bgcolor="yellow" ><tr><td>dato11</td><td>dato12</td><td>dato13</td></tr>
<tr bgcolor="brown"><td>dato21</td><td>dato22</td><td>dato23</td></tr>
  <tr><td>dato31</td><td>dato32</td><td>dato33</td></tr></table><br>
 
  <strong>Formulario</strong><br>
  <form method="post" action="">
  Nombre: <input type="text" name="nomb" value="Gustavo" width="20" /><br>
  Dirección: <input type="text" name="dir" value="severo" width="20" /><br>
   eMail: <input type="text" name="email" value="" width="20" />
  <br><input type="submit" name="enviar" value="enviar" />
  </form>
  <br>
    
    <strong>Formulario con tabla</strong><br>
  <form method="post" action="">
  <table>
  <tr><td>
  Nombre:
  </td>
  <td>
   <input type="text" name="nomb" value="Gustavo" width="20" />
  </td></tr>
  <tr><td>
  Dirección:
  </td><td>
  <input type="text" name="dir" value="severo" width="20" />
  </td></tr>
  <tr><td>
   eMail:
   </td>
  <td>
   <input type="text" name="email" value="" width="20" />
   </td></tr>
  <tr><td>
  <input type="submit" name="enviar" value="enviar" />
  </td></tr>
  </table>
  </form>
 
<strong>Tabla con Formulario </strong><br>
  <table>
  <tr><td>
  <form method="post" action="">
  <table>
  </td></tr>
  <tr><td>
  Nombre:
  </td>
  <td>
   <input type="text" name="nomb" value="Gustavo" width="20" />
  </td></tr>
  <tr><td>
  Dirección:
  </td><td>
  <input type="text" name="dir" value="severo" width="20" />
  </td></tr>
  <tr><td>
   eMail:
   </td>
  <td>
   <input type="text" name="email" value="" width="20" />
   </td></tr>
  <tr><td>
  <input type="submit" name="enviar" value="enviar" />
  </td></tr>
  </form>
   </table><br> 

</body>
</html>

Para ejecutar las páginas creadas en lenguaje o escripts html y php instalamos y usamos en el teléfono  inteligente el paquete PWS  si no se tiene buscar en play store de google buscarlo e instalarlo, contiene el servidor web, el lenguaje php y el servidor de base de datos mysql. Para crear los programas usar MasterWeb  y para el browser usar Opera clasic, si no se tienen buscarlos también en play store de google, cuando se encuentren instalarlos. Ver primera página de Programación android con PHP y MySQL que trata de la instalación. Una aplicación cliente servidor consiste de peticiones de servicios del cliente al servidor y responde el servicio de la petición. Cuando prendemos el teléfono se carga el sistema operativo android y se ejecuta en la memoria, donde controla y ejecuta las aplicaciones de forma concurrente, como el servidor web que se ejecuta como hilos de procesos por cada una de las peticiones de los clientes. Con un programa como inspector wifi se identifican las direcciones ip en la red local, para el teléfono servidor es 192.168.1.75 El servidor web tiene un directorio www donde se colocan lo archivos de páginas con un nombre que termina con html o php. Ahora podemos requerir las páginas de html y php en el propio teléfono con el browser como el opera clasic, donde se coloca la dirección:
        http://localhost/nombre-archivo.html o php 

también como:
       http://127.0.0.1/ nombre-archivo.html o php       

Cuando se usa otro teléfono de la intranet introducimos:       
       http://192.168.1.75/nombre-archivo.html o php
Cuando se envía la dirección y la página deseada al servidor web, busca la página, al encontrarla el servidor web la analiza, si encuentra instrucciones html que inicia con <html> o una secuencia de instrucciones php que inicia con <?php y termina con ?>  puede incluir instrucciones para acceso y manipulación de base de datos de mysql.  El servidor web llama al interprete php y cada instrucción php  la interpreta y las traduce a html, cuando termina el análisis de la página al encontrar </html> el servidor  web la envía al cliente que la pidió. El servidor web continúa en ejecución  como hilos de procesos esperando peticiones y respondiendo a los clientes, hasta que se para el servidor web o se apaga completamente el teléfono.
Para copiar el código, de alguna página de Programación android con PHP y MySQL seleccionar la parte deseada de las páginas de: evolucionydesarrollohumano.blogspot.com Salir de opera clasic y entrar en la pantalla de edición del webmaster y pegarla.


Programación android con PHP y MySQL - ph01

Programación android con PHP y MySQL en una red local.
Introducción al Lenguaje html
Ver EYDH en Internet


<html>
<head>
<title>
EYDH
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h1>EYDH</h1>
<p>Mi primer programa en html..con encabezado h1...
</p>

<h2>EYDH</h2>
<p><strong>Mi primer programa en html...con h2 y strong</strong></p>
<h3>EYDH</h3>
<p><em>Mi primer programa en html...con h3 y em</em></p>

<h4>EYDH</h4>
<p><small>Mi primer programa en html...con h4 y small</small></p>
<h5>EYDH</h5>
<p>Mi primer programa en html..con h5...</p>

<h6>EYDH</h6>
<p>Mi primer programa en html..con h6...</p>

<p>Mi primer programa en html...<br>Trataremos de ver todas las instrucciones de html</p>

<p><strong>Lista desordenada</strong></p>
<ul>
<li>linea 1
<li>linea 2
<li>linea 3
<li>linea 4
</ul>

<p><strong>Lista ordenada</strong></p>
<ol>
<li>linea 1
<li>linea 2
<li>linea 3
<li>linea 4
</ol>

<p><strong>Enlaces o links</strong></p>
<a href="http://evolucionydesarrollohumano.blogspot.com" title="EYDH">Mi blog en google</><br><br>
<a href="eydh.html">Mi pagina de EYDH</>
<p><strong>Imagenes</strong></p><br>
<img src="0000-gran-explosion.gif" alt="Gran explosion" title="Gran explosion" width="100" hight="50" />

<p><strong>Tabla con border 1</strong></p><br>
<table border="1"><tr><td>dato11</td><td>dato12</td><td>dato13</td></tr>
<tr><td>dato21</td><td>dato22</td><td>dato23</td></tr>
  <tr><td>dato31</td><td>dato32</td><td>dato33</td></tr></table><tr>
 
  <p><strong>Tabla con color</strong></p><br>
<table bgcolor="yellow" ><tr><td>dato11</td><td>dato12</td><td>dato13</td></tr>
<tr bgcolor="brown"><td>dato21</td><td>dato22</td><td>dato23</td></tr>
  <tr><td>dato31</td><td>dato32</td><td>dato33</td></tr></table><br>
 
  <strong>Formulario</strong><br>
  <form method="post" action="">
  Nombre: <input type="text" name="nomb" value="Gustavo" width="20" /><br>
  Dirección: <input type="text" name="dir" value="severo" width="20" /><br>
   eMail: <input type="text" name="email" value="" width="20" />
  <br><input type="submit" name="enviar" value="enviar" />
  </form>
  <br>
    
    <strong>Formulario con tabla</strong><br>
  <form method="post" action="">
  <table>
  <tr><td>
  Nombre:
  </td>
  <td>
   <input type="text" name="nomb" value="Gustavo" width="20" />
  </td></tr>
  <tr><td>
  Dirección:
  </td><td>
  <input type="text" name="dir" value="severo" width="20" />
  </td></tr>
  <tr><td>
   eMail:
   </td>
  <td>
   <input type="text" name="email" value="" width="20" />
   </td></tr>
  <tr><td>
  <input type="submit" name="enviar" value="enviar" />
  </td></tr>
  </table>
  </form>
 
<strong>Tabla con Formulario </strong><br>
  <table>
  <tr><td>
  <form method="post" action="">
  <table>
  </td></tr>
  <tr><td>
  Nombre:
  </td>
  <td>
   <input type="text" name="nomb" value="Gustavo" width="20" />
  </td></tr>
  <tr><td>
  Dirección:
  </td><td>
  <input type="text" name="dir" value="severo" width="20" />
  </td></tr>
  <tr><td>
   eMail:
   </td>
  <td>
   <input type="text" name="email" value="" width="20" />
   </td></tr>
  <tr><td>
  <input type="submit" name="enviar" value="enviar" />
  </td></tr>
  </form>
   </table><br> 

</body>
</html>

Para ejecutar las páginas creadas en lenguaje o escripts html y php instalamos y usamos en el teléfono  inteligente el paquete PWS  si no se tiene buscar en play store de google buscarlo e instalarlo, contiene el servidor web, el lenguaje php y el servidor de base de datos mysql. Para crear los programas usar MasterWeb  y para el browser usar Opera clasic, si no se tienen buscarlos también en play store de google, cuando se encuentren instalarlos. Ver primera página de Programación android con PHP y MySQL que trata de la instalación. Una aplicación cliente servidor consiste de peticiones de servicios del cliente al servidor y responde el servicio de la petición. Cuando prendemos el teléfono se carga el sistema operativo android y se ejecuta en la memoria, donde controla y ejecuta las aplicaciones de forma concurrente, como el servidor web que se ejecuta como hilos de procesos por cada una de las peticiones de los clientes. Con un programa como inspector wifi se identifican las direcciones ip en la red local, para el teléfono servidor es 192.168.1.75 El servidor web tiene un directorio www donde se colocan lo archivos de páginas con un nombre que termina con html o php. Ahora podemos requerir las páginas de html y php en el propio teléfono con el browser como el opera clasic, donde se coloca la dirección:
        http://localhost/nombre-archivo.html o php 

también como:
       http://127.0.0.1/ nombre-archivo.html o php       

Cuando se usa otro teléfono de la intranet introducimos:       
http://192.168.1.75/nombre-archivo.html o php
Cuando se envía la dirección y la página deseada al servidor web, busca la página, al encontrarla el servidor web la analiza, si encuentra instrucciones html que inicia con <html> o una secuencia de instrucciones php que inicia con <?php y termina con ?>  puede incluir instrucciones para acceso y manipulación de base de datos de mysql.  El servidor web llama al interprete php y cada instrucción php  la interpreta y las traduce a html, cuando termina el análisis de la página al encontrar </html> el servidor  web la envía al cliente que la pidió. El servidor web continúa en ejecución  como hilos de procesos esperando peticiones y respondiendo a los clientes, hasta que se para el servidor web o se apaga completamente el teléfono.
Para copiar el código, de alguna página de Programación android con PHP y MySQL seleccionar la parte deseada de las páginas de: evolucionydesarrollohumano.blogspot.com Salir de opera clasic y entrar en la pantalla de edición del webmaster y pegarla.

jueves, 20 de marzo de 2014

Programación android con PHP y MySQL - ph00

Programación android con php y mysql
VER VIDEO

EYDH V3

Teléfonos Inteligentes e Internet

Ver EYDH en Internet
Redes de teléfonos inteligentes.


Es increíble cómo se han desarrollado las Redes de computadoras, con la tecnología de la información, que incluye la electrónica, la computación y las comunicaciones.

Estos son los temas que trataremos.
ph00 Programación Android con PHP y MySQL
Red local con Teléfonos Inteligentes
Palapa Web Server
ph01-ph02 Introducción lenguaje HTML. 
ph03-ph08 Introducción lenguaje PHP.
ph09-ph10 Introducción a MySQL.
ph11-ph26 Aplicación EYDH.
ph27-EYDH PHPMyADMIN
ph28-EYDH en Internet
ph29-EYDH en la Red Telefónica

La primera generación de computadoras como la EDVAC de programa almacenado, era de gran costo, tamaño, peso y consumo de energía, fue hecha de bulbos electrónicos para realizar cálculos aritméticos y solo tiene una comunicación interna con alambres entre los diversos componentes y con cables el equipo periférico.

La segunda generación de computadoras fue hecha de transistores reduciendo su tamaño y realizaban cálculos más rápido y complicados. Realizan una comunicación interna con alambres entre sus componentes internos y con cables su equipo periférico, pero además se inicia la comunicación con terminales locales con cables y las  remotas con líneas telefónicas.

La tercera generación de computadoras fueron producidas con circuitos integrados y los cálculos matemáticos son más complejos y rápidos, debido a la reducción de las distancias de  la comunicación interna con alambres de los componentes del procesador central. Se siguen usando cables para comunicarse con el periférico. Para la comunicación externa, se crean redes de computadoras y terminales locales y remotas. Las redes locales utilizan cable ethernet rs232 y telefónico rj45 para conectar las terminales y estaciones de trabajo a las  computadoras centrales. Las redes remotas se comunican por las redes telefónicas, microondas y satélites.

La cuarta generación utiliza como componentes electrónicos los microprocesadores que reducen el tamaño de las computadoras, y también las conexiones con alambres los componentes internos y con cables el equipo periférico. Surgen diversos tipos y tamaños de computadoras. Las super computadoras de varios microprocesadores o multiprocesadores que realizan cálculos complejos en paralelo y alta velocidad. Las computadoras personales en sus diversos tamaños de escritorio, portátil, tablets y los teléfonos móviles celulares inteligentes, o simplemente teléfonos inteligentes. Las redes que se crean son las locales y las remotas o amplias como internet que se extiende a  todo el mundo. Las redes locales se conectan por medio de comunicaciones inalámbricas wi-fi,  las computadoras servidores que dan servicio a computadoras cliente de diversos tipos, como las computadoras personales, portátiles, tablets y teléfonos inteligentes. Para conectarse a una red amplia como internet, se usa una computadora de interface y de protección, que utiliza un modem ruteador para conectarse a la red telefónica y a internet o un modem-tvcable para conectarse a la red de televisión por cable e internet. Una red local tiene la ventaja de compartir recursos como impresoras y bases de datos, normalmente ubicados en los servidores. Es increíble y maravilloso que ahora con los teléfonos inteligentes con android, pueden hacer la función de un servidor e instalarse una base de datos como mysql y con una aplicación escrita en el lenguaje php y con el servidor web apache compartirla a  otros usuarios de la red local de teléfonos inteligentes. También, si después  la base de datos mysql y la aplicación en php la colocamos en un servidor de hospedaje web apache de la red intetnet, da como resultado que la aplicación estará disponible a todo el mundo.

Voy a desarrollar una aplicación en php y mysql en una red local con teléfonos inteligentes, uno de ellos será el servidor y los otros clientes, tres son teléfonos inteligentes, una tablet y una laptop.

Estos son los temas que trataremos.
ph1-ph2 Introducción lenguaje HTML. 
ph3-ph8 Introducción lenguaje PHP.
ph9-ph10 Introducción a MySQL.
ph11-ph26 Aplicación EYDH.
ph27-EYDH en una Intranet
ph28-EYDH en Internet
ph29-EYDH en la Red Telefónica

1. Primero necesitamos un modem ruteador  que tenga wi-fi para conectarse a internet y también conectar los teléfonos inteligentes en la red local.

2. Segundo identificar la dirección ip local de cada teléfono inteligente con algún programa de los muchos que hay en google play store. Yo utilice el programa Inspector Wifi, el teléfono servidor tiene el ip:192.168.1.75 los clientes ip:192.168.1.67 ip:192.168.1.73
 
3. En el teléfono servidor se instala php,mysql y apache. Hay varios paquetes que incluyen los tres, algunos hay que pagar y otros son gratis.

Yo instale Palapa Web Server, es muy sencillo de instalar, ir a play store de google, buscar Palapa Web Server, una vez encontrado seleccionar instalarlo y listo, cuando termina, se lleva su icono a la primera pantalla, se presiona para ejecutarse y aparece una pantalla con una descripción y dos botones deslizables, un botón deslizable es para ejecutar y parar el servidor de base de datos mysql y el otro para ejecutar o parar el servidor apache.

En la parte superior derecha se presiona el botón redondo y aparece una ventana para seleccionar el browser, es necesario usar opera clasic, si no se tiene hay que instalarlo. Al seleccionar opera aparece una ventana pidiendo usuario, introducir admin y de contraseña, introducir admin y dar go.

Aparece una pantalla con los parámetros del web server apache, php y la base de datos mysql, no realizar ningún cambio.

Introducir en la ventana de enlaces de opera la dirección de: 127.0.0.1:9999/phpmyadmin y enviar con enter. Aparece una ventana login, pidiendo username:root y password:adminadmin. Ahora enviar la dirección presionando go.

Aparece la primera pantalla del programa  phpMyAdmin que permite al administrador de la base de datos crear usuarios y permisos, crear bases de datos y sus tablas, hacer peticiones, insertar, modificar y eliminar campos de tablas, exportar e importar bases de datos y tablas, etc.
 
4. Ahora necesitamos un programa que facilite codificar programas en php, vamos a play store, y buscamos WebMaster, seleccionarlo e instalarlo. Llevar el icono de WebMaster a la primera página, presionar y aparece el editor de WebMaster, presionar el boton de menu y aparecen las opciones de New File, Open File, Save As y Preferences.

5.Vamos a realizar nuestro primer programa de hola...mi primer programa en php. En el editor de MasterWeb presionamos menu, seleccionamos New File y aparece una ventana con Select File Type con varios tipos de archivos, seleccionamos php.

6.Aparece la página de php:
<?php
?>
ahora escribimos entre las etiquetas:
<?php
echo "Hola...mi primer programa en php...";
?>


7.Presionamos menu y seleccionamos Save As para guardar el archivo como hola.php



8.Salimos de WebMaster y vamos a la primera pantalla seleccionamos opera e introducimos:127.0.0.1:8080 – y nos lleva a www seleccionamos hola.php.


Presionamos el enlace y se ejecuta y aparece: hola...mi primer programa en php...


De esta forma desarrollamos nuestro primer programa en php en nuestro teléfono inteligente que es un servidor web apache y también tiene la base de datos mysql y el lenguaje  php.
En los siguientes blogs desarrollare en detalle una aplicación en php de mi base de conocimientos EYDH que ya he realizado en java con AIDE y en C con  CCTools.
1. Al ejecutarse EYDH aparece la primer pantalla:





2.Al presionar Pasado de la Evolución Física, obtenemos :




3. Seleccionamos Gran explosión, obtenemos su descripción:


martes, 25 de febrero de 2014

Programación android con CCTools y C - pc20

//pc20 listas dobles























#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct xtemas{
  char tema[40];
  char desc[160]; 
  struct xtemas *sig; 
  struct xtemas *ant;
};

struct xtemas *prim;
struct xtemas *ulti;
struct xtemas *encuentra(char *);
void introducir(void), buscar(void), guardar(void);
void recuperar(void), listar(void);
void eliminar(struct xtemas **, struct xtemas **);
void lista_doble(struct xtemas *i, struct xtemas **prim,
  struct xtemas **ulti);
void entras(char *, char *, int), desplegar(struct xtemas *);
int menu(void);

int menu(void){
char s[80];
int c;
  printf("\n\tMENU\n");
  printf("1. Introducir tema\n");
  printf("2. Buscar tema\n");
  printf("3. Actualizar tema\n");
  printf("4. Eliminar tema\n");
  printf("5. Listar temas\n");   
  printf("6. Guardar temas\n");
  printf("7. Recuperar temas\n");
  printf("8. Fin\n");
  do{
    printf("\nIntroducir opcion: ");
    gets(s);
    c = atoi(s);
  }while(c<0 || c>8);
  return c;
}

void introducir(void){
struct xtemas *info;
  for(;;){
    info = (struct xtemas *)malloc(sizeof(struct xtemas));
    if(!info) {
      printf("\nFuera de memoria...");
      return;
    }
    entras("Introducir tema: ", info->tema, 30);
    if(!info->tema[0]) break
    entras("Introducir desc: ", info->desc, 40); 
    if(!info->desc[0]) break;
    lista_doble(info, &prim, &ulti);
  }
}

void entras(char *prompt, char *s, int count){
char p[255];
  do{
    printf("%s\n",prompt);
    fgets(p, 254, stdin);
    if(strlen(p) > count) printf("\nMuy largo\n");
  }while(strlen(p) > count);
  p[strlen(p)-1] = 0;
  strcpy(s, p);
}

void actualizar(void){
struct xtemas *info;
char s[100];
  entras("Introduce tema: ", s, 30);
  info = encuentra(s);
  if(!info){
    printf("No encontrado...\n");
  }else
    entras("Introducir tema: ", info->tema, 30);
    //if(!info->tema[0]) break; 
    entras("Introducir desc: ", info->desc, 40); 
    //if(!info->desc[0]) break;
    //lista_doble(info, &prim, &ulti);
  }


void lista_doble(
struct xtemas *i, 
struct xtemas **prim,
struct xtemas **ulti ){
struct xtemas *viejo, *p;
   if(*ulti==NULL){
     i->sig = NULL;
     i->ant = NULL;
     *ulti = i;
     *prim = i;
     return;
   }
   p = *prim;
   viejo = NULL;
   while(p){
     if(strcmp(p->tema, i->tema)<0){
       viejo = p;
       p = p->sig;
     }else {
       if(p->ant){
         p->ant->sig = i;
         i->sig = p;
         i->ant = p->ant;
         p->ant = i;
         return;
       }
     i->sig = p;
     i->ant = NULL;
     p->ant = i;
     *prim = i;
     return;
   }
}
viejo->sig = i;
i->sig = NULL;
i->ant = viejo;
*ulti = i;
}

void eliminar(struct xtemas **prim, struct xtemas **ulti){
struct xtemas *info;
char s[80];
  entras("Introduce tema: ", s, 30);
  info = encuentra(s);
  if(info){
    if(*prim==info){
      *prim=info->sig;
      if(*prim) (*prim)->ant = NULL;
        else *ulti = NULL;
    }else{
      info->ant->sig = info->sig;
      if(info!=*ulti)
        info->sig->ant = info->ant;
      else
        *ulti = info->ant;
    }
    free(info);
  }
}

struct xtemas *encuentra( char *tema){
struct xtemas *info;
info = prim;
while(info){
   if(!strcmp(tema, info->tema)) return info;
   info = info->sig;
}
printf("Tema no encontrado\n");
return NULL;
}

void listar(void){
struct xtemas *info;
  info = prim;
  while(info){
    desplegar(info);
    info = info->sig;
  }
}

void desplegar(struct xtemas *info){
  printf("%s\n", info->tema);
  printf("%s\n", info->desc);
//printf("\n\n");
}

void buscar(void){
char tema[40];
struct xtemas *info;
  printf("Introducir tema: ");
  gets(tema);
  info = encuentra(tema);
  if(!info) printf("No encontrado...\n");
  else desplegar(info);
}

void guardar(void){
struct xtemas *info;
FILE *fp;
  fp = fopen("mlist", "wb");
  if(!fp){
    printf("No abre archivo...\n");
    exit(1);
  }
  printf("\nGuardando archivo...\n");
  info = prim;
  while(info){
    fwrite(info, sizeof(struct xtemas), 1, fp);
    info = info->sig;
  }
  fclose(fp);
}

void recuperar(){
struct xtemas *info;
FILE *fp;
  fp = fopen("mlist", "rb");
  if(!fp){
    printf("No se abre archivo...\n");
    exit(1);
  }

  while(prim){
    info = prim->sig;
    free(info);
    prim = info;
  }
  
  prim = ulti = NULL;
  printf("\nRecuperando archivo...\n");
  while(!feof(fp)){
    info = (struct xtemas *) malloc(sizeof(struct xtemas));
    if(!info){
      printf("Fuera de memoria...");
      return;
    }
    if(1 != fread(info, sizeof(struct xtemas), 1, fp)) break;
    lista_doble(info, &prim, &ulti);
  }
  fclose(fp);
}

int main(void){
prim = ulti = NULL; 
  for(;;){
    switch(menu()){
      case 1:            
      introducir();
      break;
      case 2:
      buscar();
      break;
      case 3:
      actualizar();
      break;
      case 4:
      eliminar(&prim, &ulti);
      break;
      case 5:
      listar();
      break;      
      case 6:
      guardar();     
      break;
      case 7:
      recuperar();      
      break;
      case 8:
      printf("Fin del programa...");
      exit(0);
    }
}
return 0;
}

Programación android con CCTools y C - pc19

//pc019 Programa de estructura y arreglo






















#include<stdio.h>
#include<stdlib.h>
#define max 5
struct stemas{
char tema[100];
char desc[890];
}arreglot[max];
//struct stemas arreglot[max];

void inicializar(){
int i;
  for(i=0; i<max; i++){
    *arreglot[i].tema='\0';
  }
}

void recuperar(){
FILE *fp;
int i;
  if((fp=fopen("temas1","rb")) == NULL){
    printf("No se abre archivo temas1...\n");
    return;
  }
  inicializar();
  for(i=0;i<max;i++)
    if(fread(&arreglot[i],sizeof(struct stemas),1,fp) != 1){
    if(feof(fp)){
       printf("Archivo recuperado...\n");
       fclose(fp);
       return;
    }
    printf("Error de lectura...\n");
    }
    printf("Archivo recuperado...\n");
}

void guardar(){
int i;
FILE *fp;
  if((fp=fopen("temas1","wb"))==NULL){
    printf("No se abre archivo temas1...\n");
    return;
  }
  for(i=0;i<max;i++){
    if(*arreglot[i].tema)
      if(fwrite(&arreglot[i],sizeof(struct stemas),1,fp) !=1)
        printf("Error de escritura...");
  }
  printf("Archivo guardado...\n");
  fclose(fp);
}

void listar(void){
int i;
  for(i=0;i<max;i++){
    printf("Tema: %s\n",arreglot[i].tema);
    printf("Desc: %s\n",arreglot[i].desc);  
  }
}

void eliminar(int nt){
  if(nt != -1){
    *arreglot[nt].tema = '\0';
    *arreglot[nt].desc = '\0';
    puts("Tema y Descripción eliminados...");
  }
}

void actualizar(nt){
int r;
char t1[100];
char t2[900];
  r = nt;
  printf("Reg: %d\n",r);
  if(r != -1){
    puts("\nIntroduce tema, max. 100 caracteres: ");
    gets(t1);   
    if(strlen(t1)>100){
    printf("\nTema %d > 100 caracteres...\n",strlen(t1));
    printf("Repite 1.Introducir Tema...\n");
    }else{
      strcpy(arreglot[r].tema,t1); 
      puts("\nIntroduce .desc, max 900 caracteres: ");
      gets(t2);      
      if(strlen(t2)>900){
        printf("\nDescripción %d > 900 caracteres...\n",strlen(t2));
        printf("Repite 1.Introducir Tema...\n");
        *arreglot[r].tema = '\0';
      }else{
        strcpy(arreglot[r].desc,t2);
      }
    }
  }     
}

void desplegar(int nt){
//int nt;
  if(nt != -1){
    printf("\nTema:%s \nDescripción: %s\n",arreglot[nt].tema,arreglot[nt].desc);
  }
}

int encontrar(){
char s[20];
int r;
  printf("Introduce tema:\n");
  gets(s);
  for(r=0;r<5;r++){
    if(!strcmp(s,arreglot[r].tema)) break;
  }
  if(r==5){
    printf("tema no esta...\n");
    return(-1);
  }
  return r;   
}

void entras(char *promp, char *s, int num){
char c[100];
  do{
  printf("%s",promp);
  gets(c);
  if(strlen(c)>=num)
    printf("\nDemasiado largo...\n");
  }while(strlen(c)>=num);
  strcpy(s,c);
}

void introducir(void){
int i;
  do{
    for(i=0;i<max;i++){
      if(!*arreglot[i].tema) break;
    }
    //i=0;
    printf("Reg: %d\n",i);
    if(i>=max){
      printf("Arreglo de temas max...");
      break;
    }else{
    puts("\nTerminar con linea en blanco...");  
    //puts("Introduce tema");
    //gets(arreglot[i].tema);
    entras("Introduce tema: \n",arreglot[i].tema,100); 
    if(!*arreglot[i].tema) break
    //puts("Introduce desc");
    //gets(arreglot[i].desc);    
    entras("Introduce descripcion: \n",arreglot[i].desc,900);
    if(!*arreglot[i].desc){
    *arreglot[i].tema='\0';
    break;
    }
     } 
  }while(1);
}

int main(void){
int menu,r;
char s[80];
  inicializar();
  do{
  printf("\n\t\tMENU \n");
  printf("1 Introducir Tema \n");
  printf("2 Desplegar Tema \n");
  printf("3 Actualizar Tema \n");
  printf("4 Eliminar Tema \n");
  printf("5 Listar Temas \n");
  printf("6 Guardar Temas \n");
  printf("7 Recuperar Temas \n");
  printf("8 Terminar \n");
  do{
  printf("Selecciona opcion:");
  gets(s);
  menu=atoi(s);
  }while(menu<0 || menu>9);
  switch(menu){
  case(1):
  introducir();
  break;
  case(2):
  r=encontrar();
  desplegar(r);
  break;
  case(3):
  r=encontrar();
  actualizar(r);
  break;
  case(4):
  r=encontrar();
  eliminar(r);
  break;
  case(5):
  listar();
  break;
  case(6):
  guardar();
  break;
  case(7):
  recuperar();
  break;
  case(8):
  puts("Fin del programa...");
  break;
  }
  }while(menu!=8);
 
return(0);
}

miércoles, 29 de enero de 2014

Programación android con CCTools y C-pc18

Pc18-Programa con arreglo de caracteres y
archivos.























#include<stdio.h>
#include<string.h>
char tema[100];
char desc[500];
void inic(void){
int t;
  for(t=0;t<100;t++){
    tema[t]='\0';
  }
  for(t=0;t<500;t++){
    desc[t]='\0';
  }
}    
void introducir(void){
int r;
char t1[100];
char t2[200]; 
  for(r=0;r<5;r++){
    if(!tema[r*20]) break;
  }
  if(r==5){
    printf("Lista de temas completa...");
  }else
    printf("Reg: %d\n",r);
    puts("\nIntroduce tema, max. 20 caracteres: ");
    gets(t1);   
    if(strlen(t1)>20){
    printf("\nTema %d > 20 caracteres...\n",strlen(t1));
    printf("Repite 1.Introducir Tema...\n");    
    }else{
    strcpy(&tema[r*20],t1); 
      //gets(&tema[r*20]);
      puts("\nIntroduce desc, max 100 caracteres: ");
      gets(t2);      
      if(strlen(t2)>100){
      printf("\nDescripción %d > 100 caracteres...\n",strlen(t2));
      printf("Repite 1.Introducir Tema...\n");
      tema[r*20] = '\0';
      }else{
      strcpy(&desc[r*100],t2);
      }
    }  
  }
}
int encontrar(){
char s[20];
int r;
  printf("Introduce tema:\n");
  gets(s);
  for(r=0;r<5;r++){
    if(!strcmp(s,&tema[r*20])) break;
  }
  if(r==5){
    printf("tema no esta...\n");
    return(-1);
  }
  return r;   
}
 
void desplegar(int nt){
//int nt;
  printf("\nTema:%s \nDescripción: %s\n",&tema[nt*20],&desc[nt*100]);
}
void actualizar(int nt){
int r;
char t1[100];
char t2[200];
  r = nt;
  printf("Reg: %d\n",r);
  puts("\nIntroduce tema, max. 20 caracteres: ");
  gets(t1);   
  if(strlen(t1)>20){
  printf("\nTema %d > 20 caracteres...\n",strlen(t1));
  printf("Repite 1.Introducir Tema...\n");
  }else{
    strcpy(&tema[r*20],t1); 
    puts("\nIntroduce desc, max 100 caracteres: ");
    gets(t2);      
    if(strlen(t2)>100){
    printf("\nDescripción %d > 100 caracteres...\n",strlen(t2));
    printf("Repite 1.Introducir Tema...\n");
    tema[r*20] = '\0';
    }else{
    strcpy(&desc[r*100],t2);
    }
  }     
}
void eliminar(int nt){
  tema[nt*20] = '\0';
  desc[nt*100] = '\0';
  puts("Tema y Descripción eliminados: "); 
}
void listar(void){
int r;
  for(r=0;r<5;r++){
    printf("\nTema:%s \nDescripción: %s\n",&tema[r*20],&desc[r*100]);
  }
}

void guardar(void){
int i;
FILE *fp;
if((fp=fopen("temas.txt","w")) == 0){
puts("No se puede abrir temas");
}else{
  for(i=0;i<100;i++){
  putc(tema[i],fp);
  }
  for(i=0;i<500;i++){
  putc(desc[i],fp);
  }
  fclose(fp);
}
}
void recuperar(void){
int i;
FILE *fp;
if((fp=fopen("temas.txt","r")) == 0){
puts("No se puede abrir temas");
}else{
  puts("Recuperando Tema...\n");
  for(i=0;i<100;i++){
  tema[i] = getc(fp);
  }
  puts("Recuperando Desc...");
  for(i=0;i<500;i++){
  desc[i] = getc(fp);
  }
  fclose(fp);
}
}
int main(void){
char ca;
int nt;
inic();
//introducir(); 
  do{
  printf("\n\t\tMENU");
  printf("\n1.Introducir Tema\n");
  printf("2.Desplegar Tema\n");
  printf("3.Actualizar Tema\n");
  printf("4.Eliminar Tema\n");
  printf("5.Listar Temas\n");
  printf("6.Guardar Temas\n");
  printf("7.Recuperar Temas\n");
  printf("8.Terminar \n");
  do{
  printf("Seleccionar Opción: ");
  //ca=getchar();
  gets(&ca);
  }while(ca<'1' || ca>'8');
  printf("\n"); 
  switch(ca){
     case'1':
     introducir();
     //listar();
     break;
     case'2':
     nt=encontrar();
     if(nt!=-1) desplegar(nt);
     break;
     case'3':
     nt=encontrar();
     if(nt!=-1) actualizar(nt); 
     break;
     case'4':
     nt=encontrar();
     if(nt!=-1) eliminar(nt);
     break;
     case'5':
     listar();
     break;
     case'6':
     guardar();
     break;
     case'7':
     recuperar();
     break;
     case'8':
     printf("Fin del programa...");
     return(0);     
  }  
  }while(ca!='8'); 
 
  return(0);
}
  

Programación android con CCTools y C-pc17

Pc17-Programa con arreglo de caracteres 























#include<stdio.h>
#include<string.h>
char tema[100];
char desc[500];

void inic(void){
int t;
  for(t=0;t<100;t++){
    tema[t]='\0';
  }
  for(t=0;t<500;t++){
    desc[t]='\0';
  }
}    

void introducir(void){
int r;
char t1[100];
char t2[200]; 
  for(r=0;r<5;r++){
    if(!tema[r*20]) break;
  }
  if(r==5){
    printf("Lista de temas completa...");
  }else
    printf("Reg: %d\n",r);
    puts("\nIntroduce tema, max. 20 caracteres: ");
    gets(t1);   
    if(strlen(t1)>20){
    printf("\nTema %d > 20 caracteres...\n",strlen(t1));
    printf("Repite 1.Introducir Tema...\n");    
    }else{
    strcpy(&tema[r*20],t1); 
      //gets(&tema[r*20]);
      puts("\nIntroduce desc, max 100 caracteres: ");
      gets(t2);      
      if(strlen(t2)>100){
      printf("\nDescripción %d > 100 caracteres...\n",strlen(t2));
      printf("Repite 1.Introducir Tema...\n");
      tema[r*20] = '\0';
      }else{
      strcpy(&desc[r*100],t2);
      }
    }  
  }
}

int encontrar(){
char s[20];
int r;
  printf("Introduce tema:\n");
  gets(s);
  for(r=0;r<5;r++){
    if(!strcmp(s,&tema[r*20])) break;
  }
  if(r==5){
    printf("tema no esta...\n");
    return(-1);
  }
  return r;   
}
 
void desplegar(int nt){
//int nt;
  printf("\nTema:%s \nDescripción: %s\n",&tema[nt*20],&desc[nt*100]);
}
void actualizar(int nt){
int r;
char t1[100];
char t2[200];
  r = nt;
  printf("Reg: %d\n",r);
  puts("\nIntroduce tema, max. 20 caracteres: ");
  gets(t1);   
  if(strlen(t1)>20){
  printf("\nTema %d > 20 caracteres...\n",strlen(t1));
  printf("Repite 1.Introducir Tema...\n");
  }else{
    strcpy(&tema[r*20],t1); 
    puts("\nIntroduce desc, max 100 caracteres: ");
    gets(t2);      
    if(strlen(t2)>100){
    printf("\nDescripción %d > 100 caracteres...\n",strlen(t2));
    printf("Repite 1.Introducir Tema...\n");
    tema[r*20] = '\0';
    }else{
    strcpy(&desc[r*100],t2);
    }
  }     
}

void eliminar(int nt){
  tema[nt*20] = '\0';
  desc[nt*100] = '\0';
  puts("Tema y Descripción eliminados: "); 
}


void listar(void){
int r;
  for(r=0;r<5;r++){
    printf("\nTema:%s \nDescripción: %s\n",&tema[r*20],&desc[r*100]);
  }
}  

int main(void){
char ca;
int nt;
inic();
//introducir(); 
  do{
  printf("\nMenu: \n");
  printf("\n1.Introducir Tema\n");
  printf("2.Desplegar Tema\n");
  printf("3.Actualizar Tema\n");
  printf("4.Eliminar Tema\n");
  printf("5.Listar Temas\n");
  printf("6.Terminar Tema\n");
  do{
  printf("Seleccionar Opción: ");
  //ca=getchar();
  gets(&ca);
  }while(ca<'1' || ca>'6');
  printf("\n"); 
  switch(ca){
     case'1':
     introducir();
     //listar();
     break;
     case'2':
     nt=encontrar();
     if(nt!=-1) desplegar(nt);
     break;
     case'3':
     nt=encontrar();
     if(nt!=-1) actualizar(nt); 
     break;
     case'4':
     nt=encontrar();
     if(nt!=-1) eliminar(nt);
     break;
     case'5':
     listar();
     break;
     case'6':
     printf("Fin del programa...");
     return(0);     
  }  
  }while(ca!='6'); 
 
  return(0);
}