วันศุกร์ที่ 29 กุมภาพันธ์ พ.ศ. 2551

MySQL C API

MySQL C API
23.2.1. C API Data Types
23.2.2. C API Function Overview
23.2.3. C API Function Descriptions
23.2.4. C API Prepared Statements
23.2.5. C API Prepared Statement Data types
23.2.6. C API Prepared Statement Function Overview
23.2.7. C API Prepared Statement Function Descriptions
23.2.8. C API Prepared Statement Problems
23.2.9. C API Handling of Multiple Statement Execution
23.2.10. C API Handling of Date and Time Values
23.2.11. C API Threaded Function Descriptions
23.2.12. C API Embedded Server Function Descriptions
23.2.13. Controlling Automatic Reconnect Behavior
23.2.14. Common Questions and Problems When Using the C API
23.2.15. Building Client Programs
23.2.16. How to Make a Threaded Client

การใช้ภาษา C เรียก MYSQL

#include <mysql.h>
#include <stdio.h>

main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

char *server = "mysql-server.ucl.ac.uk";
char *user = "ucabwww";
char *password = "secret";
char *database = "ucabwww";

conn = mysql_init(NULL);

/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(0);
}

/* send SQL query */
if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(0);
}

res = mysql_use_result(conn);

/* output fields 1 and 2 of each row */
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s %s\n", row[1], row[2]);

/* Release memory used to store results and close connection */
mysql_free_result(res);
mysql_close(conn);
}

พอยเตอร์

#include "stdio.h"
#include "conio.h"


void main()
{
int *pt,a,b;
a = 20;
pt = &a;
b = *pt;
clrscr();

printf("%d\n",b);
}






#include "stdio.h"
#include "conio.h"


void main()
{
int *pt,a;
a = 20;
pt = &a;
clrscr();
printf("Address pointer by pointer pt stored value of %d\n",*pt);
*pt = 10;
printf("After indirection assignment\n");
printf("a = %d\n",a);
}






#include "stdio.h"
#include "conio.h"


void main()
{
int *pt;
int a;
pt = &a;
*pt = 15;
clrscr();
printf("%d\n",a);
}






#include "stdio.h"
#include "conio.h"


void main()
{
int *ipt;
*ipt = 15;
clrscr();
printf("%d\n",*ipt);
}






#include "stdio.h"
#include "conio.h"


void main()
{
int number[3];
int *pt;

clrscr();
number[0] = 100;
number[1] = 200;
number[2] = 300;
pt = number;
clrscr();

printf("number[0] = %d\n",*pt);
printf("number[1] = %d\n",*(pt+1));
printf("number[2] = %d\n",*(pt+2));
}

ARRAY 3 มิติ

#include "stdio.h"
#include "conio.h"


void main()
{ int i,j,k;
char a[3][3][3]={
'A','B','C',
'D','E','F',
'G','H','I',

'J','K','L',
'M','N','O',
'P','Q','R',

'S','T','U',
'V','W','X',
'Y','Z','a'
};
clrscr();
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<3;k++)
{
printf ("a[%d][%d][%d] = %c\n",i,j,k,a[i][j][k]);
}
}

ARRAY 2 มิติ

#include "stdio.h"
#include "conio.h"

void main()
{ int i,j;
char a[3][3]={
'A','B','C',
'D','E','F',
'G','H','I'
};
clrscr();
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf ("a[%d][%d] = %c\n",i,j,a[i][j]);
}
}

ARRAY 1 มิติ

ลักษณะของ Arrays

อะเรย์ เป็นโครงสร้างข้อมูลแบบง่าย ที่พบมากในการเขียนโปรแกรมภาษาคอมพิวเตอร์ทุกภาษา
และมักใช้เป็นพื้นฐานในการทำความเข้าใจโครงสร้างข้อมูลตัวอื่น ๆ อะเรย์
เป็นโครงสร้างข้อมูลที่เรียกว่า Linear List มีลักษณะคล้าย เซ็ตในคณิตศาสตร์
คือ อะเรย์จะประกอบด้วยสมาชิกที่มีจำนวนคงที่
มีรูปแบบข้อมูลเป็นแบบเดียวกับสมาชิกแต่ละตัวใช้เนื้อที่จัดเก็บที่มีขนาดเท่ากัน
เรียงต่อเนื่องในหน่วยความจำหลัก อะเรย์ ถือเป็นโครงสร้างข้อมูลแบบสแตติค (Static
data structure) โดยอะเรย์จะมีขนาดคงที่ เป็นแถวลำดับแบบอันดับ (Ordered list )
ที่ประกอบด้วยชุดของตัวแปรที่มีลักษณะเป็นช่องหลาย ๆ ช่องที่มีชื่อเดียวกัน
สำหรับใช้เก็บข้อมูลชนิดเดียวกัน โดยข้อมูลที่อยู่ในช่องแต่ละช่อง จะเรียกว่า
เป็นสมาชิกของอะเรย์

แถวลำดับแบบอันดับ (Ordered list หรือ Linear list)
เป็นรูปแบบของการจัดเก็บข้อมูลเข้าไว้ด้วยกันแบบเรียงลำดับ (order)
หรือเป็นแถวเส้นตรง (linear)

ตัวอย่างเช่น


(A,B,C,D,….Z ) เป็นแถวลำดับแบบอันดับของตัวอักษรภาษาอังกฤษ หรือ

(Sun,Mon,Tue,Wed,….,Sat)
เป็นแถวลำดับแบบอันดับของวันในหนึ่งสัปดาห์

อะเรย์ มีคุณสมบัติหลัก ๆ ดังนี้

        • มีขนาดคงที่
        • ข้อมูลที่จัดเก็บแสดงผลออกมาแบบเรียงลำดับ (inorder)
        • สามารถดึงสมาชิกลำดับที่ i ใด ๆ ออกมาได้
        • สามารถแทนที่สมาชิกลำดับที่ i ใด ๆ ได้
        • สามารถเพิ่มสมาชิกใหม่เข้าไปในแถวลำดับได้
        • สามารถลบสมาชิกที่มีอยู่ออกจากแถวลำดับได้






#include "stdio.h"
#include "conio.h"

void
main()
{
char a[5]={'A','B','C','D','E'};

clrscr();
printf ("a[0] = %c\n",a[0]);
printf ("a[1] = %c\n",a[1]);
printf ("a[2] = %c\n",a[2]);
printf ("a[3] = %c\n",a[3]);
printf ("a[4] = %c\n",a[4]);
}

แสดงเวลาปัจจุบัน

#include <stdio.h>
#include <dos.h>

