Informatyka 1, Studia Niestacjonarne I Stopnia Dr Inż

Informatyka 1, Studia Niestacjonarne I Stopnia Dr Inż

Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 2/59 Plan wykładu nr 5 Informatyka 1 Język C § pętla for, operatory ++ i – Klasyfikacja systemów komputerowych (Flynna) Architektura von Neumanna i architektura harwardzka Politechnika Białostocka --WydziałWydział Elektryczny Budowa komputera § jednostka centralna Elektrotechnika, semestr II, studia niestacjonarne I stopnia § płyta główna Rok akademicki 2018/2019 § procesor (mikroarchitektury) Wykład nr 5 (05.04.2019) dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 3/59 Rok akademicki 2018/2019, Wykład nr 5 4/59 Język C --sumasuma kolejnych 10 liczb: 1+2+…+10 Język C --sumasuma kolejnych 100 liczb: 1+2+…+100 Suma wynosi: 55 Suma wynosi: 5050 #include <stdio.h> #include <stdio.h> int main(void ) int main(void ) { { int suma; int suma=0, i; suma = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10; for (i=1; i<=100; i=i+1) suma = suma + i; printf("Suma wynosi: %d\n" ,suma); printf("Suma wynosi: %d\n" ,suma); return 0; } return 0; } Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 5/59 Rok akademicki 2018/2019, Wykład nr 5 6/59 Język C --pętlapętla for Język C --pętlapętla for Najczęściej stosowana postać pętli for for (wyr1; wyr2; wyr3) wyr1 instrukcja int i; for (i = 0; i < 10; i = i + 1) NIE wyr 2 ≠ 0 instrukcja wyr1 , wyr2 , wyr3 - dowolne wyrażenia w języku C TAK Instrukcja zostanie wykonana 10 razy Instrukcja: instrukcja (dla i = 0, 1, 2, … 9 ) § prosta - jedna instrukcja Funkcje pełnione przez wyrażenia zakończona średnikiem wyr3 § złożona - jedna lub kilka instrukcji objętych nawiasami klamrowymi for (inicjalizacja ;test ;aktualizacja ) instrukcja Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 7/59 Rok akademicki 2018/2019, Wykład nr 5 8/59 Język C --pętlapętla for (wyświetlenie tekstu) Język C --pętlapętla for (suma liczb: 1 + 2 + … + N) Programowanie nie jest trudne Suma 1234 liczb to 761995 #include <stdio.h> #include <stdio.h> Programowanie nie jest trudne Programowanie nie jest trudne #define N 1234 int main(void ) Programowanie nie jest trudne { Programowanie nie jest trudne int main(void ) int i; { int i, suma=0; for (i=0; i<5; i=i+1) printf("Programowanie nie jest trudne\n"); for (i=1; i<=N; i++) suma = suma + i; return 0; } printf( "Suma %d liczb to %d\n" , N, suma); return 0; } Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 9/59 Rok akademicki 2018/2019, Wykład nr 5 10/59 Język C --pętlapętla for (przykłady) Język C --pętlapętla for (przykłady) for (i=0; i<10; i++) 0 1 2 3 4 5 6 7 8 9 for (i=1; i<10; i=i+2) 1 3 5 7 9 printf( "%d ",i); printf( "%d ",i); for (i=0; i<10; i++) 1 2 3 4 5 6 7 8 9 10 for (i=10; i>0; i--) 10 9 8 7 6 5 4 3 2 1 printf( "%d ",i+1); printf( "%d ",i); for (i=1; i<=10; i++) 1 2 3 4 5 6 7 8 9 10 for (i=-9; i<=9; i=i+3) -9 -6 -3 0 3 6 9 printf( "%d ",i); printf( "%d ",i); Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 11/59 Rok akademicki 2018/2019, Wykład nr 5 12/59 Język C --pętlapętla for (break, continuecontinue)) Język C --pętlapętla for (najczęstsze błędy) W pętli for można stosować instrukcje skoku: break i continue Postawienie średnika na końcu pętli for int i; int i; 10 for (i=0; i<10; i++); for (i=1; i<10; i++) § continue przerywa bieżącą printf("%d ",i); { if (i%2==0) iterację i przechodzi do obliczania wyr3 continue ; Przecinki zamiast średników pomiędzy wyrażeniami if (i%7==0) break ; int i; printf("%d\n" ,i); § break przerywa for (i=0, i<10, i++) } wykonywanie pętli printf("%d ",i); Błąd kompilacji! 1 3 5 error C2143: syntax error : missing ';' before ')' Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 13/59 Rok akademicki 2018/2019, Wykład nr 5 14/59 Język C --pętlapętla for (najczęstsze błędy) Język C --pętlapętla nieskończona Błędny warunek - brak wykonania instrukcji for (wyr1; wyr2; wyr3) instrukcja int i; for (i=0; i>10; i++) printf("%d ",i); Wszystkie wyrażenia ( wyr1 , wyr2 , wyr3 ) w pętli for są opcjonalne Błędny warunek - pętla nieskończona for ( ; ; ) instrukcja - pętla nieskończona int i; 1 2 3 4 5 6 7 8 9 ... for (i=1; i>0; i++) W przypadku braku wyr2 przyjmuje się, że jest ono prawdziwe printf("%d ",i); Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 15/59 Rok akademicki 2018/2019, Wykład nr 5 16/59 Język C --zagnieżdżaniezagnieżdżanie pętli for Język C --operatoroperator inkrementacji (++) Jako instrukcja w pętli for może występować kolejna pętla for Jednoargumentowy operator ++ zwiększa wartość zmiennej o 1 (nie wolno stosować go do wyrażeń) int i, j; Operator ++ może występować jako przedrostek lub przyrostek for (i=1; i<=3; i++) // p ętla zewn ętrzna for (j=1; j<=2; j++) // p ętla wewn ętrzna printf ("i: %d j: % d\n",i,j ); Zapis Nazwa Znaczenie wartość zmiennej jest modyfikowana ++x preinkrementacji przed jej użyciem i: 1 j: 1 wartość zmiennej jest modyfikowana i: 1 j: 2 x++ postinkrementacji i: 2 j: 1 po użyciu jej poprzedniej wartości i: 2 j: 2 i: 3 j: 1 i: 3 j: 2 Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 17/59 Rok akademicki 2018/2019, Wykład nr 5 18/59 Język C --operatoroperator inkrementacji (++) Język C --operatoroperator inkrementacji (++) Przykład Miejsce umieszczenia operatora ++ nie ma znaczenia w przypadku instrukcji typu: int x = 1, y; int x = 1, y; y = 2 * ++x; y = 2 * x++; x++; równoważne x = x + 1; ++x; Kolejność operacji Nie należy stosować operatora ++ do zmiennych pojawiających się ++ x x = 2 2 * x 2 * 1 w wyrażeniu więcej niż jeden raz 2 * ++x 2 * 2 y = 2 * x y = 2 y = 2 * ++x y = 4 x++ x = 2 x = x++; x = ++x; Wartości zmiennych Zgodnie ze standardem języka C wynik powyższych instrukcji x = 2 y = 4 x = 2 y = 2 jest niezdefiniowany Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 19/59 Rok akademicki 2018/2019, Wykład nr 5 20/59 Język C --operatoroperator dekrementacji ((----)) Język C --priorytetpriorytet operatorów ++ i ---- Jednoargumentowy operator -- zmniejsza wartość zmiennej o 1 Priorytet Operator / opis (nie wolno stosować go do wyrażeń) 1 ++ -- (przyrostki) () [] . -> Operator -- może występować jako przedrostek lub przyrostek ++ -- (przedrostki) sizeof (typ) 2 + - ! ~ * & (jednoargumentowe) Zapis Nazwa Znaczenie 3 * / % wartość zmiennej jest modyfikowana --x predekrementacji 4 + - (dwuargumentowe) przed jej użyciem 5 << >> wartość zmiennej jest modyfikowana x-- postdekrementacji 6 < > <= >= po użyciu jej poprzedniej wartości 7 == != 8 & (bitowy) 9 ^ Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 21/59 Rok akademicki 2018/2019, Wykład nr 5 22/59 Klasyfikacja systemów komputerowych Taksonomia Flynna Taksonomia Flynna - pierwsza, najbardziej ogólna klasyfikacja architektur komputerowych (1972): § Flynn M.J.: „Some Computer Organizations and Their Effectiveness”, IEEE Transactions on Computers, Vol. C-21, No 9, 1972. SI - Single instruction Opiera się na liczbie przetwarzanych strumieni rozkazów i strumieni danych: MI - Multiple Instruction SD - Single Data § strumień rozkazów (Instruction Stream) - odpowiednik licznika rozkazów; system złożony z n procesorów posiada n liczników MD - Multiple Data rozkazów, a więc n strumieni rozkazów § strumień danych (Data Stream) - zbiór operandów, np. system SM - Shared Memory rejestrujący temperaturę mierzoną przez n czujników posiada n DM - Distributed Memory strumieni danych Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 23/59 Rok akademicki 2018/2019, Wykład nr 5 24/59 SISD (Single InstructionInstruction,, Single Data) SISD (Single InstructionInstruction,, Single Data) Jeden wykonywany program Komputer Komputer przetwarza jeden strumień danych IBM PC/AT PCPC Klasyczne komputery zbudowane według architektury von Neumanna SISD Zawierają: § jeden procesor § jeden blok pamięci operacyjnej - instrukcje zawierający wykonywany program. - dane Laptop - wyniki Komputer PCPC Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Informatyka 1, studia niestacjonarne I stopnia dr inż. Jarosław Forenc Rok akademicki 2018/2019, Wykład nr 5 25/59 Rok akademicki 2018/2019, Wykład nr 5 26/59 SIMD (Single InstructionInstruction,, Multiple Data) -SIMD SM-SIMD --KomputerySMKomputery wektorowe Jeden wykonywany program CDC CDC 1 -1-yarC yarC przetwarza wiele strumieni Cyber 205 (1976) danych (1981) Te same operacje wykonywane są na różnych danych SIMD Podział: § SM-SIMD (Shared Memory SIMD): - instrukcje 2 -2-yarC yarC - komputery wektorowe - dane (1985) Hitachi - rozszerzenia strumieniowe procesorów - wyniki 36S00 36S00 (MMX, 3DNow!, SSE, SSE2, SSE3, AVX, …) (1994) § DM-SIMD (Distributed Memory SIMD): - tablice procesorów - procesory kart graficznych (GPGPU ) Informatyka 1, studia niestacjonarne I stopnia dr inż.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    15 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us