• Nie Znaleziono Wyników

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
4
0
0

Pełen tekst

(1)

Informatyka 2

Informatyka 2 (EZ1E3012) (EZ1E3012)

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

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 2/14

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]

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 3/14

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;

};

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 4/14

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

};

(2)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 5/14

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

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 6/14

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

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 7/14

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);

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 8/14

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);

(3)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 9/14

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;

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 10/14

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;

}

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 11/14

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;

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 12/14

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;

}

(4)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 13/14

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

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 3 14/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

Informatyka 1 (EZ1E2008), studia niestacjonarne I stopnia dr inż.. - uznanie za standard

 Dla znaków z przedziału od U+0000 do U+FFFF używane jest jedno słowo, którego wartość jest jednocześnie kodem znaku w Unicode.  Dla znaków z wyższych pozycji używa

standard podaje jedynie minimalną liczbę bitów pozostawiając szczegóły implementacji producentom procesorów i kompilatorów szczegóły implementacji producentom procesorów

Informatyka 1 (EZ1E2008), studia niestacjonarne I stopnia dr inż..

Informatyka 1 (EZ1E2008), studia niestacjonarne I stopnia dr inż.

opisuje sposób deklarowania i inicjalizacji tablic dwuwymiarowych (macierzy) w języku C oraz metody wykonywania podstawowych operacji na tych tablicach. opisuje sposób

Informatyka 2 (ES1D300 017), studia stacjonarne I stopnia dr inż. stack) - struktur składająca się z elementów, z których każdy posiada tylko adres następnika. dostęp do

zamiast parametrów, podaje się słowo void lub nie wpisuje się nic jeśli występuje return, to nie może po nim znajdować się żadna wartość jeśli return nie występuje, to