ภาษาอังกฤษภาษาฝรั่งเศสสเปน

Ad


ไอคอน Fav ของ OnWorks

funcalc - ออนไลน์ในคลาวด์

เรียกใช้ funcalc ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง funcalc ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


funcalc - เครื่องคิดเลข Funtools (สำหรับตารางไบนารี)

เรื่องย่อ


ฟังแคล [-n] [-a argstr] [-e expr] [-f file] [-l ลิงค์] [-p prog] [โอนาเมะ [คอลัมน์]]

OPTIONS


-a argstr # อาร์กิวเมนต์ผู้ใช้เพื่อส่งผ่านไปยังโปรแกรมที่คอมไพล์
-e expr # นิพจน์ funcalc
-f ไฟล์ # ไฟล์ที่มีนิพจน์ funcalc
-l libs # libs เพื่อเพิ่มคำสั่งลิงก์
-n # เอาต์พุตสร้างรหัสแทนการรวบรวมและดำเนินการ
-p prog # สร้างโปรแกรมที่มีชื่อไม่มีการเรียกใช้
-u # die หากไม่มีการประกาศตัวแปรใดๆ (ไม่ประกาศอัตโนมัติ)

DESCRIPTION


ฟังแคล เป็นโปรแกรมเครื่องคิดเลขที่อนุญาตให้สร้างนิพจน์ตามอำเภอใจ
รวบรวมและดำเนินการบนคอลัมน์ในตาราง Funtools (ตารางไบนารี FITS หรือเหตุการณ์ดิบ
ไฟล์). มันทำงานโดยการรวมนิพจน์ที่ผู้ใช้ระบุลงในโปรแกรมเทมเพลต C จากนั้น
รวบรวมและรันโปรแกรม ฟังแคล นิพจน์เป็นคำสั่ง C แม้ว่าบาง
รองรับการทำให้เข้าใจง่ายที่สำคัญ (เช่น การประกาศตัวแปรโดยอัตโนมัติ)

ฟังแคล นิพจน์สามารถระบุได้สามวิธี: บนบรรทัดคำสั่งโดยใช้ -e
[การแสดงออก] สลับในไฟล์โดยใช้ -f [ไฟล์] เปลี่ยนหรือจาก stdin (ถ้าไม่ใช่ -e
ไม่ -f ระบุไว้) แน่นอนไฟล์ที่มี ฟังแคล นิพจน์สามารถอ่านได้จาก
มาตรฐาน

คำขอแต่ละครั้งของ ฟังแคล ต้องการอินพุตไฟล์ตาราง Funtools เพื่อระบุเป็น
อาร์กิวเมนต์บรรทัดคำสั่งแรก ไฟล์ตาราง Funtools เอาต์พุตเป็นตัวเลือกที่สอง
การโต้แย้ง. จำเป็นเฉพาะเมื่อมีการสร้างไฟล์เอาต์พุต FITS (เช่น ในกรณีที่
ฟังแคล expression พิมพ์เฉพาะค่า ไม่จำเป็นต้องมีไฟล์เอาต์พุต) ถ้าอินพุตและเอาต์พุต
ระบุไฟล์ทั้งคู่ อาร์กิวเมนต์ทางเลือกที่สามสามารถระบุรายการของคอลัมน์ไปยัง
เปิดใช้งาน (โดยใช้ FunColumnActivate()). สังเกตว่า ฟังแคล กำหนดหรือไม่ที่จะ
สร้างรหัสสำหรับเขียนไฟล์เอาท์พุตตามการมีอยู่หรือไม่มีของเอาต์พุต
อาร์กิวเมนต์ไฟล์

A ฟังแคล นิพจน์ดำเนินการในแต่ละแถวของตารางและประกอบด้วย C . หนึ่งรายการขึ้นไป
คำสั่งที่ทำงานในคอลัมน์ของแถวนั้น (อาจใช้ตัวแปรชั่วคราว)
ภายในนิพจน์ การอ้างอิงถึงคอลัมน์ของ ปัจจุบัน แถวโดยใช้โครงสร้าง C
วากยสัมพันธ์ เคิร์-[colname]> เช่น cur->x, cur->pha เป็นต้น สามารถกำหนดตัวแปรสเกลาร์ในพื้นที่ได้
ใช้การประกาศ C ที่จุดเริ่มต้นของนิพจน์ มิฉะนั้น พวกเขาสามารถกำหนดได้
โดยอัตโนมัติโดย ฟังแคล (เป็นแบบคู่) ตัวอย่างเช่น การสลับคอลัมน์ x
และ y ในตารางสามารถทำได้โดยใช้ค่าเทียบเท่าต่อไปนี้ ฟังแคล
นิพจน์:

อุณหภูมิสองเท่า;
อุณหภูมิ = cur->x;
cur->x = cur->y;
cur->y = อุณหภูมิ;

หรือ:

อุณหภูมิ = cur->x;
cur->x = cur->y;
cur->y = อุณหภูมิ;

เมื่อนิพจน์นี้ดำเนินการโดยใช้คำสั่งเช่น:

funcalc -f swap.expr itest.ev otest.ev

ไฟล์ผลลัพธ์จะมีค่าของคอลัมน์ x และ y ที่สลับกัน

โดยค่าเริ่มต้น ชนิดข้อมูลของตัวแปรสำหรับคอลัมน์จะเหมือนกับชนิดข้อมูลของ
คอลัมน์ตามที่เก็บไว้ในไฟล์ ซึ่งสามารถเปลี่ยนแปลงได้โดยการต่อท้าย :[dtype]" ต่อท้าย
อ้างอิงถึงคอลัมน์นั้น ในตัวอย่างด้านบน เพื่อบังคับให้ x และ y แสดงผลเป็นสองเท่า
ระบุประเภท 'D' อย่างชัดเจน:

อุณหภูมิ = cur->x:D;
cur->x = cur->y:D;
cur->y = อุณหภูมิ;

ตัวระบุชนิดข้อมูลเป็นไปตามไวยากรณ์ตาราง FITS มาตรฐานสำหรับการกำหนดคอลัมน์โดยใช้ TFORM:

· A: อักขระ ASCII

· B: ถ่าน 8 บิตที่ไม่ได้ลงชื่อ

· I: ลงนาม int 16 บิต

· U: int 16 บิตที่ไม่ได้ลงนาม (ไม่ใช่ FITS มาตรฐาน)

· J: ลงนาม int แบบ 32 บิต

· V: int 32 บิตที่ไม่ได้ลงชื่อ (ไม่ใช่ FITS มาตรฐาน)

· E: ทุ่นลอย 32 บิต

· D: ทุ่น 64 บิต

· X: บิต (ถือว่าเป็นอาร์เรย์ของตัวอักษร)

โปรดทราบว่าเฉพาะการอ้างอิงคอลัมน์แรกเท่านั้นที่ควรมีประเภทข้อมูลที่ชัดเจน
ตัวระบุ

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

dx = (cur->x - cur->y)/(cur->x + cur->y);

โดยปกติจะต้องดำเนินการโดยใช้เลขทศนิยม ในกรณีที่ x และ y
คอลัมน์เป็นจำนวนเต็ม ซึ่งสามารถทำได้โดยการอ่านคอลัมน์เป็นสองเท่าโดยใช้ข้อความที่ชัดเจน
ข้อกำหนดประเภท:

dx = (cur->x:D - cur->y:D)/(cur->x + cur->y);

หรือสามารถทำได้โดยใช้การหล่อแบบ C ในนิพจน์:

dx = ((ดับเบิ้ล)cur->x - (ดับเบิ้ล)cur->y)/((ดับเบิ้ล)cur->x + (ดับเบิ้ล)cur->y);

นอกจากการเข้าถึงคอลัมน์ในแถวปัจจุบันแล้ว ยังสามารถอ้างอิงถึง
ก่อน แถวที่ใช้ ก่อนหน้า-[colname]> และถึง ถัดไป แถวที่ใช้ ต่อไป-[ชื่อคอล]>. สังเกตว่า
if ก่อนหน้า-[colname]> ถูกระบุใน ฟังแคล นิพจน์ แถวแรกสุดไม่ใช่
ประมวลผล ถ้า ต่อไป-[colname]> ถูกระบุใน ฟังแคล นิพจน์แถวสุดท้าย
ไม่ได้รับการประมวลผล ทางนี้, prev และ ถัดไป รับประกันว่าจะชี้ไปที่แถวที่ถูกต้องเสมอ
ตัวอย่างเช่น ในการพิมพ์ค่าของคอลัมน์ x ปัจจุบันและคอลัมน์ y ก่อนหน้า
ใช้ฟังก์ชัน C fprintf ใน a ฟังแคล การแสดงออก:

fprintf(stdout, "%d %d\n", cur->x, ก่อนหน้า->y);

คอลัมน์ใหม่สามารถระบุได้โดยใช้ตัวเดียวกัน เคิร์-[colname]> ไวยากรณ์โดยต่อท้ายคอลัมน์
type (และตัวระบุ tlmin/tlmax/binsiz ทางเลือก) คั่นด้วยเครื่องหมายทวิภาค ตัวอย่างเช่น,
cur->avg:D จะกำหนดคอลัมน์ใหม่ของประเภท double ตัวระบุประเภทเหมือนกันเหล่านั้น
ใช้ด้านบนเพื่อระบุประเภทข้อมูลใหม่สำหรับคอลัมน์ที่มีอยู่

ตัวอย่างเช่น เพื่อสร้างและแสดงผลคอลัมน์ใหม่ที่เป็นค่าเฉลี่ยของ x และ y
คอลัมน์ คอลัมน์ "เฉลี่ย" ใหม่สามารถกำหนดได้:

cur->avg:D = (cur->x + cur->y)/2.0

โปรดทราบว่าสุดท้าย ';' ไม่จำเป็นสำหรับนิพจน์บรรทัดเดียว

เช่นเดียวกับข้อกำหนดประเภทข้อมูล FITS TFORM ตัวระบุประเภทข้อมูลคอลัมน์สามารถอยู่ข้างหน้าได้
โดยการนับตัวเลขเพื่อกำหนดอาร์เรย์ เช่น "10I" หมายถึงเวกเตอร์ 10 int สั้น "2E"
หมายถึงการลอยตัวที่แม่นยำสองอัน ฯลฯ คอลัมน์ใหม่จำเป็นต้องกำหนดเพียงครั้งเดียวในa
ฟังแคล นิพจน์ หลังจากนั้นก็สามารถใช้ได้โดยไม่ต้องระบุประเภทซ้ำ นี้
รวมการอ้างอิงถึงองค์ประกอบของอาร์เรย์คอลัมน์:

cur->avg[0]:2D = (cur->x + cur->y)/2.0;
cur->avg[1] = (cur->x - cur->y)/2.0;

ชนิดข้อมูล 'X' (บิต) ถือเป็นอาร์เรย์ของมิติข้อมูล (numeric_count/8) เช่น
16X ถูกประมวลผลเป็นอาร์เรย์ถ่านขนาด 2 ไบต์ องค์ประกอบอาร์เรย์ 8 บิตแต่ละรายการมีการเข้าถึงแยกกัน:

cur->stat[0]:16X = 1;
cur->stat[1] = 2;

ที่นี่สร้างคอลัมน์ 16 บิตโดยตั้งค่า MSB เป็น 1 และตั้งค่า LSB เป็น 2

โดยค่าเริ่มต้น แถวที่ประมวลผลทั้งหมดจะถูกเขียนไปยังไฟล์เอาต์พุตที่ระบุ ถ้าคุณต้องการ
ข้ามการเขียนบางแถวเพียงดำเนินการคำสั่ง C "ต่อไป" ที่ส่วนท้ายของ
ฟังแคล นิพจน์ เนื่องจากการเขียนแถวจะดำเนินการทันทีหลังจาก
นิพจน์ถูกดำเนินการ ตัวอย่างเช่น ข้ามการเขียนแถวที่มีค่าเฉลี่ยเท่ากับ
ค่า x ปัจจุบัน:

cur->avg[0]:2D = (cur->x + cur->y)/2.0;
cur->avg[1] = (cur->x - cur->y)/2.0;
if(cur->avg[0] == cur->x )
ดำเนินการต่อ;

หากไม่มีการระบุอาร์กิวเมนต์ไฟล์เอาต์พุตบน ฟังแคล บรรทัดคำสั่ง ไม่มีไฟล์เอาต์พุต is
เปิดและไม่มีแถวเขียน สิ่งนี้มีประโยชน์ในนิพจน์ที่พิมพ์เอาต์พุตง่าย ๆ
ผลลัพธ์แทนที่จะสร้างไฟล์ใหม่:

fpv = (cur->av3:D-cur->av1:D)/(cur->av1+cur->av2:D+cur->av3);
fbv = cur->av2/(cur->av1+cur->av2+cur->av3);
fpu = ((double)cur->au3-cur->au1)/((double)cur->au1+cur->au2+cur->au3);
fbu = cur->au2/(สองเท่า)(cur->au1+cur->au2+cur->au3);
fprintf(stdout, "%f\t%f\t%f\t%f\n", fpv, fbv, fpu, fbu);

ในตัวอย่างข้างต้น เราใช้ทั้งข้อมูลจำเพาะประเภทที่ชัดเจน (สำหรับคอลัมน์ "av") และ type
การแคสต์ (สำหรับคอลัมน์ "au") เพื่อให้แน่ใจว่าการดำเนินการทั้งหมดจะดำเนินการใน double
ความแม่นยำ

เมื่อมีการระบุไฟล์เอาต์พุต ตารางอินพุตที่เลือกจะถูกประมวลผลและแถวเอาต์พุต
จะถูกคัดลอกไปยังไฟล์ที่ส่งออก โปรดทราบว่าไฟล์เอาต์พุตสามารถระบุเป็น "stdout" ใน
เพื่อเขียนแถวเอาต์พุตไปยังเอาต์พุตมาตรฐาน ถ้าอาร์กิวเมนต์ไฟล์เอาต์พุตคือ
ผ่าน อาร์กิวเมนต์ที่สามที่เป็นทางเลือกสามารถส่งเพื่อระบุคอลัมน์ที่จะประมวลผล

ในตารางไบนารีของ FITS บางครั้งขอแนะนำให้คัดลอกส่วนขยาย FITS อื่นๆ ทั้งหมด
ไปยังไฟล์เอาต์พุตด้วย สามารถทำได้โดยการใส่เครื่องหมาย '+' ต่อท้ายชื่อ
นามสกุลในชื่อไฟล์อินพุต ดู สนุกได้ สำหรับตัวอย่างที่เกี่ยวข้อง

ฟังแคล ทำงานโดยการรวมนิพจน์ที่ผู้ใช้ระบุลงในโปรแกรมเทมเพลต C
เรียกว่า tabcalc.c โปรแกรมที่เสร็จสมบูรณ์แล้วจะถูกรวบรวมและดำเนินการ ตัวแปร
ประกาศที่เริ่มต้น ฟังแคล นิพจน์อยู่ในส่วนการประกาศท้องถิ่น
ของโปรแกรมหลักของเทมเพลต บรรทัดอื่น ๆ ทั้งหมดจะถูกวางไว้ในเทมเพลตหลักของโปรแกรม
วงการประมวลผลภายใน รายละเอียดอื่น ๆ ของการสร้างโปรแกรมจะได้รับการจัดการโดยอัตโนมัติ สำหรับ
ตัวอย่าง ตัวระบุคอลัมน์จะถูกวิเคราะห์เพื่อสร้างโครงสร้าง C สำหรับการประมวลผลแถว ซึ่งก็คือ
ผ่านไปยัง FunColumnSelect() และนำมาใช้ใน FunTableRowGet(). หากใช้ตัวแปรที่ไม่รู้จัก
ในนิพจน์ ทำให้เกิดข้อผิดพลาดในการคอมไพล์ โปรแกรมบิลด์จะถูกลองใหม่อีกครั้งหลังจาก
กำหนดตัวแปรที่ไม่รู้จักให้เป็นประเภทคู่

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

[ชื่อคำสั่ง]
... รหัสไปที่นี่ ...
ปลาย

คำสั่งคือ:

· ทั่วโลก เพิ่มรหัสและการประกาศในพื้นที่ส่วนกลาง ก่อนรูทีนหลัก

· ในประเทศ เพิ่มการประกาศ (และรหัส) หลังการประกาศในเครื่อง main

· ก่อน เพิ่มรหัสก่อนเข้าสู่ลูปการประมวลผลแถวหลัก

· หลังจาก เพิ่มรหัสหลังจากออกจากลูปการประมวลผลแถวหลัก

ดังนั้น ต่อไปนี้ ฟังแคล นิพจน์จะประกาศตัวแปรโกลบอลและสร้างรูทีนย่อย
โทรก่อนและหลังลูปการประมวลผลหลัก:

ทั่วโลก
คู่ v1, v2;
init สองครั้ง (เป็นโมฆะ);
เสร็จสิ้นสองครั้ง(วีสองครั้ง);
ปลาย
ก่อน
v1 = เริ่มต้น ();
ปลาย
... ประมวลผลแถวด้วยการคำนวณโดยใช้ v1 ...
หลังจาก
v2 = เสร็จสิ้น (v1);
ถ้า (v2 < 0.0){
fprintf(stderr, "การประมวลผลล้มเหลว %g -> %g\n", v1, v2);
ทางออก(1);
}
ปลาย

กิจวัตรเช่น ในนั้น() และ เสร็จสิ้น() ด้านบนจะถูกส่งไปยังโปรแกรมที่สร้างขึ้นสำหรับการเชื่อมโยง
โดยใช้โปรแกรม -l [ลิงค์ สั่ง ... ] สวิตซ์. สตริงที่ระบุโดยสวิตช์นี้จะเป็น
เพิ่มไปยังลิงค์ไลน์ที่ใช้สร้างโปรแกรม (ก่อนถึงไลบรารี funtools) สำหรับ
ตัวอย่าง สมมติว่า ในนั้น() และ เสร็จสิ้น() อยู่ในห้องสมุด libmysubs.a ใน
/opt/special/lib ไดเร็กทอรี ใช้:

funcalc -l "-L/opt/special/lib -lmysubs" ...

อาร์กิวเมนต์ของผู้ใช้สามารถส่งผ่านไปยังโปรแกรม funcalc ที่คอมไพล์แล้วโดยใช้อาร์กิวเมนต์สตริงไปที่
สวิตช์ "-a" สตริงควรมีอาร์กิวเมนต์ของผู้ใช้ทั้งหมด เช่น ผ่าน
จำนวนเต็ม 1 และ 2 ใช้:

funcalc -a "1 2" ...

อาร์กิวเมนต์ถูกเก็บไว้ในอาร์เรย์ภายในและเข้าถึงได้เป็นสตริงผ่าน ARGV(n)
มาโคร ตัวอย่างเช่น พิจารณานิพจน์ต่อไปนี้:

ในประเทศ
int pmin, พีแม็กซ์;
ปลาย

ก่อน
พีมิน=อาตอย(อาร์จีวี(0));
pmax=อาต๋อย(อาร์จีวี(1));
ปลาย

if( (cur->pha >= pmin) && (cur->pha <= pmax) )
fprintf(stderr, "%d %d %d\n", cur->x, cur->y, cur->pha);

นิพจน์นี้จะพิมพ์ค่า x, y และ pha สำหรับทุกแถวที่มีค่า pha เป็น
ระหว่างสองค่าที่ผู้ใช้ป้อน:

funcalc -a '1 12' -f foo snr.ev'[cir 512 512 .1]'
512 512 6
512 512 8
512 512 5
512 512 5
512 512 8

funcalc -a '5 6' -f foo snr.ev'[cir 512 512 .1]'
512 512 6
512 512 5
512 512 5

โปรดทราบว่าเป็นความรับผิดชอบของผู้ใช้เพื่อให้แน่ใจว่าจำนวนอาร์กิวเมนต์ที่ถูกต้อง
จะผ่านไป มาโคร ARGV(n) คืนค่า NULL ถ้าอาร์กิวเมนต์ที่ร้องขออยู่นอกขีดจำกัด
ของจำนวนอาร์กิวเมนต์จริง ซึ่งมักจะส่งผลให้ SEGV หากประมวลผลแบบสุ่มสี่สุ่มห้า เพื่อตรวจสอบ
จำนวนอาร์กิวเมนต์ ใช้มาโคร ARGC:

ในประเทศ
เมล็ดยาว int=1;
ขีด จำกัด สองเท่า=0.8;
ปลาย

ก่อน
if( ARGC >= 1 ) เมล็ด = atol(อาร์จีวี(0));
ถ้า ( ARGC >= 2 ) จำกัด = atof(อาร์จีวี(1));
srand48(เมล็ด);
ปลาย

ถ้า ( drand48() > จำกัด ) ดำเนินการต่อ;

แมโคร WRITE_ROW ขยายเป็น FunTableRowPut() การเรียกที่เขียนแถวปัจจุบัน มัน
สามารถใช้เขียนแถวได้มากกว่าหนึ่งครั้ง นอกจากนี้ มาโคร NROW ยังขยายเป็น
กำลังประมวลผลหมายเลขแถว การใช้มาโครทั้งสองนี้จะแสดงดังต่อไปนี้
ตัวอย่าง:

if(cur->pha:I == cur->pi:I ) ดำเนินการต่อ;
a = cur->pha;
cur->pha = cur->pi;
cur->pi = a;
cur->AVG:E = (cur->pha+cur->pi)/2.0;
cur->NR:ฉัน = NROW;
ถ้า ( NROW < 10 ) WRITE_ROW;

ถ้า -p [โปรแกรม] มีการระบุสวิตช์ นิพจน์จะไม่ดำเนินการ ค่อนข้างจะ
ไฟล์เรียกทำงานที่สร้างขึ้นจะถูกบันทึกด้วยชื่อโปรแกรมที่ระบุเพื่อใช้ในภายหลัง

ถ้า -n มีการระบุสวิตช์ นิพจน์จะไม่ดำเนินการ แต่รหัสที่สร้างขึ้น
ถูกเขียนไปยัง stdout สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณต้องการสร้างไฟล์โครงกระดูก
และเพิ่มรหัสของคุณเอง หรือหากคุณต้องการตรวจสอบข้อผิดพลาดในการรวบรวม โปรดทราบว่าความคิดเห็น
ที่จุดเริ่มต้นของเอาต์พุตให้คำสั่งคอมไพเลอร์ที่จำเป็นในการสร้างโปรแกรมบนนั้น
แพลตฟอร์ม. (คำสั่งสามารถเปลี่ยนจากแพลตฟอร์มเป็นแพลตฟอร์มได้เนื่องจากการใช้
ไลบรารีต่าง ๆ สวิตช์คอมไพเลอร์ ฯลฯ)

ดังกล่าวก่อนหน้า ฟังแคล จะประกาศตัวแปรสเกลาร์โดยอัตโนมัติ (เป็น a
double) หากมีการใช้ตัวแปรนั้นแต่ไม่ได้ประกาศ สิ่งอำนวยความสะดวกนี้ถูกนำไปใช้
ใช้สคริปต์ sed ชื่อ funcalc.sed ซึ่งประมวลผลเอาต์พุตของคอมไพเลอร์เพื่อรับรู้ an
ข้อผิดพลาดของตัวแปรที่ไม่ได้ประกาศ สคริปต์นี้ได้รับข้อผิดพลาดที่เหมาะสม
ข้อมูลสำหรับ gcc และสำหรับ cc บนแพลตฟอร์ม Solaris, DecAlpha และ SGI หากคุณพบว่า
การประกาศสเกลาร์อัตโนมัติไม่ทำงานบนแพลตฟอร์มของคุณ โปรดตรวจสอบสคริปต์ sed นี้
อาจจำเป็นต้องเพิ่มหรือแก้ไขข้อความแสดงข้อผิดพลาดบางอย่างที่รู้สึกได้

เพื่อให้การวิเคราะห์ศัพท์ของ ฟังแคล สำนวน (สมเหตุสมผล) ง่ายๆ เราเลือก
เพื่อยอมรับข้อจำกัดบางประการเกี่ยวกับความถูกต้องของความคิดเห็น C ช่องว่างและการขึ้นบรรทัดใหม่
ในโปรแกรมที่สร้างขึ้น โดยเฉพาะความคิดเห็นที่เกี่ยวข้องกับตัวแปรท้องถิ่นที่ประกาศ
ที่จุดเริ่มต้นของนิพจน์ (เช่น ไม่อยู่ใน ท้องถิ่น...จบ บล็อก) มักจะจบลง
ในวงใน ไม่ใช่ด้วยการประกาศในเครื่อง:

/* ความคิดเห็นนี้จะจบลงผิดที่ (เช่น วงใน) */
ดับเบิ้ลเอ; /* ผิดที่เหมือนกันครับ */
/* นี่จะอยู่ในตำแหน่งที่ถูกต้อง (วงใน) */
if(cur->x:D == cur->y:D ) ดำเนินการต่อ; /* อยู่ในตำแหน่งที่ถูกต้องเช่นกัน */
a = cur->x;
cur->x = cur->y;
cur->y = a;
cur->avg:E = (cur->x+cur->y)/2.0;

ในทำนองเดียวกัน บางครั้งการเว้นวรรคและการขึ้นบรรทัดใหม่ก็ถูกละเว้นหรือเพิ่มในลักษณะที่ดูเหมือนเป็นกฎเกณฑ์
มารยาท. แน่นอนว่าไม่มีตำหนิโวหารเหล่านี้ส่งผลต่อความถูกต้องของ
รหัสที่สร้างขึ้น

เพราะ ฟังแคล ต้องวิเคราะห์การแสดงออกของผู้ใช้โดยใช้ไฟล์ข้อมูลที่ส่งผ่านไปยัง
บรรทัดคำสั่ง ไฟล์อินพุตจะต้องเปิดและอ่านสองครั้ง: หนึ่งครั้งระหว่างโปรแกรม
รุ่นและครั้งเดียวระหว่างการดำเนินการ ด้วยเหตุนี้ จึงไม่สามารถใช้ stdin สำหรับ
ไฟล์อินพุต: ฟังแคล ไม่สามารถใช้เป็นตัวกรองได้ เราจะพิจารณาลบข้อจำกัดนี้
ในเวลาต่อมา

พร้อมกับความคิดเห็นของ C ฟังแคล นิพจน์สามารถมีความคิดเห็นภายในบรรทัดเดียวที่
ไม่ส่งต่อไปยังโปรแกรม C ที่สร้างขึ้น ความคิดเห็นภายในเหล่านี้เริ่มต้นด้วย #
ตัวอักษรและไปขึ้นบรรทัดใหม่:

ดับเบิ้ลเอ; # สิ่งนี้ไม่ผ่านไปยังไฟล์ C ที่สร้างขึ้น
#ก็ไม่ใช่
a = cur->x;
cur->x = cur->y;
cur->y = a;
/* ความคิดเห็นนี้ถูกส่งไปยังไฟล์ C */
cur->avg:E = (cur->x+cur->y)/2.0;

ตามที่กล่าวไว้ก่อนหน้านี้ ปกติคอลัมน์อินพุตจะถูกระบุโดยใช้คอลัมน์เหล่านี้ภายใน
วงเหตุการณ์ภายใน มีบางกรณีที่คุณอาจต้องการอ่านคอลัมน์และ
ประมวลผลนอกลูปหลัก ตัวอย่างเช่น qsort อาจใช้คอลัมน์ใน sort
รูทีนการเปรียบเทียบที่ไม่ได้ประมวลผลภายในวงใน (และดังนั้นจึงไม่ใช่
ระบุโดยปริยายเป็นคอลัมน์ที่จะอ่าน) เพื่อให้แน่ใจว่าคอลัมน์ดังกล่าวจะถูกอ่านโดย
วนรอบเหตุการณ์ ใช้ the ชัดเจน คำสำคัญ. อาร์กิวเมนต์ของคีย์เวิร์ดนี้ระบุคอลัมน์ที่
ควรอ่านลงในโครงสร้างบันทึกอินพุตแม้ว่าจะไม่ได้กล่าวถึงใน
วงใน ตัวอย่างเช่น:

ชัดเจน pi pha

จะทำให้แน่ใจว่าคอลัมน์ pi และ pha ถูกอ่านสำหรับแต่ละแถว แม้ว่าจะไม่ได้อ่านก็ตาม
ประมวลผลในวงเหตุการณ์ภายใน NS ชัดเจน สามารถวางคำสั่งได้ทุกที่

สุดท้ายโปรดทราบว่า ฟังแคล ปัจจุบันทำงานกับนิพจน์ที่เกี่ยวข้องกับตารางไบนารี FITS และ
ไฟล์เหตุการณ์ดิบ เราจะพิจารณาเพิ่มการรองรับการแสดงภาพในภายหลัง
หากมีความต้องการการสนับสนุนจากชุมชน

ใช้ funcalc ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

  • 1
    สวก
    สวก
    SWIG คือเครื่องมือพัฒนาซอฟต์แวร์
    ที่เชื่อมโปรแกรมที่เขียนด้วยภาษา C และ
    C++ ที่มีระดับสูงหลากหลาย
    ภาษาโปรแกรม SWIG ใช้กับ
    แตกต่าง...
    ดาวน์โหลด SWIG
  • 2
    WooCommerce Nextjs ตอบสนองธีม
    WooCommerce Nextjs ตอบสนองธีม
    ตอบสนองธีม WooCommerce ที่สร้างขึ้นด้วย
    JS, Webpack, Babel, Node และ . ถัดไป
    Express โดยใช้ GraphQL และ Apollo
    ลูกค้า. ร้านค้า WooCommerce ใน React (
    ประกอบด้วย: สินค้า...
    ดาวน์โหลด WooCommerce Nextjs React Theme
  • 3
    Archlabs_repo
    Archlabs_repo
    แพ็คเกจ repo สำหรับ ArchLabs นี่คือ
    แอปพลิเคชันที่สามารถดึงข้อมูลได้
    ราคาเริ่มต้นที่
    https://sourceforge.net/projects/archlabs-repo/.
    ได้รับการโฮสต์ใน OnWorks ใน...
    ดาวน์โหลด archlabs_repo
  • 4
    โครงการ Zephyr
    โครงการ Zephyr
    โครงการ Zephyr คือคนรุ่นใหม่
    ระบบปฏิบัติการแบบเรียลไทม์ (RTOS) ที่
    รองรับฮาร์ดแวร์หลายตัว
    สถาปัตยกรรม มันขึ้นอยู่กับ
    เคอร์เนลขนาดเล็ก...
    ดาวน์โหลดโครงการ Zephyr
  • 5
    SCCons
    SCCons
    SCons เป็นเครื่องมือสร้างซอฟต์แวร์
    ที่เป็นทางเลือกที่เหนือกว่า
    เครื่องมือสร้าง "Make" แบบคลาสสิกที่
    เราทุกคนรู้จักและชื่นชอบ SCCons คือ
    ดำเนินการก...
    ดาวน์โหลด SCCons
  • 6
    พีเอสอินท์
    พีเอสอินท์
    PSeInt เป็นล่ามรหัสหลอกสำหรับ
    นักศึกษาการเขียนโปรแกรมที่พูดภาษาสเปน
    จุดประสงค์หลักคือเพื่อเป็นเครื่องมือสำหรับ
    การเรียนรู้และทำความเข้าใจพื้นฐาน
    แนวคิด...
    ดาวน์โหลด PSeInt
  • เพิ่มเติม»

คำสั่ง Linux

Ad