การประมวลผลสายอักขระ

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

โครงสร้างโปรแกรมภาษา C
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
ฟังก์ชั่นในภาษาซี.
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
ข้อมูลชนิดสตริง String บทที่ 8
BC322 ครั้งที่ 13 Array 2 มิติ BC322 Computer Programming-Array Processing.
การรับค่าและแสดงผล.
การรับและการแสดงผลข้อมูล
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
User Defined Simple Data Type
หลักการโปรแกรม 1 Lecture 3: ตัวแปร, นิพจน์คณิตศาสตร์, การคำนวณทางคณิตศาสตร์,การดำเนินการกับสายอักขระ.
Structure Programming
Structure Programming
องค์ประกอบของโปรแกรม
Week 6 ประกาศค่าตัวแปร.
การแสดงผล และการรับข้อมูล
รับและแสดงผลข้อมูล.
ตัวชี้ P O I N T E R Created By Tasanawan Soonklang
Lecture no. 2: Overview of C Programming
คำสั่งควบคุมการทำงาน
ตัวแปรชุด.
การรับข้อมูลเบื้องต้นโดยใช้ฟังก์ชั่น scanf
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
Arrays.
Week4 Data types, Variables, Operators and Input/output (ต่อ)
บทที่ 6 ตัวแปรอาร์เรย์ (Array of Variable)
Programming With C Data Input & Output.
บทที่ 9 การรับและแสดงผลข้อมูล
บทที่ 11 การเขียนโปรแกรมภาษาซี
ข้อมูลพื้นฐานและตัวดำเนินการ
บทที่ ไลบรารีฟังก์ชัน
หน่วยที่ 1 พื้นฐานภาษา C
หน่วยที่ 14 การเขียนโปรแกรมย่อย
การเขียนโปรแกรมภาษาซี
Chapter 4 คำสั่งควบคุมทิศทาง
ตัวแปรกับชนิดของข้อมูล
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
ฟังก์ชันรับข้อมูล ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
แถวอักขระ (string) ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ง30212 พื้นฐานการเขียนโปรแกรม ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ตัวดำเนินการในภาษาซี
การรับและพิมพ์ข้อมูลเบื้องต้น
ตัวแปรกับชนิดของข้อมูล
Week 2 Variables.
Week 12 Engineering Problem 2
Computer Programming for Engineers
2 /* ข้อความนี้เป็นเพียงคำอธิบาย ไม่มีผลต่อขั้นตอนการ ทำงานของโปรแกรม */ /* A simple program to display a line of text */ #include void main ( ) { printf.
Overview of C Programming
คำสั่งรับค่า และ แสดงผลค่า. คำสั่งรับ - แสดงผล 1. printf( ) เป็น ฟังก์ชันที่ใช้ในการ แสดงผลข้อมูลที่อยู่ในตัว แปร ค่าคงที่ นิพจน์ออกมา ทางจอภาพ.
โครงสร้างภาษาซี #include <stdio.h> void main() {
บทที่ 10 สตริง.
คำสั่งเกี่ยวกับการรับ และแสดงผล
โครงสร้างโปรแกรมภาษาซี
Output of C.
สายอักขระ เขียนโปรแกรม Java เบื้องต้น.
หน่วยที่ 4 โครงสร้างโปรแกรมภาษาซี
บทที่ 7 เงื่อนไขในภาษาซี
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
ตัวแปร และชนิดข้อมูล.
การเขียนโปรแกรม (ภาษาซี)
บทที่ 11 การจัดการข้อมูลสตริง
การเขียนโปรแกรม (ภาษาซี)
1 สตริง (String) การประกาศค่าตัวแปรสตริง การกำหนดค่าสตริง การอ้างอิงตัวอักษรแต่ละตัวในสตริง ฟังก์ชั่นที่ใช้ในการจัดการสตริง ฟังก์ชั่นในการเปลี่ยนรูปแบบของสตริง.
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
ใบสำเนางานนำเสนอ:

การประมวลผลสายอักขระ (String Processing)

Outline ทบทวน String การประมวลผลสายอักขระ (String Processing) Pattern Matching Encryption/Decryption Compression

ทบทวน String การประกาศตัวแปรเพื่อเก็บข้อความ การรับและการแสดงผลข้อความ การกำหนดค่าให้กับตัวแปรเก็บข้อความ ฟังก์ชันที่ใช้กับข้อความและอักขระ

