• Nie Znaleziono Wyników

Politechnika Białostocka

N/A
N/A
Protected

Academic year: 2021

Share "Politechnika Białostocka "

Copied!
14
0
0

Pełen tekst

(1)

Politechnika Białostocka

Politechnika Białostocka -- Wydział Elektryczny Wydział Elektryczny

Elektrotechnika, semestr III, studia niestacjonarne I stopnia Elektrotechnika, semestr III, studia niestacjonarne I stopnia

Rok akademicki 2020/2021 Rok akademicki 2020/2021

Pracownia nr 3 (24.10.2020) Pracownia nr 3 (24.10.2020)

dr inż. Jarosław Forenc

(2)

Struktury w języku C Struktury w języku C

 Tablica - ciągły obszar pamięci zawierający elementy tego

samego typu

 Struktura - zestaw elementów różnych typów, zgrupowanych pod jedną nazwą

double int int [3]

char [10]

(3)

Deklaracja struktury Deklaracja struktury

struct nazwa {

opis_pola_1;

opis_pola_2;

...

struct punkt {

int x;

int y;

};

 Elementy struktury to pola (dane, komponenty, składowe) struktury

 Deklaracje pól mają taką samą postać jak deklaracje zmiennych

 Deklarując strukturę tworzymy nowy typ danych (struct punkt), którym można posługiwać się tak samo jak każdym innym typem standardowym

opis pola_n;

};

(4)

Deklaracja struktury Deklaracja struktury

struct osoba {

char imie[15];

char nazwisko[20];

int wiek, waga;

struct zesp {

float Re, Im;

};

 Deklaracja struktury nie tworzy obiektu (nie przydziela pamięci na pola struktury)

 Zapisanie danych do struktury wymaga zdefiniowania zmiennej strukturalnej

};

(5)

Deklaracja zmiennej strukturalnej Deklaracja zmiennej strukturalnej

struct osoba {

char imie[15];

char nazwisko[20];

int wiek, waga;

imie

nazwisko wiek

Kowal

 Kowal, Nowak

- zmienne strukturalne typu struct osoba

wiek, waga;

} Kowal, Nowak;

wiek waga

imie

nazwisko wiek waga

Nowak

(6)

Deklaracja zmiennej strukturalnej Deklaracja zmiennej strukturalnej

#include <stdio.h>

struct osoba {

char imie[15];

imie

nazwisko wiek

Kowal

char nazwisko[20];

int wiek, waga;

};

int main(void) {

struct osoba Kowal;

struct osoba Nowak;

...

return 0;

}

wiek waga

imie

nazwisko wiek waga

Nowak

(7)

Odwołania do pól struktury Odwołania do pól struktury

 Dostęp do pól struktury możliwy jest dzięki konstrukcji typu:

 Operator . nazywany jest operatorem bezpośredniego wyboru pola

nazwa_struktury.nazwa_pola

 Zapisanie wartości 25 do pola wiek zmiennej Nowak ma postać

 Wyrażenie Nowak.wiek traktowane jest jak zmienna typu int

Nowak.wiek = 25;

printf("Wiek: %d\n", Nowak.wiek);

scanf("%d", &Nowak.wiek);

(8)

Odwołania do pól struktury Odwołania do pól struktury

 Dostęp do pól struktury możliwy jest dzięki konstrukcji typu:

 Operator . nazywany jest operatorem bezpośredniego wyboru pola

nazwa_struktury.nazwa_pola

 Zapisanie wartości Jan do pola imie zmiennej Nowak ma postać

 Wyrażenie Nowak.imie traktowane jest jak łańcuch znaków

strcpy(Nowak.imie,"Jan");

printf("Imie: %s\n", Nowak.imie);

gets(Nowak.imie);

(9)

Struktury

Struktury -- przykład (osoba) przykład (osoba)

#include <stdio.h>

struct osoba {

char imie[15];

char nazwisko[20];

char nazwisko[20];

int wiek;

};

int main(void) {

struct osoba Nowak;

(10)

Struktury

Struktury -- przykład (osoba) przykład (osoba)

printf("Imie: ");

gets(Nowak.imie);

printf("Nazwisko: ");

gets(Nowak.nazwisko);

Imie: Jan Nazwisko: Nowak Wiek: 22

Jan Nowak, wiek: 22

printf("Wiek: ");

scanf("%d",&Nowak.wiek);

printf("%s %s, wiek: %d\n", Nowak.imie, Nowak.nazwisko, Nowak.wiek);

return 0;

}