int main(void)
{
struct time t;
gettime(&t);
printf("The current time is: %2d:%02d:%02d.%02d\n",t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
return 0;
}

การแสดงค่าวันปัจจุบัน

#include <dos.h>
#include <stdio.h>


int main(void)
{
   struct date d;


   getdate(&d);
   printf("The current year is:
%d\n", d.da_year);
   printf("The current day is: %d\n",
d.da_day);
   printf("The current month is: %d\n",
d.da_mon);
   return 0;
}

การหา ค.ร.น.

#include "stdio.h"
#include "conio.h"
void main (void)
{
int
a,b,max,min,r,max_1,clm;
clrscr ();
printf("Enter number
A:");
scanf("%d",&a);
printf("Enter number
B:");
scanf("%d",&b);
if
(a>b)
{
max=a;
min=b;
}
else
{
max=b;
min=a;
}
max_1=max;
r=max%min;
while
(r!=0)
{
max=max+max_1;
r=max%min;
}
clm=max;
printf("Least
common Multiple=%d",clm);
getch();
}

วันพุธที่ 27 กุมภาพันธ์ พ.ศ. 2551

การหา ห.ร.ม.

Greatest Common Divisor (GCD) มีฟังชันง่ายๆ ในการเขียนก็คือ


int gcd(int a, int b)
{
int r = a % b;
while (r)
{
a = b;
b = r;
r = a % b;
}
return b;
}

ถ้าต้องการหา ห.ร.ม. ของหลายๆ ค่าก็ทำได้โดยการหาค่า GCD ทีละคู่ แล้วนำ GCD ที่ได้มาหาค่า GCD ไปเรื่อยๆ นะเช่นA, B, C เป็นค่าที่ป้อนเข้า
D = GCD(A, B);
E = GCD(B, C);
F = GCD(D, E);

เลขโรมัน

ระบบเลขโรมัน
เป็นระบบตัวเลขที่ใช้ในโรมโบราณ เลขโรมันถือเป็น ระบบเลขไม่มีหลัก หมายความว่า ไม่ว่าจะเขียนตัวเลขแต่ละตัวไว้ ณ ตำแหน่งใดของค่าตัวเลขนั้นจะมีค่าคงที่เสมอ ระบบเลขโรมันมีสัญลักษณ์ที่ใช้กันดังนี้

I หรือ i มีค่าเท่ากับ 1
V หรือ v มีค่าเท่ากับ 5
X หรือ x มีค่าเท่ากับ 10
L หรือ l มีค่าเท่ากับ 50
C หรือ c มีค่าเท่ากับ 100
D หรือ d มีค่าเท่ากับ 500
M หรือ m มีค่าเท่ากับ 1,000

การเขียนเลขโรมัน
การเขียนเลขโรมัน สามารถเขียนแทนเฉพาะจำนวนเต็มบวกเท่านั้น เนื่องจากในสมัยก่อนโรมยังไม่มีสัญลักษณ์แทนเลขศูนย์หรือเลขทศนิยม โดยให้เขียนจากสัญลักษณ์ที่มีค่ามากแล้วลดหลั่นกันไปยังสัญลักษณ์ที่มีค่าน้อย เช่น

MCCCXXV มีค่าเท่ากับ 1,000 + 300 + 20 + 5 = 1,325
MMMDLXVII มีค่าเท่ากับ 3,000 + 500 + 60 + 7 = 3,567

ถ้าเขียนสัญลักษณ์ที่มีค่าน้อยกว่าไว้ด้านหน้าสัญลักษณ์ที่มีค่ามากกว่า ค่าของจำนวนที่ได้จะมีค่าเท่ากับจำนวนที่มีค่ามากลบด้วยจำนวนที่มีค่าน้อย และจะเขียนสัญลักษณ์เพียงคู่เดียวในแต่ละหลักเท่านั้น เช่น

IX มีค่าเท่ากับ 10 - 1 = 9
XL มีค่าเท่ากับ 50 - 10 = 40
MCMLXXVII มีค่าเท่ากับ 1,000 + (1,000 - 100) + 70 + 7 = 1,977
MMCDLXVIII มีค่าเท่ากับ 2,000 + (500 - 100) + 60 + 8 = 2,468



////////////////////////////////////////////////////
#include "conio.h";
#include "ctype.h";
#include "stdio.h";
#include "stdlib.h";


int main (void)
{
int arabic1 = 0;
int arabic2 = 0;
int stringpos = 0;
int counter = 0;
int roman[15] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
char tempRoman = ' ';
char input[15] = "";


printf ("Roman Numeral Converter for values between 1 and 4999\n\n");
printf ("Enter Roman Numeral(s): ");

/* Read from keyboard until appear an */
while ((tempRoman != '\n') && (stringpos < 15))
{
tempRoman = toupper(getchar());

switch (tempRoman)
{
case 'V': case 'L': case 'D':

if ((stringpos > 0) && (input[stringpos - 1] == tempRoman))
{
printf ("\nInput values not correct!\n\n");
exit(100);
}
else
{
input[stringpos++] = tempRoman;
}
break;

case 'M':
/* If appear correctly, be save the char in the string that
that store the characters of roman numeral */
if (counter <= 4)
{
input[stringpos++] = tempRoman;
}
counter++;
if ((counter > 4) && (input[stringpos - 2] == tempRoman))
{
printf ("\nThis program only converts Roman Numerals between 1 and 4999!\n\n");
getch();
}

if ((stringpos > 1) && ((counter > 4) (input[stringpos - 2] != tempRoman)))
{
counter = 1;
}
break;

case 'I': case 'X': case 'C':
if (counter <= 3)
{
input[stringpos++] = tempRoman;
}
counter++;

if ((counter > 3) && (input[stringpos - 2] == tempRoman))
{
printf ("\nInput values not correct!\n\n");
exit(100);
}

if ((stringpos > 1) && ((counter > 3) (input[stringpos - 2] != tempRoman)))
{
counter = 1;
}

break;

case '\n': break;
default: printf ("\nInput values not correct!\n\n");
exit(100);
}
}

for (counter = 0; counter <= stringpos; counter++)
{
switch (input[counter])
{
case 'I': roman[counter] = 1; break;
case 'V': roman[counter] = 5; break;
case 'X': roman[counter] = 10; break;
case 'L': roman[counter] = 50; break;
case 'C': roman[counter] = 100; break;
case 'D': roman[counter] = 500; break;
case 'M': roman[counter] = 1000; break;
}
}

for (counter = 0; counter <= stringpos; counter++)
{

if (roman[counter] >= roman[counter + 1])
{
arabic2 = roman[counter];
}

if ((roman[counter] == (roman[counter + 1] / 10)) (roman[counter] == (roman[counter + 1] / 5)))
{
arabic2 = roman[counter + 1] - roman[counter];
counter++;
}

if (arabic2 < roman[counter + 1])
{
printf ("\nInput values not correct!\n\n");
}
arabic1+= arabic2;
}


printf ("\nArabic Equivalent is: %d\n\n", arabic1);
printf ("\n\n\t\t\t...Press any key to exit.");
getch();

return 0;
}

จำนวนและตัวเลข

จำนวนนับ (counting number)
คือ จำนวนที่เราใช้นับสิ่งของต่าง ๆ เริ่มตั้งแต่ 1, 2 , 3 , … หรือเรียกอีกอย่างหนึ่งว่า จำนวนธรรมชาติ (natural number ) จำนวนนับจำแนกได้ 2 กลุ่มคือจำนวนคู่ กับจำนวนคี่

จำนวนคู่ (odd number)
คือ จำนวนนับที่มี 2 เป็นตัวประกอบ (หาร 2 ลงตัว) เช่น 2, 4 , 6

จำนวนคี่ ( even number)
คือ จำนวนนับอื่นที่ไม่ใช่จำนวนคู่(หาร 2 ไม่ลงตัว) เช่น 1 ,3 , 5

ตัวประกอบ( factor)
คือ จำนวนนับที่หารจำนวนนับนั้นได้ลงตัวเช่น 2 เป็นตัวประกอบของ 4 เพราะ 2 หาร 4 ได้ลงตัว5 เป็นตัวประกอบของ 15 เพาะ 5 หาร 15 ได้ลงตัว

จำนวนเฉพาะ ( prime number)
คือ จำนวนนับที่มากกว่า 1 และมีตัวประกอบเพียง 2 ตัวคือ 1 และตัวมันเอง เช่น 2, 3 , 5 , 7 , 11 ,…4.

การแยกตัวประกอบ (factoring )
คือ ประโยคที่แสดงการเขียนจำนวนนั้น ๆ ในรูปการคูณของตัวประกอบเฉพาะ


//แสดงตัวประกอบ Factor
#include "stdio.h"
#include "conio.h"

void main()
{
int num=45;
int i;
clrscr();
printf ("Factor of %d is \n",num);
for (i=1;i<=num;i++)
{
if ((num % i) == 0)
{
printf("%d\n",i);
}
}
}



//////////////////////////////////////////////////////////////////////
//แสดงจำนวนเฉพาะ Prime

#include
void main()
{
int i,j;
int counter = 0;
int flag=0;
for (i=1; i <= 100; i++) //กำหนดค่าเริ่มต้น(i= 3) แต่น้อยกว่า 100
{
flag=0; //กำหนดให้เป็น0
for (j=2; j<=i/2;j++) //กำหนดค่า j=2 แต่น้อยกว่า i/2
{
if ((i%j) == 0) //ถ้า i mod j แล้ว เท่ากับ0 จะเพิ่มค่า flag
{
flag++;
break;
}
}
if (flag==0) //ถ้า flag เท่ากับ0 จะทำการพิมพ์
{
counter++;
printf("The %3d prime number is : %3d \n", counter, i);
}
}
}

หัวข้อเนื้อหาที่จะอบรม

  • Programming Review
  • Array
  • Pointer and Recursion + Lab
  • Combinatorics + Lab
  • Stacks , Queue , Linked Lists + Lab
  • Tree and Binary Search Tree + Lab
  • Data Structure + Lab
  • Sorting + Lab
  • Priority Queue (Heap) + Lab
  • Hashing + Lab
  • Algorithm Design Techniques
  • Devide and conqver and Dynamic Programming + lab
  • Backtracking and Greedy Algorithm + Lab
  • Introduction to Graph Theory
  • Representation, BFS, DFS,Topological Sorting+Lab
  • MST, Implementation of Union Find Data Structure + Lab
  • Single Source Shortest Path, Pair Shortest Path + Lab
  • Mathematical Foundation
  • Recurrence Relations + Lab
  • Asymptotic Complexity + Lab
  • Blachtracking and Pruning + Lab
  • Problem Solving