การประกาศตัวแปรเพื่อเก็บข้อความ รูปแบบ char ชื่อตัวแปร[จำนวนอักขระ] โดยที่จำนวนอักขระต้องมากกว่าจำนวนอักขระที่เก็บจริง 1 ช่อง เพราะช่องสุดท้ายต้องเก็บอักขระ NULL ซึ่งเขียนแทนด้วย ‘\0’ เพื่อบอกให้ตัวแปลภาษารู้ว่าเป็นข้อความ ตัวอย่าง char name[10]; หมายถึง ตัวแปรชื่อ name เก็บข้อความยาว 9 อักขระ char color[ ]; หมายถึง ตัวแปรชื่อ color เก็บข้อความโดยไม่กำหนดขนาด ซึ่งในกรณีนี้ตัวแปลภาษาจะกำหนดขนาดให้เท่ากับจำนวนอักขระบวก 1

การรับข้อมูล การรับข้อความโดยใช้ฟังก์ชัน scanf() รูปแบบ: scanf (“%s”, ชื่อตัวแปร) ตัวอย่าง #include <stdio.h> char massage[ 20]; void main ( ) { scanf (“%s”, message); printf (“%s”, message); }

การรับข้อมูล #include <stdio.h> void main ( ) { char ch; รับข้อมูลทีละตัวอักษรด้วยฟังก์ชัน getchar ( ) การทำงาน>> เมื่อผู้ใช้กรอกตัวอักษรแล้ว จะต้องกดปุ่ม Enter โปรแกรมจึงจะกลับไปทำงานต่อ โดยอักขระที่ผู้ใช้กรอก จะปรากฏขึ้นมาให้เห็นบนหน้าจอด้วย รูปแบบ: ชื่อตัวแปร = getchar() ตัวอย่าง #include <stdio.h> void main ( ) { char ch; ch = getchar();  printf("You type a character is ...%c \n",ch); }

การรับข้อมูล #include <stdio.h> void main ( ) { char str[20]; รับข้อความด้วยฟังก์ชัน gets ( ) รูปแบบ: gets(ชื่อตัวแปร) ตัวอย่าง #include <stdio.h> void main ( ) { char str[20]; gets(str);  printf("You type a string is ...%s \n",str); }

การแสดงผลลัพธ์ #include <stdio.h> void main ( ) { char str[20]; การแสดงผลข้อความโดยใช้ฟังก์ชัน printf รูปแบบ: printf (“%s”, ชื่อตัวแปร); ตัวอย่าง #include <stdio.h> void main ( ) { char str[20]; gets(str);  printf("You type a string is ...%s \n",str); }

การแสดงผลลัพธ์ for(i=0;i<20;i++) #include <stdio.h> การแสดงผลทีละตัวอักษรโดยใช้ฟังก์ชัน printf รูปแบบ: printf (“%c”, ชื่อตัวแปร); ตัวอย่าง #include <stdio.h> void main ( ) { char str[20]; gets(str); for(i=0;i<20;i++)   printf("You type a string is ...%c \n",str[i] ); }

การแสดงผลลัพธ์ #include <stdio.h> void main ( ) { char ch; การแสดงผลทีละตัวอักษรด้วยฟังก์ชัน putchar() รูปแบบ: putchar (argument) argument : ตัวแปร, ค่าคงที่ , ฟังก์ชัน ตัวอย่าง #include <stdio.h> void main ( ) { char ch; ch = ‘A’;  putchar(ch); }

การแสดงผลลัพธ์ puts (“Easy and Fun”); #include <stdio.h> การแสดงผลข้อความด้วยฟังก์ชัน puts() รูปแบบ: puts(string) เมื่อ string คือตัวแปรที่เก็บข้อความหรือข้อความที่อยู่ใต้เครื่องหมาย “ ” ตัวอย่าง #include <stdio.h> char message[ ] = “C Language”; void main ( ) { puts (message); puts (“Easy and Fun”); } ผลการรัน C Language Easy and Fun

ตัวอย่างโปรแกรม ผลลัพธ์ Enter your name : manee dee #include<stdio.h> char x [30]; void main ( ) { printf (“Enter your name :”); gets(x); printf (“Your name :%s\n”, x); } ผลลัพธ์ Enter your name : manee dee Your name : manee dee

การกำหนดค่าให้กับตัวแปรเก็บข้อความ Example #include<stdio.h> void main ( ) { char mass[11] = “C Language”; char book[4] = {‘A’, ‘B’, ‘C’, ‘\0’}; printf (“%s\n”, mass); printf (“%s\n”, book); printf (“%c\n”, mass[3]); } ผลการรัน C Language ABC a

ฟังก์ชันที่ใช้กับข้อความและอักขระ #include <string.h> ชื่อฟังก์ชัน รูปแบบ ความหมาย strcpy( ) strcpy(str1,str2) คัดลอกข้อมูลจาก str2 ไปยัง str1 strcat( ) strcat(str1,str2) ใช้เชื่อมต่อข้อความ str1 กับ str2 เข้าด้วยกัน และเก็บผลลัพธ์ไว้ใน str1 strlen( ) strlen(s) ใช้หาความยาวของข้อความ s strcmp() strcmp(str1,str2) เปรียบเทียบข้อความ str1 กับ str2

