Zagadnienia na egzamin licencjacki - kierunek astronomia UJ
autor nieznany
8 września 2013
Streszczenie
Opracowanie zagadnien egzaminacyjnych
1
Podstawy obslugi komputerow
1.1
Rola systemu operacyjnego
System operacyjny jest podstawowym programem zarzadzajacym praca komputera. Zapewnia srodowisko do uruchomienia aplikacji wykonu-jacych okreslone zadania. Jego rola jest m.in. przydzielanie czasu pro-cesora (scheduler) oraz zarzadzanie i adresowanie pamieci operacyjnej.
To od niego zalezy wspolpraca oprogramowania ze sprzetem kompu-terowym (hardware). Czesto system operacyjny odpowiedzialny jest za komunikacje sieciowa oraz bezposrednie operacje na plikach. Uru-chomione na nim aplikacje przekazuja poprzez API (Application Pro-gramming Interface) instrukcje, ktorych bezposrednim wykonaniem zajmuje sie system operacyjny.
1.2
Znaczenie powloki w systemie Linux
Powloka systemowa (shell) posredniczy miedzy systemem operacyj-nym oraz aplikacjami a uzytkownikiem systemu. Najpopularniejszymi powlokami tekstowymi sa Bash, Csh (ktorego skladnia bazuje na je-zyku C) czy kolejna inkarnacja Csh - Tcsh. Polecenia wydaje sie sys-temowi w linii komend po znaku zachety (shell prompt), najczesciej
,,>”, ,,$” lub ,,#”. Obecnie najpopularniejsze sa graficzne interface’y 1
uzytkownika (X Window System), takie jak KDE, GNOME, Unity, LXDE czy XFCE. Konsola tekstowa nadal jednak ma istotne znacze-nia przy bardziej zaawansowanych operacjach.
Bash umozliwia tworzenie skryptow, ktore lacza ze soba wiele polecen konsoli. Mozna w nich korzystac z elementow znanych z jezykow programowania - stosowac zmienne, instrukcje warunkowe, petle itp.
Polecenia basha wpisujemy do pliku tekstowego, nastepnie nadajemy mu prawo wykonywalnosci (chmod +x nazwa pliku ze skryptem). Tak utworzony skrypt ,,odpalamy” wydajac w konsoli polecenie ./nazwa pliku ze skryptem Wykonywanie cyklicznych zadan mozna zautomatyzowac za pomoca programu cron, ktory w zdefiniowanym czasie wykonuje zadania opi-sane w tablicy crontab.
1.3
Struktura dokumentu (La)TeXowego
\documentclass{...} - definiuje typ tworzonego dokumentu.
\usepackage{...} - dolacza dodatkowe pakiety (np obsluga jezykow, dolaczania ilustracji itp.)
Tresc dokumentu rozpoczynamy
\begindocument
i konczymy
\enddocument
,,Sztandarowa” funkcja LaTeXa jest mozliwosc podzialu dokumentu na sekcje (\section) oraz podsekcje (\subsection), ich wypunkotwanie badz numeracja oraz wygodne tworzenie spisu tresci (\tableofcontents).
Przy pomocy klasy Beamer mozliwe jest tworzenie prezentacji. Posiada ona wlasny dialekt LaTeX, sluzacy do opisu poszczegolnych slaj-dow (frames).
Przykladowy dokument w LaTeX:
\documentclass[12pt]{article}
\usepackage[english,polish]{babel}
\usepackage{graphicx}
\title{Tytul}
\author{Imie Nazwiska}
\begin{document}
\maketitle
\abstract{Opis}
\section{Wprowadzenie}
2
Obecnie obowiazuja dwie rozne teorie opisujce powstawanie planet....
\subsection{Powstawanie planet - teorie}
\begin{itemize}
\item{teoria akrecji na j\c adro}
\item{niestabilnosc grawitacyjna}
\end{itemize}
\subsection{Wady i zalety poszczegolnych teorii}
Ka\. zda z obecnie obowiazujacych teorii posiada wady i zalet
\section{Symulacje}
Symulacje numeryczne dyskow protoplanetarnych zgadzaja sie z obserwacjami.....
\begin{tabular}{|l|r|} \hline
$ \int_{-\infty}^{\frac{\pi}{2}} \frac {x}{sinx}$
& $\sum_{n=1}^{+\infty} \frac{1}{x^\alpha} $
\\ \hline
lewo
& prawo
\\ \hline
\end{tabular}
\end{document}
1.4
System plikow w Linuxie - operacje na pli-
kach i prawa wlasnosci plikow
Wspolczesnie w systemach Linux uzywa sie systemow EXT 3 lub 4
badz (w przypadku specjalistycznych zastosowan) RaiserFS, Btrfs. Sa one obslugiwane przez systemy Unixopodobne, by odczytac zawartosc takiej partycji z poziomu systemu Windows konieczna jest instalacja dodatkowej aplikacji.
Kopiowanie plikow:
cp zrodlowy docelowy
gdzie zrodlowy oznacza dotychczasowa lokalizacje pliku, a docelowy -
miejsce, do ktorego ma on zostac przeniesiony.
Przemieszczanie plikow:
mv zrodlowy docelowy
Czesto konieczne jest kopiowanie dokumentow poprzez siec. Sluzy do tego scp:
scp uzytkownik@nazwa_komp_w_sieci:/katalog/plik /katalog_lokalny-docelowy 3
rm nazwa-pliku
Prawa dostepu
Systemy unixowe zapewniaja mozliwosc restrykcji w uzytkowaniu okre-slonych plikow. Prawa dostepu przypisywane sa dla wlasciciela pliku, grupy oraz innych uzytkownikow. Ich zmiana dokonuje sie dzieki ko-mendzie chmod.
(w nawiasie odpowidnie oznaczenie literowe)
0 - brak uprawnien
1 - wykonywanie (x)
2 - pisanie (w)
3 - wykonywanie i pisanie (wx)
4 - czytanie (r)
5 - czytanie i wykonywanie (rx)
6 - czytanie i pisanie (rw)
7 - czytanie, pisanie i wykonywanie (rwx)
Przykladowe zastosowanie:
chmod 740 /home/user/a.txt - komenda nadaje pelne prawa dla wlasciciela pliku ,,a.txt”, prawo do czytania dla grupy uzytkownikow oraz zabrania dostepu do pliku dla pozostalych uzytkownikow.
By wylistowac pliki w obecnym katalogu wraz z podaniem ich praw dostepu wystarczy uzyc komendy
ls -l.
2
Podstawy programowania 1
2.1
Elementy skladowe programu komputero-
wego
Przyklad niezmiernie prostego programu, ktory pobiera tekst wpisany na klawiaturze i zlicza sume wprowadzonych znakow (na podstawie ich numerow w tablicy ASCII). Linijki poprzedzone znakiem ,,//” za-wieraja komentarz dot. dzialania programu (komentarze moga byc tez wielolinijkowe, zawarte pomiedzy znakami ,,/*” oraz ,,*/).
#include <stdio.h>
#include <math.h>
4
// powiazanie z bibliotekami niezbednymi do kompilacji programu main()
// funkcja glowna programu (main)
{
unsigned char suma=0;
int znak,i;
// definicja zmiennych uzytych w programie (zmienna znakowa ,,suma”
oraz liczby calkowite ,,znak” oraz ,,i”)
printf(”Wpisz slowa, proces zakoncz naciskajac rownoczesnie Ctrl +
D \n”);
while((znak=getchar()) != EOF)
//petla wykonywana jest dopoki nie napotkany zostanie EOF (End Of File), wystarczy nacisnac Ctrl + D na klawiaturze
{
suma = suma + znak;
//sumowanie - do dotychczasowego wyniku dopisywany jest numer ASCII wlasnie wprowadzonego znaku
}
printf(”\n %i\n”, suma);
//Wypisanie sumy na ekranie.
}
2.2
Instrukcje sterujace w programie kompu-
terowym
Instrukcja warunkowa if: jesli spelnione jest zalozenie - wykonaj polecenie. Opcjonalnie mozna tez wykonac inna czynnosc w razie niespel-nienia warunku (else).
Uwaga! Symbol ,,=” oznacza przypisanie zmiennej jakiejs wartosci, do porownywania w instrukcjach warunkowych nalezy stosowac ,,==”!
Przyklad:
if(warunek)
{zrob to; } else {jesli warunek jest niespelniony zrob to}
Petla while: wykonuje dane polecenia dopoki spelniony jest warunek (wartosc logiczna warunku sprawdzana jest PRZED wykonaniem petli).
5
{wykonaj to}
Petla do while: podobnie jak poprzednia, jedynie wartosc logiczna warunku sprawdzana jest PO wykonaniu petli.
do
{wykonaj to}
while(warunek);
Petla for:
for(instrukcja wykonana przed wykonaniem petli; warunek; instrukcja wykonana po wykonaniu petli)
wykonaj to]
Przyklad:
int i;
for (i = 0; i <10; i++)
{
printf(i);
}
Petle mozna opuscic w dowolnym momencie przy pomocy instrukcji break; (na ogol jest ona opatrzona uprzednio stosowna instrukcja warunkowa). Instrukcja continue; konczy wykonywanie obecnej iteracji petli (pomijajac instrukcje umieszczone po niej) i przechodzi do ko-lejnego cyklu petli (o ile sprawdzany warunek nadal bedzie spelniony).
Instrukcja switch: zastepuje kilka instrukcji warunkowych if.
switch (wyrazenie) {
case wartosc1 :
[wykonaj to;]
break;
case wartosc2 :
[wykonaj to;]
break;
default :
[wykonaj to;]
break;
}
6
Rola kompilatora
Kompilator jest programem tlumaczacym kod zrodlowy danego jezyka programowania (z zalozenia zrozumialy dla czlowieka) na polecenia bezposrednio wykonywane przez komputer. Kompilatory niesamowi-cie ulatwiaja tworzenie programow oraz umozliwiaja skompilowanie tego samego kodu zrodlowego na odmiennych komputerach.
Na zajeciach stosowalismy kompilator GCC.
Przykladowa kompilacja:
gcc program.c -o program.out -lm
parametr -o okresla nazwe pliku wynikowego, flaga -lm wymusza wy-korzystanie biblioteki matematycznej (-l: linker, m: math).
Kompilacje bardziej skomplikowanych programow mozna zautomatyzowac przy pomocy aplikacji make. Interpretuje ona plik o nazwie makefile, stwierdzajac, ktore pliki wymagaja kompilacji oraz w jaki sposob ja przeprowadzic. Przykladowa zawartosc takiego pliku: program: program1.c program2.c
gcc program1.c program2.c -o program.out
2.4
Dlaczego komputer liczy niedokladnie
Liczba zmiennoprzecinkowa wyliczana jest za pomoca wzoru: x = SM BE,
gdzie S okresla znak liczby (+1 lub -1), M (mantysa) - liczba ulam-kowa, B - podstawa systemu liczbowego (2 w systemie binarnym uzy-wanym w komputerach), E - wykladnikiem (liczba calkowita).
W
jezykach programowania poszczegolne typy zmiennych zajmuja okre-slona ilosc miejsca w pamieci. Dla przykladu kompilator GCC dla zmiennej typu float przypisuje 4 bajty, double - 8 bajtow, long double
- 16 bajtow. Z oczywistych powodow powoduje to ,,poszatkowanie”
osi liczbowej na pewne ,,skwantowane” wartosci - reprezentacja liczb w przedziale pomiedzy kolejnymi wartosciami jest niemozliwa. Tym samym ograniczona jest tez dokladnosc obliczen dokonywanych przez komputer. Niestety niedokladnosc narasta wraz z ponownym uzyciem uzsykanych wynikow do kolejnych wyliczen (np kolejnych iteracji algo-rytmu). Niepewnosc uzyskanych wynikow mozna oszacowac przepro-wadzajac rachunek propagaacji bledow. Warto wiec dobrac i zopty-malizowac uzyty algorytm tak, aby niepewnosc byla jak najmniejsza.
Kolejna przyczyna niedokladnosci metod numerycznych jest ich sama specyfika wynikajaca z rozwiazywania problemu w skonczonej 7
liczbie krokow. Powoduje to np obciecie kolejnych wyrazow szeregow, przyblizanie calek za pomoca skonczonej ilosci ,,prostokatow” czy tez zastepowaniu pochodnej funkcji jej ilorazem roznicowym.
8