Przedefiniowanie operatorow

Przedefiniowanie operatorow
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Witam ,

Mam drobny problem , napisałem kalkulator na duzych liczbach , takich które nie mieszczą sie w normalny zakres np 100! ,ten kalkulator działą bez zarzutu ale zajmijmy sie dodawaniem jest to funkcja która pobiera 2 stringi i zwraca string wynikowy , definicja jest w pliku dodawanie.cpp ,jest tez plik dodawanie.h z deklaracja , posiadalem plik main.cpp gdzie miałem switcha by user mógł wybierać operacje ale postanowiłem przedefiniować operatory np operator dodawania , wiec usunełem main.cpp i stworzyłem main1.cpp , mam także pliki DuzaLiczba.h i DużaLiczba.cpp próbuje przedefinować operatory za pomocą funkcji dodawania , przeczytałem że mozną zrobić to przez metode klasy wiec do klasy dodałem deklaracje funkcji dodawania , na dole udostępniam kod . Mam pytanie czy wgl dobrze sie za to zabrałem , funkcja dodawania dziala dobrze ale nie mogę jej prawidłowy przedefiniować ciągle są problemy w chwili obecnej

Kopiuj
C:\Users\Damianek\Desktop\Próba_definiowania_operatorow\x000x\main1.o	main1.cpp:(.text+0xe2): undefined reference to `DuzaLiczba::operator+(DuzaLiczba const&) const' 

Czy ma ktoś pomysł?

Plik main1cpp

Kopiuj
	 DuzaLiczba liczba1;


  DuzaLiczba liczba3("1234567890087554545454656543");
    DuzaLiczba liczba2("999999999999999999999999999999");
    
  
  l2 = l2+l3;
  
	
	
system("pause");
return 0;
}
 

plik DuzaLiczba.h

Kopiuj
 class DuzaLiczba{
	 string wartosc;
     
   public:
     
        DuzaLiczba();
     
       DuzaLiczba(string value) 
             
       {wartosc=value;
        }
        string dodawanie(string liczba1, string liczba2);
        DuzaLiczba operator+(const DuzaLiczba&) ;
	 
	
};

Plik DuzaLiczba.cpp

Kopiuj
 DuzaLiczba::DuzaLiczba()
{
   wartosc="0";
}


inline DuzaLiczba DuzaLiczba::operator+(const DuzaLiczba& n)  {
     return dodawanie(wartosc,n.wartosc);
     }
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
1
Kopiuj
DuzaLiczba operator+(const DuzaLiczba&)const;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Po poprawieniu na const jak napisales mam blad

Kopiuj
 17	35	Duza_liczba.cpp	[Error] passing 'const DuzaLiczba' as 'this' argument of 'std::string DuzaLiczba::dodawanie(std::string, std::string)' discards qualifiers [-fpermissive]

i podkresla linijke DuzaLiczba DuzaLiczba:: operator+(const DuzaLiczba& n)const {
dodawanie(wartosc,n.wartosc); <---------- tutaj bład
}

Kopiuj

Jakby argumenty byly niepoprawne

Poszukałem że to moze byc poblem ze wywoluje nie const metode/funkcje w funkcji const ale dodanie const do funkcji dodawania nic nie zmienilo...
edytowany 1x, ostatnio: murek1993
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0
Kopiuj
static string dodawanie(string liczba1, string liczba2);

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Niestety dodanie słowa static albo const przy deklaracji i definicji dodawania nic nie dalo...ten sam bład

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0

Więc podaj cały kod.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M2
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:21
0
Kopiuj
#include <stdio.h>
#include <iostream>
#include <string>

using namespace std;

class DuzaLiczba
{
	   string wartosc;

	   string dodawanie(string liczba1, string liczba2) const { return "WYNIK"; } 
       //tutaj trzeba zmienić na faktyczne dodawanie na stringach
 
   public:
	   DuzaLiczba():wartosc("0") { }
 
       DuzaLiczba(string value):wartosc(value) { }

	   DuzaLiczba operator+(const DuzaLiczba& n) const { return DuzaLiczba(dodawanie(wartosc, n.wartosc)); }

	   friend ostream & operator<< (ostream &out, const DuzaLiczba &n) { out << n.wartosc << endl; return out;}
};


int main()
{
	DuzaLiczba liczba3("1234567890087554545454656543");
    DuzaLiczba liczba2("999999999999999999999999999999");
 
	liczba2 = liczba2+liczba3;

	cout << liczba2;
 
	return 0;
}
edytowany 8x, ostatnio: mateusz2813
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
1

Pewnie czytasz odpowiedzi na kilku forach i jednocześnie stosujesz.
1.

Kopiuj
string dodawanie(string liczba1, string liczba2) const { return "WYNIK"; }
  • skompiluje się i będzie działać ale to bubel projektowy
Kopiuj
static string dodawanie(string liczba1, string liczba2) const { return "WYNIK"; }
  • kolizja klauzul, nie może być jednocześnie static i const
Kopiuj
static string dodawanie(string liczba1, string liczba2) { return "WYNIK"; }
  • poprawne rozwiązanie, jedynie warto wrzucić do sekcji private

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M2
Faktycznie, masz rację. Umknęło mi, że dodawanie(string, string) nie działa na żadnym obiekcie DuzaLiczba, więc najlepiej static. ;)
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Dobrze wiec pozmieniałem tak jak kod powyzej uzyłem static jak sami zasugerowaliscie , nie rozumiem tylko o co chodzilo

Kopiuj
//tutaj trzeba zmienić na faktyczne dodawanie na stringach 

w te miejsce nie wklejałem definicji dodawania tam jest tylko deklaracja mam includa na plik dodawanie.h a faktyczna definicja jest w pliku dodawanie.cpp wiec powinno dzialac , po tych zmianach mam taki blad Duza_liczba.o Duza_liczba.cpp:(.text+0xc0): undefined reference to `DuzaLiczba::dodawanie(std::string, std::string)'

Kopiuj
  dopisalem static w pliku dodawanie.h , dodawanie.cpp i DuzaLiczba.h  , bład wyglada jakby nie widzial kompilator dodawania
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0

Podaj kod lub pytaj do wróżbitów.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

czego dokladnie kod chcesz? podalem własciwie wszystko

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0

kompilator twierdzi że nie masz (undefined reference) DuzaLiczba::dodawanie(std::string, std::string) więc pokaż jak i gdzie masz.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Czy ma jakieś znaczenie że dodawanie jest w innym pliku niz DuzaLiczba.cpp ? Ten bład wynika jakby dodawanie nie bylo widoczne w danym miejscu czy dodawanie powinno być funkcją zaprzyjazniona?

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0

Przecież zaznaczyłeś jako statyczną, takową powinna zostać przy definicji.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Szukajac rozwiazania zmienile troche strukture a mianowicie

Kopiuj
DuzaLiczba DuzaLiczba:: operator+(const DuzaLiczba& n)  {
     this->wartosc = dodawanie(this -> wartosc,n.wartosc) ;
       return *this;
     }
 

Powstał bład

Kopiuj
Duza_liczba.cpp	[Error] prototype for 'DuzaLiczba DuzaLiczba::operator+(const DuzaLiczba&)' does not match any in class 'DuzaLiczba' 

oraz kolejny

Kopiuj
Duza_liczba.h	[Error] candidate is: DuzaLiczba DuzaLiczba::operator+(const DuzaLiczba&) const 

który dotyczy deklaracji w pliku h

Kopiuj
DuzaLiczba operator+(const DuzaLiczba&)const; 
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0

I którego słowa w tym komunikacie nie rozumiesz?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M2
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:21
1

Deklaracja:

Kopiuj
DuzaLiczba operator+(const DuzaLiczba&)const; 

Implementacja:

Kopiuj
DuzaLiczba DuzaLiczba::operator+(const DuzaLiczba& n) { ... }
Kopiuj
const

nie można pominąć przy implementacji.

edytowany 3x, ostatnio: mateusz2813
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Jest dokładnie mateusz2813 tak jak napisałeś ,jesli do implementacji dopisze const w taki sposob

Kopiuj
DuzaLiczba DuzaLiczba:: operator+(const DuzaLiczba& n)const  {
     this->wartosc = dodawanie(this -> wartosc,n.wartosc) ;  <--- tutaj bład
       return *this; } 

to wtedy wystepuje długi bład

Kopiuj
[Error] passing 'const string {aka const std::basic_string<char>}' as 'this' argument of 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(std::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]' discards qualifiers [-fpermissive] 
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0

@murek1993, czy jeżeli napiszesz:

Kopiuj
int a=3,b=4;
a+b;

to wartość a zmieni się na 7 ? Właśnie to próbujesz zrobić.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0
_13th_Dragon napisał(a):

@murek1993, czy jeżeli napiszesz:

Kopiuj
int a=3,b=4;
a+b;

to wartość a zmieni się na 7 ? Właśnie to próbujesz zrobić.

nie zmieni sie , ale przecież u mnie wynik dodawania chce wpisac gdzies

M1
a gdy nawet nigdzie nie wpisze i nic nie zwrócę przez return to jak zawsze jest uza_liczba.o Duza_liczba.cpp:(.text+0xc0): undefined reference to `DuzaLiczba::dodawanie(std::string, std::string)'
M2
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:21
0

Dopisanie const przy nazwie metody mówi, że ta metoda nie modyfikuje obiektu klasy, na którym zostanie wywołana. U Ciebie obiekt ten jest modyfikowany, więc ta metoda nie może być opatrzona modyfikatorem const. Możesz skasować const (o ile nie pociągnie to za sobą żadnych poważnych zmian) albo zmienić kod na:

Kopiuj
DuzaLiczba DuzaLiczba::operator+(const DuzaLiczba& n) const
{
      return DuzaLiczba( dodawanie(wartosc, n.wartosc) );
} 

oczywiście, o ile w klasie jest konstruktor jednoparametrowy.

edytowany 5x, ostatnio: mateusz2813
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

przy usunieciu const to kompilator sygnalizuje ze jest potrzebny , a przy Twoim kodzie wystepuje bład

Kopiuj
Duza_liczba.o	Duza_liczba.cpp:(.text+0xc0): undefined reference to `DuzaLiczba::dodawanie(std::string, std::string)' 

argumentowy konstruktor u mnie to

Kopiuj
  DuzaLiczba(string value):wartosc(value) { } 
M2
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:21
1

Pokaż deklarację funkcji dodawanie i nagłówek jej implementacji.

Właściwie to nie bardzo rozumiem problem: http://ideone.com/1pxgk3

edytowany 3x, ostatnio: mateusz2813
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0
Kopiuj
static string dodawanie(string& liczba1, string& liczba2){

bład Duza_liczba.o Duza_liczba.cpp:(.text+0xc0): undefined reference to `DuzaLiczba::dodawanie(std::string, std::string)'

Kopiuj
  wydaje mi sie ze kompilator nie widzi definicji dodawania w pliku DuzaLiczba.cpp bo rzeczywiście tam jej nie ma , ona jest w innym pliku dodawania.cpp wiec zeby nie powielac kodu i kod był uporządkowany stosuje <code class="cpp">#include "dodawanie.h" 

Jednak kompilator jakby nie widzal

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0

@murek1993, programowanie metodą prób i błędów z góry skazane na porażkę, już poszedłeś na trzeci krąg gonienia się w piętkę.
Weź przeczytaj jakiś kurs.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Witajcie, czesciowo rozwiazałem moj problem tzn zastanawialem sie czy wgl mozna uzywac funkcji dodawania jako składowe klasy DuzaLiczba gdzie definicja jest pliku dodawania.cpp deklaracja w dodawanie.h i deklaracja dodawania jako metody klasy w pliku DuzaLiczba.h w pliku DuzaLiczba.cpp jest tylko

Kopiuj
#include "dodawanie.h" 

Chciałem to sprawdzic wiec skompilowałem byle jaki program dzialajacy z uczelni który był w 1 pliku i zawierał min 1 metode np taki #include <iostream>
using namespace std;

class Vector {
double x, y, z;

public:
void set(double xx=0, double yy=0, double zz=0);
double dot_product(const Vector& w);
};

void Vector::set(double xx, double yy, double zz) {
x = xx;
y = yy;
z = zz;
}
double Vector::dot_product(const Vector& w) {
return xw.x + yw.y + z*w.z;
}

int main() {
Vector w1, w2;
w1.set(1, 1, 2);
w2.set(1,-1, 2);
cout << "w1*w2 = " << w1.dot_product(w2) << endl;
}

Kopiuj

rozdzieliłem go na pliki Vector.cpp Vector.h a metode 
```cpp
set 

wrzuciłem pliku funkcja.cpp deklaracje do funkcja.h w pliku funkcja.cpp dodałem #include "Vector.h"

Kopiuj
  plik funkcja.cpp wygladał tak <code class="cpp">#include "Vector.h"  
void Vector::set(double xx, double yy, double zz) {
    x = xx;
    y = yy;
    z = zz;
}
 

skorzystałem z porad mateusz2813 http://ideone.com/1pxgk3 czyli dodałem w pliku funkcja.cpp operatory zakresu do Vector

Kopiuj
void Vector::set(double xx, double yy, double zz) 

wcześniej tego nie było tak jak było tego includa do vector.h . Skompilowałem i działa tak samo jak przedtem ,czyli przed rozdzieleniem na pliki , skoro tam działało to i u mnie powinno wiec także skorzystałem z tych porad w swoim kodzie ale ze ciągle jakieś problemy były z const

Kopiuj
 albo <code class="cpp">static 

to zostały usuniete te słowa kluczowe i z funkcji dodawania i przy przedefiniowaniu operatora+ i odziwo skompilowało sie i wyswietliło poprawny wynik ;-) . Jednak sprawdziłem w źrodłach ze te słowa kluczowe są potrzebne wiec dalej próbuje to uruchomić i mam 1 bład. Obecnie moje nagłowki i pliki wygladaja tak
main

Kopiuj
 #include "Duza_liczba.h"



int main(int argc, char** argv)
{
	 DuzaLiczba liczba1;


  DuzaLiczba liczba3("11");
    DuzaLiczba liczba2("11");
    
   
  liczba1 = liczba2+liczba3;
  cout<<liczba1<<endl;
  
	
	
						system("pause");
						return 0;
} 

DuzaLiczba.h

Kopiuj
class DuzaLiczba{

	 string wartosc;
     static string dodawanie(  const string& liczba1,  const string& liczba2);
   public:
 
        DuzaLiczba();
    
           
      DuzaLiczba(string value):wartosc(value) { }
      
      
        DuzaLiczba operator+( const DuzaLiczba& ) const;
        
        friend ostream & operator<< (ostream &out, const DuzaLiczba &n) { out << n.wartosc << endl; return out;}
	 


	
}; 

DuzaLiczba.cpp

Kopiuj
 #include "Duza_liczba.h"
#include "dodawanie.h"

using namespace std;


 DuzaLiczba::DuzaLiczba():wartosc("0") { }


DuzaLiczba DuzaLiczba:: operator+(const DuzaLiczba& n)  const{
  
      return DuzaLiczba( dodawanie(wartosc, n.wartosc) );
  
     }

dodawanie.cpp naglowek funkcji

Kopiuj
string DuzaLiczba::dodawanie( const string& liczba1,  const string& liczba2) {} 

dodawanie.h

Kopiuj
 static string dodawanie(const  string& liczba1, const string& liczba2);

a bład to-->

Kopiuj
 main1.o	main1.cpp:(.text+0xe2): undefined reference to `DuzaLiczba::operator+(DuzaLiczba&)'
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
1

Masz w głowie (odnośnie C++) kompletny miszmasz, mylisz metody z funkcjami.
Jeżeli jakiś debil ograniczył ci wolność wskazując że funkcja dodawanie ma być w pliku dodawanie.h to:
dodawanie.h

Kopiuj
#include <string.h>
string dodawanie(const  string &a,const string &b);

dodawanie.cpp

Kopiuj
#include "dodawanie.h"
string dodawanie(const  string &a,const string &b) { return a+b; } // jak na razie zwyczajnie sklei

DuzaLiczba.h

Kopiuj
#include "dodawanie.h"

class DuzaLiczba
  {
   string value;
   public:
   DuzaLiczba(const string &value=string("")):value(value) {}
   DuzaLiczba operator+(const DuzaLiczba &n) const { return DuzaLiczba(dodawanie(value,n.value)); }
   friend ostream &operator<<(ostream &out,const DuzaLiczba &n) { return out<<n.value; }
  };

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Twoj zapis nic nie zmienil widze ze glownie zmieniles/skasowales

Kopiuj
string DuzaLiczba::dodawanie( const string& liczba1,  const string& liczba2) 

oprócz poprzedniego błedu wystapil kolejny Duza_liczba.o Duza_liczba.cpp:(.text+0xa0): undefined reference to `DuzaLiczba::dodawanie(std::string const&, std::string const&)'

Kopiuj
  znalazlem jeszcze cos takiego  http://4programmers.net/Forum/C_i_C++/143484-C++_undefined_reference_to_template_friend
edytowany 2x, ostatnio: murek1993
M1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:52
0

Witam,

Dziekuje wam mateusz2813 **** _13th_Dragon za pomoc wasze rady byly bardo przydatne , problem był jednak w kodzie moich operacji ale bez waszej pomocy nie dałbym rady.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)