okladka

Numer dopuszczenia MEN 60/1/09/S

Z komputerami stykamy się dziś niemal każdego dnia. Wykorzystujemy je do pracy i rozrywki, wyszukiwania informacji w sieci, komunikowania się ze znajomymi i wielu innych zadań. Jednak komputer to nie tylko gry, edytory tekstu, poczta elektroniczna, portale społecznościowe czy komunikatory -- to także wiele przydatnych narzędzi, które stają się niezbędne do codziennego funkcjonowania we współczesnym świecie.

"Informatyka Europejczyka. Informatyka. Podręcznik dla szkół ponadgimnazjalnych. Część 1" przedstawia zagadnienia związane z algorytmiką i programowaniem. Dowiesz się z tego podręcznika, jakimi prawami rządzą się algorytmy, i nauczysz się rozpoznawać ich typy. Zyskasz możliwość samodzielnego analizowania algorytmów określających najczęstsze metody numerycznego rozwiązywania problemów obliczeniowych. W dalszej części podręcznika znajdziesz informacje dotyczące programowania w języku C++ -- typy danych i instrukcji, strukturę programu, sposoby realizacji typowych zadań programistycznych oraz podstawy programowania obiektowego.

Na płycie CD-ROM dołączonej do książki znajdziesz przykłady programów napisanych w językach C++ i Pascal, uzupełniający materiał dotyczący programowania obiektowego, dane do zadań, pliki potrzebne do wykonywania ćwiczeń oraz wybrane zadania z egzaminów maturalnych.

  • Pojęcie algorytmu
  • Sposoby przedstawiania algorytmów
  • Metody programowania: liniowe, warunkowe, iteracja, rekurencja, "dziel i zwyciężaj", zachłanna
  • Analiza i realizacja algorytmów
  • Podstawy kryptografii i wybrane algorytmy szyfrujące
  • Podstawy języka C++: struktura programu, operacje wejścia i wyjścia, typy instrukcji, proste i złożone typy danych, strukturalizacja programu, dynamiczne struktury danych, plikowe operacje wejścia i wyjścia oraz programowanie obiektowe

  • Od autorek (7)
Rozdział 1. Wprowadzenie do algorytmiki (9)
  • 1.1. Pojęcie algorytmu (10)
  • 1.2. Etapy rozwiązywania zadań za pomocą komputera (11)
  • 1.3. Sposoby reprezentowania algorytmów (12)
    • 1.3.1. Lista kroków algorytmu (13)
    • 1.3.2. Schemat blokowy algorytmu (14)
    • 1.3.3. Drzewo algorytmu (15)
    • 1.3.4. Program w języku programowania wysokiego poziomu (16)
  • 1.4. Algorytmy liniowe i z warunkami (17)
    • 1.4.1. Algorytmy liniowe (17)
    • 1.4.2. Algorytmy z warunkami (20)
    • 1.4.3. Rozwiązywanie równania kwadratowego (23)
  • 1.5. Iteracja (31)
  • 1.6. Rekurencja (40)
    • 1.6.1. Obliczanie silni liczby naturalnej (41)
    • 1.6.2. Wyznaczanie elementów ciągu Fibonacciego (43)
    • 1.6.3. Wieże Hanoi (47)
  • 1.7. Metoda "dziel i zwyciężaj" (51)
    • 1.7.1. Przeszukiwanie binarne ciągu uporządkowanego (52)
  • 1.8. Programowanie zachłanne (55)
    • 1.8.1. Minimalizacja łączenia par (55)
  • 1.9. Kryptografia i kryptoanaliza. Metody szyfrowania (57)
  • 1.10. Własności algorytmów (60)
    • 1.10.1. Złożoność obliczeniowa i efektywność algorytmów (60)
    • 1.10.2. Poprawność i skończoność algorytmów (63)
    • 1.10.3. Optymalność algorytmów (64)
Rozdział 2. Algorytmy i ich zastosowanie (65)
  • 2.1. Wyznaczanie największego wspólnego dzielnika i najmniejszej wspólnej wielokrotności dwóch liczb naturalnych (66)
    • 2.1.1. Algorytm Euklidesa (67)
    • 2.1.2. Obliczanie najmniejszej wspólnej wielokrotności (71)
  • 2.2. Wyznaczanie wartości wielomianu, pozycyjne systemy liczbowe i reprezentacja danych liczbowych w komputerze (72)
    • 2.2.1. Systemy liczbowe (72)
    • 2.2.2. Konwersje pozycyjnych systemów liczbowych (75)
    • 2.2.3. Operacje arytmetyczne wykonywane w różnych systemach liczbowych (81)
    • 2.2.4. Wyznaczanie wartości wielomianu za pomocą schematu Hornera (85)
    • 2.2.5. Zamiana liczb z dowolnego pozycyjnego systemu liczbowego na system dziesiętny z zastosowaniem schematu Hornera (89)
    • 2.2.6. Reprezentacja danych liczbowych w komputerze (91)
  • 2.3. Generowanie liczb pierwszych i badanie, czy liczba jest pierwsza (97)
    • 2.3.1. Badanie, czy liczba jest pierwsza (97)
    • 2.3.2. Sito Eratostenesa (100)
  • 2.4. Przeszukiwanie ciągu liczbowego - metody liniowe (103)
    • 2.4.1. Liniowe przeszukiwanie ciągu liczbowego (103)
    • 2.4.2. Liniowe przeszukiwanie ciągu liczbowego z wartownikiem (108)
  • 2.5. Znajdowanie najmniejszego lub największego elementu w ciągu liczbowym (110)
  • 2.6. Znajdowanie lidera w zbiorze (113)
  • 2.7. Sprawdzanie monotoniczności ciągu liczbowego (117)
  • 2.8. Sortowanie ciągu liczbowego (119)
    • 2.8.1. Metody sortowania przez porównania (121)
    • 2.8.2. Sortowanie w czasie liniowym (130)
  • 2.9. Zastosowanie metody "dziel i zwyciężaj" (136)
    • 2.9.1. Jednoczesne znajdowanie najmniejszego i największego elementu (136)
    • 2.9.2. Sortowanie przez scalanie (140)
    • 2.9.3. Sortowanie szybkie (146)
  • 2.10. Metody numeryczne i obliczenia przybliżone (150)
    • 2.10.1. Obliczanie wartości pierwiastka kwadratowego z liczby nieujemnej - algorytm Newtona-Raphsona (150)
    • 2.10.2. Obliczanie pola obszaru ograniczonego wykresem funkcji (154)
    • 2.10.3. Znajdowanie przybliżonej wartości miejsca zerowego funkcji - metoda połowienia przedziałów (162)
  • 2.11. Wyznaczanie wartości wyrażenia zapisanego w odwrotnej notacji polskiej ONP (166)
  • 2.12. Zastosowanie programowania zachłannego (169)
    • 2.12.1. Problem plecakowy (169)
    • 2.12.2. Algorytm wydawania reszty (179)
  • 2.13. Wybrane algorytmy kryptograficzne (182)
    • 2.13.1. Szyfrowanie symetryczne (182)
    • 2.13.2. Szyfrowanie asymetryczne (194)
Rozdział 3. Programowanie w języku C++ (197)
  • 3.1. Języki programowania - pojęcia, klasyfikacja, przykłady (198)
  • 3.2. Wprowadzenie do programowania (200)
    • 3.2.1. Struktura programu (201)
    • 3.2.2. Operacje wejścia-wyjścia (204)
    • 3.2.3. Zmienne, stałe, wskaźniki i referencje (209)
    • 3.2.4. Wyrażenia arytmetyczne, relacje i operatory logiczne (213)
    • 3.2.5. Liczby losowe (221)
    • 3.2.6. Komentarze (222)
  • 3.3. Podstawowe konstrukcje algorytmiczne (223)
    • 3.3.1. Instrukcja pusta (223)
    • 3.3.2. Instrukcja przypisania (223)
    • 3.3.3. Instrukcja złożona (224)
    • 3.3.4. Instrukcje warunkowe (224)
    • 3.3.5. Instrukcja wyboru (227)
    • 3.3.6. Instrukcje iteracyjne (230)
    • 3.3.7. Instrukcje sterujące (235)
  • 3.4. Proste typy danych (236)
  • 3.5. Strukturalizacja programu (238)
    • 3.5.1. Struktura funkcji (238)
    • 3.5.2. Zmienne lokalne i globalne (240)
    • 3.5.3. Przekazywanie parametrów w funkcjach (241)
    • 3.5.4. Przeładowanie funkcji (248)
  • 3.6. Strukturalne typy danych (254)
    • 3.6.1. Tablice (254)
    • 3.6.2. Łańcuchy (262)
    • 3.6.3. Struktury (268)
  • 3.7. Dynamiczne struktury danych (272)
    • 3.7.1. Stos (273)
    • 3.7.2. Kolejka (275)
    • 3.7.3. Lista (276)
  • 3.8. Plikowe operacje wejścia-wyjścia (279)