PO2024: Wejściówka na Lab.3

Zadeklaruj strukturalny typ danych, który będzie zawierał dwa pola: napis oraz liczba całkowita. W funkcji main zadeklaruj lokalną tablicę o niewielkiej długości (np. 5), zawierającą elementy typu takiego, jak zdefiniowana wcześniej struktura.

Następnie napisz funkcję, która jako argument wywołania przyjmuje tę tablicę. Kod funkcji sprawdza, czy w każdej z komórek tablicy pole liczbowe nie zawiera wartości mniejszej (ale dodatniej) od długości napisu przechowywanego w drugim polu. Jeżeli tak, skraca napis do długości takiej, jak wartość w polu liczbowym. W przeciwnym przypadku pozostawia napis niezmieniony. Takie sprawdzenie i skracanie wykonuje się dla wszystkich komórek tablicy. Po przejrzeniu całej tablicy funkcja zwraca liczbę skróceń, jakie rzeczywiście zostały wykonane.

Napisz w funkcji main kod, który pozwala użytkownikowi wprowadzić wartości do obydwu pól w każdej z komórek tej tablicy. W main, poniżej kodu wprowadzającego dane umieść wywołanie funkcji skracającej napisy w tablicy, przy czym argumentem wywołania jest tablica, do której dane zostały właśnie przez użytkownika wprowadzone. Na koniec dopisz kod wyświetlający nową zawartość tablicy (w kolejnych wierszach pary: liczba i napis) oraz zwróconą przez funkcję liczbę faktycznie wykonanych skróceń.

Kod przetestowanego, działającego programu załaduj do https://e.uksw.edu.pl jako rozwiązanie zadania „Wejściówka” w sekcji „Temat 3”, tak aby na początku zajęć można go było szybko pobrać, skompilować i zademonstrować działanie.

ZTP2023: Wyniki z egzaminu w terminie drugim

Lista ocen osób, które uczestniczyły w egzaminie w drugim terminie. Wiersze zawierają: trzy ostatnie cyfry nr indeksu, liczbę zdobytych punktów i proponowaną ocenę.

  1. ***235   12+ ε   3
  2. ***274   12.5   3
  3. ***327   0   2
  4. ***466   14   3
  5. ***475   12+ ε   3
  6. ***478   12+ ε   3
  7. ***482   9   2
  8. ***526   4   2
  9. ***531   10   2
  10. ***536   6   2
  11. ***587   9.5   2
  12. ***595   12.5   3
  13. ***807   8   2
  14. ***867   10   2
  15. ***986   5   2

W razie niejasności, proszę o kontakt mailowy.

Prace będą do wglądu w poniedziałek (26 lutego), w godz. 11:15-12:00 (lub do ostatniej zainteresowanej osoby) w pok. 1247, bud. 12.

PO2024: tworzenie nowego programu

W pracowniach komputerowych na stanowiskach zainstalowany jest Visual Studio Enterprise 2017. Jest to starsza, ale nadal wspierana wersja środowiska programistycznego. Wersje instalacyjne starszych wersji są do pobrania tutaj: https://visualstudio.microsoft.com/pl/vs/older-downloads/

Pobranie wymaga zalogowania się.

Kody programów napisanych w nowszej, np. aktualnej wersji środowiska kompilują się w Visual Studio Enterprise 2017, jeżeli nie korzystają z konstrukcji języka C++ nie obsługiwanych przez VS2017. Przy czym program zajęć lab. nie przewiduje korzystania z takich konstrukcji składniowych.

Aby rozpocząć pisanie programu należy uruchomić środowisko VS i utworzyć nowy projekt. Poniżej są opisane dwie możliwości postępowania – do wyboru.

Postępowanie #1:
Nowy projekt typu „Pusty projekt”

Pusty projekt

Zostanie utworzony projekt nie zawierający żadnych plików:

Pusty projekt

1.1 Do tak utworzonego projektu możemy dodać pierwszy plik, w którym zamierzamy umieścić kod naszego programu. Można to zrobić klikając prawym klawiszem myszki na „Pliki źródłowe” w okienku prezentującym projekt, a następnie „Dodaj” i „nowy element”:

Dodaj nowy element

W otwartym oknie należy wybrać „Plik C++”. Utworzony zostanie plik z rozszerzeniem 'cpp’, który będzie traktowany przez kompilator jako plik zawierający kod napisany w C++.

1.2. Jeżeli mamy już wcześniej przygotowany plik z kodem źródłowym, np. z rozwiązaniem Wejściówki, albo utworzyliśmy w innym edytorze (lub ręcznie) plik z rozszerzeniem 'c’ lub 'cpp’, i chcemy go dołączyć do tak utworzonego projektu, należy kliknąć prawym klawiszem myszki na „Pliki źródłowe” w okienku prezentującym projekt, a następnie „Dodaj” i „istniejący element”, po czym znaleźć właściwy plik i wskazać go do dołączenia do projektu:

Dodaj istniejący element

Dobrze jest wcześniej, tzn. przed dołączeniem, umieścić już przygotowany plik we właściwym folderze. To ułatwi jego dołączenie do projektu. Aby szybko znaleźć ten folder, należy kliknąć prawym klawiszem myszki na nazwę projektu w okienku prezentującym projekt (np. na „Project1”) i wybrać opcję „Otwórz folder w eksploratorze plików”:

Folder projektu

Zostanie otwarte okno Eksploratora plików prezentujące folder, gdzie powinien trafić plik.

Postępowanie #2:
Nowy projekt typu „Aplikacja konsolowa systemu Windows”

Aplikacja konsolowa

Wybierając tę opcję, zostanie utworzony projekt zawierający cztery pliki:

Projekt aplikacja konsolowa

W załączonym przykładzie miejscem, gdzie należy pisać kod programu, jest plik „ConsoleApplication1.cpp”. Do projektu należy też plik „stdafx.h”. Jest to tzw. wstępnie skompilowany plik nagłówkowy. To niestandardowa, autorska konstrukcja Microsoftu, której celem jest przyspieszenie procesu kompilacji dużych projektów. Do tej konstrukcji należą też pliki „stdafx.cpp” i „targetver.h”.

Po podwójnym kliknięciu na „ConsoleApplication1.cpp” zostanie otwarte okno z prostym programem:

Kod programu

Linijki zawierającej dyrektywę #include "stdafx.h" nie należy usuwać. Microsoft rekomenduje, aby dyrektywy dołączenia niezbędnych standardowych bibliotek, np. #include "stdlib.h", umieścić w pliku stdafx.h w miejscu poniżej już istniejących dyrektyw #include. Natomiast dyrektywy dołączenia niezbędnych bibliotek własnych można umieścić w „ConsoleApplication1.cpp” poniżej dyrektywy #include "stdafx.h".

Jeżeli chcemy do tak utworzonego pliku wkleić kod z pliku Wejściówki, który został napisany bez korzystania z dyrektywy #include "stdafx.h", należy ten kod w całości wkleić poniżej tej dyrektywy, zastępując nim treść wygenerowaną automatycznie przez VS. Po wklejeniu nie należy edytować dyrektywy #include "stdafx.h", ani niczego przed nią dopisywać (powinna pozostać jako pierwsza linijka programu).

Jeżeli plik zawierający kod Wejściówki został utworzony w projekcie typu „Aplikacja konsolowa Windows”, należy ten plik dołączyć do sekcji „pliki źródłowe” w projekcie bez wprowadzania w nim żadnych zmian oraz usunąć z tej sekcji automatycznie tworzony plik „ConsoleApplication1.cpp”.

Hint: dobrym pomysłem jest unikanie mieszania typów projektów, tj. np. jeżeli Wejściówka została utworzona, napisana i przetestowana w projekcie typu „Aplikacja konsolowa Windows”, to projekt takiego samego typu należy utworzyć w pracowni, żeby ją zaprezentować.

Na koniec – co zrobić, żeby okno konsoli nie zamykało się po wykonaniu naszego programu?

Postępowanie #1:

W Solution Explorer kliknąć prawym klawiszem myszy na nazwę projektu (nie przestrzeni roboczej). Potem wybrać Properties (Właściwości). Pojawi się okno, w którym po lewej stronie trzeba kolejno rozwinąć Configuration Properties->Linker->System (Właściwości konfiguracji->Konsolidator->System), a potem z prawej strony kliknąć na pole SubSystem (Podsystem). Pojawi się wówczas rozwijana lista, z której wybieramy Console (/SUBSYSTEM:CONSOLE).

Postępowanie #2:

Na końcu funkcji main, w linijce tuż przed poleceniem return dopisać instrukcję:

system("pause");

i dołączyć bibliotekę stdlib.h .

PO2024: Wejściówka na Lab.2

Napisz program szyfrujący tekst wprowadzany przez użytkownika. W tym celu przygotuj tablicę dwuwymiarową A o wymiarze 5 na 5 przechowującą wartości typu char, oraz tablicę jednowymiarową B, przechowującą wskaźniki do zmiennych typu char. Do wszystkich komórek tablicy B wpisz wartości NULL, a do tablicy A wpisz litery alfabetu (z pominięciem liter zawierających znaki diakrytyczne: ą, ć, ę, ł, ń, ó, ś, ź, ż), np. tak:

a f k p v
b g l r w
c h m s x
d i n t y
e j o u z

Następnie wczytaj od użytkownika ciąg znaków bez spacji, reprezentujący dowolny napis składający się tylko ze znaków z tablicy A, którego długość jest mniejsza niż długość tablicy jednowymiarowej B. Zakładamy przy tym, że dane wprowadzane przez użytkownika są zawsze poprawne co do ich wartości i rozmiaru. Napis wczytaj poleceniem scanf do pomocniczej tablicy. Następnie dla każdej kolejnej litery wczytanego napisu znajdź w tablicy A komórkę, przechowującą tę literę, po czym adres znalezionej komórki w A zapisz w odpowiedniej komórce tablicy B (tj. adres pierwszej litery – w pierwszej komórce B, adres drugiej litery – w drugiej, itd.). Po zakończeniu tablica B powinna zawierać wskaźniki do odpowiednich komórek tablicy A z kolejnymi literami wprowadzonego napisu. Jeżeli długość tablicy B jest większa niż długość wczytanego słowa, pozostałe komórki tablicy B przechowują wartość NULL.

Wypisz w oknie konsoli napis podany przez użytkownika korzystając tylko z tablicy B, tj. za pomocą wskaźników z B sięgaj do odpowiednich komórek w A i wypisz ich zawartość kolejno na ekranie.

Następnie zaszyfruj napis poprzez przestawienie wartości w wierszach tablicy A. Przykładowe przestawienie to przesunięcia wartości: z wiersza 1 do 2, z 2 do 3, z 3 do 4, z 4 do 5, a z 5 do 1, np. tak:

e j o u z
a f k p v
b g l r w
c h m s x
d i n t y

Po przestawieniu wierszy ponownie wypisz w oknie konsoli napis korzystając ze wskaźników z tabeli B.

Na koniec przywróć w tablicy właściwy porządek wierszy i jeszcze raz korzystając z tablicy B wypisz napis, tym razem w postaci odszyfrowanej.

Przetestowany, działający program (tylko plik z kodem źródłowym) uploaduj do https://e.uksw.edu.pl jako rozwiązanie zadania „Wejściówka” w sekcji „Temat 2”, tak aby na początku zajęć można go było szybko pobrać, skompilować i zademonstrować działanie.

PS: szczegółowe reguły pracy na zajęciach lab. są dostępne pod adresem:
https://ktrojanowski.blog.uksw.edu.pl/programowanie-obiektowe/zasady-zaliczenia-lab/zasady-dla-zadan-lab/

ZTP2023: terminy w sesji poprawkowej

  1. Poprawa oceny z zajęć lab.: 20 lutego (wtorek) w godz. 16:45-20:00, sala 119 w bud. 21. Osoby zainteresowane proszę o przyjście na egzamin ZTP i udział w egzaminie. Jeżeli poprawa da pozytywny wynik, praca egzaminacyjna zostanie sprawdzona. Proszę też o mail z potwierdzeniem chęci udziału. Wystarczy krótki tekst w rodzaju „Zgłaszam swój udział w poprawie ZTP lab.” i podpis. Zgłoszenia są potrzebne, abym wiedział ile przygotować zadań. Zgłoszenia można nadsyłać do niedzieli (18.02) wieczorem.
  2. Egzamin z ZTP, drugi termin: 20 lutego (wtorek) w godz. 11:30-13:30, aula Schumana. Formuła egzaminu taka sama jak w pierwszym terminie:
    • Egzamin jest pisemny. Proszę zabrać ze sobą kartki papieru i długopisy oraz legitymacje studenckie. Proszę być punktualnie. Prace osób spóźnionych mogą nie podlegać ocenie.
    • Szczegółowe zasady udziału są opisane na stronie www: Zasady zaliczenia wykładu, ale nie ma części praktycznej, to znaczy, nie będzie kartki z kodem programu, dla którego należy podać komunikaty wypisywane w oknie konsoli.
    • Zwracam uwagę na zasadę: Na egzaminie nie wolno sięgać do telefonów komórkowych. Telefony w czasie egzaminu muszą być wyciszone i schowane np. w torbie czy plecaku. Niestosowanie się do tej zasady skutkuje natychmiastowym zakończeniem egzaminu przez studenta i opuszczeniem sali.

ZTP2023: Wyniki z egzaminu w terminie pierwszym

Lista ocen osób, które uczestniczyły w egzaminie w pierwszym terminie. Wiersze zawierają: trzy ostatnie cyfry nr indeksu, liczbę zdobytych punktów i proponowaną ocenę.

  1. ***235   9.5   2
  2. ***274   8   2
  3. ***466   11   2
  4. ***468   15   3.5
  5. ***475   2   2
  6. ***478   8   2
  7. ***482   6   2
  8. ***511   18   4
  9. ***512   12 + ε   3
  10. ***526   6.5   2
  11. ***531   8   2
  12. ***536   8   2
  13. ***553   16   3.5
  14. ***587   7.5   2
  15. ***595   10   2
  16. ***639   16   3.5
  17. ***658   18   4
  18. ***659   14   3
  19. ***807   5   2
  20. ***810   22.5   5
  21. ***867   2   2
  22. ***986   9   2

W razie niejasności, proszę o kontakt mailowy.

Prace będą do wglądu we czwartek (8 lutego), w godz. 12:00-12:30 (lub do ostatniej zainteresowanej osoby) w pok. 1247, bud. 12.

ZTP2023: Wyniki z egzaminu zerowego

Lista osób, które otrzymały ocenę pozytywną z zajęć lab. ale nie zostały zwolnione z egzaminu za bardzo dobre wyniki i osiągnęły co najmniej 50% pkt. na egzaminie zerowym. Wiersze zawierają: trzy ostatnie cyfry nr indeksu, liczbę zdobytych punktów i proponowaną ocenę.

  1. ***238   17.5   4
  2. ***272   19   4
  3. ***172   23   5
  4. ***479   20.5   4.5
  5. ***533   22.5   5
  6. ***543   13.5   3
  7. ***548   14.5   3.5
  8. ***560   19.5   4.5
  9. ***561   13   3
  10. ***563   18.5   4
  11. ***578   14.5   3.5
  12. ***579   14   3
  13. ***585   12 + ε   3
  14. ***594   13   3
  15. ***627   19.5   4.5
  16. ***637   20.5   4.5
  17. ***677   15   3.5
  18. ***729   15   3.5

Lista osób, które otrzymały ocenę pozytywną z zajęć lab., nie zostały zwolnione z egzaminu za bardzo dobre wyniki i uczestniczyły w egzaminie zerowym, ale liczba zdobytych na egzaminie punktów nie przekroczyła progowej wartości 50% możliwych do zdobycia. Wiersze zawierają trzy ostatnie cyfry nr indeksu.

  1. ***235
  2. ***466
  3. ***468
  4. ***475
  5. ***478
  6. ***482
  7. ***511
  8. ***512
  9. ***526
  10. ***531
  11. ***536
  12. ***553
  13. ***595
  14. ***658
  15. ***867

W razie niejasności, proszę o kontakt mailowy.

ZTP2023: Lista osób zwolnionych z egzaminu

Lista zawiera trzy ostatnie cyfry numeru indeksu osób zwolnionych z egzaminu za bardzo dobre wyniki na zajęciach lab.

  1. ***065
  2. ***245
  3. ***378
  4. ***467
  5. ***487
  6. ***497
  7. ***501
  8. ***534
  9. ***545
  10. ***614

Osoby te z egzaminu z wykładu otrzymują ocenę taką, jaką otrzymały z zajęć lab. tj. 5 (bardzo dobry), która zostanie wpisana do protokołu USOS jako ocena zdobyta w pierwszym terminie.

W razie niejasności proszę o kontakt mailowy.

ZTP2023: Informacje organizacyjne na koniec semestru

Poprawa jednej oceny z zajęć lab.

  1. Dn. 17 stycznia (środa) w pracowni komputerowej 119, bud. 21, w godz. 11:30 – 14:45 odbędą się zajęcia lab., na których będzie można uzyskać ocenę, która zastąpi jedną z ocen uzyskanych na zajęciach lab. w semestrze.
  2. Zajęcia lab. w dn. 17 stycznia nie są obowiązkowe. Są to zajęcia tylko dla osób, które chcą skasować jedną ze swoich ocen i zastąpić ja nową oceną zdobytą na tych zajęciach. Np. jeżeli ktoś ma trzy zera z zajęć, co oznacza, że otrzyma ocenę negatywną z lab., może przyjść, aby zdobyć lepszą ocenę, która zastąpi jedno z tych zer.
  3. Przed rozpoczęciem zajęć wszystkim uczestnikom kasowana jest jedna, wskazana przez nich ocena z zajęć lab. w semestrze. Jeżeli jest to ocena inna niż zero punktów, wskazane punkty są tracone bezpowrotnie.
  4. Na zajęciach będzie do zrobienia jedno zadanie, za które można zdobyć do 10 pkt. Zadanie obejmuje materiał całego semestru. Warunki realizacji są takie same jak na zajęciach w semestrze, tj. praca samodzielna bez korzystania z zasobów internetu (za wyjątkiem strony https://cplusplus.com/ oraz platformy learningowej UKSW).
  5. Zajęcia w tej sali są wspólne dla zainteresowanych z wszystkich trzech grup.

W razie niejasności proszę o pytania mailem.Warunki zwolnienia z egzaminu za bardzo dobre wyniki z lab. zostaną ustalone dopiero po zakończeniu semestru, kiedy będą znane wszystkie wyniki z lab.

Egzamin zerowy

  1. Dn. 25 stycznia (czwartek) w sali wykładowej 205, bud. 21, w godz. 16:45 – 18:15 planowany jest egzamin zerowy z ZTP.
  2. Egzamin jest pisemny. Proszę zabrać ze sobą kartki papieru i długopisy oraz legitymacje studenckie. Proszę być na miejscu kilka minut wcześniej, ponieważ sala zostanie otwarta już w trakcie przerwy, tak aby punktualnie o godz. 16:45 można było rozpocząć egzamin.
  3. Szczegółowe zasady udziału są opisane na stronie www: Zasady zaliczenia wykładu, ale uwaga: (1) egzamin nie ma części praktycznej, to znaczy, nie będzie kartki z kodem programu, dla którego należy podać komunikaty wypisywane w oknie konsoli, (2) wszystkie osoby, które mają szansę na ocenę pozytywną z lab. na koniec semestru są oczekiwane na egzaminie.
  4. Ocenie podlegają prace egzaminacyjne tylko tych osób, które na koniec semestru, tj. 26 stycznia (piątek) będą miały z zajęć lab. dostateczną liczbę punktów oraz spełnią warunki gwarantujące ocenę pozytywną.
  5. Oceny pozytywne uzyskane z tego egzaminu są wpisywane do protokołu jako zdobyte w pierwszym terminie.
  6. Oceny negatywne nie są nigdzie wpisywane i są zapominane.
  7. Jeżeli będą takie osoby, które zostaną zwolnione z egzaminu za bardzo dobre wyniki lab., to proponowana im ocena zastąpi ocenę z egzaminu zerowego. Jednak decyzja o zastosowaniu w tym roku zwolnień z egzaminu za bardzo dobre wyniki jeszcze nie została podjęta.
  8. Brak zainteresowania (niedostateczna liczba studentów na sali) spowoduje odwołanie egzaminu zerowego.

Zwracam uwagę na zasadę: Na egzaminie nie wolno sięgać do telefonów komórkowych. Telefony w czasie egzaminu muszą być wyciszone i schowane np. w torbie czy plecaku. Niestosowanie się do tej zasady skutkuje natychmiastowym zakończeniem egzaminu przez studenta i opuszczeniem sali.