ściąga - teoria, WIMIC, II rok, rok II semestr 4, INFOMATYKA


Wartość l. zmiennoprzec.; x=S*M*(B^E) gdzie S - znak, M - mantysa, B - podst syst, E - wykład.

Systemy pozyc - metody zapis. l. w taki sposób, że w zal. od pozycji danej cyfry w ciągu, oznacza ona wielokrotność potęgi pewnej l. uznawanej za bazę systemu.

Cechy algorytmów: skończoność - wykonanie algoryt. zawsze kończy się po skończonej l. kroków, poprawne zdef - każdy krok algor. opisany jest precyzyjnie i jednozn, efektywne zdef. - operacje algoryt.powinny być jak najprostsze, dające wyk. się w jak najkrótszym możliwym czasie, dane wejściowe - są to wartości znane przed rozpoczęciem działania algoryt. lub dostarczane w czasie jego wyk, dane wyjściowe - algoryt. generuje dane wyjściowe, powiązane w pewien sposób z danymi wejściowymi.

Metody konstrukcji algoryt: M. zstępująca (od ogółu do szczegółu) - zadany problem dzielimy na coraz mniejsze logicznie domknięte moduły. W rezultacie uzyskujemy opis pojedynczych czynności w instrukcjach języka. M. Wstępująca (od szczegółu do ogółu) - zaczynamy rozwiązanie problemu od skonstruowania obliczeń dla najistotniejszych fragmentów. Następnie takie fragmenty łączymy i uzupełniamy o instrukcje wprowadzania danych, wyprowadzania wyników i inne.

Sposoby zapisywania algorytmów: język naturalny, język programowania, pseudo-kod (pośrednia), schematy blokowe (graficznie).

Typy danych: proste - arytmet. (całk., rzeczy.), znakowe. Złożone - tablice, struktury. Typy danych należą do pojęć log., same nie stanowią obiektu, który można wykorzystać w prog. Reprezentant.. typów w prog. są zmienne. Zmienne zajmują pewien obszar w pamięci operacyjnej komputera, którego rozmiar i sposób interpretacji określony jest przez typ zmiennej.

Tablice: służą do przechowywania w pamięci określonej skończonej ilości obietków tego samego typu. Jednowymiarowe (wektory). Dwuwymiarowe (macierze).

Listy liniowe: Lista to skończony ciąg elementów ( q=[x1,x2,x3,…,xn] ). X1 - początek, xn - koniec, |q|=n - dł.. Operacje: dostęp do elementu ( q[i]=xi ), podlista ( q[i..j] = [xi. xi+1,…,xj] ),

złożenie list ( q&r=[x1,…,xn,y1,…,ym] ),

wstawianie na początek listy ( push(q,x)=[x]&q ), wstawianie na koniec list ( inject(q,x)=q&[x] ),

usunięcie pierwszego elem. ( pop(q)=q[2..|q|] ),

odczyt pierwszego elem ( front(q)=q[1] ),

odczyt ostatniego elem. ( rear(q)=q[|q|]

Stos: (last in, first out - LIFO) jest listą w której operacje wstawiania i usuwania są możliwe tylko na końcu listy. Operacje: push (wstawianie elementu na stos), pop (usuwanie elementu ze stosu).

Kolejka: (first in, first out - FIFO) jest listą w której operacje wstawiania i usuwania są możliwe tylko na początku kolejki. Operacje: enqueue (wstawianie), dequeue (usuwanie).

Metoda dziel i zwyciężaj: W podejściu tym każdy z poziomów rekursji składa się z trzech etapów: 1) Dziel - dzielimy problem na podproblemy, 2) zwyciężaj - rozwiązujemy problemy rekurencyjnie, 3) połącz - łączymy rozwiązania podproblemów, aby otrzymać rozwiązanie całego problemu.

Sortowanie przez scalanie (merge-sort): 1) dziel - dzielimy n-el.ciąg na dwa podciągi po n/2 el. każdy, 2) zwyciężaj - sortujemy otrzymane podciągi, używając rekurencyjnie sortowania przez scalanie, 3) połącz - łączymy posortowane ciągi w jeden posortowany ciąg.

Algorytm zachłanny: wykonuje zawsze działanie, które w danej chwili wydaje się najkorzystniejsze. Wybiera zatem lokalnie optymalną możliwość w nadziei, że doprowadzi ona do globalnie optymalnego rozwiązania.

Programowanie dynamiczne: jest techniką lub strategią projektowania algorytmów, stosowaną przeważnie do rozwiązywania zagadnień optymalizacyjnych. Jest alternatywą dla niektórych zagadnień rozwiązywanych za pomocą algorytmów zachłannych. Programowanie dynamiczne opiera się na podziale rozwiązywanego problemu na podproblemy względem kilku parametrów. W odróżnieniu od techniki dziel i zwyciężaj podproblemy w programowaniu dynamicznym nie są na ogół rozłączne, ale musi je cechować własność optymalnej podstruktury.

Języki programowania: zorientowane maszynowo (asemblery) - posługują się pojęciami na poziomie przesyłania inf. pomiędzy poszczególnymi komórkami pamięci. Zorientowane problemowo - rozwiązują zagadnienia określonej klasy, np.: konstruowanie mostów, dyfuzja, termodynamika. Języki wysokiego poziomu - są uniwersalnymi językami, tzn. za ich pomocą można rozwiązać problemy różnych dziedzin.

Kompilacja: proces, w którym program w j. wysokiego poziomu jest tłumacz. na j. adresów symb. (asembler). Kompilator.

Interpreter: program tłumaczący każdą instrukcję poziomu maszyny i natychmiast ją wykonujący.

Typy danych (VBA): boolean - logiczny, integer - całkowity, double - rzeczywisty, string - znakowy.

Sub dodawanie()

'dodawianie macierzy 5X5

Dim tablica(1 To 5, 1 To 5) As Double

Dim tablica2(1 To 5, 1 To 5) As Double

Dim tablica3(1 To 5, 1 To 5) As Double

Dim i As Double

Dim j As Double

For i = 1 To 5

For j = 1 To 5

tablica(i, j) = Rnd * 100

Range("A1").Offset(i - 1, j - 1) = tablica(i, j)

tablica2(i, j) = Rnd * 100

Range("F1").Offset(i - 1, j - 1) = tablica2(i, j)

tablica3(i, j) = tablica(i, j) + tablica2(i, j)

Range("K1").Offset(i - 1, j - 1) = tablica3(i, j)

Next j

Next i

End Sub

Sub mnozenie_mac()

Dim i ,j,kAs Integer

Dim A(1 To 5, 1 To 3) As Integer

Dim B(1 To 3, 1 To 4) As Integer

Dim C(1 To 5, 1 To 4) As Integer

'wypisywanie 1-ej mac A[5x3]

For i = 1 To 5

For j = 1 To 3

A(i, j) = Rnd * 100

Range("A6").Offset(i - 1, j - 1) = A(i, j)

Next j

Next i

'wypisywanie 2-ej mac B[3x4]

For j = 1 To 3

For k = 1 To 4

B(j, k) = Rnd * 100

Range("F6").Offset(j - 1, k - 1) = B(j, k)

Next k

Next j

'obliczanie iloczynu AxB i C[5x4]

For i = 1 To 5

For k = 1 To 4

For j = 1 To 3

C(i, k) =C(i, k) + A(i, j) * B(j, k))

Range("A1").Offset(i - 1, k - 1) = C(i, k)

Next j

Next k

Next i

End Sub

0x01 graphic

0x01 graphic

0x01 graphic



Wyszukiwarka