(11)

Struktury

Struktury -- przykład (miernik) przykład (miernik)

#include <stdio.h>

struct miernik {

double k; // klasa dokładności

int d; // liczba działek podziałki int d; // liczba działek podziałki double Zp; // zakres pomiarowy

};

int main(void) {

// Amperomierz LE-3P

struct miernik LE3P = {0.5, 75, 12.0};

double Dpm, p;

(12)

Struktury

Struktury -- przykład (miernik) przykład (miernik)

printf("Amperomierz analogowy LE-3P\n");

printf("Zakres pomiarowy: %g A\n",LE3P.Zp);

printf("Liczba dzialek podzialki: %d\n",LE3P.d);

printf("Klasa dokladnosci: %g\n",LE3P.k);

printf("---\n");

printf("Bezwzgledny maksymalny blad pomiaru:\n");

p = 0.2;

Dpm = LE3P.Zp*(LE3P.k/100+p/LE3P.d);

printf("* dla p = %g, Dpm = %g A\n",p,Dpm);

p = 0.5;

Dpm = LE3P.Zp*(LE3P.k/100+p/LE3P.d);

printf("* dla p = %g, Dpm = %g A\n",p,Dpm);

return 0;

}

(13)

Struktury

Struktury -- przykład (miernik) przykład (miernik)

printf("Amperomierz analogowy LE-3P\n");

printf("Zakres pomiarow: %g A\n",LE3P.Zp);

printf("Liczba dzialek podzialki: %d\n",LE3P.d);

printf("Klasa dokladnosci: %g\n",LE3P.k);

printf("---\n");

Amperomierz analogowy LE-3P Zakres pomiarowy: 12 A

Liczba dzialek podzialki: 75 Klasa dokladnosci: 0.5

--- Bezwzgledny maksymalny blad pomiaru:

* dla p = 0.2, Dpm = 0.092 A

printf("Bezwzgledny maksymalny blad pomiaru:\n");

p = 0.2;

Dpm = LE3P.Zp*(LE3P.k/100+p/LE3P.d);

printf("* dla p = %g, Dpm = %g A\n",p,Dpm);

p = 0.5;

Dpm = LE3P.Zp*(LE3P.k/100+p/LE3P.d);

printf("* dla p = %g, Dpm = %g A\n",p,Dpm);

return 0;

}

* dla p = 0.2, Dpm = 0.092 A

* dla p = 0.5, Dpm = 0.14 A

(14)

Inicjalizacja zmiennej strukturalnej Inicjalizacja zmiennej strukturalnej

 Inicjalizowane mogą być tylko zmienne strukturalne, nie można inicjalizować pól w deklaracji struktury

struct osoba {

char imie[15];

char imie[15];

char nazwisko[20];

int wiek, waga;

};

int main(void) {

struct osoba Nowak1 = {"Jan","Nowak",25,74};

...

}

Cytaty

Powiązane dokumenty

 Szewc - potocznie: sierota - błąd łamania tekstu polegający na pozostawieniu na końcu strony samotnego wiersza akapitowego (pierwszego wiersza

 Listy i wyliczenia:  To jest przykład tekstu ciągłego, który jest trudny do przeczytania.. To jest To jest przykład tekstu ciągłego, który jest trudny

Dostęp do pól struktury możliwy jest dzięki konstrukcji

(grupa dodatkowa, uzupełnienie efektów kształcenia) (grupa dodatkowa, uzupełnienie efektów kształcenia). Rok akademicki 2019/2020 Rok

wykonanie w pętli for więcej niż jednej instrukcji wymaga umieszczenia ich. w dodatkowych nawiasach klamrowych w dodatkowych

nazwa tablicy typ elementów rozmiar tablicy to wartość:. –

Szewc - potocznie: sierota - błąd łamania tekstu polegający na pozostawieniu na końcu strony samotnego wiersza akapitowego (pierwszego wiersza

wybranie symbolu z okna Elementy (Widok Elementy) wybranie opcji z menu podręcznego w oknie