ฟังก์ชันที่ใช้กับข้อความและอักขระ #include <ctype.h> ชื่อฟังก์ชัน รูปแบบ ความหมาย tolower( ) tolower(ch) เปลี่ยนตัวอักษรจากตัวใหญ่ให้เป็นตัวเล็ก toupper( ) toupper(ch) เปลี่ยนตัวอักษรจากตัวเล็กให้เป็นตัวใหญ่

ตัวอย่างโปรแกรมการใช้ฟังก์ชันของ string if (res>0) { printf("greater\n"); strcpy(temp,name1); strcpy(name1,name2); strcpy(name2,temp); printf("%s %s\n",name1,name2); } else if (res<0) printf("less\n"); else // res == 0 printf("same and length = "); printf("%d\n",strlen(name1)); return 0; #include<stdio.h> #include<string.h> int main() { char name1[10], name2[10], temp[10]; int res; printf("enter 2 string : "); scanf("%s %s",name1,name2); // cannot use like this //name1 = "dararat"; res = strcmp(name1,name2);

Don’t Sleep Yet…

String Processing Pattern Matching Encryption/Decryption Compression

Pattern Matching given a string of n characters called text (T) ,and a string of m (m<=n) characters called pattern (P) find a substring of the text that match the pattern

Pattern Matching Algorithms Brute-Force Boyer-Moore Knuth-Morris-Pratt

Pattern Matching Algorithms Input: An array T[n] of n characters representing a text and an array P[m] of m character representing a patterm Output: The index of the first character in the text that starts a matching substring or -1 if the search is unsuccessful

Brute-Force algorithm Algorithm for i  to n-m do j 0 while j< m and P[j] = T[i+j] do j j+1 if j = m return i return -1

Brute-Force algorithm Example 1 T = “abacaabaccabacababb” P = “abacab” abacaabaccabacababb abacab …. Result = “match” 27 comparisons

Brute-Force algorithm Example 2 T = “a pattern matching algorithm” P = “algor” apattern matching algorithm algor a lgor … Result = “match” ? comparisons

Boyer-Moore algorithm create a lookup table from P เช่น T = “abacaabadcabacababb” P = “abacab” cha a b c d Last(cha) 4 5 3 -1 ***Last(cha) = last position of the character in P

Boyer-Moore algorithm compare from right to left 1-by-1 if not equal at position i in T, if Ti is in lookup table n = |last(Ti)-last(Pi)| shift comparison to the next n location of T if Ti is not in lookup table shift comparison to the next m (ex. m=6) location of T

Boyer-Moore algorithm Example 1 T = “abacaabadcabacababb” P = “abacab” (m = 6) -------------------------------------------------------------------------- abacaabadcabacababb abacab cha a b c d Last(cha) 4 5 3 -1 13 comparisons

Boyer-Moore algorithm Example 2 T = “a pattern matching algorithm” P = “algor” (m = 5) ------------------------------------------------------------------ a pattern matching algorithm algor cha a l g o r Last(cha) 1 2 3 4 ? comparisons

Boyer-Moore algorithm แบบฝึกหัด T = “a pattern matching algorithm” P = “rithm” (m = 5) ------------------------------------------------------------------------- cha Last(cha)

Encryption/Decryption Cryptographic computations encryption/decryption , digital signatures To support secure communication over the Internet – using cryptographic computations for information security services

Encryption/Decryption Before sending text, the original text – called plaintext , is encrypted into an unrecognizable string – called ciphertext After receiving the ciphertext, it is decrypted back to the plaintext encryption Plaintext Ciphertext decryption

Encryption/Decryption Basic techniques : Substitution , Transposition , Bit manipulation the essential thing for each method is the secret key Well-known Algorithms DES (Data Encryption Standard) RSA (Rivest-Skamir-Adleman) Knapsack

Encryption/Decryption Example Substitution (n = 4) Transposition (3x6) Bit manipulation (b = 3)

Compression given a string X (ascii, unicode), encode into a small binary string Y Huffman coding algorithm – based on character frequency to construct a binary tree , uses greedy method

Compression char. freq. a b d e f h i k n o r s t u v 9 5 1 3 7 4 2 Eample “a fast runner need never be afraid of the dark” frequency of each character char. a b d e f h i k n o r s t u v freq. 9 5 1 3 7 4 2

Compression a = ‘010’ r = ‘011’ e = ‘100’ d = ‘1010’ Eample (ต่อ) Huffman tree 46 1 27 19 1 1 12 15 10 1 1 1 9 5 e … a r 1 7 5 5 d 3 …

การบ้าน Knuth-Morris-Pratt algorithm