সিউডো কোডে কী বোঝায়: = মানে?


25

অ্যালগরিদমিক বাস্তবায়ন শিরোনামে বিভাগটিতে নিম্নলিখিত কোড রয়েছে:

// Return RC low-pass filter output samples, given input samples,
 // time interval dt, and time constant RC
 function lowpass(real[0..n] x, real dt, real RC)
   var real[0..n] y
   var real α := dt / (RC + dt)
   y[0] := x[0]
   for i from 1 to n
       y[i] := α * x[i] + (1-α) * y[i-1]
   return y

কি: = মানে?


2
আমি শিখেছি যে এটি দর্শন এবং যুক্তিযুক্ত স্বরলিপি থেকেই ছিল, যা এটি ": = হিসাবে সংজ্ঞায়িত হয়েছে" তাই x: = 1 কে এক্স হিসাবে সংজ্ঞায়িত করা হয়েছে।
প্যাট্রিক হিউজ

3
১৯৯০ সালে আমি যখন এপি কম্পিউটার বিজ্ঞান নিয়েছি তখন আমরা পাস্কালকে আমাদের শেখার ভাষা হিসাবে ব্যবহার করেছি। আমি সর্বদা :="সমান হয়ে যায়" হিসাবে উচ্চারণ করি । আমি প্রকৃতপক্ষে এটিকে পছন্দ করি =এবং ==প্রাকৃতিক ভাষায় "=" তুলনামূলক অপারেটর (বা কমপক্ষে সত্যের বক্তব্য))
টেকব্রাট

উত্তর:


59

: = হ'ল ভাষাগুলির জন্য অ্যাসাইনমেন্ট অপারেটর যা একক সমান চিহ্ন ব্যবহার করে সমতা পরীক্ষা করে। এই ভাষাগুলির মধ্যে সর্বাধিক সুপরিচিত হ'ল পাস্কাল। সি এর প্রভাবের কারণে বেশিরভাগ ভাষা = অ্যাসাইনমেন্টের জন্য = এবং পরীক্ষার জন্য == এ পরিবর্তন করে। কিছু পুরানো পাঠ্য এবং লেখক যা এই জাতীয় শৈলীতে প্রশিক্ষণপ্রাপ্ত ছিল সেগুলি সিডোকোডের জন্য ব্যবহার করে: = আপনি কখনও কখনও তীরগুলি <> পাশাপাশি নিয়োগের জন্যও দেখতে পান ।

নিবন্ধ থেকে:

input: an array a of length n with array elements numbered 0 to n − 1

inc ← round(n/2)
while inc > 0 do:
    for i = inc .. n − 1 do:
        temp ← a[i]
        j ← i
        while j ≥ inc and a[j − inc] > temp do:
            a[j] ← a[j − inc]
            j ← j − inc
        a[j] ← temp
    inc ← round(inc / 2.2)

কিছু আধুনিক ভাষা অ্যাসাইনমেন্টের জন্য তীর ব্যবহার করে; সবচেয়ে উল্লেখযোগ্যভাবে আর , যা এটি স্থানীয় অ্যাসাইনমেন্টের জন্য একক সমান (=) ব্যবহার করে বিশ্বব্যাপী অ্যাসাইনমেন্টের জন্য ব্যবহার করে।

সেবেস্তার প্রোগ্রামিং ল্যাঙ্গুয়েজের ধারণাগুলি এবং ডাঃ কেএন কিংয়ের ক্লাস নোটগুলি থেকে আমরা শিখলাম যে অ্যাসাইনমেন্টের মানগুলি সি বা পাস্কালের চেয়ে অনেক বেশি পিছিয়ে গেছে। এটি 1958 সালে আলগোলের নকশা করা হচ্ছিল বলে মনে হয়, অ্যাসাইনমেন্টের জন্য: = ব্যবহার করার সিদ্ধান্ত নেওয়া হয়েছিল। কমিটীটি আমেরিকান এবং ইউরোপীয় প্রতিনিধিদের সমন্বয়ে গঠিত হয়েছিল। কমিটির কয়েকজন জার্মান কনরাড জুসে প্ল্যানকালাকুল ভাষার সাথে পরিচিত ছিলেন (যা দ্বিতীয় বিশ্বযুদ্ধের সময় খসড়া করা হয়েছিল কিন্তু ১৯2২ সাল পর্যন্ত প্রকাশিত হয়নি এবং ২০০ 2005 অবধি কার্যকর হয়নি) এবং সেই ভাষাটির প্রস্তাবিত কার্যনির্বাহী পদ্ধতিটি অনুসরণ করার জন্য এই নিয়োগটি চেয়েছিলেন।b+c => aযেখানে বি + সি একটি নির্ধারিত হয়। কমিটি সেই সময়ে প্রোগ্রামগুলিতে প্রবেশের যে পদ্ধতিটি কী-বাছা নামে ডাকা হত, তার ভিত্তিতে =: এ পরিবর্তন করে। সুতরাং তারা সমান কোলোন নিয়ে আপস করল। যাইহোক, আমেরিকানরা ফোরট্রানের সাথে পরিচিত ছিল (এটি 1990 এর আগে কম ক্ষেত্রে হয়নি) বাম দিক থেকে অ্যাসাইনমেন্টটি চালিত করতে চেয়েছিল যেহেতু ফোরট্রান এটি করেছিল।

সুতরাং তারা এটিকে এটি পরিবর্তিত করে: = পরিবর্তে এবং তার পরিকল্পনাটি প্লান্কালকুলের পরিবর্তে (জার্মানির বাইরে কার্যত অজানা ভাষা এবং বাস্তবায়িত হয়নি) ফোরট্রান (একটি জ্ঞাত বাস্তবায়িত ভাষা হওয়ায়) এর শৈলীতে ডান পরিবর্তে বাম দিকে অ্যাসাইনমেন্টটি ছিল had । অ্যালগল 60 পাস্কাল এবং সি সহ পরবর্তী পরবর্তী সমস্ত আবশ্যক ভাষাগুলিকে দৃ influenced়ভাবে প্রভাবিত করেছিল এইভাবে পাস্কাল ALGOL এর বাক্য গঠনকে অ্যাসাইনমেন্টের জন্য রেখেছিল এবং উভয়ই অ্যাসাইনমেন্টের বামপন্থীতা বজায় রেখেছিল।

ALGOL পড়তে সহজ এবং গাণিতিক স্বরলিপি কাছাকাছি নকশা করা হয়েছিল। এটি পরবর্তী 20+ বছর জার্নালগুলিতে অ্যালগোরিদম লেখার জন্য ডি ফ্যাক্টো (এবং মূলত ডি জুর) স্ট্যান্ডার্ড ছিল। সুতরাং, ১৯60০ থেকে ১৯৮০ সালের দিকে শিক্ষিত প্রশিক্ষক এবং কম্পিউটার বিজ্ঞানীরা সেই স্বরলিপিটির সাথে পরিচিত ছিলেন।

1964 সালে আইবিএম 029 কিপঞ্চটি প্রকাশের জন্য> এবং <টি চরিত্রের জন্য অনুমতি দেয়, ফলে এটি অন্যের মধ্যে সিতে অন্তর্ভুক্তির প্ররোচনা দেয়।


1
সেমিকোলন এবং ফাংশন রিটার্ন টাইপ করা ছাড়াও এই কোডটিকে যাইহোক পাস্কাল, মোডুলা বা অন্য কোনও ওয়ার্থ ভাষার মতো দেখাচ্ছে।
ইঙ্গো

7
বেশিরভাগ সিউডো কোড :=অ্যাসাইনমেন্টের জন্য ব্যবহার করে । গাণিতিক পটভূমির লোকেরাও এটিকে পছন্দ করবে।
oenone

3
কেবল যোগ করার জন্য এটি পিএল / এসকিউএল এ এখনও ব্যবহারিকভাবে ব্যবহার করা হয়।
জালান

1
কেন জানি না, তবে অ্যাসাইনমেন্ট হিসাবে বাম তীরটি আমাকে 9
এপ্রিলের জন্য

2
পাস্কল (এবং "উইথের বাকী বাকী অংশগুলি") এটি ALGOL থেকে পেয়েছিল, এটি গাণিতিক স্বরলিপি থেকে পেয়েছে।
ম্যাসন হুইলারের

18

কেবলমাত্র একটি দ্রুত এবং পেডেন্টিক নোট। সিউডোকোডটি বেশ অনানুষ্ঠানিক, সুতরাং ": =" অর্থ আপনি যা বোঝাতে চান তা কেবল তার অর্থ। অন্যরা যেমন বলেছে, পাসকালের মতো নির্দিষ্ট ভাষা সমতার জন্য "=" এর সাথে বিভ্রান্তি এড়াতে নিয়োগের জন্য ": =" ব্যবহার করে, অন্য ভাষাগুলি একই উদ্দেশ্যে "=" এবং "==" এর সংমিশ্রণটি ব্যবহার করে।

যতদূর প্রকৃত সিউডোকোড সম্পর্কিত, আপনি "=", "==", "সমান", "", ": =", "আছে", "প্রাপ্ত", বা আপনার নৌকাকে যা ভাসিয়ে দেয় ঠিক তেমন ব্যবহার করতে পারেন এতক্ষণ আপনি সামঞ্জস্যপূর্ণ এবং ব্যবহার এবং প্রসঙ্গটি আপনার সিউডোকোডের মধ্যে থাকা স্পষ্ট।


6

আমি এই নিয়োগটি অনুমান করছি (আমি মনে করি এটি ডেল্ফিতে অ্যাসাইনমেন্ট অপারেটর), তাই y [0]: = x [0] আপনি x [0] এর মান [0] তে নির্ধারণ করছেন।

তবে এএফআইকে স্ট্যান্ডার্ড সিউডো কোডের মতো কোনও জিনিস নেই , সুতরাং তাত্ত্বিকভাবে এটি কিছু হতে পারে: =)।


8
@ লাউডসাইট: কারণ = ইতিমধ্যে এর খুব আলাদা অর্থ রয়েছে: সমতা। এমন কোনও অপারেটর ব্যবহার করা যা ইতিমধ্যে পৃথক কোনও কিছুর জন্য ভাল বোঝা অর্থ রয়েছে খুব বোকামি।
Jörg ডব্লু মিটাগ

1
@ জার্গ ডব্লু মিটাগ ওয়েল আমি অনুমান করি এটি নির্ভর শ্রোতা কে on আমি বেশিরভাগ বিকাশকারী (জাভা, সি / সি ++ ইত্যাদি ইত্যাদি) এর অর্থ কল্পনা করব assign

5
@ লাউডসাইট: বেশিরভাগ বিকাশকারী এমনকি জন্মগ্রহণ করেন নি, যখন প্রথম সিউডো কোড লেখা হয়েছিল। তত্ক্ষণাত্, এটি বেশিরভাগই শক্তিশালী গাণিতিক পটভূমির লোক ছিল, যারা আলগোরিদিমগুলি লিখেছিলেন, যা :=প্রাকৃতিক পছন্দকে বেছে নিয়েছে, কারণ গাণিতিক স্বরলিপিটির x := vঅর্থ " xহতে দাও v" এর বিপরীতে x = v, যার অর্থ " xসমান v" এবং তাই বিভ্রান্তির কারণ হয়ে দাঁড়ায়।
back2dos

8
যদি কোনও মানক ছদ্ম কোড থাকে তবে আমরা প্রচুর সিউডো সিউডো কোড দেখতে পেতাম।

2
@ back2dos ইত্যাদি আজও =অ্যাসাইনমেন্টের জন্য ব্যবহার বিভ্রান্তিকর। আমি এখনও মনে করতে পারেন, অনেক আগে যখন আমি প্রথম কিভাবে বিভ্রান্তিকর এটি দেখতে ছিল, প্রোগ্রাম শিখেছি x = x + 1। আপনি যখন বেসিক হাই-স্কুল গণিত অধ্যয়ন করেন, তখন x = x + 1অসম্ভব অসঙ্গত গীবির মতো লাগে। পরবর্তী আমি কম্পিউটার বিজ্ঞানের উপর একটি সাধারণ বই পড়ি সাধারণ পাঠকের জন্য ( আমার মনে হয় এটি এটি ছিল ) যা <-অ্যাসাইনমেন্টের জন্য ব্যবহৃত হয়েছিলx <- x + 1বুঝতে অনেক সহজ।
মার্কজে

-1

এটি সাধারণত গণিতের ক্ষেত্রে একই জিনিস বোঝায়: অ্যাসাইনমেন্ট।


6
আমার জ্ঞানে গণিতে "অ্যাসাইনমেন্ট" বলে কোনও জিনিস নেই।
ইনগো

7
গণিতে :=সাধারণত অর্থ "সংজ্ঞায়িত হয়" বা "সংজ্ঞা অনুসারে সমান"।
oenone

3
@ ইঙ্গো: "এক্স নাম্বার x এর মেমরির স্থিতির জন্য x এর মানের জন্য বিট প্যাটার্নটি লিখুন" প্রোগ্রামিং ভাষায় একটি কার্যভার থেকে সম্পূর্ণ পৃথক। আপনি যা বর্ণনা করেন তা হ'ল কার্যনির্বাহী বিবৃতি কার্যকর করার সম্ভাব্য প্রয়োগ।
back2dos

3
@ ইঙ্গো: আমি একমত নই বৈশিষ্ট্যগুলির ক্ষেত্রে, একটি অ্যাসাইনমেন্ট একটি কল দেয় এবং কোডের একটি বিরাট অংশ সরাসরি "বর্তমান আর্কিটেকচার" এর পরিবর্তে ভার্চুয়াল মেশিনে বা দোভাষী দ্বারা নির্বাহ করা হয়, এমনকি ভেরিয়েবলগুলিকে অ্যাসাইনমেন্ট প্রদান করা যাক alone অপ্টিমাইজেশনের কারণে, এ জাতীয় কোনও অপারেশনের ফলাফল হওয়ার দরকার নেই। কিছু ব্যাতিক্রমের সাথে, কোনও ভাষা তার নির্দিষ্টকরণ অনুসারে ব্যবহার করা উচিত এবং এর প্রয়োগ সম্পর্কে কিছু অনুমানের ভিত্তিতে নয়। ভেরিয়েবলের অ্যাসাইনমেন্ট সম্পর্কে আপনি যা বলতে পারবেন তা হ'ল y নামের ভ্যারিয়েবলটি এক্স এক্সপ্রেশনের মানকে প্রত্যাবর্তন করবে।
back2dos

3
@ ইঙ্গো: না, এটা বাজে কথা নয়। সংকলন x := 1; y := 2; if (x = 1) y := 3যেমন এটি ঠিক ছিল y := 3একটি যুক্তিসঙ্গত অপ্টিমাইজেশন (ধরে নেওয়া x এর পরে ব্যবহার করা হবে না)। 3 এর মধ্যে 2 অ্যাসাইনমেন্ট স্থিতিশীল বিশ্লেষণের মাধ্যমে প্রয়োগ করা হয়। আপনার অ্যাসাইনমেন্টের "সংজ্ঞা" একটি কম্বল স্টেটমেন্ট, এটি কেবলমাত্র অনেক অনুমান ব্যতিরেকে এই পদটির সংজ্ঞা নির্ভর করতে হবে না।
back2dos
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.