Pierwszy program figury geometryczne.

Pierwszy program figury geometryczne.
paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

Od 2 miesięcy próbuję napisać swoją pierwszą aplikację w JAVIE ( wiadomo nie dzień w dzień ) i nie umiem. Jestem "rozpłakany" nie wiem co zrobić nic mi się nie układa w całość.
Ogólnikowo w głowie wiem jak to powinno wyglądać ale szczegółowo jak przychodzi do napisania to nic nie wychodzi nie wiem co z czym.
Na początek aplikacja powinna sumować długości kilku figur (prostokąt, trapez i trójkąt) po osi X. Zajrzałem do książki zrobiłem kurs z codcademy ( zbyt trywialne ) nic mi nie pomaga nie wiem.
Proszę o pomoc jak to powinno wyglądać?

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Jakiego rodzaju aplikację? Konsolową czy GUI (Swing, JavaFX)?

paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

konsolową bo prościej

AreQ212
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Mógłbyś nieco dokładniej nakreślić na czym polega Twój problem? Wrzuć jakieś kawałki kodu (nawet jeżeli się nie kompiluje) tak żebyśmy mogli nakreślić co masz na myśli. Bo z opisu dla mnie to wygląda niczym

Kopiuj
 public static void main(String[] args) {
		int dlugoscTrapezu = 5;
		int dlugoscKwadratu = 4;
		int dlugoscTrojkatu = 2;
		System.out.println(dlugoscTrapezu + dlugoscKwadratu + dlugoscTrojkatu);
	}
paski zielone
To jest jak gdyby kontynuacja mojego poprzedniego a zarazem pierwszego posta na tym forum
Jarema1980
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Polska
  • Postów:11
0

Swego, czasu zrobiłem takie rozwiązanie w Pythonie**.** Opis i źródła tutaj**:** https://github.com/Jeremy1980/LDShapeGenerator/wiki/Geometry**.** Ogólnie jeżeli matematyka nie była twoim ulubionym przedmiotem to bym odpuścił temat**.** Tutaj znajdziesz przyjazny kod**:**

  1. http://prace.lukispot.cba.pl/pola-i-objetosci-figur-java/
  2. Program obliczający obwody i pola figur geometrycznych
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

"powinna sumować długości kilku figur (prostokąt, trapez i trójkąt) po osi X"

  • to rozumiem że wystarczy znaleźć min i max wartości X dla każdej z figur, odjąć od siebie, dodać 1 i zsumować.
paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

No tak. Na sam poczatek. Tyle że będę rozbudowywać tą aplukacje. To nie może być tak po prostu jak ktoś wyżej napisał mi kod.(To jest kontynuacją myśli z mojego poprzedniego, pierwszego posta. Teraz jestem w pracy na telefonie to nic nie podlinkuje i nie skopiuje)
To będzie tak:
Switch który daje opcję wyboru jednej z trzech figur.
Następnie podaje się jej wymiary
Znowu Switch i wybór kolejnej figury ( doklejana do poprzednej po osi x)
...
Zakończ i wynik.
Później dodam sobie koleją oś i jakieś bajery.

paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

Acha czyli to już koniec porad

AreQ212
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Ok zatem w czym masz problem? Wczytywać dane z konsoli potrafisz, robisz pętle i pytasz użytkownika o akcje "Wybierz figurę: p, k, t lub zakończ sumowanie: q". W switchu sobie sprawdzasz co przekazał użytkownik i odpowiednio pobierasz dane bądź opuszczasz pętle i wypisujesz wynik. Jeżeli to jakaś figura to do ogólnej sumy dodajesz nowa wartość i wszystko.

Oczywiście to taka najprostsza implementacja, ale z Twoich postów nie jestem w stanie stwierdzić co potrafisz.

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
2

Jak zajmiesz się tym na poważnie i napiszesz chociaż ze dwie linijki kodu to pewnie ktoś Ci pomoże.
Póki co możemy tylko współczuć.

Jarema1980
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Polska
  • Postów:11
0

W moim wczorajszym poście. Odnośniki do artykułów tobie zapodałem. Są to gotowce, które można "odpalić" używając nawet zwykłego notatnika. Do nauki i dalszego rozwoju, zupełnie wystarczy.
Jeżeli tego, nie łykasz to odpuść sobie programowanie.

  1. Program obliczający obwody i pola figur geometrycznych
  2. http://prace.lukispot.cba.pl/pola-i-objetosci-figur-java
paski zielone
To co mi jarema1980 podałeś w zupełności mi nie odpowiada i nie pomaga. Problem polega tu na tym ze zapisać jakoś w pamięci poszczególne wartości ilus tam figur. To powinno być rozwiązane obiektowo bo program będzie rósł. I właśnie z tą obektowoscia mam problem.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8409
0

Na początek aplikacja powinna sumować długości kilku figur (prostokąt, trapez i trójkąt) po osi X.

jak to po osi X? Weź to narysuj.
No i jakie dane masz na wejściu? (tak jak w zadaniu matematycznym - co jest dane, a co szukane?).

Na początek aplikacja powinna sumować długości kilku figur (prostokąt, trapez i trójkąt) po osi X.

Dziel i rządź.
Olej na razie kilka figur i zrób jedną, np. prostokąt. Potem myśl co dalej. Np. trójkąt. Potem trapez.
Będzie ci latwiej myśleć o 1 problemie naraz.
I olej na razie switch i wybór kolejnej figury.

Zawsze możesz potem zrobić od nowa program, który obsługuje wszystkie 3 figury, ale będziesz miał już wiedzę jak to zrobić.

konsolową bo prościej

może i prościej, ale łatwiej mogłoby być zrobić program, który rysuje na ekranie graficznie te figury, wtedy byś mógł łatwiej go debugować.


Zobacz pozostałe 5 komentarzy
LukeJL
w sensie by się skomplikowało, jeśli figury geometryczne były zapisane w ten sposób ("prostokąt o długości 5 i szerokości 4, i rotacji 40 stopni"), zamiast "figura geometryczna o następujących wierzchołkach: (tablica wierzchołków)"
vpiotr
"skąd to 'dodać 1'" - jaką szerokość ma kwadrat o pozycji rogów (0,0) i (1,1) ?
vpiotr
Jak masz same długości to szerokość w zasadzie można tylko obliczyć maksymalną - co samo w sobie jest ciekawym wyzwaniem.
LukeJL
1 - 0 = 1. Może źle patrzę, ale nie widzę, żeby trzeba było dodawać 1 jeszcze.
vpiotr
Ej no, LukeJL, use the force. :)
paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

Zrobiłbym najpierw tylko prostokąt same prostokąty ile sobie użytkownik zazyczy. Ale właśnie z tym mam problem (uczę się ) i to musi być obiektowo. Bo tak strukturalnie to umiem ale nie nada się to do dalszego rozwoju aplikacji

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0
paski zielone napisał(a):

Zrobiłbym najpierw tylko prostokąt same prostokąty ile sobie użytkownik zazyczy. Ale właśnie z tym mam problem (uczę się ) i to musi być obiektowo. Bo tak strukturalnie to umiem ale nie nada się to do dalszego rozwoju aplikacji

Napisz to strukturalnie.
Potem jak będzie działać to się zastanów jak to zrobić obiektowo.

Na pocieszenie dodam że w starej Javie ludzie piszą zawodowo strukturalnie (proceduralnie).

  1. używają utils
  2. definiują kontekst (taki worek w którym lecą nie wiadomo jakie dane)

Nie jest to piękne ani rozwojowe, nie nadaje się do TDD, ale i tak to nikomu nie przeszkadza.
Jak dopiero zaczynasz to nie przejmuj się formą, ważna jest najpierw treść.

AreQ212
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Skoro ma być obiektowo to zastanów się jaką stworzyć abstrakcję, tak żeby łatwo z każdej "możliwej" figury dało się wyciągnąć tą "długość po osi X" (zakładam że chodzi Ci o przypadek który @LukeJL i @vpiotr rozważali kilka postów wyżej).

Rzuć też okiem na BlueJ, takie proste IDE nieco ułatwiające przestawienie się na obiektowość.

edytowany 1x, ostatnio: AreQ212
paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0
Kopiuj
package simpleFrame;

public class Figura {
    String imie;
    double z;
    double x;
    public Figura (String i, double z, double x )
    {
        //String imie;
        //double z;
        //double x;
}}

package simpleFrame;

public class Main {
    public static void main(String args[]){
        Figura[] figury = new Figura[0];
        figury [0] = new Figura("pierwsza", 5,5 );
        System.out.println("Długość X:" +figury.x+);
    }
}

powiedzmy ze mam na początek coś takiego. Przy okazji mam błąd "Error:(9, 42) java: cannot find symbol
symbol: variable Figura
location: class simpleFrame.Main"
Nie chce mi x wyświetlić. A bez tego "x" moim zdaniem powinno wyświetlić się sam string "Długość X:" no ale nic się nie wyświetla tylko ile sekund trwał program...

edytowany 1x, ostatnio: paski zielone
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Na początek trochę lepsza wersja:

Kopiuj
public class Figura {
    private String imie;
    private double z;
    private double x;

    public Figura (String imie, double z, double x )
    {
        this.imie = imie;
        this.z = z;
        this.x = x;
    }

    public static void main(String args[]){
        Figura[] figury = new Figura[1];
        figury [0] = new Figura("pierwsza", 5, 5);
        System.out.println("Długość X:" +figury.x);
    }
}

(nie testowałem)

AreQ212
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Postów:29
0
paski zielone napisał(a):
Kopiuj
package simpleFrame;

public class Figura {
    String imie;
    double z;
    double x;
    public Figura (String i, double z, double x )
    {
        //String imie;
        //double z;
        //double x;
}}

W konstruktorze nie ustawiasz wartości dla pól tego obiektu (this.imie = i).

paski zielone napisał(a):
Kopiuj
package simpleFrame;

public class Main {
    public static void main(String args[]){
        Figura[] figury = new Figura[0];
        figury [0] = new Figura("pierwsza", 5,5 );
        System.out.println("Długość X:" +figury.x+);
    }
}

Tworzysz tablicę o wielkości 0, to nie jest najlepsze rozwiązanie (a w tym przypadku niedziałające).
figury.x próbujesz pobrać wartość pola x dla tablicy (to się nie uda), musisz pierw pobrać element. figury[0].x powinno pomóc.
No i ten zapodziany plus w println, do usunięcia.

edytowany 3x, ostatnio: AreQ212
paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0
vpiotr napisał(a):

Na początek trochę lepsza wersja:

Kopiuj
public class Figura {
    private String imie;
    private double z;
    private double x;
...

Ze słowem private nie działa "Error:(9, 50) java: x has private access in simpleFrame.Figura"
W sumie dziwne bo niby jak nie ma public to znaczy automatycznie że private.

paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

Postanowiłem zrobić kolejny kroczek ale system.out.println nie działa - Error:(24, 17) java: orphaned default
I po zatym jak pozwolić teraz na wybranie kilku krotnie np trójkąta ? może najpierw podpowiedź żebym sam znalazł odpowiedź i doszedł.
No i jak w pamięci zapisać "x" przecież to mi się nie zapisze...

Kopiuj
package simpleFrame;
import java.util.*;
import static java.lang.System.out;

/**
 * Created by *** on 2017-09-18.
 */
public class Main {
    public static void main(String args[]){

        Scanner in = new Scanner(System.in);
        out.print("Wybierz opcję : 1-Trojkat, 2-Prostokat, : ");
        int choice = in.nextInt();
        switch (choice){
            case 1 : {

                Figura[] trojkat = new Figura[3];
                trojkat[0] = new Figura("pierwsza", 6, 6);

                break;
            }
            case 2: {
                Figura[] prostokat = new Figura[3];
                prostokat[0] = new Figura("druga", 5, 5);
                break;
                // default: System.out.print("Cos poszlo nie tak!");
            }
            System.out.println("Suma długość po X:"+(trojkat[0].x +prostokat[0].x ) );
    }

}}
edytowany 1x, ostatnio: paski zielone
AreQ212
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Postów:29
0
paski zielone napisał(a):

W sumie dziwne bo niby jak nie ma public to znaczy automatycznie że private.

Nie private a package-private

paski zielone napisał(a):

Postanowiłem zrobić kolejny kroczek ale system.out.println nie działa - Error:(24, 17) java: orphaned default

Kopiuj
        switch (choice){
            case 1 : {
                Figura[] trojkat = new Figura[3];
...
            }
            System.out.println("Suma długość po X:"+(trojkat[0].x +prostokat[0].x ) );

Zły zasięg zmiennej (tablicy). W dodatku do takiego zadania lepszą strukturą danych powinna być Lista, nie musisz się przejmować jej wielkością, a w dodatku implementuje Iterable dzięki czemu da się ją łatwo przeiterować w pętli (ew. użyć Stream).

paski zielone napisał(a):

I poza tym jak pozwolić teraz na wybranie kilku krotnie np trójkąta ? może najpierw podpowiedź żebym sam znalazł odpowiedź i doszedł.

Robisz pętlę, warunkiem wyjścia może być np sytuacja gdy użytkownik wpisze 0 jako polecenie.

paski zielone napisał(a):

No i jak w pamięci zapisać "x" przecież to mi się nie zapisze...

Gdzie chcesz to zapisać? Utwórz sobie zmienną "sumaX" do której będziesz dodawał kolejne długości, na końcu programu wypiszesz jej wartość.

Edit. @vpiotr racja, dzięki za zwrócenie uwagi.

edytowany 3x, ostatnio: AreQ212
vpiotr
Nie wiem o co chodziło z "dzięki czemu da się ją (listę) łatwo przeiterować w pętli" - iteruje się tak samo (jak nie gorzej, bo nie ma operatora []) niż tablicę - https://ideone.com/CKsxKb
paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

@AreQ212:
Dodałem opcje "...kilku trójkątów". Reszta jutro bo za późno się zabrałem za to..
A co do "... lepsza struktura danych Lista" to chodzi Ci o taką tablicę? i w jakim celu miałbym jej użyć? Zamiast zapisywania wartości double do "z" i do "x" tak?

Kopiuj
package simpleFrame;
import java.util.*;

import static java.lang.System.exit;
import static java.lang.System.out;


public class Main {
    public static void main(String args[]){
for (;;){
        Scanner in = new Scanner(System.in);
        out.print("Wybierz opcję : 1-Trojkat, 2-Prostokat, 0 - Exit: ");
        int choice = in.nextInt();
        switch (choice){
            case 1 :

                Figura[] trojkat = new Figura[3];
                trojkat[0] = new Figura("pierwsza", 6, 6);


                break;

            case 2:
                Figura[] prostokat = new Figura[3];
                prostokat[0] = new Figura("druga", 5, 5);
                break;
            case 0: exit(0);
                 default: System.out.println("Cos poszlo nie tak!");

            //System.out.println("Suma długość po X:"+(trojkat[0].x +prostokat[0].x ) );

    }

}}}
edytowany 4x, ostatnio: paski zielone
paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

Coś nie tak tam wpisuje bo się nie kompiluje. Usunąłem string imie bo myslalem ze to jest problem ale nie.

Error:(36, 10) java: constructor Figura in class simpleFrame.Figura cannot be applied to given types;
required: double,double
found: no arguments
reason: actual and formal argument lists differ in length

Kopiuj
public class Main {
    public static void main(String args[]){

for (;;){
        Scanner in = new Scanner(System.in);

    ArrayList<Figura> list = new ArrayList<>();

    out.print("Wybierz opcję : 1-Trojkat, 2-Prostokat, 0 - Exit: ");
        int choice = in.nextInt();
        switch (choice){
            case 1 :

                Figura[] trojkat = new Figura[3];
                trojkat[0] = new Figura(/*"pierwsza",*/ 6, 6);


                break;

            case 2:
                Figura[] prostokat = new Figura[3];
                prostokat[0] = new Figura(/*"druga",*/ 5, 5);
                break;
            case 0: exit(0);
                 default: System.out.println("Cos poszlo nie tak!");
list.add(new Figura()); // COŚ NIE TAK! Error 36

            //System.out.println("Suma długość po X:"+(trojkat[0].x +prostokat[0].x ) );

    }
    Figura[] trojkat = new Figura[list.size()];
    list.toArray(trojkat);
}}}

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Wywołujesz konstruktor bez parametrów a masz tylko jeden - z parametrami.
Dodaj bezparametrowy konstruktor jeśli taki chcesz używać.

mic1996
  • Rejestracja:około 8 lat
  • Ostatnio:około 2 lata
  • Postów:52
0

Jestem też początkujący, jednak to chyba nawet lepiej bo pamiętam swoje problemy. Ogólnie poczytaj konkretnie o obiektowości i kup jakąś książkę odnośnie samego języka(nie musisz jej całej przerabiać bo zagadnienia do takiego projektu są opisane w kilku początkowych tematach a dodatkowo możesz coś na szybko poszukać w internecie), bo jeśli przez dwa miesiące masz takie problemy to po prostu za mało się przykładasz i zamiast poważnie zastanowić i zrozumieć przykłady, których jest wystarczająco w książce (w przeciwieństwie do kursu) to chcesz to zrobić na skróty "bo powinno działać" a tak się niestety nie da i tracisz jeszcze więcej czasu.Z własnego doświadczenia wiem, że jeśli naprawdę rozwiążesz sam taki problem, który jest dosyć łatwy to przygotujesz się do trudniejszych zadań które się pojawią w sumie dosyć szybko. Nie chce, żebyś odebrał to jako krytykę i być może uznasz ,że nic nie wnoszę do tematu, ale ogólnie myślę, że główna trudność nie leży w samym projekcie tylko w Twoim podejściu.

paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

@mic1996: może i masz racje. Ale dzięki wam i dzieleniu się z wami kodem lepiej się czuje pisząc to

mic1996
trochę Cię rozumiem bo kiedyś podobnie robiłem, dlatego właśnie ostrzegam przed tym innych ;) Powodzenia :)
paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

To jest bezsensu. Uzupełniłem sobie konstruktor w klasie Figura

Kopiuj
public class Figura {
   String imie;
    double z;
    double x;
    
    public Figura (String imie, double z, double x  )
    {
        this.imie = "figurka";
        this.z = 5;
        this.x = 1;
}}

Więc już z obiektów trójkąt i prostokat chciałem powyrzucać z konstruktora

Kopiuj
...
case 1 :

                Figura[] trojkat = new Figura[3];
                trojkat[0] = new Figura(*/ to chcialem wyrzucic */);
                ...
                break;
...

a tu nie mogę bo błąd jakiś. to po co mi ten konstuktor w klasie skoro i tak później w obiektach muszę znowu te pola wypełniać?
I tak to co wpisuje w konstruktorze obiektu nie działa bo "ciągnie" dane z klasy.

edytowany 3x, ostatnio: paski zielone
mic1996
  • Rejestracja:około 8 lat
  • Ostatnio:około 2 lata
  • Postów:52
1

Pisałem wcześniej, poczytaj o podstawach to są rzeczy banalne na które odpowiedź znajdziesz w pierwszym lepszy poradniku po prostu robisz błędy tak oczywiste, że to nie wynika nawet z jakiejś trudności tylko lekceważącego podejścia, jeśli już teraz tak zaczynasz to po prostu zastanów się czy na pewno chcesz to robić.

Odnośnie kodu, to podajesz jako argumenty x i z a później nawet ich nie używasz, bo odwołujesz się tylko do wartości z klasy. W konstruktorze są po to argumenty, żeby można było samemu ustalić te wartości przy tworzeniu obiektów, więc według mnie powinno być coś takiego:

this.x = x ; gdzie x jest parametrem przekazanym do konstruktora a tak przekazujesz parametr i nawet go nie wykorzystujesz, bo przypisujesz już jakieś wartości, pisze kolejny raz...poczytaj o podstawach, żebyś wiedział do czego to wszystko służy. A jeśli chcesz mieć konstruktor bez argumentów to musisz sam napisać oprócz tego z argumentami ten domyślny bez argumentów.

Proszę, żeby ktoś mnie poprawił, jeśli piszę głupoty ale uważam, że mam racje, jeśli chodzi o błędy.

paski zielone
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:30
0

Ja zrozumiałem że w konstruktorze klasy podaje się właśnie wartości żeby już później przy tworzeniu obiektów nie trzebabylo tego robić ... Nawet był taki przyklad w cpp. Zresztą i tak to nie dziala.
A poza tym te wartości będą i tak wpisywane już w programie.
I chyba tak nie jest że mogę sobie w konstruktorze wpisać domyślne ale później w programie zdecydować że sobie wpisze inne

mic1996
  • Rejestracja:około 8 lat
  • Ostatnio:około 2 lata
  • Postów:52
0

Napisałem przykład który działa i pozwoli Ci zobaczyć mam nadzieję o co chodzi:

public class Figura
{
int x;
int y;

public Figura(int x, int y) //tutaj chcesz sobie sam ustawić współrzędne przy tworzeniu nowego obiektu, żeby nie tworzyć na przykład 10 klas z 
{                                     //różnymi współrzędnymi
    this.x = x;
    this.y = y;
}

public Figura() //tutaj masz ustalone współrzędne w konstruktorze domyślnym ale jak już chcesz tak robić to lepiej mieć pusty konstruktor domyślny
{                       // czyli public Figura(){}  i ustawić te wartości na samej górze przy x i y
    this.x = 1;
    this.y = 10;
}

public void wspolrzedne()
{
    System.out.println("x = " + this.x+"y = "+ this.y);
}

}
takie coś działa, czyli tam gdzie chcesz ustawić nowe wartości masz konstruktor z argumentami, przecież jak ustawisz sobie stałe wartości to figura będzie w sumie identyczna dlatego musisz się zastanowić jakiego konstruktora potrzebujesz.

public class Main
{

public static void main(String[] args)
{
    Figura figura1 = new Figura();
    figura1.wspolrzedne();

    Figura figura2 = new Figura(13,15);
    figura2.wspolrzedne();


}

}

edytowany 5x, ostatnio: mic1996
mic1996
mam problem z umieszczeniem całego tekstu jako kod niestety ;p
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)