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.
Praktycznie w każdym ćwiczeniu wymagane jest samodzielne przygotowanie krótkich programów. Pamiętaj, by po ich opracowaniu i przetestowaniu umieścić je na serwerze diablo/panamint celem wykorzystania na zajęciach. Najwygodniej jest to zrobić z poziomu wykorzystanego do przygotowań komputera działającego pod nadzorem Linuksa wydając polecenie
jasiek@moj_komputer:~$ scp wartosci.c temp.c param.c user@diablo.kcir.pwr.edu.pl:Programy Password: wartosci.c 100% 87 0.3KB/s 00:00 temp.c 100% 92 0.1KB/s 00:00 param.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ć). 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
). Można też w ostateczności
przynieść program ze sobą na pendrive'ie i skopiować go korzystając
z komputerów w laboratorium.
Pamiętaj, by po umieszczeniu programów na diablo sprawdzić, czy kompilują się one tam i działają poprawnie.
By sprawnie przedstawić prowadzącemu własne programy warto się do tego odpowiednio przygotować. I tak:
X
/Y
)
john@melasia314:~$ ssh user@diablo.kcir.pwr.edu.pl -X
-o
, tak aby każdy program był zapisany w oddzielnym pliku
wykonywalnym
[john@diablo:~]$ ls wartosci.c temp.c param.c [john@diablo:~]$ cc -Xc -o wartosci wartosci.c [john@diablo:~]$ cc -Xc -o temp temp.c [john@diablo:~]$ cc -Xc -o param param.c [john@diablo:~]$ ls wartosci wartosci.c temp temp.c param param.c
emacs
czy VS Code
, plik/pliki zawierające kod źródłowy przygotowanych programów
[john@diablo:~]$ emacs wartosci.c temp.c param.c &
Jeżeli połączenie nie przekazuje sesji graficznej (jest zestawione
bez opcji X
/Y
), otwórz dodatkowe okno terminala i
połącz się w nim z serwerem
diablo/panamint. Wtedy w jednym z otwartych
okien uruchom edytor z plikami źródłowymi, a w drugim przeprowadź
ich kompilację. W tym przypadku edytor powinien być wywołany
w pierwszym planie (bez operatora &
), jako że wywołujemy go w
wersji tekstowej. Do przełączania pomiędzy wczytanymi w nim buforami
(plikami) służy komenda Ctrl-x b
.
Proces programowania wymaga cyklicznego powtarzania kilku czynności. By robić to sprawnie warto:
[john@diablo:~]$ cp param.c przec_zera.c
emacs
,
i wczytać do niego opracowywany plik (najłatwiej podając jego nazwę
jako argument wywołania edytora)
[john@diablo:~]$ emacs przec_zera.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 -Xc -o przec_zera przec_zera.club GNU C (dostępnym na diablo/panamincie/lokalnie – co zostaje wywołane na panaminicie/lokalnie po wydaniu polecenie
cc
?)
[john@pdiablo:~]$ gcc -pedantic -Wall -o przec_zera przec_zera.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 polecenia możesz łatwo przywoływać używając klawisza strzałki w górę lub opcji przeszukiwania historii poleceń (
C-r
).
[john@diablo:~]$ ./przec_zerai 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).
[john@diablo:~]$ exit logout Connection to diablo.kcir.pwr.edu.pl closed. john@melasia314:~$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
emacs
, VS Code
, 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 -Wall -pedantic -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 -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ć przed jego oddaniem. 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 &
).
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/).
Oczywiście w obu opisanych powyżej przypadkach (z poziomu systemu GNU/Linux, innego – tutaj po zainstalowaniu odpowiedniego serwera XWindow) istnieje możliwość zdalnej pracy nad programem bezpośrednio na serwerach diablo/panamint w trybie z przekazywaniem sesji graficznej (opcja X
/Y
). Nie poleca się jednakże tego trybu pracy, jeżeli komputer lokalny znajduje się poza siecią wewnętrzną Politechniki Wrocławskiej – występują wtedy znaczne opóźnienia w przesyle danych, czy nawet zrywanie połączenia, co utrudnia komfortową pracę nad programem.
[john@panamint:~]$ gcc -Wall -pedantic -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,unicode -split 0 -no_navigation dodatek_praca_codzienna
The translation was initiated on 2024-10-25