Laboratorium 1 - Edytor Emacs, kompilator języka C

Zakres materiału

Uruchomienie edytora Emacs, podstawy edycji plików, zakończenie pracy z edytorem. Konfiguracja Emacsa, zaawansowane komendy edycyjne. Praca z kompilatorem języka C, usuwanie błędów z programów (program na miejsca zerowe trójmianu kwadratowego). Instrukcja warunkowa (if).

Przygotowanie do zajęć

Przed przystąpieniem do zajęć przygotuj: Podczas wykonywania ćwiczenia niezbędne będą umiejętności pracy w systemie UNIX nabyte na ostatnich zajęciach. Warto przećwiczyć korzystanie z podstawowych komend raz jeszcze!

Informacje wprowadzające

W systemach UNIX oraz GNU/Linux większość zadań wykonuje się na plikach tekstowych. Z tego powodu nabycie umiejętności posługiwania się dobrym edytorem tekstu jest niezbędne. Równocześnie, w samym procesie pisania programów, drugim podstawowym narzędziem staje się kompilator. Nic dziwnego więc, że nauka obu, po opanowaniu użytkowania systemu operacyjnego, rozpoczyna kurs Podstaw programowania.

Praca z edytorem Emacs

Poniższa tabela zawiera często używane skróty klawiszowe, przydatne przy pracy z edytorem Emacs. Skrót C- oznacza równoczesne użycia klawisza Control z podanym znakiem, zaś M- - lewego klawisza Alt ze znakiem (lub najpierw klawisza ESC, a następnie podanego znaku).


Skrót Operacja Skrót Operacja
M-x wywołaj polecenie M-x shell wywołaj polecenie powłoki
C-_ cofnij M-> przejdź na koniec bufora
C-g anuluj operację M-< przejdź na początek bufora
C-x C-f otwórz/utwórz plik M-g g przejdź do linii
C-x C-w zapisz bufor jako... M-% znajdź i zamień
C-x C-s zapisz bufor C-a przejdź na początek linii
C-x C-c zamknij edytor C-e przejdź na koniec linii
C-x k zamknij bufor C-f przesuń kursor w lewo
C-x b zmień bufor C-b przesuń kursor w prawo
C-x C-b lista buforów C-n przejdź do następnej linii
C-SPACE ustaw znacznik C-p przejdź do poprzedniej linii
C-w wytnij zaznaczone C-x h zaznacz cały bufor
C-y wklej M-l zamień na małe litery
M-w kopiuj zaznaczone M-u zamień na duże litery
M-y wklej kolejne z 'kill ring' M-c pierwsza litera duża
C-k wytnij do końca linii C-t zamień znaki miejscami
C-s wyszukaj do przodu M-t zamień słowa miejscami
C-r wyszukaj do tyłu C-x r k wytnij prostokąt
C-x 1 jedno okno C-x r y wklej prostokąt
C-x 2 podziel okno w poziomie C-x r o wstaw pusty prostokąt
C-x 3 podziel okno w pionie C-x - zmniejsz czcionkę
C-x o zmień okno C-x + powiększ czcionkę

W materiałach dodatkowych do tego ćwiczenia znajdziesz przykładowy plik konfiguracyjny edytora Emacs. Podczas zajęć prowadzący wyjaśni w jaki sposób go wykorzystać i jakie są jego najważniejsze elementy składowe, co zapewne pozwoli Ci w znacznym stopniu samodzielnie dopasować edytor do własnych potrzeb.

Do opisu tego ćwiczenia laboratoryjnego dołączony jest plik, na którym będziesz mógł przećwiczyć działanie poznanych komend. Na pliku należy wykonać następujące operacje:

  1. Posortuj plik według pierwszej kolumny.
  2. Zamień wszystkie wystąpienia 'Green Note' na 'Blue Note'.
  3. Usuń kolumnę 'Cat nr'.
  4. Zamień miejscami kolumny 'A-side' i 'B-side'
  5. Przekształć plik do postaci:
     Year &  A-side                &  B-side             &  Label    \\ \hline    
     1947 &  Milestones            &  Sippin' at Bell's  &  Savoy    \\ \hline 
     1947 &  Goin' to Mintons      &  Half Nelson        &  Savoy    \\ \hline 
     1948 &  Little Willie Leaps   &  Half Nelson        &  Savoy    \\ \hline 
     1949 &  Jeru                  &  Godchild           &  Capitol  \\ \hline 
     1949 &  Move                  &  Budo               &  Capitol  \\ \hline
      ..  &   ..                   &   ..                &   ..      \\ \hline
    

Praca z kompilatorem języka C

Do dyspozycji studentów dostarczone są dwa kompilatory języka C na komputerze diablo (Sun C w wersji 5.12 SunOS_sparc oraz GNU CC w wersji 4.9.0, uruchamiane odpowiednio poleceniami cc oraz gcc) oraz jeden na komputerze panamint (GNU CC w wersji 4.9.2 - gcc). Poniższe przykłady pokazują działania na komputerze diablo w oparciu o kompilator Sun C.

Niech w pliku o nazwie prog.c znajduje się kod naszego programu

[john_doe@diablo:~]$ cat prog.c -n                 <- wyswietla zawartosc pliku numerujac linie
     1	#include<stdio.h>
     2	
     3	int main(){
     4	  
     5	  printf("Napis do wyswietlania\n")
     6	    
     7	  return 1;
     8	}

Kompilację takiego programu wykonujemy wpisując polecenie

[john_doe@diablo:~]$ cc prog.c
prog.c: In function 'main':
prog.c:7: error: expected ';' before 'return'
Niestety jak widzimy kompilacja nie powiodła się - program zawiera błędy. Kompilator udziela nam następujących informacji: Linia siódma wydaje się nie zawierać błędów (konstrukcja return 1; jest w porządku), natomiast korzystając ze wskazówki kompilatora łatwo zauważyć, że rzeczywiście (w linii piątej) brakuje średnika przed słowem kluczowym return. Poprawienie błędu skutkuje poprawną kompilacją i działaniem kodu.

[john_doe@diablo:~]$ cat prog.c -n 
     1	#include<stdio.h>
     2	
     3	int main(){
     4	  
     5	  printf("Napis do wyswietlania\n");    // dodano srednik
     6	    
     7	  return 0;
     8	}
[john_doe@diablo:~]$ cc prog.c
[john_doe@diablo:~]$ ./a.out 
Napis do wyswietlania
[john_doe@diablo:~]$

Aby zapoznać się ze standardowymi odpowiedziami kompilatora, spróbujmy przeanalizować parę błędów celowo wprowadzaonych do poprzedniego programu.

Przebieg ćwiczenia

Sprawozdanie

Sprawozdanie powinno zawierać:

Spis literatury

1
D. Cameron, GNU Emacs: Leksykon kieszonkowy, Helion, 2002.

2
D. Cameron, Learning GNU Emacs, O'Reilly Media , 2005.

3
G. Glass, K. Ables, Linux dla programistów i użytkowników, Helion, 2007, (rozdziały 3 ,,Narzędzia GNU dla zwykłych użytkowników'' oraz 11 ,,Programowanie w C'' mogą być pomocne przy samodzielnym ćwiczeniu dużej części zaprezentowanego materiału).

4
B.W. Kernighan, D.M. Ritchie, Język ANSI C, WNT, 2004.

5
A. Robbins Edytory vi i Vim: Leksykon kieszonkowy, Helion, 2012.

About this document ...

This document was generated using the LaTeX2HTML translator Version 2008 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -html_version 3.2,latin2,unicode -split 0 -no_navigation PProg_lab_01

The translation was initiated by Robert Muszynski on 2016-10-07


Robert Muszynski 2016-10-07