วันศุกร์ที่ 29 กุมภาพันธ์ พ.ศ. 2551
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 มิติ
อะเรย์ เป็นโครงสร้างข้อมูลแบบง่าย ที่พบมากในการเขียนโปรแกรมภาษาคอมพิวเตอร์ทุกภาษา
และมักใช้เป็นพื้นฐานในการทำความเข้าใจโครงสร้างข้อมูลตัวอื่น ๆ อะเรย์
เป็นโครงสร้างข้อมูลที่เรียกว่า 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 "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
การหา ห.ร.ม.
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;
}
จำนวนและตัวเลข
คือ จำนวนที่เราใช้นับสิ่งของต่าง ๆ เริ่มตั้งแต่ 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