कॉन्सेप्ट वे बातें हैं जिन्हें किसी भाषा में निपुण होने के लिए एक प्रोग्रामर को समझना ज़रूरी होता है। कॉन्सेप्ट, कॉन्सेप्ट अभ्यासों के ज़रिए सिखाए जाते हैं और कॉन्सेप्ट और प्रैक्टिस अभ्यासों के लिए पूर्वापेक्षा का काम करते हैं। छात्र को दिखाते समय कॉन्सेप्ट को एक कॉन्सेप्ट मैप पर रखा जाता है।
कॉन्सेप्ट का मेटाडेटा config.json फाइल में मौजूद concepts की में तय होता है। यह मेटाडेटा कॉन्सेप्ट का UUID, स्लग और अन्य जानकारी तय करता है।
{
"concepts": [
{
"uuid": "b9a421b2-c5ff-4213-bd6d-b886da31ea0d",
"slug": "numbers",
"name": "Numbers"
}
]
}
हर कॉन्सेप्ट की अपनी अलग डायरेक्टरी होती है, जो ट्रैक की concepts डायरेक्टरी के अंदर होती है। कॉन्सेप्ट की डायरेक्टरी का नाम, config.json फाइल में तय कॉन्सेप्ट की slug प्रॉपर्टी से मेल खाना चाहिए।
एक कॉन्सेप्ट में दो तरह की फाइलें होती हैं:
ये फाइलें छात्र को कॉन्सेप्ट समझाने में मदद के लिए दिखाई जाती हैं।
about.md: उस छात्र के लिए कॉन्सेप्ट की जानकारी देती है जिसने संबंधित कॉन्सेप्ट अभ्यास पूरा कर लिया है, ताकि वह इसे सीख सके और आगे भी देख सके (आवश्यक)introduction.md: उस छात्र के लिए एक संक्षिप्त परिचय देती है जिसने अभी संबंधित कॉन्सेप्ट अभ्यास पूरा नहीं किया है (आवश्यक)links.json: कॉन्सेप्ट के बारे में ज़्यादा पढ़ने या जानकारी देने वाले उपयोगी लिंक देती है (आवश्यक)ये फाइलें छात्र को नहीं दिखाई जाती हैं, बल्कि इनका इस्तेमाल कॉन्सेप्ट का मेटाडेटा तय करने के लिए होता है।
.meta/config.json: कॉन्सेप्ट की मेटा जानकारी रखती है (आवश्यक)
concepts
└── numbers
├── .meta
| └── config.json
├── about.md
├── introduction.md
└── links.json
उद्देश्य: उस छात्र के लिए कॉन्सेप्ट की ज़्यादा विस्तृत जानकारी देना जिसने संबंधित कॉन्सेप्ट अभ्यास पूरा कर लिया है, ताकि वह उससे सीख सके और बाद में देख सके।
मौजूदगी: आवश्यक
संबंधित कॉन्सेप्ट अभ्यास पूरा करने के बाद (जिसे कॉन्सेप्ट को "सीखना" भी कहा जाता है), कॉन्सेप्ट पेज introduction.md फाइल के बजाय about.md फाइल की सामग्री दिखाता है। about.md फाइल छात्रों को इस बारे में पूरी जानकारी देनी चाहिए कि कॉन्सेप्ट में निपुण होने के लिए उन्हें क्या-क्या जानना ज़रूरी है। कम से कम, इस फाइल में वह सारी जानकारी होनी चाहिए जो कॉन्सेप्ट के introduction.md दस्तावेज़ में दी गई है।
अगर कॉन्सेप्ट नया सिंटैक्स पेश करता है, तो सिंटैक्स के नमूने भी होने चाहिए। इस फाइल में जो जानकारी देने की कोशिश की गई है, उसे पाने के लिए छात्र को ढेर सारे लिंक पर नहीं जाना पड़ना चाहिए। इसके बजाय about.md में इतनी जानकारी होनी चाहिए कि उसे उसके संदर्भ में समझा जा सके।
about.md फाइल संबंधित कॉन्सेप्ट अभ्यास के स्कोप तक सीमित नहीं है। इसकी सामग्री के लिए उन अन्य कॉन्सेप्ट की जानकारी ज़रूरी हो सकती है जो आगे पेश किए जाएँगे। अगर दूसरे कॉन्सेप्ट का ज़िक्र हो, तो उनके अपने परिचय से लिंक जोड़ा जाना चाहिए (विवरण के लिए इंटरनल लिंकिंग देखिए)।
यहाँ कुछ उदाहरण दिए गए हैं कि इसमें क्या-क्या शामिल किया जा सकता है।
about.md फाइल का उद्देश्य कॉन्सेप्ट की पूरी जानकारी देना नहीं है। उदाहरण के लिए, किसी ऐसी भाषा की कल्पना कीजिए जिसमें कुछ पुरानी विशेषताएँ हैं, जिनके बारे में अनुभवी प्रोग्रामर (और शायद आधिकारिक डॉक्स/स्पेक्स भी) कहते हैं कि इन्हें अब इस्तेमाल नहीं करना चाहिए। ऐसी विशेषताओं की जानकारी देना about.md फाइल के स्कोप से बाहर होगा, क्योंकि निपुणता हासिल करने के लिए वे ज़रूरी नहीं हैं। लेकिन अगर किसी छात्र को वास्तविक दुनिया में अक्सर इन पुराने मानकों से सामना करना पड़ सकता है, तो मेंटेनर चाहें तो इन्हें स्वीकार करने के लिए एक छोटा ब्लॉक जोड़ सकते हैं। हालाँकि ऐसे ब्लॉक को इस तरह चिह्नित करना चाहिए।
about.md फाइल की संरचना अवश्य स्पष्ट होनी चाहिए, खासकर जब उसमें बहुत सारी जानकारी हो। आगे चलकर कुछ हिस्सों को "एडवांस्ड टॉपिक" के रूप में चिह्नित करने की सुविधा भी होगी, ताकि दिलचस्पी रखने वाले छात्रों को वे दिखाए जा सकें और बाकी छात्रों पर बोझ न पड़े।
# About
There are two different kinds of numbers in Elixir - integers and floats.
Floats are numbers with one or more digits behind the decimal separator. They use the 64-bit double precision floating-point format.
```elixir
float = 3.45
# => 3.45
```
Elixir also supports the scientific notation for floats.
```elixir
1.25e-2
# => 0.0125
```
## Rounding errors
Floats are infamous for their rounding errors.
```elixir
0.1 + 0.2
# => 0.30000000000000004
```
However, those kind of errors are not specific to Elixir. They happen in all programming languages. This is because all data on our computers is stored and processed as binary code. In binary, only fractions whose denominator can be expressed as `2^n` (e.g. `1/4`, `3/8`, `5/16`) can be expressed exactly. Other fractions are expressed as estimations.
```elixir
# 3/4
Float.ratio(0.75)
# => {3, 4}
# 3/5
Float.ratio(0.6)
# => {5404319552844595, 9007199254740992}
```
You can learn more about this problem at [0.30000000000000004.com][0.30000000000000004.com]. The [Float Toy page][evanw.github.io-float-toy] has a nice, graphical explanation how a floating-point number's bits are converted to an actual floating-point value.
उद्देश्य: उस छात्र के लिए एक संक्षिप्त परिचय देना जिसने अभी संबंधित कॉन्सेप्ट अभ्यास पूरा नहीं किया है।
मौजूदगी: आवश्यक
यह फाइल तब दिखाई जाती है जब छात्र ने अभी संबंधित कॉन्सेप्ट अभ्यास पूरा नहीं किया हो। इसमें कॉन्सेप्ट का संक्षिप्त परिचय होना चाहिए।
about.md दस्तावेज़ के लिए छोड़ दीजिए।# Introduction
One of the key aspects of working with numbers in C# is the distinction between integers and floating-point numbers (numbers with zero or more digits after the decimal separator).
The two most commonly used numeric types in C# are `int` (a 32-bit integer) and `double` (a 64-bit floating-point number).
```csharp
int i = 123;
double d = 54.29;
```
उद्देश्य: कॉन्सेप्ट के बारे में ज़्यादा पढ़ने या जानकारी देने वाले उपयोगी लिंक देना।
मौजूदगी: आवश्यक
ये आधिकारिक डॉक्स, कोई बढ़िया ट्यूटोरियल वगैरह हो सकते हैं। ये लिंक कॉन्सेप्ट की about.md फाइल में दिए गए ज़्यादा संदर्भ-आधारित लिंक की जगह नहीं लेते, बल्कि छात्र के लिए जल्दी देखने लायक कुछ व्यापक संदर्भ बिंदु देते हैं।
हर लिंक में ये फील्ड होने चाहिए:
url: वह URL जिससे यह जुड़ता है।description: लिंक का विवरण, जो लिंक टेक्स्ट के रूप में दिखाया जाता है।लिंक में चाहें तो एक icon_url फील्ड भी हो सकता है, जिससे लिंक दिखाते समय दिखने वाले आइकन को अपने हिसाब से बदला जा सकता है। अगर यह न दिया जाए, तो डिफॉल्ट रूप से फेविकॉन दिखता है।
[
{
"url": "https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/intro-to-csharp/numbers-in-csharp-local",
"description": "Numbers in C#"
},
{
"url": "https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types",
"description": "Integral numeric types",
"icon_url": "http://test.org/icon.png"
}
]
.meta/config.json
उद्देश्य: कॉन्सेप्ट की मेटा जानकारी रखता है।
मौजूदगी: आवश्यक
इस फाइल में कॉन्सेप्ट की मेटा जानकारी होती है:
authors: कॉन्सेप्ट के लेखक/लेखकों के GitHub यूज़रनेम (आवश्यक)
contributors: कॉन्सेप्ट के योगदानकर्ता/योगदानकर्ताओं के GitHub यूज़रनेम (वैकल्पिक)
blurb: इस कॉन्सेप्ट का छोटा विवरण। इसकी लंबाई <= 350 होनी चाहिए। Markdown का समर्थन नहीं है (आवश्यक)अगर कोई व्यक्ति लेखक भी है और योगदानकर्ता भी, तो उसे सिर्फ लेखक के रूप में ही लिखिए।
{
"authors": ["FSharpForever"],
"contributors": ["IWantToHelp"],
"blurb": "F# has two types of numbers: integers and floating-point numbers."
}
ध्यान दीजिए: