poniedziałek, 22 lutego 2021

poniedziałek, 8 lutego 2021

Ciąg Fibbonaciego

Historia matematyki bywa nieprzewidywalna. Wieki obserwacji i odkryć dotyczących złotej liczby zdawałoby się wyczerpały temat. A jednak nie! A wszystko za sprawą Leonardo Pisano Fibonacciego, który żył w latach ok. 1175 - 1250 n.e. Co ciekawe, nazwisk o jest tak naprawdę przydomkiem ,ponieważ Fibonacci znaczy po prosty "syn Bonacciego". Warto dodać, że Fibonacci był gorącym zwolennikiem wprowadzenia arabskiego zapisu liczbowego.



Fibonacci w 1202 roku wydał książkę Liber Abaci (Księga Abaku). Ironiczny tytuł, ponieważ w książce Fibonacci wykazuje korzyści stosowania arabskiego zapisu liczbowego nad metodami opartymi na systemie abaku i cyfrach rzymskich. W książce poruszone są tematy podzielności, teorii liczb, symbolika matematyczna, ale również zasady księgowania, reguły zysków i strat czy wymiany pieniędzy. Jednak najsłynniejszym zadaniem stało się zadanie o królikach. 

Ile par królików będziemy mieli na końcu roku, jeśli zaczniemy w styczniu z jedną parą królików, ta w każdym następnym miesiącu, poczynając od marca, wyda na świat kolejną parę królików i z każdej pary urodzą się kolejne pary po dwóch miesiącach od narodzin?



Do najważniejszych własności liczby Fibonacciego można zaliczyć:

  1. Złoty podział odcinka stworzony po raz pierwszy przez Euklidesa. Zagadnienie to zostanie szerzej omówione w dalszej części tego rozdziału.
  2. Złoty podział prostokąta.
  3. Spirala logarytmiczna -(w dowolnym punkcie ewolucji złotej spirali stosunek długości łuku do jego przekątnej wynosi 1,618, a przekątna pozostaje w takim stosunku do większego promienia).
  4. Elipsa logarytmiczna. Elipsa jest matematycznym opisem owalu. Każdą elipsę można zdefiniować przy pomocy niewielu parametrów. Skrajną formą elipsy jest parabola opisana przy pomocy następującego równania: y2 = 4ax. Punkt P jest odległy o tyle samo od stałego punktu Z i od stałej linii wodzącej ZM. Krzywa jest symetryczna względem osi poziomej.

Złoty podział opisuje podział odcinka na dwie części w taki sposób, by stosunek długości dłuższej części do krótszej był równy stosunkowi całego odcinka do dłuższej jego części. Stosunek, o którym mowa w definicji, nazywa się złotą liczbą, a oznaczany grecką literą φ (czyt. fi).


Spiralny kształt, w którym każdy element jest sumą dwóch poprzednich identycznych elementów, zaobserwował i wyliczył w XII wieku włoski matematyk, od którego nazwiska bierze swoją nazwę ciąg Fibonacciego. W kształtach wielu roślin widać spiralne linie rozchodzące się od środka w niezwykle usystematyzowany sposób.




Ciąg Fibonacciego definiujemy następująco:

pierwszy i drugi element ciągu jest równy 1. Każdy następny otrzymujemy dodając do siebie dwa poprzednie. Matematycznie wygląda to następująco:

Fn={1, dla n=11, dla n=2Fn−2 +Fn−1, dla n>2

Inna definicja przedstawia zerowy numer ciągu jako wartość 0, pierwszy jako wartość 1, a każdy następny otrzymujemy dodając dwa poprzednie:

Fn={0, dla n=01, dla n=1Fn−2 +Fn−1, dla n>1

Kilka kolejnych wyrazów tego ciągu według pierwszej definicji przedstawia się następująco:

1,1,2,3,5,8,13,21,...

Pierwsze rozwiązanie zostanie przedstawione metodą iteracyjną, która jest wydajna i bez problemu wyznaczymy wszystkie wyrazy ciągu, które mieszczą się w dowolnym typie w C++. 

                                         

W muzyce znany jest Kanon D-dur Pachelbela, który masz właśnie okazję słuchać. Zapis nutowy jest skonstruowany według liczb Fibonacciego i którego reminescencję można spotkać w wielu współczesnych utworach muzycznych, m.in.:

  • Vitamin C-The Graduation Song
  • Bob Marley and the Wailers-Woman No Cry
  • The Beatles- Let It Be
  • Green Day- Basket Case
  • Matchbox 20- Push
  • U2- With or Without You







poniedziałek, 7 grudnia 2020

"Liczby losowe w C++"

  •  Zgadnij jaka to liczba:
Przebieg kodowania:




Rezultaty kodowania:




  • Totolotek:
Przebieg kodowania:




Rezultaty kodowania:




  • Losowanie bez powtórzeń:
Przebieg kodowania:




Rezultaty kodowania:











poniedziałek, 23 listopada 2020

"Pętle w C++"

  •  Odliczanie:

Przebieg kodowania:



Rezultaty kodowania:



  • Pętla imion:

Przebieg kodowania:




Rezultaty kodowania:




  • Bakterie:

Przebieg kodowania:



Rezultaty kodowania:


















poniedziałek, 12 października 2020

"Program Cukierki"

Krótki opis programu Code Blocks:

Code Blocks jest średnio zaawansowanym programem programistycznym(środowiskiem programistycznym), napisany został w całości językiem C++, w swym działaniu wykorzystuje wieloplatformowe biblioteki wxWidgets. Program obsługiwany jest na m.in. systemach takich jak Linux, MacOS, ale przede wszystkim na najpopularniejszym z nich, czyli Windowsie. Niemal całe środowisko tego programu zbudowane jest przy pomocy pluginów, których zadaniem jest rozszerzanie jego funkcjonowania.

Przebieg kodowania:




Wyniki pracy:





poniedziałek, 28 września 2020

Programowanie, języki programowania oraz jego podstawy:

Czym jest programowanie?

Programowanie komputerów – proces tworzenia programu komputerowego. Kod źródłowy jest napisany w języku programowania. Między programistami trwają debaty, czy programowanie komputerów jest sztuką, rzemiosłem czy procesem inżynieryjnym.



Czym są tzw. języki programowania?

Językami programowania nazywamy zbiory zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje.

Zastosowanie w obecnej programistyce:

Obecnie na świecie istnieją tysiące języków programowania i każdego roku powstają nowe. Od języków naturalnych odróżniają się wysoką precyzją oraz jednoznacznością. Człowiek podczas komunikacji między sobą stale popełnia niewielkie błędy lub pozostawia niedomówienia wiedząc, że drugi rozmówca najczęściej go zrozumie. Maszyny wykonują zadania dokładnie, dlatego każdą czynność trzeba opisać ściśle krok po kroku, ponieważ komputer nie potrafi dociec, co programista miał na myśli.

Wyróżniamy wiele różnych języków programowania, oto kilka z nich:

  • JavaScript,

  • HTML/CSS,

  • SQL,

  • Python,

  • Java,

  • Bash/Shell/Power Shell,

  • C#,

  • PHP,

  • C++,

  • Script,

  • C,

  • Ruby,

  • Go,

  • Assembly, 

  • Swift'

  • Kotlin,

  • R,

  • VBA.




Zastosowanie poszczególnych języków programowania:
  • JavaScript, język najczęściej stosowana na stronach internetowych.

  • Java jest najczęściej używana w backendowych systemach aplikacji internetowych.



  • Python jest używany w wielu obszarach, od web developmentu, przez automatyzację zadań, aż po analizę danych. Dzięki swojej czytelności i uniwersalności, jest on używany zarówno przez małe, średnie, jak i duże firmy.



  • PHP jest skryptowym językiem programowania, który wykorzystuje się głównie do tworzenia stron internetowych i aplikacji.



  • C++ jest używany między innymi o grach czy internecie rzeczy. C++ jest także używany między innymi stosowany także przez zaawansowane bazy danych, klientów-serwery czy aplikacje komputerowe.



  • C# był stworzony i jest najczęściej stosowany do pisania aplikacji na systemy Windows, ale odkąd .NET framework trafił na systemy Linux i Mac możliwe jest tworzenie natywnego oprogramowania w tym języku praktycznie na każdą platformę.




Kim są programiści i co im zawdzięczamy:

Mianem programistów określa się też projektantów oprogramowania, inżynierów oprogramowania, analityków systemów czy też projektantów stron internetowych, nazywanych również web-deweloperami i webmasterami. Jest to jednak pewne uproszczenie, ponieważ zawody te wymagają wielu innych umiejętności, oprócz samego programowania. O ile podział ten jest dobrze zarysowany za granicą, w Polsce panuje większa swoboda w wyborze nazw zawodu.




Podstawowe zasady programowania:

  • Single responsibility principle – zasada pojedynczej odpowiedzialności.
  • Open/closed principle – zasada otwarte – zamknięte.
  • Liskov substitution principle – zasada podstawiania Liskov.
  • Interface segregation principle – zasada segregacji interfejsów.
  • Dependency inversion principle – zasada odwrócenia zależności.

Pierwsze kroki w programowaniu- czyli jak dobrze zacząć swoją przygodę z programowaniem: