Język ANSI C-struktury

Podobne dokumenty
Struktury Struktura polami struct struct struct struct

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Struktury typ definiowany przez uŝytkownika.

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 9 - sem.iii. Dr inż. M. Czyżak

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 7- sem.iii. M. Czyżak

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Struktury - wprowadzenie

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Język ANSI C tablice wielowymiarowe

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Tablice wielowymiarowe. Przykład tablica 2-wymiarowa. Przykład. Przykład 3-wymiarowy. Tak naprawdę nie istnieją w C! Rozważmy tablicę o rozmiarze 3x2

C-struktury wykład. Dorota Pylak

Język C zajęcia nr 12. Struktury i unie

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Liczby zespolone w języku C (cz.1)

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

2 Przygotował: mgr inż. Maciej Lasota

C-struktury wykład. Dorota Pylak

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie Proceduralne

Argumenty wywołania programu, operacje na plikach

5 Przygotował: mgr inż. Maciej Lasota

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Co nie powinno być umieszczane w plikach nagłówkowych:

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 3 - sem.iii. Dr inż. M. Czyżak

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Wstęp do Programowania, laboratorium 02

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Programowanie w językach wysokiego poziomu

Podstawy programowania w języku C++

tablica: dane_liczbowe

PROGRAMOWANIE OBIEKTOWE W C++ - cz 1. Definicja klasy, składniki klasy, prawa dost pu, definiowanie funkcji składowych, konstruktory i destruktory.

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

Wstęp do wskaźników w języku ANSI C

Języki i metodyka programowania. Wprowadzenie do języka C

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Wstęp do programowania 1

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Katedra Elektrotechniki Teoretycznej i Informatyki. sem. II - wykład 6. Dr hab. inż. M. Czyżak

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Tablice, funkcje - wprowadzenie

Podział programu na moduły

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Podstawy programowania C. dr. Krystyna Łapin

dr inż. Jarosław Forenc

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

1. Wprowadzanie danych z klawiatury funkcja scanf

Czy procesor musi się grzać?

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Programowanie w języku C++

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Struktury czyli rekordy w C/C++

. Podstawy Programowania 1. Struktury i unie. Arkadiusz Chrobot. 7 grudnia 2017

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Spis treści JĘZYK C - STRUKTURY, POLA BITOWE, UNIE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Pytania z języka C/C++ main dyrektywy preprocesora #include 15. #define 16. #define słowa zastrzeżone \n, \t, \f 26.

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

ALGORYTMY I STRUKTURY DANYCH

Wskaźniki w C. Anna Gogolińska

Podstawy programowania w języku C++

Pliki. Informacje ogólne. Obsługa plików w języku C

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Programowanie strukturalne i obiektowe

Operacje wejścia/wyjścia odsłona pierwsza

Wykład 6. Operacje na łańcuchach znakowych

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Język C++ zajęcia nr 1

Podstawy Programowania C++

Wykład 3. Instrukcje powtarzające

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Podstawy programowania w języku C++

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Transkrypt:

Struktury ( zwane w innych językach programowania rekordami) stanowią typ służący do przetwarzania informacji powiązanych ze sobą. Definicja typu strukturowego ma następującą postać struct nazwatypu { typpola1 nazwapola1; }; typpola2 nazwapola2;.. typpolan nazwapolan; Tak więc definicja typu strukturowego składa się ze słowa kluczowego struct, po którym następuje nazwa danego typu strukturowego ( czasami określana jako etykieta), po czym po nawiasie otwierającym występują typy poszczególnych składowych struktury oraz ich nazwy. Składowe typu strukturowego zwane są polami struktury.

Definicja typu strukturowego kończy się nawiasem zamykającym i średnikiem. W typie strukturowym mogą wystąpić pola, które same mogą być typu strukturowego, mówimy wtedy o tzw. typie strukturowym zagnieżdżonym. Nazwy pól muszą być różne w ramach jednego typu strukturowego, jednak można stosować te same nazwy w ramach innych typów strukturowych. Nazwa pola struktury może być taka sama jak nazwa danego typu strukturowego czy też zmiennej strukturowej.

Przykład. W ramach jednego typu danych chcemy przechowywać pewne informacje o pracownikach. Zdefiniujemy uproszczony typ strukturowy pozwalający na przechowywanie takich informacji ( w rzeczywistych sytuacjach może być konieczne stosowanie nawet kilkudziesięciu pól). struct pracownik { char nazwisko [20]; char imie [20]; int wiek; double dochod; } rek1, rek2; rek1, rek2 są zmiennymi typu pracownik. Zmienne strukturowe można też zdefiniować w sposób następujący: struct pracownik rek3, rek4, rek5;

Język ANSI C-pliki Można też zdefiniować tablicę struktur struct pracownik pracownicy [20]; Zmienna pracownicy jest tablicą struktur składającą się z 20 struktur typu pracownik. Dla realizacji dostępu do pól typu strukturowego wprowadzono w języku C specjalny operator dostępu do pól struktury operator "." ( kropka). Operator ten jest stosowany w sposób następujący: jeśli mamy zmienną strukturową rek1 typu pracownik, to możemy wprowadzić wartość do jej pola dochod w sposób następujący: rek1.dochod=1500; W ogólnym przypadku, polami zmiennych strukturowych możemy posługiwać się jak zmiennymi takiego typu, jak typ danego pola struktury.

Wprowadzanie/wyprowadzanie informacji z /do pól zmiennych strukturowych cz. 1 Jak zaznaczono powyżej, pola takie można stosować, jako zmienne danego typu rek2.dochod=1000; rek2.wiek=25; pracownicy[0].dochod=1200; pracownicy [0].wiek=24; scanf("%f",&rek3.dochod); scanf("%d",&rek3.wiek); 1. Pola typu numerycznego ( typy całkowite i typy rzeczywiste) scanf ("%lf",&pracownicy[1].dochod); scanf ("%d", &pracownicy[1].wiek);

Wprowadzanie/wyprowadzanie informacji z /do pól zmiennych strukturowych cz. 2 2. Pola typu tablica znaków strcpy (rek1.nazwisko,"kowalski"); scanf("%s",rek2.nazwisko); gets( rek3.nazwisko); Wyprowadzanie informacji odbywa się podobnie jak dla innych zmiennych. printf ("\n %d ", rek1.dochod); printf("\n %s ", rek1.nazwisko);

Inicjalizacja tablic struktur Przykład. Inicjalizacja tablicy struktur typu student struct student { char nazwisko[20]; char imie [20]; int rok studiow; char wydzial[20]; }; struct student studenci[3]=\ { {"Kowalski","Marcin",2, "EiA"}, {"Iksiński","Andrzej",2,"EiA"}, {"Malinowski","Dariusz,2,"EiA"} };

Przykład. Program rekordy1 wczytujący i drukujący pojedyncze struktury. (cz.1) #include <stdio.h> #include <string.h> // program rekordy1 wczytuje dane do struktur i drukuje int main(int argc, char **argv) { struct student { char nazwisko[20]; char imie [20]; int rokstudiow; char wydzial[20]; }; struct student student1, student2; /* Bezpośrednie nadawanie wartości polom struktur */ strcpy(student1.nazwisko,"kowalski"); strcpy(student1.imie,"jan"); student1.rokstudiow=2; strcpy(student1.wydzial,"eia");

// Program rekordy1 cz. II /* Do wczytywania pól struktury student 2 z klawiatury zastosowano trzy różne funkcje wczytywania pól typu tablica znaków, by pokazać różne sposoby wczytywania takich pól */ printf ("\n Podaj dane 2-go studenta "); printf ("\n Nazwisko: "); scanf("%s",student2.nazwisko); printf ("\n Imie: "); fflush(stdin); fgets(student2.imie,15,stdin); printf("\n Rok studiow :"); scanf("%d",&student2.rokstudiow); printf ("\n Wydział: "); scanf("%s",student2.wydzial);

// program rekordy1 cz. III /* Drukowanie struktur student1 i student2 */ printf("\n\n Dane studenta 1 "); printf("\n Nazwisko :%s", student1.nazwisko); printf("\n Imie :%s", student1.imie); printf("\n Rok studiow :%d", student1.rokstudiow); printf("\n Wydzial :%s", student1.wydzial); printf("\n\n\n Dane studenta 2 "); printf("\n Nazwisko :%s", student2.nazwisko); printf("\n Imie :%s", student2.imie); printf(" Rok studiow :%d", student2.rokstudiow); printf("\n Wydzial :%s", student2.wydzial); getch(); return 0; }

Struktury zagnieżdżone Struktury zagnieżdżone to takie struktury w których przynajmniej jedno z pól jest typu strukturowego. struct nazwatypu { typpola1 nazwapola1; struct nazwatypustrukturowego nazwapola2; typpolan } ;.. nazwapolan;

Przykład. Definicja typu strukturowego zagnieżdżonego. struct data { int dzien; int miesiac; int rok; }; struct danestudenta { char nazwisko[20]; char imie [20]; struct data dataur ; int rokstudiow; char wydzial[20]; }; struct danestudenta danestudenta1, danestudenta2;

Przykład. Program rekordy2 wczytujący dane do tablicy struktur i drukujący tablicę struktur. int main(int argc, char **argv) { struct data { int dzien; int miesiac; int rok; }; struct dane_studenta { char nazwisko[20]; char imie [20]; struct data dataur; int rokstudiow; char wydzial[20]; }; struct danestudenta studenci[4];

// Program rekordy2 cz. II int i; /* Bezpośrednie nadawanie wartości polom tablicy struktur */ strcpy(studenci[0].nazwisko,"kowalski"); strcpy(studenci[0].imie,"jan"); studenci[0].rokstudiow=2; studenci[0].dataur.dzien=2; studenci[0].dataur.miesiac=5; studenci[0].dataur.rok=1990; strcpy(studenci[0].wydzial,"eia"); strcpy(studenci[1].nazwisko,"nowak"); strcpy(studenci[1].imie,"andrzej"); studenci[1].rokstudiow=2; studenci[1].dataur.dzien=2; studenci[1].dataur.miesiac=6; studenci[1].dataur.rok=1991; strcpy(studenci[1].wydzial,"eia");

// program rekordy2 cz. III for (i=2;i<4;i++) { printf ("\n Podaj dane studenta %i",i+1); printf ("\n Nazwisko: "); scanf("%s",studenci[i].nazwisko); fflush(stdin); printf ("\n Imie: "); scanf("%s",studenci[i].imie); fflush(stdin); printf("\n Podaj date urodzenia "); printf("\n dzien :"); scanf ("%d",&studenci[i].dataur.dzien); printf("\n miesiac :"); scanf ("%d",&studenci[i].dataur.miesiac); printf("\n rok :"); scanf ("%d",&studenci[i].dataur.rok); printf("\n Rok studiow :"); scanf("%d",&studenci[i].rokstudiow); printf ("\n Wydział: "); scanf("%s",studenci[i].wydzial); fflush(stdin);

// Program rekordy2 cz. IV /* Drukowanie tablicy struktur */ for (i=0;i<4;i++) { printf("\n\n Dane studenta %d ", i+1); printf("\n Nazwisko :%s", studenci[i].nazwisko); printf("\n Imie :%s", studenci[i].imie); printf(" data urodzenia :%d.%d.%d ",\ studenci[i].dataur.dzien,\ studenci[i].dataur.miesiac,studenci[i].dataur.rok); printf("\n Rok studiow :%d", studenci[i].rokstudiow); printf("\n Wydzial :%s", studenci[i].wydzial); } getchar(); return 0; }