• Nie Znaleziono Wyników

wypisuje na ekranie wartości parametrów posługując się operatorem składowych

N/A
N/A
Protected

Academic year: 2021

Share "wypisuje na ekranie wartości parametrów posługując się operatorem składowych"

Copied!
3
0
0

Pełen tekst

(1)

Podstawy programowania

Laboratorium 10.

Cel:

• Opanowanie podstaw tworzenia i wykorzystania struktur w C

Zajęcia:

1. Utworzenie katalogu roboczego lab_10

2. Na podstawie wykładu zaprojektowanie własnej struktury, zawierającej kilka parametrów opisujących obiekt z wybranej dziedziny (np. własnej dziedziny zainteresowań)

◦ parametry mają być zmiennymi różnych typów, w tym char[], int i double 3. Napisanie programu struktura_obiekt.c z funkcją main, która kolejno:

◦ definiuje obiekt_1 będący strukturą

◦ nadaje wartości parametrom obiektu_1 posługując się operatorem składowych .

◦ wypisuje na ekranie wartości parametrów posługując się operatorem składowych .

◦ definiuje obiekt_2 będący strukturą, inicjując jednocześnie wartości składowych

◦ definiuje wskaźnik do struktury

◦ nadaje wartości parametrom obiektu_2 posługując się wskaźnikiem i operatorem –>

◦ wypisuje na ekranie zawartość struktury posługując się wskaźnikiem

4. Modyfikacje programu struktura_obiekt.c polegające na napisaniu kolejnych funkcji, wywoływanych następnie przez funkcje main (prototypy funkcji, stanowiące ich deklaracje, powinny być wszystkie zgrupowane na początku pliku źródłowego, zaraz po dyrektywach #include ):

◦ napisanie funkcji (np. fun_strukt), która przyjmuje jako argument wejściowy obiekt będący strukturą

▪ funkcja dokonuje modyfikacji składowych struktury i wypisuje na ekranie nowe wartości

◦ uzupełnienie funkcji main o:

▪ wywołanie funkcji fun_strukt z obiektem_1 jako argumentem, zaraz po wypisaniu wartości składowych obiektu_1

▪ ponowne wypisanie wartości składowych obiektu_1 po powrocie z funkcji fun_strukt

◦ napisanie funkcji (np. fun_strukt_out), która przyjmuje jako argument wejściowy obiekt będący strukturą i zwraca obiekt będący strukturą tego samego typu

▪ funkcja dokonuje modyfikacji składowych struktury i wypisuje na ekranie nowe wartości

▪ funkcja zwraca obiekt ze zmodyfikowanymi wartościami

◦ uzupełnienie funkcji main o:

▪ wywołanie funkcji fun_strukt_out z obiektem_1 jako argumentem, zaraz po wypisaniu wartości składowych obiektu_1

▪ przypisaniu (skopiowaniu) zwracanej przez fun_strukt_out struktury (z całą zawartością) do nowej zmiennej obiekt_3 zaprojektowanego typu

możliwe jest także przypisanie do tej samej struktury obiekt_1, która została przesłana jako argument wejściowy

wypisanie wartości pól zwróconej struktury w funkcji main

▪ ponowne wypisanie wartości składowych obiektu_1 po powrocie z funkcji fun_strukt (jeśli nie zostały zmienione przypisaniem)

◦ napisanie funkcji (np. fun_strukt_wsk), która przyjmuje jako argument wejściowy wskaźnik do obiektu będącego strukturą

▪ funkcja dokonuje modyfikacji składowych struktury (uzyskując dostęp poprzez wskaźnik i operator ->) i wypisuje na ekranie nowe wartości

◦ uzupełnienie funkcji main o:

▪ wywołanie funkcji fun_strukt_wsk z obiektem_2 jako argumentem, zaraz po wypisaniu wartości składowych obiektu_2

ponowne wypisanie wartości składowych obiektu_2 po powrocie z funkcji fun_strukt_wsk

(2)

◦ napisanie funkcji (np. fun_strukt_wsk_kopia), która przyjmuje jako argument wejściowy wskaźnik do obiektu będącego strukturą i zwraca strukturę tego samego typu

▪ funkcja na samym początku dokonuje przepisania zawartości struktury do zmiennej lokalnej posługując się operatorami przypisania i wyłuskania

▪ funkcja dokonuje modyfikacji składowych struktury będącej zmienną lokalną i wypisuje na ekranie nowe wartości

▪ funkcja zwraca strukturę będącą zmienną lokalną

◦ uzupełnienie funkcji main o:

▪ wywołanie funkcji fun_strukt_wsk_kopia z obiektem_2 jako argumentem, zaraz po wypisaniu wartości składowych obiektu_2

▪ przypisaniu (skopiowaniu) zwracanej przez fun_strukt_wsk_kopia struktury (z całą zawartością) do nowej zmiennej obiekt_4 zaprojektowanego typu

możliwe jest także przypisanie do tej samej struktury obiekt_2, która została przesłana jako argument wejściowy

wypisanie wartości pól zwróconej struktury w funkcji main

ponowne wypisanie wartości składowych obiektu_2 po powrocie z funkcji fun_strukt_wsk_kopia (jeśli nie zostały zmienione przypisaniem)

◦ napisanie funkcji (np. fun_strukt_wsk_inout), która przyjmuje jako argument wejściowy wskaźnik do obiektu będącego strukturą

▪ funkcja na samym początku dokonuje przepisania zawartości struktury do zmiennej lokalnej posługując się operatorami przypisania i wyłuskania

▪ funkcja dokonuje modyfikacji składowych struktury będącej zmienną lokalną i wypisuje na ekranie nowe wartości

▪ funkcja przed zakończeniem przepisuje zawartość struktury ze zmiennej lokalnej do struktury w funkcji wywołującej (main)

• można przetestować rozmaite metody z operatorami *, . i ->

◦ uzupełnienie funkcji main o:

▪ wywołanie funkcji fun_strukt_wsk_inout z obiektem_2 jako argumentem, zaraz po wypisaniu wartości składowych obiektu_2

◦ ponowne wypisanie wartości składowych obiektu_2 po powrocie z funkcji fun_strukt_wsk_inout

Tematy rozszerzające:

1. Napisanie funkcji, np. fun_strukt_wsk_out, która przyjmuje jako argument strukturę zaprojektowanego typu i zwraca wskaźnik do struktury tego typu

◦ funkcja ma dokonać alokacji pamięci dla nowej struktury zaprojektowanego typu posługując się funkcją malloc i operatorem sizeof, następnie przepisać zawartość ze struktury przesłanej jako argument funkcji fun_strukt_wsk_out do nowej struktury w obszarze dynamicznym (na stercie) i zwrócić wskaźnik do zaalokowanej struktury (uwaga: funkcja nie może tylko utworzyć zmiennej lokalnej i zwrócić wskaźnik do zmiennej – taki wskaźnik pokazuje miejsce na stosie, które po zakończeniu działania funkcji jest odzyskiwane do ponownego wykorzystania i po pewnym czasie może zawierać śmieci)

po wywołaniu funkcji malloc należy sprawdzić czy nie została zwrócona wartość NULL i zaprojektować odpowiednią obsługę błędu (z wykorzystaniem return lub exit i odpowiednimi wydrukami lub zwracaniem wartości kodów błędu)

przed zakończeniem programu pamięć przydzielona przez malloc powinna zostać zwolniona za pomocą wywołania funkcji free

wartość zwracaną przez operator sizeof można wydrukować

zadanie rozszerzające: przetestowanie rozmiaru struktury, zwracanego przez sizeof, dla struktur zawierających pola {..., char ...[N], int .... } i N równych 1,2,3,4,5 itd.

• uzupełnienie, na podstawie materiałów internetowych, wiadomości o wyrównaniu adresów (address alignment) początków zmiennych do wartości podzielnych przez konkretną liczbę

(3)

2. Zdefiniowanie struktury zawierającej w sobie

◦ tablicę

◦ inną strukturę

3. Napisanie programu wykorzystującego zdefiniowaną strukturę:

◦ Inicjującego wartości składowych na rozmaite sposoby

Wypisującego wartości składowych na ekranie 4. Napisanie funkcji, które przyjmują jako argument

1. zaprojektowaną strukturę

2. wskaźnik do zaprojektowanej struktury

◦ funkcje mogą operować na zmiennych na stosie

▪ jako na argumentach skopiowanych przy wywołaniu

▪ jako na zmiennych lokalnych, do których wartości struktury zostały odpowiednio skopiowane

◦ odpowiednie komentarze (specyfikacja funkcji) powinny informować czy dokonywane zmiany są efektami ubocznymi, widocznymi w funkcji wywołującej

Warunki zaliczenia:

1. Obecność na zajęciach i wykonanie co najmniej kroków 1-4

2. Oddanie 1-2 stronicowego sprawozdania, napisanego ręcznie, zawierającego:

1. opis wykonanych zadań

2. kod źródłowy podstawowych funkcji i konstrukcji sterujących 3. wnioski

Cytaty

Powiązane dokumenty

PrzeciąŜanie funkcji składowych, przekazywanie parametrów obiektowych przez wartość, referencję oraz wskaźnik2. Zwracanie obiektów przez

[r]

Proszę zapoznać się z materiałem z poniższego linka i na podstawie zamieszczonych tam przykładów zróbcie zadania:. na podstawie przykładu 1 proszę zrobić zad 8.68/213

W Tabeli 2 wpisać odczytane z Panelu wirtualnego przyrządu wskazania wartości: skutecznej prądu (obliczanej dla zadanej liczby próbek) 1, 3, 5-tej harmonicznej

• metoda składowych atomowych ma znacznie krótsze czasy wyszukiwania odpowiedzi na pytania elementarne niż na ogólne z wyjątkiem modyfikacji odcinkowej i dekompozycji atrybutowej.

Zatem w Systemie Wyszukiwania Informacji opartym na metodzie SA, odpowiedzią na pytanie jest suma składowych atomowych wyznaczonych przez deskryp- tory pytania doprowadzonego do

Zwięk- szenie dawki nawożenia azotowego, w czasie uprawy pszenicy, spowodowało obniżenie wartości break- down (różnica pomiędzy lepkością maksymalną a minimalną

W celu uzyskania odpowiedzi czy TAS może być wskaźnikiem w ocenie jakości nasienia ogiera podjęto badania nad określeniem wartości całkowitej zdolności antyoksydacyjnej w