Linuksowy Poradnik Olimpiady Informatycznej



Podobne dokumenty
Lekcja 6 Programowanie - Zaawansowane

1. Wprowadzenie do C/C++

Edyta Juszczyk. Akademia im. Jana Dªugosza w Cz stochowie. Lekcja 1Wst p

1. Wprowadzenie do C/C++

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Lekcja 12 - POMOCNICY

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

Lekcja 9 Liczby losowe, zmienne, staªe

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Lekcja 2 - BUDUJEMY I CZARUJEMY

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Pierwsze spotkanie kóªka linuksowego

Programowanie i struktury danych

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Subversion - jak dziaªa

Centralizacji Systemu. Procedury zasilania danymi systemu LAS oprogramowania do aktualizacji LMN. etap C13 pkt 5

BASH - WPROWADZENIE Bioinformatyka 4

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Programowanie i struktury danych 1 / 44

PERSON Kraków

Chemiateoretyczna. Monika Musiał. Ćwiczenia

Lekcja 5 Programowanie - Nowicjusz

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Lekcja 3 Banki i nowe przedmioty

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz 24 czerwca Podstawowe funkcje. 2.1 Windows

Platforma Aukcyjna Marketplanet. Podręcznik Oferenta. Aukcja dynamiczna zniŝkowa

System midzybankowej informacji gospodarczej Dokumenty Zastrzeone MIG DZ ver Aplikacja WWW ver. 2.1 Instrukcja Obsługi

Bash - wprowadzenie. Bash - wprowadzenie 1/39

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Programowanie w języku Python. Grażyna Koba

Tworzenie oprogramowania

INFORMATOR TECHNICZNY WONDERWARE

Wstęp do systemu Linux

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Przetwarzanie sygnaªów

Programowanie w języku C++ Grażyna Koba

Wprowadzenie do środowiska Qt Creator

Opera Wykorzystanie certyfikatów niekwalifikowanych w oprogramowaniu Opera wersja 1.1 UNIZETO TECHNOLOGIES SA

Sieci i systemy operacyjne I Ćwiczenie 3. Przekierowania strumieni we/wy. Filtry.

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

Kompilowanie programów

Zadania do wykonaj przed przyst!pieniem do pracy:

Konfiguracja historii plików

Wstawianie gotowych rysunków w texu - informacje podstawowe.

ATEKO, s.r.o. E-learning. Instrukcje dla studentów

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

Podstawy informatyki

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Programowanie wspóªbie»ne

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Podstawy obsªugi Linux: obsªuga procesorów i pami ci, obsªuga procesów, komunikacja mi dzyprocesowa. Zarz dzanie procesami w systemie Linux.

OPIS PRZEDMIOTU ZAMÓWIENIA:

PODRĘCZNIK UŻYTKOWNIKA

Wstęp do systemu Linux

Pracownia internetowa w szkole podstawowej (edycja 2004)

Instrukcja obsługi panelu operacyjnego XV100 w SZR-MAX-1SX

SYSTEMY OPERACYJNE ĆWICZENIE POLECENIA SYSTEMU MSDOS

Zdalne odnawianie certyfikatów do SWI

Ćwiczenie 6. Wiadomości ogólne.

Uruchamianie SNNS. Po uruchomieniu. xgui & lub snns & pojawia si e okno. programu. Symulator sztucznych sieci neuronowych SNNS 1

Programowanie wspóªbie»ne

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

SINAMICS G120C STARTER. Tworzenie nowego projektu w trybie online.

Metody numeryczne. Wst p do metod numerycznych. Dawid Rasaªa. January 9, Dawid Rasaªa Metody numeryczne 1 / 9

Instrukcja poruszania się po stronie krok po kroku. tak zwane ABC Plusika

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Firma Informatyczna JazzBIT

INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

MySource Matrix CMS - PROSTY INTERFEJS UŻYTKOWNIKA. INSTRUKCJA ver 1.2

Ćwiczenie 6.5. Otwory i śruby. Skrzynia V

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

1 Podstawy c++ w pigułce.

I. Zakładanie nowego konta użytkownika.

1.Wstęp. 2.Generowanie systemu w EDK

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Konsola i interpreter poleceń

Automatyzacja procesu publikowania w bibliotece cyfrowej

Microsoft Management Console

Pracownia internetowa w ka dej szkole (edycja 2004)

Karta adaptacyjna GSM

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

dbsamples.udl lub przygotowany wcześniej plik dla Excela) i OK,

Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015

raceboard-s Szybki start

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.

Pracownia Komputerowa wykład III

Instrukcja obsługi programu Pilot PS 5rc

Zarządzanie Zasobami by CTI. Instrukcja

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Przeniesienie lekcji SITA z płyt CD na ipoda touch

Transkrypt:

Linuksowy Poradnik Olimpiady Informatycznej Marek ylak 21 marca 2006 1 Wst p Dokument ten powstaª m.in. na podstawie do- ±wiadcze«studentów zdobytych podczas zawodów programistycznych o charakterze algorytmicznym (ACM, MPPZ, MWPZ itp.). Opisuje on podstawy obsªugi Linuksa oraz sposoby na wydajne rozwi zywanie zada«olimpijskich przy pomocy standardowych narz dzi. 2 Czytanie i analiza zadania Przeczytaj uwa»nie zadanie. Zaprojektuj algorytm i struktury danych. Opcjonalnie sporz d¹ notatki na papierze. Najlepiej nie zabiera si za kodowanie, dopóki nie ma si w gªowie peªnego obrazu rozwi zania. Podczas kodowania trzeba si koncentrowa na poprawno±ci programu, a nie wymy±laniu algorytmu. 3 Kodowanie Zaloguj si na konsol tekstow (przej±cie z trybu gracznego do tekstowego: Ctrl-Alt-F1) lub otwórz terminal graczny (np. xterma lub Konsol ). Na komputerach udost pnianych zawodnikom Olimpiady Informatycznej, po wª czeniu zasilania, domy±lnie uruchamia si Linuks w trybie gracznym oraz menad»er okien KDE. W trybie gracznym zarz dzanym przez KDE programy okienkowe mo»na wybiera z menu rozwijanego przyciskiem K umiejscowionym w lewym dolnym rogu ekranu, który peªni rol podobn jak przycisk Start w Windows. Aby uruchomi kconsole, rozwijamy gªówne menu klikaj c w przycisk K, nast pnie rozwijamy podmenu System i w ko«cu wybieramy Program Terminala (Konsola). Obok przycisku K znajduj si tak»e inne przydatne przyciski. Jednym z nich jest przycisk Pliki osobiste, który sªu»y do przegl dania katalogu domowego nale» cego do aktualnie zalogowanego u»ytkownika. Linuks jest systemem operacyjnym, w którym wielu u»ytkowników mo»e pracowa jednocze±nie, dlatego ka»dy u»ytkownik posiada swój katalog domowy, który jest miejscem przechowywania wszystkich plików zwi zanych z danym u»ytkownikiem (dokumenty, pliki konguracyjne, e-maile itp.). Je±li do kodowania wybraªe± tryb graczny, mo»esz dodatkowo dostosowa do swoich potrzeb ustawienia terminala (wielko± czcionki, ukªad kolorów). W trybie tekstowym masz dost pnych kilka wirtualnych konsol, mi dzy którymi mo»na przeª cza si przy pomocy kombinacji Alt-F1, Alt-F2, itd. Na jednej konsoli mo»na mie otwarty program, a na innej przykªadowo dokumentacj jakiej± funkcji (np. man qsort). Po otworzeniu terminala aktualny katalog roboczy b dzie ustawiony na twój katalog domowy. Do katalogu domowego mo»na szybko wróci przy pomocy polecenia: $ cd Sprawdzanie aktualnego katalogu roboczego odbywa si przy pomocy polecenia pwd: $ pwd /home/contest Aby wypisa zawarto± katalogu trzeba u»y : $ ls Je±li chcemy dodatkowo wypisa rozmiary plików sformatowane w postaci bardziej czytelnej dla czªowieka, nale»y u»y polecenia ls z opcjami -l oraz -h: $ ls -lh Szczegóªowe opisy wszystkich polece«linuksowych mo»na uzyska przy pomocy polecenia man w nast puj cy sposób: 1

$ man ls Po wywoªaniu opisu polecenia, nawigacja odbywa si przy pomocy strzaªek oraz przycisków PgUp i PgDown. Wychodzi si przez naci- ±ni cie q. Wyszukiwanie tekstu jest mo»liwe po naci±ni ciu / (dziaªa te» w wielu innych programach m.in. w Firefox). Je±li po znalezieniu wzorca chcemy znale¹ kolejne jego wyst pienie trzeba, nacisn n. Czasami bardziej szczegó- ªowe informacje mo»na uzyska dzi ki poleceniu info: $ info ls Zalecane jest zapoznanie si z mo»liwo±ciami podstawowych polece«(info coreutils). Utwórz podkatalog w którym b dziesz trzymaª wszystkie pliki (¹ródªa, testy) dotycz ce aktualnie rozwi zywanego zadania i przejd¹ do nowo utworzonego katalogu: $ mkdir zad1 $ cd zad1 Bardzo po»yteczna funkcja linii polece«jest automatyczne dopeªnianie. Je±li wpiszemy polecenie, którego argumentem jest nazwa pliku lub katalogu, to cz sto argumentu nie trzeba wpisywa do ko«ca. Wystarczy wpisa jego pierwsze litery, a potem nacisn Tab. Je±li jest tylko jeden plik lub katalog, którego nazwa zaczyna si od podanych znaków, argument zostanie od razu dopeªniony do tej wªa±nie nazwy! Je±li jest kilka mo»liwo±ci, zostan one wypisane na ekranie i trzeba wtedy poda kolejne znaki argumentu. Wi cej informacji o interpreterze linii polece«mo»na uzyska po wywoªaniu man bash. Rozpocznij edycj pliku z rozwi zaniem. Do edycji najlepiej u»ywa edytora z kolorowaniem skªadni. Najcz ±ciej u»ywane edytory to: mcedit intuicyjny, obsªuga jak w edytorach u»ywanych pod Windows, mo»na u»ywa bez wiedzy wst pnej, poniewa» zawsze wy±wietla na ekranie informacje na temat swoich funkcji i skrótów klawiszowych, zupeªnie wystarczaj cy na Olimpiadzie Informatycznej vim nieintuicyjny interfejs, obsªugi trzeba uczy si z instrukcji i wiczy kilka dni zanim nabierze si wprawy, umo»liwia wykonanie skomplikowanych operacji przy pomocy kilku przyci±ni klawiatury, bardzo du»o opcji, wbudowany j zyk skryptowy, jego zalety doceni mo»na raczej dopiero przy pisaniu du»ej ilo±ci programów i administracji systemu, ni» na Olimpiadzie Informatycznej emacs jeszcze bardziej rozbudowany ni» vim, ale troch bardziej intuicyjny, te» wymaga nauki z podr cznika, wspomaga debugowanie kwrite, kate standardowe edytory w ±rodowisku gracznym KDE, intuicyjne oraz zawieraj ce du»o opcji dost pnych przez menu, polecane w trybie gracznym jako alternatywa dla mcedit Zaczynamy edycj nowego pliku przy pomocy polecenia: $ mcedit zad1.cpp 4 Kompilacja Po zapisaniu programu i wyj±ciu z edytora przyst pujemy do kompilacji: $ c++ zad1.cpp Je±li kompilacja nie powiodªa si, analizujemy wypisane przez kompilator informacje o bª dach i wracamy do edytora aby poprawi program. W przeciwnym wypadku powstanie plik wykonywalny a.out. Mo»na skompilowa program w bardziej wyranowany sposób: $ c++ -Wall -Wshadow -o zad1 zad1.cpp Opcja -Wall wª cza dodatkowe ostrze»enia pomagaj ce wykrywa bª dy na etapie kompilacji, natomiast opcja -Wshadow nakazuje kompilatorowi wykrywanie przypadków przykrycia w programie jednych zmiennych przez inne zmienne o tej samej nazwie. Opcja -o ustawia nazw pliku wykonywalnego. Je±li chcemy skompilowa program z dodatkowymi optymalizacjami kodu maszynowego, mo»na u»y polecenia: $ c++ -Wall -Wshadow -O2 \ -fomit-frame-pointer -o zad1 zad1.cpp Je±li chcemy podzieli dªugie polecenie na kilka linii to umieszczamy znak \ na ko«cu ka»dej linii, oprócz ostatniej. W tym miejscu warto powiedzie,»e kolejnym udogodnieniem Linuksowej linii polece«jest mo»liwo± szybkiego przywoªania wcze±niej wykonanych polece«przy pomocy wciskania na 2

klawiaturze strzaªki w gór. Przywoªane polecenie mo»na przed u»yciem dodatkowo zmody- kowa. 5 Testowanie Skompilowany plik wykonywalny zad1 uruchamia si w nast puj cy sposób: $./zad1 Je±li nasz program próbuje co± czyta ze standardowego wej±cia, zatrzyma si w oczekiwaniu na dane zaraz po uruchomieniu. Mo»na wtedy po prostu r cznie wpisa odpowiednie dane. Koniec pliku uzyskuje si przez naci±ni cie Ctrl-D. Gdy chcemy bezzwªocznie zako«czy aktualnie wykonywany program, u»ywamy kombinacji Ctrl-C. Je±li proces wyª czyª mo»liwo± zako«- czenia w taki sposób, trzeba uzyska dost p do innego terminala, znale¹ numer procesu przy pomocy polecenia ps lub ps aux (druga wersja daje wi cej informacji) i zako«czy proces poleceniem: $ kill -9 numer_procesu Najcz ±ciej mo»na zako«czy proces du»o pro- ±ciej: $ killall -9 mc To zako«czy wszystkie procesu u»ytkownika, których pliki binarne miaªy nazw mc (mc - Midnight Commander to bardzo intuicyjny, najcz ±ciej u»ywany tekstowy menad»er plików w Linuksie). Natomiast polecenie killall mc jest równowa»ne z prób zako«czenia wszystkich procesów u»ytkownika o nazwie mc przy pomocy kombinacji Ctrl-C. Je±li dane dla naszego programu zajmuj tylko jedn linijk, mo»na je poda tak»e w taki sposób: $ echo "1 2 3 4"./zad1 U»yªem tu jednej z najprzydatniejszych funkcji linii polece«, czyli potoków. Je±li napiszemy kilka polece«oddzielonych znakami to standardowe wyj±cie pierwszego polecenia zostanie poª czone ze standardowym wej±ciem drugiego polecenia itd. Czyli je±li chcemy np. policzy ile jest w aktualnym katalogu plików z liter x w nazwie, piszemy: $ ls grep x wc -l Taki sam efekt jaki daje ostatnie polecenie, mo»na uzyska przy pomocy mechanizmu wzorców: $ ls *x* wc -l Je±li w argumencie u»yjemy znaku *, to jest on rozwijany do listy plików w aktualnym katalogu, których nazw da si uzyska przez zast pienie ka»dej * we wzorcu przez pewien ci g znaków. Mo»na tak»e uruchomi program podaj c mu na wej±ciu zawarto± jakiego± pliku: $ cat in./zad1 Jeszcze krócej mo»na to zrobi w taki sposób: $./zad1 < in Taki zapis powoduje,»e nie s uruchamiane»adne dodatkowe programy i standardowe wej- ±cie naszego programu jest poª czone bezpo±rednio z danym plikiem. Wiemy ju» du»o o sterowaniu wej±ciem, ale nie zajmowali±my si do tej pory wyj±ciem programu. Normalnie program wypisuje wszystkie dane na ekran. Je±li wypisaª wi cej linii ni» posiada nasz terminal, dane, które zd»yªy uciec przez górn kraw d¹ terminala, mo»na dzi ki kombinacji Shift-PgUp. Mo»emy te» zapisa dane wypisywane przez program do pliku (w naszym przypadku do out), aby móc si im dokªadniej przyjrze w edytorze i ewentualnie dalej przetwarza : $./zad1 < in > out Je±li nie chcemy kasowa zawarto±ci pliku out tylko dopisa dane na ko«cu, musimy u»y innego operatora przekierowania wyj±cia: $./zad1 < in >> out Mo»na te» zapisa dodatkowo do pliku standardowe wyj±cie diagnostyczne programu (stderr): $./zad1 < in > out 2> err Je±li chcemy mierzy wydajno± programu, na pewno wa»na jest mo»liwo± mierzenia czasu jego wykonania: $ time./zad1 < in > out Po wykonaniu maªych testów poprawno±ciowych warto te» przetestowa program na wi kszych danych. Przydaj si wtedy ró»ne generatory testów. Podczas testowania, szczególnie kiedy powstaj du»e pliki wynikowe, czasami pojawia si konieczno± porównania dwóch plików. Mo»na to zrobi przy pomocy polecenia cmp: 3

$ cmp plik1 plik2 Je±li chcemy dosta dokªadniejsze dane o tym, w których miejscach pliki ró»ni si, lepiej jest u»y : $ diff plik1 plik2 Je±li podczas testowania okazaªo si,»e program nie dziaªa zgodnie z naszymi oczekiwaniami, trzeba jak najszybciej znale¹ i poprawi bª d. S dwie szkoªy debugowania. Pierwsza metoda nie potrzebuje debugera i polega modykowaniu programu w celu znalezienia bª dów, a dokªadniej, dodawaniu instrukcji które sprawdzaj poprawno± oblicze«i spójno± struktur danych oraz wypisuj dodatkowe informacje o tym co dzieje si w trakcie oblicze«. Mo»na np. doda instrukcje, które b d wypisywa stan wybranych zmiennych, w wybranych momentach wykonania programu: int a[3][3],x; (...) printf("x=%d\n",x); for (int i=0;i<3;i++) { for (int j=0;j<3;j++) printf("%3d",a[i][j]); printf("\n"); } Mo»na te» doda kod, który b dzie testowaª, czy zmienne i struktury danych speªniaj okre±lone warunki i wypisywaª komunikaty je±li co± idzie nie tak: if (x<0) { printf("bª d: x=%d\n",x); exit(1); } Mo»na te» to zrobi z u»yciem biblioteki assert.h: #include <assert.h> (...) assert(x>=0); W tym przypadku, je±li warunek nie zostanie speªniony, program zatrzyma si i wypisze numer linijki w której asercja nie zostaªa speªniona. Druga metoda debugowania wymaga u»ycia debugera. Standardowym debugerem pod Linuksem jest gdb. Je±li zamierzamy u»ywa gdb, kod binarny naszego programu musi zawiera dodatkowe informacje. Odpowiedni kod binarny uzyskuje si przez przekompilowanie programu z opcj -g: $ c++ -g -o zad1 zad1.cpp Przy pomocy gdb mo»na te» debugowa odpowiednio skompilowane programy w Pascalu: $ fpc -g zad1.pas Uruchamiamy gdb i ªadujemy nasz plik binarny: $ gdb zad1 Po uruchomieniu gdb znajdziemy si w linii polece«debugera. Mo»emy od razu przegl da kod programu przy pomocy polecenia list lub w skrócie l. Je±li chcemy zobaczy fragment programu otaczaj cy wybran lini wystarczy wpisa : (gdb) l N gdzie N to numer linii programu. Mo»emy tak»e wy±wietli tre± dowolnej funkcji: (gdb) l nazwa_funkcji Aby wystartowa nasz program, trzeba u»y polecenia run (lub r). Bez dodatkowych ustawie«program wykona si do ko«ca zatrzymuj c si tylko w oczekiwaniu na dane. Przy uruchamianiu mo»na od razu przekierowa zawarto± dowolnego pliku na standardowe wej±cie naszego programu: (gdb) r < in Je±li chcemy mie mo»liwo± wykonywania programu linijka po linijce, konieczne jest ustawienie tzw. punktów zatrzymania (breakpoint). Aby ustawi punkt zatrzymania trzeba u»y polecenia break lub w skrócie b: (gdb) b N Mo»na ustawi kilka punktów zatrzymania, nie tylko zwi zanych z konkretnych liniami programu, ale tak»e z wywoªaniami wybranych funkcji: (gdb) b moja_funkcja Je±li chcemy zatrzyma nasz program od razu po uruchomieniu, piszemy: (gdb) b main 4

