A fogalmak azok a dolgok, amelyeket egy programozónak meg kell értenie ahhoz, hogy folyékonyan használjon egy nyelvet. A fogalmakat tanulófeladatok tanítják, és előfeltételként szolgálnak a tanuló- és gyakorlófeladatokhoz. A fogalmak egy fogalomtérképre kerülnek, amikor megjelennek a tanulónak.
A fogalmak metaadatait a config.json fájl concepts kulcsa definiálja. A metaadatok határozzák meg a fogalom UUID-ját, slugját és egyebeket.
{
"concepts": [
{
"uuid": "b9a421b2-c5ff-4213-bd6d-b886da31ea0d",
"slug": "numbers",
"name": "Numbers"
}
]
}
Minden fogalomnak saját könyvtára van a kurzus concepts könyvtárán belül. A fogalom könyvtárának nevének meg kell egyeznie a fogalom slug tulajdonságával, ahogyan az a config.json fájlban szerepel.
Egy fogalomnak kétféle fájlja van:
Ezeket a fájlokat a tanulónak jelenítjük meg, hogy segítsenek megérteni a fogalmat.
about.md: információt nyújt a fogalomról annak a tanulónak, aki már teljesítette a hozzá tartozó tanulófeladatot, hogy tanulhasson belőle és később visszakereshesse (kötelező)introduction.md: rövid bevezetést nyújt annak a tanulónak, aki még nem teljesítette a hozzá tartozó tanulófeladatot (kötelező)links.json: hasznos linkeket nyújt, amelyek további olvasnivalót vagy információt kínálnak egy fogalomról (kötelező)Ezeket a fájlokat nem jelenítjük meg a tanulónak, hanem a fogalom metaadatainak meghatározására használjuk.
.meta/config.json: a fogalomra vonatkozó metainformációkat tartalmazza (kötelező)
concepts
└── numbers
├── .meta
| └── config.json
├── about.md
├── introduction.md
└── links.json
Cél: Részletesebb információt nyújt a fogalomról annak a tanulónak, aki már teljesítette a hozzá tartozó tanulófeladatot, hogy tanulhasson belőle és később visszakereshesse.
Megléte: Kötelező
Miután a tanuló teljesítette a hozzá tartozó tanulófeladatot (ezt nevezik a fogalom „megtanulásának”), a fogalom oldala az about.md fájl tartalmát mutatja majd az introduction.md fájl helyett. Az about.md fájlnak átfogó információt kell nyújtania a tanulóknak arról, amit tudniuk kell ahhoz, hogy folyékonyan használják a fogalmat. Ez a fájl legalább annyi információt tartalmazzon, mint amennyi a fogalom introduction.md dokumentumában szerepel.
Ha a fogalom új szintaxist vezet be, a szintaxisra példákat is szerepeltetni kell. A tanulónak nem kellene rengeteg linket követnie ahhoz, hogy megszerezze azt a tudást, amit a fájl közvetíteni próbál. Ehelyett az about.md annyi információt tartalmazzon, hogy a saját kontextusában érthető legyen.
Az about.md fájl nem korlátozódik a hozzá tartozó tanulófeladat hatókörére. A tartalom megkövetelheti olyan más fogalmak ismeretét, amelyeket csak később vezetünk be. Ha más fogalmakat említünk, azok bevezetőire hivatkozni kell (részletekért lásd: belső hivatkozások).
Íme néhány példa arra, hogy mi kerülhet bele.
Nem az a célja az about.md fájlnak, hogy teljes körű információt nyújtson a fogalomról. Képzelj el például egy nyelvet, amelynek vannak régebbi nyelvi elemei, amelyeket a tapasztalt programozók (és talán még a hivatalos dokumentációk vagy specifikációk is) már nem ajánlanak használatra. Az ilyen nyelvi elemek részletes bemutatása kívül esne az about.md fájl hatókörén, mert nem szükségesek a folyékonyság eléréséhez. A karbantartók azonban dönthetnek úgy, hogy hozzáadnak egy rövid bekezdést a régi szabványok elismerésére, ha a tanuló nagy valószínűséggel találkozhat velük a való életben. Ezt a bekezdést azonban meg kell jelölni ilyenként.
Az about.md fájlnak egyértelműen strukturáltnak KELL lennie, különösen akkor, ha sok információt tartalmaz. A jövőben lehetőség lesz arra is, hogy egyes részeket „haladó témákként” jelöljünk meg, hogy felhívjuk rájuk az érdeklődő tanulók figyelmét anélkül, hogy a többieket túlterhelnénk.
# 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.
Cél: Rövid bevezetést nyújt annak a tanulónak, aki még nem teljesítette a hozzá tartozó tanulófeladatot.
Megléte: Kötelező
Ez a fájl akkor jelenik meg, ha a tanuló még nem teljesítette a hozzá tartozó tanulófeladatot. Rövid bevezetést kell nyújtania a fogalomba.
about.md dokumentumnak.# 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;
```
Cél: Hasznos linkek nyújtása, amelyek további olvasnivalót vagy információt kínálnak egy fogalomról.
Megléte: Kötelező
Lehetnek hivatalos dokumentációk, egy remek útmutató, és így tovább. Ezek a linkek nem helyettesítik a fogalom about.md fájljában található, kontextusba ágyazottabb linkeket, hanem gyors, átfogó viszonyítási pontokat kínálnak a tanulónak.
Minden linknek a következő mezőket kell tartalmaznia:
url: az URL, amelyre mutat.description: a link leírása, amely a hivatkozás szövegeként jelenik meg.A linkeknek opcionálisan lehet icon_url mezőjük is, amellyel testre szabható a link megjelenítésekor látható ikon. Ha nincs megadva, az ikon alapértelmezés szerint a favicon.
[
{
"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
Cél: A fogalomra vonatkozó metainformációkat tartalmazza.
Megléte: Kötelező
Ez a fájl a fogalomra vonatkozó metainformációkat tartalmazza:
authors: a fogalom szerzőjének (szerzőinek) GitHub-felhasználóneve(i) (kötelező)
contributors: a fogalom közreműködőinek GitHub-felhasználóneve(i) (opcionális)
blurb: a fogalom rövid leírása. A hossza legfeljebb 350 lehet. A Markdown nem támogatott (kötelező)Ha valaki egyszerre szerző és közreműködő, csak szerzőként soroljuk fel.
{
"authors": ["FSharpForever"],
"contributors": ["IWantToHelp"],
"blurb": "F# has two types of numbers: integers and floating-point numbers."
}
Vedd figyelembe, hogy: