overclockzonefanpage  overclockzoneth  TV  
Results 1 to 5 of 5

Thread: ใครมีความรู้เรื่องภาษาซี กับ Psudocode รบกวนหน่อยค่ะ

  1. #1
    OverclockZone Member nu_ma_lee's Avatar
    Join Date
    9 Feb 2008
    Location
    ฺBKK <<^^>>Songkhla

    Default ใครมีความรู้เรื่องภาษาซี กับ Psudocode รบกวนหน่อยค่ะ

    คือมันมีอยู่ว่าอาจารย์เค้าให้ทำโปรเเจ็ค แล้วพอทำออกมา อาจารย์แกก็ให้เขียน

    Phsudocode กับ Flowchart ส่งด้วย

    อยากให้ช่วยดูให้หน่อยว่า Psudo ที่เขียนถูกมั้ย

    แล้วก็ ใครก็ได้ ช่วยอธิบายให้ฟังหน่อยได้มั้ยค่ะว่าแต่ละบรรทัดมันหมายความว่าไงบ้าง

    ภาษาซี

    #include<stdio.h>
    void an(char a[30],char b[30]);
    main()
    {
    char str1[30],str2[30];
    clrscr();
    printf("### Project Anagram ###\n");
    printf("Please Enter string : ");
    gets(str1);
    an(str1,str2);
    printf("New text is : %s",str2);
    getch();
    }

    void an(char a[30],char b[30])
    {
    int i,j,count=0;
    while(a[count]!='\0')
    {
    count ++;
    }
    j=0;
    for(i=count-1;i>=0;i--)
    { b[j] = a[i];
    j++;
    }
    b[j]='\0';
    return b;
    getch();


    }



    Psudocode

    write (###Project Anagram###)
    write (Please Enter String)
    read (str1)
    an (str1,str2)
    write (New text is : ,str2)
    Halt
    Function an (a[30],b[30])
    count:=0
    Do While (a[count]<>'\0')
    count +1
    end while
    j:=0
    repeat for (count-1 to i)
    b[j] = a[i]
    j:=j+1
    end repeat
    b[j]:='\0'
    return b

  2. #2
    OverclockZone Member God's Avatar
    Join Date
    18 Sep 2006
    Location
    BKK

    Default

    Quote Originally Posted by nu_ma_lee View Post
    คือมันมีอยู่ว่าอาจารย์เค้าให้ทำโปรเเจ็ค แล้วพอทำออกมา อาจารย์แกก็ให้เขียน

    Phsudocode กับ Flowchart ส่งด้วย

    อยากให้ช่วยดูให้หน่อยว่า Psudo ที่เขียนถูกมั้ย

    แล้วก็ ใครก็ได้ ช่วยอธิบายให้ฟังหน่อยได้มั้ยค่ะว่าแต่ละบรรทัดมันหมายความว่าไงบ้าง

    ภาษาซี

    #include<stdio.h> ------ตัวนี้ต้องประกาศทุกครับกับการเริ่มไฟลล์ใหม่
    void an(char a[30],char b[30]);------ประกาศตัวแปลครับ เป็นชนิดcharขนาด30ตัวอักษร
    main() ------method
    {
    char str1[30],str2[30];
    clrscr();
    printf("### Project Anagram ###\n");----แสดงข้อความออกทางจอภาพ
    printf("Please Enter string : ");----------แสดงข้อความออกทางจอภาพ
    gets(str1);-----รับข้อมูลจาก คีบอร์ด ไปเกบไว้ในตัวแปล str1
    an(str1,str2);----ทำการต่อต้อความทั้ง 2 ตัวแปลเข้าด้วยกัน
    printf("New text is : %s",str2);----------แสดงข้อความออกทางจอภาพ
    getch();
    }

    void an(char a[30],char b[30])
    {
    int i,j,count=0;---ประกาศตัวปแล i และ j countมีค่าเป็น 0
    while(a[count]!='\0')----ฟังชั่น while loop
    {
    count ++; ทำการ + ค่า ตัวแปล ทีล่ะ 1
    }
    j=0;-----ค่า j เป็น 0
    for(i=count-1;i>=0;i--) ----ถ้า i=count-1;i>=0;i-- ลืมแว้ว ง่า
    { b[j] = a[i];
    j++;
    }
    b[j]='\0';
    return b;
    getch();


    }



    Psudocode
    ตัวนี้เป็นโปรแกรมเดียวกันกับข้างบน แต่เขียนคนล่ะภาษา

    write (###Project Anagram###)
    write (Please Enter String)
    read (str1)
    an (str1,str2)
    write (New text is : ,str2)
    Halt
    Function an (a[30],b[30])
    count:=0
    Do While (a[count]<>'\0')
    count +1
    end while
    j:=0
    repeat for (count-1 to i)
    b[j] = a[i]
    j:=j+1
    end repeat
    b[j]:='\0'
    return b

    จำไม่ค่อยได้แล้วอ่ะครับ ลองูนะว่าจะถูกป่าว อิอิ คงต้องกลับไปอ่านหนังสือใหม่อีกรอบ

  3. #3
    OverclockZone Member
    Join Date
    23 Oct 2006

    Default

    #include<stdio.h>
    void an(char a[30],char b[30]);---------ประกาดให้เรียกใช้ฟังชั่นจากข้างล่างได้ ถ้าไม่อยากประกาดเอาฟังชั่น an ข้างล่าง มาอยู่ก่อน main แล้วตัดบรรทัดนี้ทิ้ง
    main()----------- ฟังชั่น main
    {
    char str1[30],str2[30];----------ประกาด array ชนิด ตัวอังศร 30 ช่อง หรือเรียกอีกแบบว่า String
    clrscr();---------ลบหน้าจอ
    printf("### Project Anagram ###\n");------ ปริ้น......ที่หน้าจอ \n = ขึ้นบรรทัดใหม่
    printf("Please Enter string : ");----- ปริ้น......ที่หน้าจอ
    gets(str1); รับค่าใส่เข้า str1 โดยรับช่องว่างด้วย ถ้าใช้ scanf จะรับช่องว่างไม่ได้
    an(str1,str2); ใช้ฟังชั่น an(ใส่ str1,ใส่ str2)
    printf("New text is : %s",str2);----- ปริ้น new text is แล้วตามด้วย str2
    getch(); สั่งให้รอกดเพื่อปิด
    }

    void an(char a[30],char b[30]) สร้างฟังชั่น an โดยฟังชั่นนี้จะรับค่า aขนาด 30 และ b ขนาด 30
    {
    int i,j,count=0; ให้ i j count เป็นจำนวนเต็ม มีค่า =0
    while(a[count]!='\0') เมื่อ a[ช่อง count] ไม่เท่ากับ \0 ให้วนไป "\0 เป็นตัวจบของ string ทุกอัน ถ้าไม่มี เครื่องจะปริ้นขยะมากมาย
    {
    count ++; count = count+1
    }
    j=0;
    for(i=count-1;i>=0;i--) ให้ i= count-1 เช็คว่าถ้า i>=0 ให้วนไป วนจบ 1 รอบให้ i ลด 1
    { b[j] = a[i]; a ช่อง i = b ช่อง j
    j++; j เพิ่ม1
    }
    b[j]='\0'; b ช่อง j = \0 เหตุผลอยุ่ข้างบน
    return b; ส่ง b กลับ
    getch();


    }

  4. #4
    OverclockZone Member
    Join Date
    23 Oct 2006

    Default

    psudo code ปกติ เขียนเป้นประโยคนะ
    เช่น
    1.พิม....
    2.พิม....
    3. input
    4. มีตัวอักศร? ถ้ามี ไป 5 ไม่มี กลับ 3
    5. copy
    5.1 มีอักศรเหลือมั๊ย? ถ้ามี ไป 5 ถ้าไม่ ไป 6
    6. พิมข้อความที่ cop
    7. จบ
    ประมานแบบนี้ เอาปายปรับเองน๊า

  5. #5
    OverclockZone Member T4st -t1 -s's Avatar
    Join Date
    25 Feb 2007

    Default

    Quote Originally Posted by nu_ma_lee View Post
    ภาษาซี

    [COLOR="Purple"]#include<stdio.h> //เอาheader file ชื่อ standard input output เข้ามา ซึ่งมีคำสั่งตามชื่อมันแหละ เกี่ยวกับการรับเข้าและส่งออกข้อมูล
    void an(char a[30],char b[30]);//ประกาศไว้ก่อนว่า"จะมีfunctionชื่อนี้อยู่หลังmain() เวลาconpileแล้วไม่เจอไม่ต้องตกใจ เดี๋ยวจะสร้างFunctionนี้หลังmain" (เรียกว่าการประกาศphototype) ถ้าเอาfunctionขึ้นก่อนmain ก็ไม่ต้องทำแบบนี้ครับ จะให้ง่ายก็ให้mainอยู่ล่างสุดของโปรแกรมไปเลยจะได้ไม่ต้องประกาศ
    main()//Functionหลักของโปรแกรม โปรแกรมจะทำงานจากในนี้
    {
    char str1[30],str2[30]; //ประกาศตัวแปรstr1และstr2 ซึ่งเป็นarrayของcharactorขนาดตัวแปรละ30ตัวอักษร ซึ่งจะเก็บcharได้30ตัว หรือstringได้29ตัว (ตัวสุดท้ายเป็น\0 หรือตัวปิดสตริง บอกว่าสตริงนี้จบแล้ว)
    clrscr(); //ฟังชั่นนี้ใช้เคลียหน้าจอ แต่ มันอยู่ใน conio.hนะ ต้อง #include<conio.h>ด้วย
    printf("### Project Anagram ###\n");//Print ขึ้นหน้าจอว่า ### Project Anagram ### (แล้วขึ้นบรรทัดใหม่ \nหมายถึงขึ้นบรรทัดใหม่น่ะครับ)
    printf("Please Enter string : ");//พิมต่อว่าPlease Enter string :
    gets(str1);//รับสตริง(ข้อความยาวๆ)เข้าไปเก็บไว้ที่ตัวแปรstr1 เนื่องจากเราประกาศChar30 เราจึงเก็บสตริงได้สูงสุด 29 ตัว สตริงจะขาดเมื่อมีEnter (แต่ถ้าใช้scanf("%s",str1); สตริงจะขาดเมื่อมีEnterหรือSpaceBar)
    an(str1,str2);//เรียกFunctionชื่อanส่งพารามิเตอร์ไปเป็นstr1และstr2
    printf("New text is : %s",str2);//พิมว่าNew text is : (และสตริงstr2) %sคือรูปแบบของตัวแปรที่จะพิมออกมา %dคือจำนวนเต็ม %fคือเลข+ทศนิยม %cคือตัวอีกษร %sคือสตริง(คำยาวๆ) เป็นต้น
    getch();//รับตัวอักษร1ตัว แต่ไม่ได้เก็บไว้ที่ไหน ซึ่งการทำแบบนี้ก็เพื่อรอดูผลoutputก่อน ไม่ให้โปรแกรมจบทันที พอเราพิมไป1ตัว มันก็ไปบรรทัดต่อไป นั่นก็คือ จบโปรแกรมไงครับ
    }//จบโปรแกรม

    void an(char a[30],char b[30])//Functionไม่คืนค่า(ดูจากvoid) ชื่อ anรับparameterเป็นarrayของcharactor ขนาด30ช่อง 2ตัว ให้ชื่อ aและb
    {
    int i,j,count=0;//ประกาศตัวแปรเก็บจำนวนเต็ม เก็บค่าได้แล้วแต่Conpilorแต่โดยทั่วไปจะได้-32768ถึง32767 ชื่อi,jและcount โดยให้count=0
    while(a[count]!='\0')//เป็นการวนซ้ำ จนกว่าเงื่อนไขจะเป็นเท็จ ซึ่งเงื่อนไขคือ (aตัวที่count ไม่ใช่ \0(คือตัวปิดสตริง) )หมายความว่าเงื่อนไขคือ เมื่อสตริงนี้ยังไม่สุด
    {
    count ++; //เพิ่มค่าcountเข้าไปทีละ1
    }
    //สรุปข้างบนนี้เอาไว้นับ ว่าสตริงนี้ยาวกี่ตัวอักษร
    j=0; //ให้ตัวแปรj=0
    for(i=count-1;i>=0;i--) //วนโดยให้ค่าเริ่มต้นi=count-1 วนไปเรื่อยๆเมื่อi >หรือ=0 วนเสร็จแต่ละรอบให้iลดลงทีละ1 สรุปอันนี้ให้เริ่มจากตัวสุดท้ายมาเรื่อยๆถึงตัวแรก
    { b[j] = a[i];//ให้bตัวที่jเท่ากับaตัวที่i
    j++;//เพิ่มค่าjทีละ1
    }
    b[j]='\0';//ให้bตัวที่jเป็นตัวปิดสตริง (\0)
    return b;//คืนค่า b (อ่าว functionไม่คืนค่า แล้วคืนทำไมหละ)
    getch();//ไม่น่ามีนะตรงนี้ เพราะreturnไปแล้ว functionนี้จบ มันจะไม่ทำตรงนี้
    }
    //สรุปFunctionนี้ ใช้กลับตัวอักษร เช่นจากabcd เป็น dcba เป็นต้น แต่Functionนี้น่าจะผิดพลาดเพราะค่าที่ได้เก็บไว้ในbแม้จะสั่งreturnแต่ตรงที่เรียกไม่มีค่าอะไรมารับ ถ้าส่งparameterมาเป็น พ้อยเตอร์ชี้ไปที่str2สิว่าไปอย่าง ถ้าจะไม่ใช้พ้อยเตอร์ น่าจะแก้functionนี้ตรงหัวเป็น
    char[] an(char a[30],char b[30])
    ตรงreturnค่าของเดิมถูกแล้ว
    แล้วตอนเรียกfunctionก็เรียกเป็น
    str2=an(str1,str2); (ก็แปลกๆอยู่ดีๆ ไม่เคยลองว่ารีเทิร์นค่าเป็นarrayได้ไหม)
    รึไม่ต้องใช้str2 แต่printมันเลยก็แก้ตรงprintเป็น
    printf("New text is : %s",an(str1,str2); );


    ซูโดโคดทีหลังละกันนะ เริ่มๆไม่ว่างละ รึคนอื่นช่วยเลยก็ดีนะ
    Last edited by T4st -t1 -s; 9 Feb 2008 at 21:59:40.


Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •