Aby pracować podczas programowania efektywnie, warto zdawać sobie sprawę z etapów takiej pracy i wykonywanych w jej trakcie czynności. By bez problemu realizować zadania, warto odpowiednio się do tego przygotować. Poniżej przedstawiono jak rzecz wygląda w typowych sytuacjach związanych z laboratorium Podstaw programowania. Oczywiście opisany sposób postępowanie nie jest jedynym możliwym a jedynie przykładowym, aczkolwiek wydaje się, że skutecznym sposobem pracy.
Do każdych zajęć wymagane jest przygotowanie. Należy zapoznać się z wszystkimi materiałami wskazanymi w pierwszej części opisu zadania, przygotować/przetestować wskazane programy / ich fragmenty. Wygodnie jest to zrobić na swoim lokalnym komputerze działającym pod nadzorem Linuksa. By mieć dostęp w trakcie laboratorium do przygotowanych w ten sposób programów umieść je w repozytorium (https://git.kcir.pwr.edu.pl lub swoim ulubionym). Alternatywnie skopiuj je na serwer diablo/panamint. Najwygodniej to zrobić z poziomu wykorzystanego do przygotowania komputera działającego pod nadzorem Linuksa wydając polecenie
jasiek@moj_komputer:~$ scp mojprog1.c mojprog2.c innyprog.c user@diablo.kcir.pwr.edu.pl:Programy Password: mojprog1.c 100% 87 0.3KB/s 00:00 mojprog2.c 100% 92 0.1KB/s 00:00 innyprog.c 100% 44 0.1KB/s 00:00
co skopiuje wskazane pliki na komputer diablo (tudzież panamint, jako że komputery te mają wspólny system plików) do katalogu Programy (takowy na diablo musi istnieć – jeśli go tam nie ma możesz zalogować się na diablo: ssh user@diablo.kcir.pwr.edu.pl i utworzyć go: mkdir Programy). Z poziomu innych
systemów operacyjnych należy w tym celu wykorzystać jakiś program
potrafiący obsługiwać protokół scp (WinSCP,
PSCP z programu PuTTY).
Pamiętaj, by po umieszczeniu programów na diablo sprawdzić, czy one tam są, czy się tam kompilują i działają zgodnie z Twoimi oczekiwaniami.
X/Y (w poniższych przykładach zakładamy, że lokalny komputer w laboratorium to kajko314 – zauważ, że dokładnie w ten sam sposób co na laboratorium możesz pracować z własnego komputera działającego pod nadzorem Linuksa, każdy z trzech terminali możesz umieścić na osobnym pulpicie, w ten sposób będziesz miał pulpit do pracy lokalnej, do pracy na diablo i do pracy na panamincie)
john@kajko314:~$ ssh diablo -X # w terminalu 2. john@kajko314:~$ ssh panamint -X # w terminalu 3.
-o, tak aby każdy program wykonywalny był zapisany we wskazanym pliku
[john@kajko314:~]$ ls wartosci.c [john@kajko314:~]$ gcc -std=c99 -pedantic -Wall -o wartosci wartosci.c [john@panamint:~]$ gcc -std=c99 -pedantic -Wall -o wartosci_panamint wartosci.c [john@diablo:~]$ cc -xc99 -Xc -o wartosci_diablo wartosci.c [john@kajko314:~]$ ls wartosci wartosci_diablo wartosci_panamint wartosci.cPlik źródłowy można edytować lokalnie przy użyciu ulubionego edytora (
VS Code, emacs, CLion), najlepiej uruchomionego w tle przez cały okres pracy
[john@kajko314:~]$ cube wartosci.c &
Proces programowania wymaga cyklicznego powtarzania kilku czynności. By robić to sprawnie warto:
[john@kajko314:~]$ cp wartosci.c super_prog.c
[john@kajko314:~]$ code super_prog.c &
C-x C-s ;) a następnie
(bez kończenia pracy edytora!) dokonać kompilacji programu w oknie
terminala (pamiętaj, by podczas kompilowania kodu korzystać z opcji
ścisłego przestrzegania standardu ANSI C oraz dodatkowych
ostrzeżeń): kompilatorem Sun C (dostępnym tylko na diablo)
[john@diablo:~]$ cc -xc99 -Xc -o super_prog_diablo super_prog.club GNU C (dostępnym na diablo/panamincie/lokalnie – co zostaje wywołane na panaminicie/lokalnie po wydaniu polecenie
cc?)
[john@pdiablo:~]$ gcc -std=c99 -pedantic -Wall -o super_prog super_prog.cCzęstsze kompilowanie mniejszych przyrostów kodu źródłowego pozwala uniknąć nagromadzenia błędów i znacznie usprawnia proces ich usuwania z programu. Zauważ, że wcześniej wywoływane w terminalu polecenia możesz łatwo przywoływać używając klawisza strzałki w górę lub opcji przeszukiwania historii poleceń (
C-r).
[john@diablo:~]$ ./super_progi sprawdzić poprawność działania – to, że udało się skompilować program źródłowy nie oznacza, że działa on już poprawnie (błędy kompilacji vs. błedy wykonania). Aby przetestować swój program, uruchamiaj go wiele razy z różnymi danymi wejściowymi – zarówno typowymi, poprawnymi, jak i błędnymi – i sprawdzaj, czy wyniki są zgodne z oczekiwaniami. Warto też sprawdzać, jak program zachowuje się w nietypowych sytuacjach, np. przy pustych danych lub bardzo dużych liczbach. Dzięki temu można łatwiej zauważyć błędy w logice działania programu.
[john@diablo:~]$ exit logout Connection to diablo.kcir.pwr.edu.pl closed. john@kajko314:~$i wyloguj się z lokalnej stacji roboczej.
Jeżeli posiadasz dostęp do systemu GNU/Linux (OS, maszyna wirtualna, Live USB), to wygodnie jest najpierw pracować nad programem lokalnie na własnym komputerze, a dopiero później, po jego uruchomieniu, przenieść jego źródła na serwer diablo/panamint – i tam, zdalnie, upewnić się co do jego poprawności lub/i nanieść wymagane poprawki. I tak:
jasiek@moj_komputer:~$ scp user@diablo.kcir.pwr.edu.pl:plik_zrodel.c ~/ Password: plik_zrodel.c 100% 47 0.1KB/s 00:00
VS Code, emacs, by dalej je rozwijać. Większość dystrybucji Linuksa ma domyślnie zainstalowany darmowy kompilator języka C, GNU C. Przy kompilacji należy dodawać odpowiednie flagi
jasiek@moj_komputer:~$ gcc -std=c99 -pedantic -Wall -o prog plik_zrodel.c
jasiek@moj_komputer:~$ scp plik_zrodel.c user@diablo.kcir.pwr.edu.pl: Password: plik_zrodel.c 100% 47 0.1KB/s 00:00
jasiek@moj_komputer:~$ ssh user@diablo.kcir.pwr.edu.pl Password: Last user: Fri Apr 13 08:37:51 2012 from 176.42.241.76.i Sun Microsystems Inc. SunOS 5.10 SUNW,Sun-Fire-880 user@diablo:~$ cc -xc99 -Xc -o prog plik_zrodel.c user@diablo:~$ ./progPamiętaj, że program, który wydaje się działać poprawnie na twoim lokalnym komputerze wcale nie musi działać poprawnie w ogólności, w tym na serwerze diablo! Dlatego ważnym jest, aby dokładnie go przetestować. Jeśli będziesz miał potrzebę dokonania poprawek w pliku na zdalnym komputerze i zalogowałeś się na nim jak powyżej bez przekazywania sesji graficznej (brak opcji
X/Y) to musisz uruchomić edytor w pierwszym planie (bez umieszczania na końcu polecenia znaku & – edytor musi potrafić działać w trybie terminalowym). Jeśli masz dostęp do szybkiej sieci komputerowej możesz logować się w trybie graficznym (z opcją X/Y). Nie poleca się jednakże tego trybu pracy, jeżeli sieć lokalna jest powolna – występują wtedy znaczne opóźnienia w przesyle danych, czy nawet zrywanie połączenia, co utrudnia komfortową pracę nad programem. Przy pracy w takich niekorzystnych warunkach nieocenioną pomocą może być program tmux lub GNU Screen (w przypadku pierwszego z nich po zerwaniu połączenia wystarczy zalogować się ponownie na zdalnym komputerze i wydać polecenie tmux attach by przywołać stan tuż sprzed zerwania).
Jeżeli nie posiadasz w domu dostępu do systemu GNU/Linux, zainstaluj na komputerze aplikację pozwalającą na łączenie się z serwerem za pomocą protokołu SSH – dla systemu Windows wygodnym narzędziem jest np. program PuTTY (http://www.putty.org/). Zaleca się również zainstalowanie wygodnej aplikacji do bezpiecznego przesyłania plików pomiędzy lokalnym i zdalnym komputerem, np. WinSCP (https://winscp.net/).
[john@panamint:~]$ gcc -std=c99 -pedantic -Wall -o prog_panamint prog.c
curses, dla których na każdym z systemów należy załączyć inny plik nagłówkowy: na diablo
#include <curses.h>na panamincie
#include <ncurses.h>Kiedy jednak program wykorzystuje komunikację międzyprocesową (IPC), musi zostać napisany specjalnie pod jeden z komputerów, gdyż oba systemy realizują IPC w inny sposób. W takiej sytuacji poleca się korzystanie z serwera panamint, gdyż można na nim kompilować programy napisane w domu na własnym Linuksie.
panamint pod
nazwą gcc lub cc (jako dowiązanie do programu gcc) oraz na komputerze diablo pod nazwą gcc. Przykładowe wywołanie
[john@panamint:~]$ gcc prog.c
diablo (Solaris) pod nazwą cc. Przykładowe wywołanie
[john@diablo:~]$ cc prog.c
nazwa,
.o,
bib (z katalogu /usr/lib/ lub innych, zdefiniowanych w ścieżce przeszukiwania linkera),
n (domyślnie poziom 2),
This document was generated using the LaTeX2HTML translator Version 2021.2 (Released July 1, 2021)
The command line arguments were:
latex2html -html_version 3.2,latin2,unicode -split 0 -no_navigation dodatek_praca_codzienna
The translation was initiated on 2025-10-18