Mã giả

Mã giả (tiếng Anh: Pseudocode,[1] xuất phát từ chữ pseudocode) là một bản mô tả giải thuật lập trình máy tính ngắn gọn và không chính thức cấp cao, trong đó sử dụng những quy ước có cấu trúc của một số ngôn ngữ lập trình, nhưng thường bỏ đi những chi tiết không cần thiết để giúp hiểu rõ giải thuật hơn, như bỏ đi chương trình con, khai báo biến và những đoạn mã đặc biệt của hệ thống. Ngôn ngữ lập trình được bổ sung bằng những mô tả chi tiết bằng ngôn ngữ tự nhiên ở nơi thích hợp, hoặc bằng ký hiệu toán học đơn giản. Mục đích của việc sử dụng mã giả là nó có thể con người đọc hiểu dễ dàng hơn những ngôn ngữ lập trình thông thường, và mã giả có thể là một bản mô tả cô đọng và độc lập với môi trường phát triển ghi lại những nguyên lý chủ chốt của một giải thuật. Không có bất cứ tiêu chuẩn nào cho cú pháp mã giả, vì một chương trình viết bằng mã giả không phải là một chương trình có thể thực thi được.

Lưu đồ (flowchart) có thể được xem là một bản thay thế cho mã giả được mô tả bằng hình ảnh. Mã giả rất giống, nhưng không nên lẫn lộn, với các chương trình khung trong đó có dummy code, và có thể được biên dịch mà không tạo ra lỗi.

Cú pháp

Như điều cái tên nói lên, mã giả nói chung không thực sự tuân theo quy tắc cú pháp của một ngôn ngữ cụ thể nào; không có dạng chuẩn hệ thống, mặc dù bất kỳ người viết cụ thể nào nói chung cũng sẽ mượn hình thức của một ngôn ngữ nào đó. Những ngôn ngữ thường được mượn là Pascal, BASIC, C, Java, Lisp, và ALGOL. Những chi tiết không thích hợp với giải thuật (như mã quản lý bộ nhớ) thường bị bỏ đi. Những khối mã, như mã nằm trong một vòng lặp, có thể được mô tả chỉ bằng một câu viết bằng ngôn ngữ tự nhiên.

Tùy vào người viết, mã giả do đó rất khác nhau về phong cách, từ sự bắt chước gần như chính xác một ngôn ngữ lập trình có thật, đến một bản mô tả mà đối với người khác đó gần như là một bản văn xuôi được định dạng.

Ứng dụng

Sách giáo khoa và bài báo khoa học liên quan đến khoa học máy tínhtính toán số thường sử dụng mã giả để mô tả giải thuật, để cho tất cả các lập trình viên đều có thể hiểu chúng, mặc dù tất cả họ không cùng biết một ngôn ngữ lập trình như nhau. Trong sách giáo khoa, thường có một đoạn giới thiệu đi kèm giải thích về những quy ước cụ thể được sử dụng. Mức độ chi tiết của những ngôn ngữ như vậy trong một số trường hợp có thể gần đạt đến những ngôn ngữ đa mục đích hình thức hóa — ví dụ, cuốn phôi thai của Knuth The Art of Computer Programming (Nghệ thuật lập trình máy tính) mô tả những giải thuật bằng ngôn ngữ assembly được mô tả đầy đủ dành cho những vi xử lý không tồn tại.

Một lập trình viên khi cần hiện thực một giải thuật cụ thể nào đó, đặc biệt là một giải thuật mà họ chưa biết, thường bắt đầu bằng một bản mô tả bằng mã giả, rồi sau đó chỉ đơn giản là "dịch" bản mô tả đó thành ngôn ngữ lập trình tương ứng và chính sửa để giao tiếp đúng với toàn bộ phần chương trình. Các lập trình viên cũng thường bắt đầu một dự án bằng cách thảo ra những đoạn mã bằng mã giả trên giấy trước khi viết chúng bằng ngôn ngữ thật sự của nó, là một cách tiếp cận có hệ thống theo dạng top-down (từ trên xuống).

Ví dụ về mã giả

Một ví dụ về mã giả khác nhau với mã thường.

Mã thông thường (viết bằng PHP):
<?php
if (is_valid($cc_number)) {
  execute_transaction($cc_number, $order);
} else {
  show_failure();
}
?>
Mã giả:
if số thẻ tín dụng là đúng then
thực hiện giao dịch dựa trên số và thứ tự
else
hiển thị thông báo thất bại
end if

Mã giả của chương trình Hello World vô cùng đơn giản:

output: Hello World

Mã giả dạng toán học

Trong tính toán số, mã giả thường bao gồm ký hiệu toán học, thường từ lý thuyết tập hợpma trận, trộn lẫn với các cấu trúc điều khiển của một ngôn ngữ lập trình quy ước, và có thể cũng có mô tả bằng ngôn ngữ tự nhiên. Đây là một dạng ký hiệu cô đọng và thường không chính thức, giúp cho nhiều người có được học về toán có thể hiểu được, và thường được dùng để mô tả giải thuật toán học.

Thông thường những kiểu chữ không phải ASCII được dùng trong các phương trình toán học, ví dụ bằng mã đánh dấu TeX hoặc MathML, hoặc trình soạn thảo công thức tốn phí.

Mã giả theo kiểu toán học đôi khi còn được gọi là mã tiếng bồi (pidgin code), ví dụ ALGOL bồi (nguồn gốc của khái niệm), Fortran bồi, BASIC bồi, Pascal bồi, và C bồi.

Biên dịch hoặc thông dịch máy

Người ta thường đề nghị rằng những ngôn ngữ lập trình trong tương lại sẽ ngày càng tương tự như mã giả hoặc ngôn ngữ tự nhiên hơn là những ngôn ngữ hiện tại; ý tưởng đó là tốc độ máy tính ngày càng tăng và những tiến bộ trong công nghệ trình biên dịch sẽ cho phép máy tính tạo ra những chương trình từ những bản mô tả giải thuật, thay vì yêu cầu chi tiết phải do con người hiện thực.

Đã có nhiều cố gắng nhàm mang những yếu tố ngôn ngữ tự nhiên vào lập trình máy tính, và nó đã tạo ra những ngôn ngữ lập trình như HyperTalk, Lingo, AppleScript, SQLInform. Trong những ngôn ngữ này, dấu ngoặc đơn và những ký tự đặc biệt khác được thay thế bằng giới từ, dẫn đến một đoạn mã nói lên được nhiều điều. Điều này có thể khiến một người hiểu dễ dàng hơn mà không cần có kiến thức về ngôn ngữ và có thể cùng để học ngôn ngữ. Tuy nhiên, sự tương tự với ngôn ngữ tự nhiên thường chỉ là bề ngoài chứ chưa phải là thực chất. Các quy tắc cú pháp cũng chỉ nghiêm ngặt và hình thức như trong ngôn ngữ quy ước, và không khiến cho việc phát triển phần mềm dễ dàng hơn.

Các ngôn ngữ lập trình toán học

Một cách thay thế cho việc sử dụng mã giả toán học (sử dụng ký hiệu lý thuyết tập hợp hoặc phép toán ma trận) để ghi lại giải thuật đó là sử dụng một ngôn ngữ lập trình toán học hình thức, là một sự pha trộn giữa các ký hiệu toán học không phải ASCII với cấu trúc điều khiển chương trình. Nhờ đó đoạn mã có thể được phân tích cú pháp và thông dịch bằng máy.

Một vài ngôn ngữ mô tả hình thức bao gồm ký hiệu lý thuyết tập hợp sử dụng các ký tự đặc biệt. Ví dụ như:

Một số ngôn ngữ lập trình mảng bao gồm các biểu thức véc-tơ hóa và phép toán ma trận như các công thức không ASCII, pha trộn với cấu trúc điều khiển quy ước. Ví dụ:

Xem thêm

Tham khảo

  1. ^ “what is pseudocode ?”.

Liên kết ngoài

Read other articles:

Walter Gropius(1919) Nama dalam bahasa asli(de) Walter Gropius BiografiKelahiran(de) Walter Adolf Georg Gropius 18 Mei 1883 Berlin Kematian5 Juli 1969 (86 tahun)Boston Tempat pemakamanSüdwestkirchhof Stahnsdorf (en) KegiatanSpesialisasiArsitektur PekerjaanArsitek, pedagogue (en), Perencana kota, perancang dan guru Bekerja diUniversitas Harvard Black Mountain College (en) AliranBauhaus dan Gaya internasional Murid dariKarl Ernst Osthaus dan Peter Behrens MuridAnne Tyng (en), Erik Schmidt-Scha...

 

Bola voli indoor putra pada Pekan Olahraga Nasional 2016LokasiGOR Indoor Serbaguna Si Jalak Harupat, Kabupaten BandungTanggal19-28 September 2016Peserta131Peraih medali   Jawa Timur  Jawa Tengah   Jawa Barat ← 20122020 → Bola voli padaPekan Olahraga Nasional XIX Indoor putra  putri Pantai putra  putri Nomor indoor putra cabang olahraga pada Pekan Olahraga Nasional XIX akan berlangsung di GOR Indoor Serbaguna Si Jalak ...

 

Genus of flowering plants in the nightshade family Solanaceae For the agricultural product, see Tobacco. Nicotiana Nicotiana tabacum Scientific classification Kingdom: Plantae Clade: Tracheophytes Clade: Angiosperms Clade: Eudicots Clade: Asterids Order: Solanales Family: Solanaceae Tribe: Nicotianeae Genus: NicotianaL. Type species Nicotiana tabacumL. Species See text Synonyms[1] Amphipleis Raf. Blenocoes Raf. Dittostigma Phil. Eucapnia Raf. Langsdorfia Raf. Lehmannia Spreng. Merinth...

Piscine MolitorSetelah ditutup tahun 1989, Piscine Molitor menjadi target seniman graffiti dan vandalKoordinat: 48°50′43″N 2°15′10″E / 48.8451444°N 2.25286944°E / 48.8451444; 2.25286944Alamat4 Rue Nungesser et Coli, 75016 Paris, PrancisDibuka1929Ditutup1989ArsitekLucien PolletJenisSatu kolam terbuka, satu kolam tertutupNama lamales Piscines Auteuil-Molitor, les Grands établissements balnéaires d'AuteuilStatusMonument historiquePanjang33 meter (108 ft...

 

This article needs to be updated. Please help update this article to reflect recent events or newly available information. (November 2010) Bilateral relationsChina–Kyrgyzstan relations China Kyrgyzstan China–Kyrgyzstan relations are the bilateral relationship between China and Kyrgyzstan. History As of 1996, relations between Kyrgyzstan and China were an area of substantial uncertainty for the government in Bishkek.[1] The free-trade zone in Naryn attracted large numbers of Chines...

 

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: コルク – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2017年4月) コルクを打ち抜いて作った瓶の栓 コルク(木栓、�...

Proposed transit lines in New York City Staten Island light rail proposals refer to two projects in the New York City borough of Staten Island. These proposals are among the several light rail projects that have been floated in New York City in recent years.[1] Neither proposal was funded in the Metropolitan Transportation Authority's 2015–2019 Capital Plan,[2] but $4 million was allocated to a study for it.[3] North Shore The North Shore Light Rail line is a propose...

 

Brewery based in Pottsville, Pennsylvania For people named Yuengling and for other uses, see Jüngling § Yuengling. D. G. Yuengling & SonThe Yuengling brewing complex in Pottsville, Pennsylvania.FormerlyEagle BreweryCompany typePrivateIndustryBrewingFounded1829; 195 years ago (1829)FounderDavid YuenglingHeadquartersPottsville, Pennsylvania, United StatesArea servedEast Coast, Southern, and Midwestern United StatesProduction output2.9 million US beer barrels (3...

 

土库曼斯坦总统土库曼斯坦国徽土库曼斯坦总统旗現任谢尔达尔·别尔德穆哈梅多夫自2022年3月19日官邸阿什哈巴德总统府(Oguzkhan Presidential Palace)機關所在地阿什哈巴德任命者直接选举任期7年,可连选连任首任萨帕尔穆拉特·尼亚佐夫设立1991年10月27日 土库曼斯坦土库曼斯坦政府与政治 国家政府 土库曼斯坦宪法 国旗 国徽 国歌 立法機關(英语:National Council of Turkmenistan) ...

2020年夏季奥林匹克运动会波兰代表團波兰国旗IOC編碼POLNOC波蘭奧林匹克委員會網站olimpijski.pl(英文)(波兰文)2020年夏季奥林匹克运动会(東京)2021年7月23日至8月8日(受2019冠状病毒病疫情影响推迟,但仍保留原定名称)運動員206參賽項目24个大项旗手开幕式:帕维尔·科热尼奥夫斯基(游泳)和马娅·沃什乔夫斯卡(自行车)[1]闭幕式:卡罗利娜·纳亚(皮划艇)&#...

 

ヨハネス12世 第130代 ローマ教皇 教皇就任 955年12月16日教皇離任 964年5月14日先代 アガペトゥス2世次代 レオ8世個人情報出生 937年スポレート公国(中部イタリア)スポレート死去 964年5月14日 教皇領、ローマ原国籍 スポレート公国親 父アルベリーコ2世(スポレート公)、母アルダその他のヨハネステンプレートを表示 ヨハネス12世(Ioannes XII、937年 - 964年5月14日)は、ロ...

 

San Fedele di ComoAffresco con san Giovanni Battista e san Fedele a cavallo (1890) Militare  MorteIII secolo Venerato daTutte le Chiese che ammettono il culto dei santi Santuario principaleBasilica di San Fedele a Como Ricorrenza28 ottobre29 ottobre nella Diocesi di Como AttributiPalma Patrono diCastelnuovo Magra, Mello, Palazzolo sull'Oglio, Plesio Manuale Fedele (... – Sorico, III secolo) è stato un militare romano, l'evangelizzatore della Chiesa di Como, martire ai tempi delle...

「スペイン」のその他の用法については「スペイン (曖昧さ回避)」をご覧ください。 「エスパーニャ」はこの項目へ転送されています。その他の用法については「エスパーニャ (曖昧さ回避)」をご覧ください。 スペイン王国 Reino de España (国旗) (国章) 国の標語:Plus Ultra(ラテン語:更なる前進) 国歌:Marcha Real(スペイン語)国王行進曲 公用語 スペイン語[注...

 

American lawyer and judge (1927–2012) Robert BorkBork in 2005Judge of the United States Court of Appeals for the District of Columbia CircuitIn officeFebruary 9, 1982 – February 5, 1988Appointed byRonald ReaganPreceded byCarl E. McGowanSucceeded byClarence ThomasUnited States Attorney GeneralActingOctober 20, 1973 – January 4, 1974PresidentRichard NixonPreceded byElliot RichardsonSucceeded byWilliam B. Saxbe35th Solicitor General of the United StatesIn officeMarch 21, ...

 

Facilitation or provision of a prostitute Pimp and pimping redirect here. For other uses, see Pimp (disambiguation). Procuress redirects here. For other uses, see The Procuress. Sex and the law Social issues Consent Reproductive rights Homophobia (Criminalization · Capital punishment) LGBT rights (Conversion therapy · Decriminalization · Civil union · Same-sex marriage · Adoption · Intersex · Transgender) Age of consent Marriageable age Pedophile advocacy Deviant sexual intercourse Mis...

Disambiguazione – Se stai cercando altri significati, vedi Mark Phillips (disambigua). Mark PhillipsMark Phillips nel 1980Nazionalità Regno Unito Altezza185 cm Peso79 kg Equitazione Palmarès Competizione Ori Argenti Bronzi Giochi olimpici 1 1 0 Mondiali 1 1 0 Europei 1 0 0 Vedi maggiori dettagli  Modifica dati su Wikidata · Manuale Mark Anthony Peter Phillips (Cirencester, 22 settembre 1948) è un cavaliere ed ex atleta britannico, vincitore della medaglia d'oro nel conco...

 

Druk Gyalpo of Bhutan from 1952 to 1972 This article is about the third king of Bhutan. For his grandson, the Gyaltshab of Bhutan, see Jigme Dorji Wangchuck (born 1986). Jigme Dorji WangchuckPicture of King Jigme Dorji Wangchuck at Paro International AirportKing of BhutanReign30 March 1952 – 21 July 1972Coronation27 October 1952[1]PredecessorJigme WangchuckSuccessorJigme Singye WangchuckBorn(1928-05-02)2 May 1928Thruepang Palace, TrongsaDied21 July 1972(1972-07-21) (aged 44)Nai...

 

Национальный архив (Франция) Дата открытия 1790 Хронологические рамки документов VII —XXI века Директор Брюно Рикар Местонахождение Франция, Париж, rue Guynemer, 59 Pierrefitte-sur-Seine, 3 округ Сайт archives-nationales.culture.gouv.fr  Медиафайлы на Викискладе Национальный архив, также известный как Фра�...

Patrick DempseyDempsey tahun 2016LahirPatrick Galen Dempsey13 Januari 1966 (umur 58)Lewiston, Maine, Amerika SerikatPekerjaanAktorpembalap mobilTahun aktif1985–sekarangSuami/istriRocky Parker ​ ​(m. 1987; c. 1994)​ Jillian Fink ​(m. 1999)​Anak3 Patrick Galen Dempsey (lahir 13 Januari 1966)[1] adalah aktor dan pembalap mobil asal Amerika Serikat. Ia terkenal karena perannya sebagai ahli bedah sara...

 

Cet article est une ébauche concernant la santé et la géographie. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. La mortalité infanto-juvénile est une statistique correspondant à la mortalité des enfants de moins de cinq ans. Elle ne doit pas être confondue avec la mortalité infantile (mortalité avant l'âge d'un an) ou avec la mortalité juvénile (mortalité entre 1 et 5 ans) . La mortalité infanto...