To samo dotyczy programów w Pascalu. Po ustawieniu punktów zatrzymania, uruchamiamy nasz program i czekamy na jego zatrzymanie. Je±li zatrzymaª si na punkcie zatrzymania, na ekranie zostanie wy±wietlona linia, która ma by za chwil wykonana. Aby j wykona i przej± do kolejnej linii, u»ywamy polecenia next (albo n). Aby powtórzy ostatnio wykonane polecenie nie musimy go wpisywa. Wystarczy wcisn Enter. Debuger powtórzy wtedy ostatnio u»yte polecenie. W celu kontynuacji do kolejnego punktu zatrzymania, u»ywamy polecenia continue (lub c). Gdy w linii, która ma si wykona jest wywo- ªanie funkcji i chcemy prze±ledzi dokªadnie to wywoªanie, trzeba zamiast next u»y polecenia step (lub s). W trybie pracy krok po kroku mo»na ogl - da aktualne warto±ci zmiennych, w tym tablic i napisów. Robi si to przy pomocy polecenia print (lub p): (gdb) p x Dodatkowo mo»na ustawia punkty obserwacyjne (watchpoint), przy pomocy polecenia watch (lub w). Powoduj one wypisanie stosownej informacji przy ka»dej zmianie obserwowanej zmiennej. Da si nawet zmienia warto±ci zmiennych i wywoªywa funkcje (polecenia set i call)! Wi cej informacji o mo»liwo±ciach gdb mo»na uzyska po wej±ciu do tego programu i wpisaniu polecenia help. 6 Automatyzacja pracy W pierwszej kolejno±ci warto usprawni kompilacj. Podstawowa metoda polega na utworzeniu odpowiedniego pliku Makefile: all: zad1 zad1: zad1.cpp c++ -g -Wall -Wshadow \ -o zad1 zad1.cpp Stworzony plik jest u»ywany przez program make, który sªu»y do automatyzacji procesu kompilacji. Wystarczy teraz wpisa : $ make Program make sprawdzi, czy kod binarny jest aktualny w stosunku do kodu ¹ródªowego. Je±li nie jest aktualny, przekompiluje program. W Makefile mo»na doda te» funkcje odpowiedzialne za testowanie: t: zad1 time./zad1 < in tee out Teraz mo»emy wywoªa polecenie: $ make t Wywoªanie takiego polecenia uaktualnia w razie potrzeby kod binarny naszego programu, a potem wykonuje go podaj c na wej±ciu zawarto± pliku in i zapisuj c wyj±cie programu do pliku out oraz na ekran. Testowanie mo»na tak»e zautomatyzowa wykorzystuj c elementy programowania interpreterze linii polece«bash. Po napisaniu poni»szego polecenia zostan znalezione wszystkie pliki w aktualnym katalogu roboczym, których nazwy ko«cz si znakami.in. Nast pnie nasz program zostanie wykonany kilka razy, za ka»dym razem dostaj c na wej±ciu kolejny plik. Wyniki wykona«programu znajd si w plikach o nazwach takich jakie miaªy pliki wej±ciowe, tylko z rozszerzeniami zmienionymi z.in na.out: $ for f in *.in; do \./zad1 < $f > `basename $f.in`.out \ echo "Bª d: $f"; done Wi ksze polecenia warto zapisa sobie w plikach (skryptach): #!/bin/bash for f in *.in do./zad1 < $f > `basename $f.in`.out \ echo "Bª d: $f" done Po utworzeniu skryptu trzeba mu jeszcze nada uprawnienie do wykonania: $ chmod +x testy Tak przygotowany skrypt jest gotowy do u»ycia: $./testy W skryptach mo»na te» u»ywa p tli w stylu j zyka C: #!/bin/bash for ((i=0;i<10;i++)) do echo $i./zad1 done 5

Linuksowej linii polece«mo»na tak»e u»ywa jako prostego kalkulatora: $ echo $((2+(3*7))) 23 W wi kszo±ci dystrybucji Linuksa standardowo jest dost pny kalkulator o sporych mo»liwo- ±ciach. Chodzi mianowicie o program bc. Pozwala on na obliczenia na liczbach caªkowitych o dziesi tkach tysi cy cyfr oraz konwersj mi dzy systemami liczbowymi o ró»nych podstawach. Oto przykªadowe u»ycie bc: $ echo "2^100" bc 1267650600228229401496703205376 6