• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kurs C++ 23 albo 20

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+3 głosów
233 wizyt
pytanie zadane 28 listopada w C i C++ przez it_atari Użytkownik (540 p.)
Hej, studiuję informatykę i znam podstawy c++, ale głównie starszych wersji, których uczą w liceum. Natomiast na studiach mam obecnie taki przedmiot jak właśnie programowanie w c++, które nie wygląda tak jak się tego spodziewałam. Na ćwiczeniach facet głównie pisze kody w c++ 23, 20 i w ogóle w tych nowszych. Składnia tego języka strasznie różni się od tego co już umiem dlatego poszukuję kursu c++ ale właśnie jakiegoś nowszego. Może znacie taki kurs i moglibyście mi go polecić bo niestety nie mogę znależć nic fajnego.

2 odpowiedzi

+2 głosów
odpowiedź 28 listopada przez adrian17 Mentor (350,940 p.)
TBH na wczesnych etapach nauki różnice między 11/14 a nowszymi są w większości pomijalne, poza kilkoma przydatnymi rzeczami jak std::format, std::optional, std::filesystem, std::flat_map to większość nowych dodatków to zaawansowane ficzery.

Składnia się nie "różni znacząco". Możesz pokazać jakiś przykład, co masz na myśli?
komentarz 28 listopada przez reaktywny Nałogowiec (44,780 p.)
Zgadzam się, że wystarczą nawet starsze książki Helionu, a później dokumentacja C++, może też jakieś kursy z Udemy :) Teraz są po 30 zł.
komentarz 28 listopada przez tkz Nałogowiec (42,020 p.)

@adrian17, 

Składnia się nie "różni znacząco". Możesz pokazać jakiś przykład, co masz na myśli?

Samo "auto" potrafi zrobić zamieszanie u początkującej osoby. 

a później dokumentacja C++

Nie stricte dokumentacja, a cppreference lub C++ Core Guidelines.

 

Imo samo to https://www.learncpp.com/ powinno podnieść znacząco znajmość C++.

1
komentarz 28 listopada przez TOWaD Mądrala (6,250 p.)
#include <iostream>
#include <format>

int main() {
    int value = 42;
    std::string result = std::format("{:*>10}", value); // Wyrównanie do prawej, wypełnienie '*', szerokość 10
    std::cout << result << std::endl;
    return 0;
}

To tylko std::format, ? trochę się różni od std::manip.

Niekoniecznie throw

#include <iostream>
#include <expected>

std::expected<int, std::string> divide(int a, int b) {
    if (b == 0) {
        return std::unexpected("Division by zero error");
    }
    return a / b;
}

int main() {
    auto result = divide(10, 2);
    if (result) {
        std::cout << "Result: " << *result << std::endl;
    } else {
        std::cout << "Error: " << result.error() << std::endl;
    }
    return 0;
}

buffer

#include <iostream>
#include <spanstream>
#include <string>

int main() {
    // Bufor danych
    std::string buffer = "Hello, World!";

    // Tworzenie spanstream ze spanem bufora
    std::spanstream ss(std::span(buffer.data(), buffer.size()));

    // Przetwarzanie danych w spanstream
    char ch;
    while (ss >> ch) {
        std::cout << ch << ' ';
    }
    std::cout << std::endl;

    return 0;
}

Trochę tego tego jest, dzięki, autorowi pytania za zwrócenie uwagi (przykłady AI).

komentarz 28 listopada przez adrian17 Mentor (350,940 p.)

Samo "auto" potrafi zrobić zamieszanie u początkującej osoby. 

Jasne, ale to C++11, a zakładałem że pytanie jest bardziej o różnice między 11/14 a 20/23.

To tylko std::format, ? trochę się różni od std::manip.

Ta, ale to jest typ rzeczy o której możesz przeczytać np o cppreference, a niekoniecznie z całej nowej książki. (plus to jest znacznie bardziej zbliżone do formatowania w innych językach jak Python, to <iomanip> był "tym dziwnym" :) )

O std::spanstream też nie słyszałem wcześniej, ale wygląda na oko jak "trochę lepszy stringstream", więc to też brzmi jak coś o czym można po prostu poczytać "przy okazji", a nie specjalnie szukać nowej książki do C++23. Plus to nawet jeszcze nie jest wspierane w libc++, więc nie ma co się zapędzać i uczyć czegoś czego 1 z 3 głównych kompilatorów jeszcze w pełni nie wspiera.

komentarz 28 listopada przez TOWaD Mądrala (6,250 p.)
A ok, Dzięki.
komentarz 28 listopada przez it_atari Użytkownik (540 p.)

@adrian17, 

#include <iostream>
#include <print>

int main()
{
    unsigned n{};
    std::cin >> n;

    for (unsigned i = 1; i <= n; ++i)
    {
        double x{};
        double y{};
        double z{};

        double sum_{};

        if (not (std::cin >> x >> y >> z >> sum_))
            break;

        const auto sum = x + y + z;

        const bool passed = (sum_ == sum);
        std::println("Test #{}: {}", i, (passed ? "PASSED" : "FAILED"));
    }
}

To jest przykładowy kod do programu z zajęć który dodaje 3 liczby typu double. Pierwszy raz na oczy widzę taką składnię c++ i poszukuję jakiegoś kursu który to objaśnia.

komentarz 28 listopada przez it_atari Użytkownik (540 p.)
Dodam że facet który uczy nas właśnie c++ skupia swoją uwagę bardzo na c++23
komentarz 29 listopada przez TOWaD Mądrala (6,250 p.)

Jeśli pozwolisz to ja odpowiem.

#include <print> // c++23
// c++ 11---------------------------------------------------------- 
int main()
{
    unsigned n{};
    std::cin >> n;
 
    for (unsigned i = 1; i <= n; ++i)
    {
        double x{}; //zwykły konstruktor double x=0;
        double y{};
        double z{};
 
        double sum_{};
 
        if (not (std::cin >> x >> y >> z >> sum_))
            break;
 
        const auto sum = x + y + z;
 
        const bool passed = (sum_ == sum); //(zwykłe porównanie w nawiasie) a później przypisanie
// C++ 11^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        std::println("Test #{}: {}", i, (passed ? "PASSED" : "FAILED"));  //<-C++23 println("{}",i) coś jak w C w nawiasach wartość i

 std::println("Hello, world!")} //Hello, world!
 int num = 42; 
std::println("The answer to life, the universe, and everything is {}.", num);//The answer to life, the universe, and everything is 42.
float pi = 3.14159f;
 std::println("Value of pi: {:.2f}", pi);//Value of pi: 3.14

    }
}

i wyrażenie warunkowe

#include <print>

int main() {
    int a = 3, b = 4;

//to to samo 
    int max;
    if (a > b) {
        max = a;
    } else {
        max = b;
    }
    std::println("Maximum value is {}", max);


//to to samo 
    int max = (a > b) ? a : b; 
std::println("Maximum value is {}", max);
    return 0;
}

 

komentarz 29 listopada przez TOWaD Mądrala (6,250 p.)
A tak ogólnie to bardzo ciekawe wygląda te nowe c++ i dużo ciekawych udogodnień, tylko szkoda że w std::cpp to tylko chyba w Embedded się używa, albo i to nie. Może ktoś wie gdzie w Polsce używają std i c++ (bez dodatkowych bibliotek) poza szkołą, to się wypowie.
komentarz 29 listopada przez tkz Nałogowiec (42,020 p.)
Pracowałem w systemach wbudowanych. Nie używaliśmy standardowej biblioteki w ogóle. Jest stosunkowo ciężka.
+1 głos
odpowiedź 28 listopada przez reaktywny Nałogowiec (44,780 p.)
edycja 28 listopada przez reaktywny

Ja zapodam 4 kursy z Udemy (większość kursów na Udemy, 90-kilka procent jest (bardzo) słaba), tu wybrałem jedne z lepszych, dwa są po polsku, dostaniesz taki "widok z lotu ptaka" na C++ a później szczegółów i szczególików douczysz się z zupełnie darmowego Internetu.


[ Beginning C++ Programming - From Beginner to Beyond | Udemy ]
--> https://www.udemy.com/course/beginning-c-plus-plus-programming/?couponCode=BFCPSALE24

[ Programowanie w C++ od podstaw | Udemy ]
--> https://www.udemy.com/course/kurs-programowania-w-c-plus-plus-od-podstaw/?couponCode=BFCPSALE24

[ Programowanie obiektowe w C++ | Udemy ]
--> https://www.udemy.com/course/programowanie-obiektowe-w-c/?couponCode=BFCPSALE24

[ The C++20 Masterclass : From Fundamentals to Advanced | Udemy ]
--> https://www.udemy.com/course/the-modern-cpp-20-masterclass/?couponCode=BFCPSALE24

Sugeruje je kupić teraz, jutro ma się skończyć BF i cena 30 zł za kurs nie pojawi się znów zbyt szybko.

-----

Tu dwa za free, ale dotyczą kilku języków, m.in. C++

[ C++ And Java Training Crash Course for Beginners | Udemy ]
--> https://www.udemy.com/course/c-and-java-training-crash-course-2022/?couponCode=8B4A0A21D0683C74BB17

[ C, C++, PHP & Java: Complete Guide to Modern Programming | Udemy ]
--> https://www.udemy.com/course/c-c-php-java-complete-guide-to-modern-programming/?couponCode=16A6CEFFAA9D4D7F0211

 

 

 

Podobne pytania

0 głosów
2 odpowiedzi 199 wizyt
pytanie zadane 25 września 2023 w C i C++ przez piotr_domanski Bywalec (2,260 p.)
0 głosów
0 odpowiedzi 142 wizyt

93,182 zapytań

142,196 odpowiedzi

322,002 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1889p. - dia-Chann
  2. 1864p. - Łukasz Piwowar
  3. 1847p. - CC PL
  4. 1843p. - Łukasz Eckert
  5. 1805p. - Tomasz Bielak
  6. 1785p. - Michal Drewniak
  7. 1777p. - Łukasz Siedlecki
  8. 1774p. - rucin93
  9. 1744p. - rafalszastok
  10. 1724p. - Adrian Wieprzkowicz
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1368p. - ssynowiec
  15. 1258p. - Dawid128
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...