FORTRAN 77 materiały pomocnicze do ćwiczeń



Podobne dokumenty
PLAN WYNIKOWY DLA KLASY DRUGIEJ POZIOM PODSTAWOWY I ROZSZERZONY. I. Proste na płaszczyźnie (15 godz.)

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

FORTRAN 77. materiały pomocnicze do wykładów. Opracował: dr Jan Budziński

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Przykładowe rozwiązania zadań. Próbnej Matury 2014 z matematyki na poziomie rozszerzonym

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

SPIS TREŚCI WSTĘP LICZBY RZECZYWISTE 2. WYRAŻENIA ALGEBRAICZNE 3. RÓWNANIA I NIERÓWNOŚCI

KURS WSPOMAGAJĄCY PRZYGOTOWANIA DO MATURY Z MATEMATYKI ZDAJ MATMĘ NA MAKSA. przyjmuje wartości większe od funkcji dokładnie w przedziale

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

KRYTERIA OCENIANIA Z MATEMATYKI W OPARCIU O PODSTAWĘ PROGRAMOWĄ I PROGRAM NAUCZANIA MATEMATYKA 2001 DLA KLASY DRUGIEJ

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

ODPOWIEDZI I SCHEMAT PUNKTOWANIA ZESTAW NR 2 POZIOM PODSTAWOWY. Etapy rozwiązania zadania

Propozycje rozwiązań zadań otwartych z próbnej matury rozszerzonej przygotowanej przez OPERON.

Zadania do samodzielnego rozwiązania zestaw 11

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą

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

Obliczenia iteracyjne

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

? 14. Dana jest funkcja. Naszkicuj jej wykres. Dla jakich argumentów funkcja przyjmuje wartości dodatnie? 15. Dana jest funkcja f x 2 a x

Zagadnienia do małej matury z matematyki klasa II Poziom podstawowy i rozszerzony

EGZAMIN MATURALNY Z MATEMATYKI

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE II W PUBLICZNYM GIMNAZJUM NR 2 W ZESPOLE SZKÓŁ W RUDKACH

Laboratorium nr 1. i 2.

Dział I FUNKCJE I ICH WŁASNOŚCI

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych klasa druga zakres rozszerzony

EGZAMIN MATURALNY W ROKU SZKOLNYM 2014/2015

KLUCZ PUNKTOWANIA ODPOWIEDZI

Programowanie strukturalne i obiektowe. Funkcje

I. Funkcja kwadratowa

5 Równania różniczkowe zwyczajne rzędu drugiego

10 zadań związanych z granicą i pochodną funkcji.

1. Znajdowanie miejsca zerowego funkcji metodą bisekcji.

WSTĘP DO ANALIZY I ALGEBRY, MAT1460

ZESPÓŁ SZKÓŁ W OBRZYCKU

Wymagania na egzamin poprawkowy z matematyki w roku szkolnym 2018/2019 klasa 1 TLog

x y

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

do instrukcja while (wyrażenie);

I. Funkcja kwadratowa

MATeMAtyka zakres rozszerzony

= i Ponieważ pierwiastkami stopnia 3 z 1 są (jak łatwo wyliczyć) liczby 1, 1+i 3

Przedmiotowe zasady oceniania i wymagania edukacyjne z matematyki dla klasy drugiej gimnazjum

2) R stosuje w obliczeniach wzór na logarytm potęgi oraz wzór na zamianę podstawy logarytmu.

Zajęcia nr 1 (1h) Dwumian Newtona. Indukcja. Zajęcia nr 2 i 3 (4h) Trygonometria

LUBELSKA PRÓBA PRZED MATURĄ 2017 poziom podstawowy

Osiągnięcia ponadprzedmiotowe

ROZKŁAD MATERIAŁU DO 1 KLASY LICEUM (ZAKRES PODSTAWOWY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

LUBELSKA PRÓBA PRZED MATURĄ 09 MARCA Kartoteka testu. Maksymalna liczba punktów. Nr zad. Matematyka dla klasy 3 poziom podstawowy

(a b 1 2); : ( b a + b ab 2 + c ). : a2 2ab+b 2. Politechnika Białostocka KATEDRA MATEMATYKI. Zajęcia fakultatywne z matematyki 2008

Egzamin ustny z matematyki semestr II Zakres wymaganych wiadomości i umiejętności

Podstawy Programowania C++

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

1. Liczby zespolone i

Obliczenia Symboliczne

KLUCZ PUNKTOWANIA ODPOWIEDZI

Model odpowiedzi i schemat oceniania do arkusza II

Podstawy Programowania Podstawowa składnia języka C++

Wymagania na poszczególne oceny w klasie II gimnazjum do programu nauczania MATEMATYKA NA CZASIE

Warsztaty dla nauczycieli

Układy równań liniowych. Ax = b (1)

Laboratorium Programowanie Obrabiarek CNC. Nr H7

Tematyka do egzaminu ustnego z matematyki. 3 semestr LO dla dorosłych

15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej

Pojęcia, wymagania i przykładowe zadania na egzamin poprawkowy dla klas II w roku szkolnym 2016/2017 w Zespole Szkół Ekonomicznych w Zielonej Górze

ALGEBRA z GEOMETRIA, ANALITYCZNA,

Aby przygotować się do kolokwiów oraz do egzaminów należy ponownie przeanalizować zadania

Metody numeryczne I Równania nieliniowe

PLAN WYNIKOWY Z MATEMATYKI DLA KLASY II TECHNIKUM 5 - LETNIEGO

Przygotowanie do poprawki klasa 1li

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łanc Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

PORÓWNANIE TREŚCI ZAWARTYCH W OBOWIĄZUJĄCYCH STANDARDACH EGZAMINACYJNYCH Z TREŚCIAMI NOWEJ PODSTAWY PROGRAMOWEJ

Osiągnięcia ponadprzedmiotowe

Treści programowe. Matematyka 1. Efekty kształcenia. Literatura. Warunki zaliczenia. Ogólne własności funkcji. Definicja 1. Funkcje elementarne.

PLAN PRACY ZAJĘĆ WYRÓWNAWCZYCH Z MATEMATYKI W KLASIE I LO

Indukcja matematyczna

Wymagania na egzamin poprawkowy z matematyki w roku szkolnym 2018/2019 klasa 1 TŻiUG

KLUCZ PUNKTOWANIA ODPOWIEDZI

Wymagania edukacyjne z matematyki w XVIII Liceum Ogólnokształcącym w Krakowie, zakres podstawowy. Klasa druga.

ROZKŁAD MATERIAŁU DO 1 KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE II A ROK SZKOLNY 2013/ ZAKRES PODSTAWOWY

ROK SZKOLNY 2017/2018 WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY:

( ) Arkusz I Zadanie 1. Wartość bezwzględna Rozwiąż równanie. Naszkicujmy wykresy funkcji f ( x) = x + 3 oraz g ( x) 2x

WIELOMIANY I FUNKCJE WYMIERNE

Tematy: zadania tematyczne

MATEMATYKA WYKAZ UMIEJĘTNOŚCI WYMAGANYCH NA POSZCZEGÓLNE OCENY DLA KLASY DRUGIEJ

LUBELSKA PRÓBA PRZED MATURĄ 2018 poziom podstawowy

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY 7SP. V. Obliczenia procentowe. Uczeń: 1) przedstawia część wielkości jako procent tej wielkości;

Wprowadzenie do Mathcada 1

Program zajęć pozalekcyjnych z matematyki poziom rozszerzony- realizowanych w ramach projektu Przez naukę i praktykę na Politechnikę

V. WYMAGANIA EGZAMINACYJNE

Zaawansowane metody numeryczne

Zadania egzaminacyjne

MATEMATYKA Z PLUSEM DLA KLASY VII W KONTEKŚCIE WYMAGAŃ PODSTAWY PROGRAMOWEJ. programowej dla klas IV-VI. programowej dla klas IV-VI.

LUBELSKA PRÓBA PRZED MATURĄ

Transkrypt:

materiały pomocnicze do ćwiczeń Opracowanie: dr J. Budziński dr S. Prajsnar dr J. Styszyński

1. Wpisz do pliku rkwad.for (lub rkwad.f)następujący program: C Program "RKWAD" sterujacy obliczaniem rzeczywistych C pierwiastkow rownania kwadratowego C PROGRAM rowkwad REAL a,b,c,x1,x 30 FORMAT(/' Podaj wspolczynniki A, B, C jako trzy liczby'/ * ' oddzielone spacjami. Po ostatniej liczbie wcisnij Enter'/) WRITE(*,30) C Czytanie wspolczynnikow, wywolanie podprogramu i badanie rozwiazan READ(*,*) a,b,c CALL pierw(a,b,c,x1,x,i) IF (i.gt.0) GOTO 50 C Jesli brak pierwiastkow rzeczywistych WRITE(*,304) 304 FORMAT(' Brak rozwiazania w R') STOP '0 pierwiastkow' 50 IF (i.gt.1) GOTO 60 C Jesli jeden pierwiastek WRITE(*,300) x1 300 FORMAT(' x=',e1.4) STOP '1 pierwiastek' C Jesli dwa pierwiastki 60 WRITE(*,303) x1,x 303 FORMAT(' x1=',e1.4,' x=',e1.4) STOP ' pierwiastki' END. Wpisz do pliku pierw.for (lub rkwad.f) następujący podprogram: C Podprogram "PIERW" oblicza pierwiastki rownania kwadratowego C na wejsciu: u, v, w - wspólczynniki rownania C na wyjsciu: k=0 jesli nie istnieja pierwiaski, C k=1 jesli 1 pierwiastek - w p1, C k= jesli pierwiastki - w p1 i p C SUBROUTINE pierw(u,v,w,p1,p,k) REAL u,v,w,p1,p,delta delta=v*v-4.0*u*w C Jesli delta < 0 IF (delta.lt.0.0) THEN k=0 RETURN ENDIF C Jesli delta = 0 IF (delta.eq.0.0) THEN k=1 p1=-v/(u+u) RETURN ENDIF C Jesli delta > 0 IF (delta.gt.0.0) THEN k= delta=sqrt(delta) p1=(-v-delta)/(u+u) p=(-v+delta)/(u+u) RETURN ENDIF END 3

3. Wykonaj kompilację plików źródłowych: RMFORT RKWAD/N RMFORT PIERW/N 4. Przeprowadź łączenie plików skompilowanych za pomocą komendy: PLINK86 FI RKWAD,PIERW LIB C:\RMFORT\RMFORT.LIB 5. Zainicjuj wykonanie programu: RKWAD 6. Utwórz plik kw.bat jak poniŝej: RMFORT RKWAD/N PAUSE RMFORT PIERW/N PAUSE PLINK86 FI RKWAD,PIERW LIB C:\RMFORT\RMFORT.LIB PAUSE RKWAD W efekcie czynności wymienione w p. 3-5 będą kolejno wykonane po napisaniu komendy: KW Dla uŝytkowników systemu LINUX: 3. Wykonaj kompilację i łączenie plików źródłowych: g77 rkwad.f pierw.f o rkwad.x 4. Zainicjuj wykonanie programu:./rkwad.x 4

7. Podaj typ i długość stałej; zaznacz stałe niezgodne z F77-1 -5.55D-03 'Ala' 0.0D0 7Hma kota +0 0.0 -.D+01 (0.0,0.0) 0.0E0.true. (3.3E0, 4.4D1) 137 false -1.0000 137. +137.0D1 8. Które z podanych nazw symbolicznych są niezgodne z F77? ala 1ala x3 x(3) zorro yy 3zz zmienna ola10 U a) 9. Zadeklaruj następującą tablicę: (0.0, 1.1) (.0,-3.5) (1.0,3.0) (.0,10.9) (-1.0,0.0) (0.0,5.5) b) c) ijkl 1.5.0-3.3 18.0 0.0-1.1.0-0.5-1.1 0.0 0.0 1.1 α, gdzie i = 0,1,,..., 10 ; j = 3,, 1, 0; k = 5,..., 5; 10 l 50 oraz α ijkl - przyjmuje wartości typu 5

10. Zastosuj instrukcje jawnego opisu typu tak, aby danym programie nazwa ala była znakowa*1 ff_96 była calkowita*4 u była podwójnej precyzji zztop była logiczna*1 mat była tablicą 3-indeksową o elementach calkowitych*4, i kaŝdy indeks zmienia się od 1 do 10. nazwisko była tablicą mogącą przechować 1000 nazwisk; dlugość nazwiska z załoŝenia nie przekracza 30 znaków. 11. Napisz prosty program obliczający: a) pole i obwód prostokąta, b) pole i obwód koła, c) pole powierzchni i objętość kuli. Wskazówka: Zastosuj uproszczoną wersję instrukcji czytania i pisania: write(*,*) Podaj a,b write(*,*)l,s read(*,*)a,b 1. Zapisz w F77 następujące wyraŝenia arytmetyczne i logiczne (wskazówka: zaczynaj zawsze od instrukcji specyfikacji typu i długości zmiennych; stosuj odpowiednie instrukcje podstawiania) a) ω = x x α β αy gdzie α, β są REAL*4 a x, y są, b) γ = sinαx α β + cos βx e x gdzie α, β, x są, 6

c) gdzie x, y, z są INTEGER *4 ( z) (( + y) ) ( x y ) x <, d) gdzie α, β są e) ( ) ) ( ) β α 1.0 0.0 β = 1.0 = 1. 0 α α β x gdzie α = [ α, α, α ], β = [ β, β β ] a, b, x, y są REAL*4 f) gdzie α = [ α, α α ] e 1 3 1, 1, 3 e x 3 ln by x cos ax, o składowych REAL*4, ( x y ) α γx sin γx cos o składowych INTEGER*4 ωx x, y są, oraz γ, ω są REAL*4. Uwaga: pamiętaj, Ŝe funkcja SQRT określona jest tylko dla argumentu typu REAL g) gdzie z * αv + βw z + w e α, β są oraz v w, z z αv, są COMPLEX*16. 13. Instrukcji o jakiej etykiecie zostanie przekazane sterowanie w wyniku wykonania się następującej instrukcji? IF((A+B/R-C)36,01,41 jeŝeli A=3.4, B=.09, C=-6.3, R=.1. 7

gdzie 14. Napisz fragment programu obliczający wartość wyraŝenia y = f ( x) 407.6 10 x < 0.3, x 0 f ( x) = 0,0 x 1 x x, x > 1 Wskazówka: wykonaj to zadanie na trzy sposoby, korzystając z arytmetycznej, logicznej i blokowej instrukcji IF 15. Napisz fragment programu obliczający iloczyn skalarny a b dwóch wektorów, gdzie a = [ a1, a, a3,..., an ], b = [ b1, b, b3,..., bn ] Wskazówka: zastosuj instrukcję DO 3 16. Dana jest macierz o elementach rzeczywistych A ij (i=1,...,100, j=1,...,100). Napisz fragment programu obliczający następujące sumy: 100 100 100. S = a R = a T = a ii j ij i ij i= 1 i= 1 j= 1 17. Napisz fragment programu obliczający wartość iloczynu 100 W = ( a + b ) i = 1 i i 18. Napisz program liczący iloczyn macierzy A( m n) B( n k) Wskazówka: zadeklaruj maksymalny wymiar wszystkich macierzy jako 50x50, a z pliku czytaj aktualne wymiary macierzy A i jej elementy, a potem macierzy B i jej elementy. 19. Napisz podprogram na liczenie iloczynu dwóch macierzy A ( m n) B( n k). Wskazówka: zmodyfikuj program z poprzedniego zadania 8

0. Napisz program wywołujący podprogram napisany w poprzednim zadaniu. Program powinien składać się z następujących elementów: - deklaracja zmiennych i tablic, - otworzenie pliku z macierzami A, B, (np. DANE.DAT) - otworzenie pliku na wyniki, tj. macierz C, (np. WYNIK.DAT) - wczytanie macierzy A i B (z pliku DANE.DAT) - wywołanie podprogramu, - zapisanie macierzy C do pliku (WYNIK.DAT) - STOP END 1. Napisz program obliczający wartości (REAL*4) elementów macierzy TETA o wymiarach 100 100 wg wzoru: teta(i,j)=i+j oraz zapisujący kolejno do zbioru: pierwszy wiersz tej macierzy, pierwsza kolumnę, główną przekątną, główną przekątną w odwrotnej kolejności (tzn. zaczynając od elementu (100,100) a kończąc na (1,1)), górny trójkąt macierzy, dolny trójkąt macierzy.. Napisz program znajdujący pierwiastki równania kwadratowego w ciele liczb zespolonych W tym celu przystosuj program z zadania 1 i. Dokonaj modyfikacji na dwa sposoby: a) obliczając osobno cześć rzeczywistą i urojoną pierwiastków, gdy 0, b) deklarując odpowiednie zmienne jako COMPLEX*8 i prowadząc od początku obliczenia na liczbach zespolonych. 3. Napisz funkcję zewnętrzną liczącą wartość funkcji n! 4. Napisz program obliczający dla ustalonego k kolejne wartości silni: i zapisujący je w odpowiednim wektorze. 0!, 1!,!, 3!,..., (k-1)!, k! 9

5. Napisz podprogram obliczający trójkąt Pascala. 6. Napisz program szukający najmniejszej i największej wartości w zbiorze liczb rzeczywistych 7. Napisz program obliczający iloczyn skalarny wektorów, ich długości i kąt między nimi 8. Napisz program liczący sumę dwudziestu składników ciągu danego wzorem an a = 1 n, jeśli a 1 =. a + 3 n 1 10

Standardowe funkcje RMFORT-ranu (niepełny wykaz) Funkcja Nazwa Liczba argumentów wykładnicza exp dexp cexp pierwiastek kwadratowy logarytm naturalny sinus cosinus sqrt dsqrt csqrt alog dlog clog 1 ) sin dsin csin 1 ) cos dcos ccos Typ argumentu 1 REAL COMPLEX 1 REAL COMPLEX 1 REAL COMPLEX 1 REAL COMPLEX 1 REAL Typ funkcji REAL COMPLEX REAL COMPLEX REAL COMPLEX REAL COMPLEX REAL tangens 1 ) tan dtan 1 REAL REAL arc sin ) asin dasin 1 REAL REAL arc cos ) acos dacos 1 REAL REAL arc tg ) atan datan 1 REAL REAL wartość iabs 1 INTEGER INTEGER bezwzględna abs dabs REAL REAL moduł liczby cabs 1 COMPLEX REAL zespolonej maksimum 3 ) max0 amax1 dmax1 n INTEGER REAL INTEGER REAL minimum przekształcenie do liczby zespolonej sprzęŝenie zespolone 3 ) min0 amin1 dmin1 cmplx dcmplx conjg dconjg n INTEGER REAL REAL 1 COMPLEX COMPLEX *16 1 ) argument w radianach ) rezultat w radianach 3 ) wybór maksymalnej lub minimalnej wartości z listy n argumentów INTEGER REAL COMPLEX COMPLEX *16 COMPLEX COMPLEX *16 Spośród funkcji nie wymienionych w powyŝszej tabeli waŝną i uŝyteczną rolę pełnią poniŝsze funkcje: char(in), funkcja zamiany liczby całkowitej na wartość znakową, gdzie In jest liczbą lub wyraŝeniem typu INTEGER; wartość funkcji jest typu CHARACTER *1, ichar(znak), funkcja zamiany znaku (CHARACTER *1) na liczbę; wartość funkcji jest typu 11

INTEGER. to: Dostępne są takŝe podprogramy pobierania i ustawiania czasu i daty systemu operacyjnego DOS. Są CALL gettim(hh, mm, ss, hd), pobieranie czasu systemowego, CALL settim(hh, mm, ss, hd), ustawianie czasu systemowego, gdzie: hh,mm, ss, hd - są zmiennymi typu INTEGER * oznaczającymi odpowiednio, liczbę godzin, minut, sekund i setnych części sekundy zegara systemowego, CALL getdat(yyyy, mm, dd), pobieranie daty systemowej, CALL getdat(yyyy, mm, dd), ustawianie daty systemowej, gdzie: yyyy, mm, dd - są zmiennymi typu INTEGER * oznaczającymi odpowiednio, rok, miesiąc i dzień kalendarza systemowego. 1

Grafika w FORTRANie 77 1. Uruchom i przeanalizuj działanie poniŝszego programu (tylko dla RMFORTu) C Program "GRAF_P" ilustrujący wybrane funkcje graficzne dla konfiguracji C komputera z kolorowym monitorem i karta graficzna EGA, VGA lub SVGA C PROGRAM grafika PARAMETER ( nszer=10, maxxl=nszer*8-1, maxyl=64800/nszer, * maxxf=639, maxyf=349 ) INTEGER klaw,xk,yk,xpan,ypan,icn,x0,y0,k0,tkur CHARACTER *36 tekstm CHARACTER *45 tfont() DATA tfont/'0 1 3 4 5 6 7 8 9 : ; < = > $? @ a b c d e', * 'f g h i j k l m n o p r s t u v w x y z { }'/ C CALL init(1) CALL szer(nszer) CALL inipal(3) CALL color(9) CALL border() CALL rectab(0,0,maxxl,maxyl,) CALL color(1) CALL rectab(0,0,maxxf,maxyf,0) CALL moveab(590,410) CALL text('test fontow specjalnych',14,) iy=440 DO 10 k=1, CALL moveab(590,iy) CALL text(tfont(k),15,) CALL font(6) iy=iy+0 CALL moveab(590,iy) CALL text(tfont(k),1,) CALL font(1) iy=iy+30 10 CONTINUE CALL icndef(0,40,66,1,9) CALL iknon() CALL mkursor(1) CALL kurlim(0,0,maxyl+1,maxxl+1) x0=00 y0=100 k0=0 tkur=0 CALL kurdef(tkur,15,0) CALL kursor(x0,y0) 13

C C Otwarcie petli oczekiwania komend 40 CALL inkey(ia,ib) C Natychmiastowe zakonczenie programu klawiszem <Esc> IF (ia.eq.1) GOTO 50 CALL myszst(klaw,xk,yk,xpan,ypan,icn) C Zmiama typu kursora klawiszem <Ins> IF (ia.eq.8) THEN tkur=tkur+1 IF (tkur.gt.1) tkur=0 CALL kurdef(tkur,15,9) ENDIF C Badanie wcisniecia lewego i prawego klawisza na ikonie IF ((icn.eq.1).and.(klaw.eq.1)) GOTO 80 IF ((icn.eq.1).and.(klaw.eq.)) GOTO 90 C Opisy stany myszy 44 IF ((x0.eq.xk).and.(y0.eq.yk).and.(klaw.eq.k0)) GOTO 40 write(tekstm,308) klaw,xk,yk,xpan,ypan,icn 308 format(6i6) CALL moveab(340,305) CALL text(' klaw xk yk xpan ypan icn',10,) CALL moveab(340,35) CALL text(tekstm,7,) x0=xk y0=yk k0=klaw klaw=0 GOTO 40 C Zakonczenie programu 50 CALL init(0) STOP 14

C C Obsluga funkcji lewego klawisza na ikonie 80 CALL kuroff() CALL kursor(0,0) CALL kuroff() CALL iknoff() CALL obraz('c:\rmfort\kwiaty_m.obr'//char(0),15,360) CALL obraz('c:\rmfort\kwiaty_d.obr'//char(0),15,10) CALL pisztx(15,'witaj w Krainie','EEEEE7AAAAAAA',150,10,) CALL pisztx(9,'fortran-u','999cccc79',05,00,) CALL pisztx(17,'^z_o_lwi_atko na _L_ace','F6789ABCDFE9FAAAA', * 0,50,) tkur=1 CALL kurdef(tkur,15,9) xk=55 yk=50 CALL kursor(xk,yk) CALL iknon() GOTO 44 C C Obsluga funkcji prawego klawisza na ikonie 90 CALL kuroff() CALL kursor(0,0) CALL kuroff() CALL color(13) CALL rectab(1,1,638,348,1) CALL pisztx(8,'good Bye','CCCCDAAA',00,40,13) CALL gettim(ih,im,is,ic) i=(ih*3600+im*60+is)*100+ic iy=41 94 CALL color(1) CALL rectab(10,iy,0,iy+7,1) 96 CALL gettim(ih,im,is,ic) j=(ih*3600+im*60+is)*100+ic IF ((j-i).lt.5) GOTO 96 i=j CALL color(13) CALL rectab(10,iy,0,iy+7,1) iy=iy+1 IF (iy.lt.346) GOTO 94 GOTO 50 END 15

. Napisz program rysujący na ekranie trójkąt. 3. Napisz program rysujący na ekranie kwadrat i wpisany w niego trójkąt. 4. Napisz program rysujący na ekranie kilka wpisanych jeden w drugi okręgów. 5. Napisz program sporządzający na ekranie wykres funkcji. 16

Zagadnienia do zaprogramowania Opracowanie zagadnienia 1. teoria zagadnienia. algorytm-schemat blokowy i objaśnienie stosowanych oznaczeń 3. proste dane testowe i wyniki dla nich 4. listing programu w F77 program powinien mieć strukturę segmentową (program główny, podprogramy, funkcje zewnętrzne itp.), wszystkie segmenty programu powinny zawierać komentarze (stosować je jak najczęściej!), wpisać komentarz podający temat programu i autorów, struktura programu głównego: a) jawna deklaracja wszystkich zmiennych i tablic, (dla indeksów uŝywaj nazw zaczynających się na litery: I,J,K,L,M,N) b) definicja zbiorów z danymi wejściowymi i na wyniki, c) instrukcje format, d) pobranie czasu i daty systemowej (podprogramy gettim i getdat), e) wczytanie danych wejściowych ze zbioru, f) wywołanie podprogramu(ów)/funkcji, g) zapis czasu i daty do zbioru g) zapis wyników do zbioru (i ewentualnie na ekran), h) wywołanie podprogramu dokonującego graficznej prezentacji wyników, i) STOP END 5. wyniki numeryczne 6. graficzna prezentacja rozwiązań Podstawowe elementy sieci działań Blok decyzyjny Proces Przygotowanie Początek-Koniec Wprowadzaniewyprowadzanie danych Łącznik Proces alternatywny 17

1) Na podstawie szeregu Maclaurina obliczyć liczbę e z uwzględnieniem stu pierwszych wyrazów rozwinięcia ) Obliczyć sh(x) z dokładnością do n członów wg rozwinięcia: sh(x) = x/1! + x 3 /3! + x 5 /5! +... 3) Obliczyć exp(x) z dokładnością do n członów wg rozwinięcia: e x = 1+ x/1! + x /! + x 3 /3! +... 4) Obliczyć pierwiastek równania x 3 x = 0 w przedziale (1,) metodą siecznych (regula falsi) x x 5) Obliczyć pierwiastek równania xe 5 e + 5 = 0 w przedziale (4,5) metodą stycznych (Newtona) 6) Obliczyć pierwiastek równania x 3 x 4x + 7 = 0 w przedziale (-,-1) metodą połowienia przedziału (bisekcji) 7) Obliczyć całkę 1 0 x tg xdx metodą trapezów 1 8) Obliczyć wartości całki dx 1 0 + x 1 metodą parabol (Simpsona) π 1 9) Obliczyć całkę dx 1 0 + sin x metodą prostokątów π / 10) Obliczyć wartości całki E ( k) = 1 k sin αdα, dla k = 0.0, 0.1, 0.,..., 1. 0 metodą trapezów 0 T 11) Obliczyć sumę macierzy A i macierzy A T 1) Obliczyć iloczyn macierzy A i macierzy A 13) Obliczyć komutator macierzy A i B 14) Napisać program szukający i określający połoŝenie zer w macierzy liczb rzeczywistych 15) Napisać program obliczający współczynniki a i b prostej regresji 16) Napisać program obliczający współczynnik korelacji zmiennych losowych X i Y 17) Obliczyć trzeci moment centralny zmiennej losowej X 18

18) Obliczanie wartości średniej, odchylenia standardowego, wartości maksymalnej, minimalnej i zakresu dla n danych pomiarowych. 19) Napisać program obliczający danych statystycznych o klientach. Rekord danych ma następującą postać: pole kolumna numer klienta 1-4 wiek (w latach) 6-7 płeć (0-kobieta, 1-męŜczyzna) 9 stan cywilny (0-wolny, 1-Ŝonaty/zamęŜna-rozwiedziony(a) 11 Wyznaczyć: a)procent osób poniŝej 1 lat, c)procent męŝczyzn i kobiet, e)procent zamęŝnych i Ŝonatych, b)procent osób w wieku co najmniej 1 lat, d)procent osób w stanie wolnym, f)procent rozwiedzionych. 0) Napisać program obliczający iloczyn, iloraz i moduł liczb zespolonych 1) Rozwiązywanie układu n=3 równań liniowych z 3 niewiadomymi metoda eliminacji Gaussa ) Interpolacja funkcji metodą Newtona 3) Interpolacja funkcji metoda Lagrange a 4) Dodawanie, odejmowanie i mnoŝenie wielomianów 5) Rozwiązywanie równania róŝniczkowego zwyczajnego metodą Eulera 6) Wypisanie wszystkich liczb pierwszych między N1=100 a N=300 7) Zamiana liczby dziesiętnej na dwójkową 8) Największy wspólny podzielnik i najmniejsza wspólna wielokrotność dwóch liczb całkowitych Komputery są doskonałym narzędziem słuŝącym do kodowania i dekodowania tajnych komunikatów. 9) Kodowanie i dekodowanie tekstu metodą Cezara (C w miejsce A, D w miejsce B, E w miejsce C itd.) 19

30) Kodowanie i dekodowanie tekstu metodą Gronsfelda, tj. z zastosowaniem klucza liczbowego. Przykład: klucz 3 1 0 6 3 1 0 6 3 1 tekst P R O G R A M O W A N I E szyfr S S Q G X D N Q W G Q J G 31) Liczby Fibonacciego wyraŝają się wzorami: F 1 = 1, F = 1, F i+ = F i+1 + F i, i 1, a) wydrukuj pierwszych n =15 tych liczb, b) dla kaŝdej pary wydrukuj ich stosunek, c) policz dla kaŝdej F i (i ) róŝnicę: F i - 1.618 F i-1 3) Porządkowanie liczb w porządku rosnącym i malejącym 33) Sprawdzanie czy 3 liczby mogą być długościami boków trójkąta. JeŜeli tak to jakiego? 34) Znajdowanie pierwiastka kwadratowego z liczby dodatniej metodą Newtona-Raphsona 35) Porządkowanie listy studentów w porządku alfabetycznym a)wg imion, b)wg nazwisk 36) Wczytanie dowolnej daty i obliczenie jaki to dzień tygodnia 37) Zamiana liczb rzymskich na dziesiętne i odwrotnie 0

Przykładowe problemy 1

A. Wyznaczanie miejsc zerowych funkcji metodą bisekcji Start Czytaj a=p; b=k; licz=0; P K Tak fa=fun(a); c=a; c=c+krok; fc=fun(c) c > K Nie fa*fc < 0 Tak b=c Nie Dana jest funkcja fun(x), opisana za pomocą segmentu funkcji, jak poniŝej. Wyznaczyć miejsca zerowe tej funkcji w przedziale <P,K> co zaznaczono na powyŝszym rysunku. Po wyznaczeniu miejsc zerowych naleŝy wydrukować na ekran ich wartości, a w przypadku nie znalezienia Ŝadnego miejsca zerowego podać komunikat: Brak miejsc zerowych w podanym przedziale. Przy konstrukcji programu posłuŝyć się siecią działań zamieszczoną obok. NiŜej podano deklaracje zmiennych które wystąpią w programie, oraz wspomniany segment funkcji, przy załoŝeniu, Ŝe jest to funkcja sinus. c=(a+b)/; fc=fun(c) Abs(ba)<eps Nie Tak licz=licz+1 Z[licz]=c a=c+krok b=k Real *8 P,K Real *8 krok,eps Real *8 a,b,c Integer licz Real *8 fa,fb,fc Real *8 Z(1:30) {punkty pocz. i końcowy} {przyrost i dokładność} {zmienne robocze} {licznik miejsc zerowych} {wartości funkcji w p. a,b,c} {wektor miejsc zerowych} fa*fc <0 Nie a=c; fa=fc Tak b=c; fb=fc Real *8 Function fun(x) Real *8 x fun:=sin(x); Return end licz >0 Tak Nie Jako przykładowe dane wejściowe podać: P -0.0 ; K. 0.0 krok 0.1 eps 0.00000000001 Druk miejsc zerowych Komunikat Brak zer Stop 3

B. Problem utraty dokładności Dane jest wyraŝenie całkowe: n! e dx = a ( ar) k! n! + a R ar n k n ax e n+ 1 n+ 1 0 k = 0 x (1) Po przekształceniu prawa strona wyraŝenia dla tej samej całki przyjmuje postać: R n! e a ar n ax x e dx = n+ 1 k= 0 0 n+ 1+ k ( ar) ( n + 1+ k)! () Problem: Obliczyć wartości całek w obydwu przypadkach dla 0 n nmax ; a = 1 i R =. Wartości całek obliczane według wzorów (1) i () dla tego samego n drukować na ekranie oraz do pliku obok siebie z podaniem wartości n. Wskazówka: Zadeklarować dwa wektory dla zapisywania odpowiednich całek oraz dwie funkcje: funkcję obliczania silni i funkcję potęgowania. 4

Szkic programu: Program dokladnosc Implicit None Integer *4 nmax Parameter ( nmax=50 ) Real *8 W1(0:nmax),W(0:nmax) pozostałe zmienne czytanie a oraz R do 50 n=0, nmax obliczenie wartości całki wg wzoru (1) i podstawienie do W1(n) obliczenie wartości całki wg wzoru () i podstawienie do W(n) 50 Continue instrukcje programu drukowanie kolejnych elementów W1 i W end Real *8 Function silnia(n) Integer *4 n definicja funkcji silnia silnia=... end Real *8 Function potega(a, n) Integer *4 n Real *8 a begin definicja funkcji potega potega=... end 5

C. Metoda iteracyjna rozwiązywania układu równań nieliniowych Rozwiązywanie układu równań nieliniowych metodą iteracyjną Dany jest układ dwu równań: y) = 0 i F ( x, y) 0, F ( x, = 1 dla których zakładamy, Ŝe istnieje rozwiązanie. Niech x 0 i y 0 są przybliŝonymi pierwiastkami układu równań (1). Przekształcając ten układ równań do postaci: x = x, y) i y ( x, ), φ = φ ( y 1 moŝna zbudować ciągi iteracyjne x = x, y ) i y ( x, ), x x φ = φ ( y 1 1 0 0 1 0 0 = φ ( x, y ) y = φ ( x, y 1 1 1 1 1 n i, ) φ ( x, y ) y = φ ( x, y ) 1 n 1 n 1 n n 1 1 = n i. Jeśli proces iteracyjny jest zbieŝny to przy dostatecznie duŝym n róŝnice x x < ε oraz y y < ε, n n 1 n n 1 gdzie ε jest załoŝoną dokładnością wyznaczania pierwiastków. Wtedy powinno zachodzić, Ŝe: F x, y ) 0 i F ( x, y ) 0. ( 1 n n n n Problem 1 Dany jest układ dwóch równań: x xy 5x + 1 = 0 x + 3ln x y = 0 który moŝna przekształcić do postaci: x = y = ( xy + 5x 1) / x + 3ln x, (1) () (3 1 ) (3 ) (3 n ) (4) (5). (6) Napisać program wyznaczania pierwiastków układu równań (5). Wskazówka: Jako dane wejściowe przyjąć: x 0 =1.0 i y 0 =1.0, oraz eps = 0.0000001. Problem Napisać program rozwiązywania układu trzech równań: x + + 3x x + z + y y + z 4y = 0 4z = 0 = 0. (7) Nie Start Czytanie x 0 i y 0 x=φ 1 (x 0,y 0 ) y=φ (x 0,y 0 ) dx=abs(x-x 0 ) dy=abs(y-y 0 ) x 0 =x y 0 =y dx<eps i dy<eps Oblicz F 1 (x, y) Oblicz F (x, y) Drukuj x 0, y 0, F 1, F Stop Tak 6

D.. MnoŜenie macierzy i wektorów 1. Zredagować plik o nazwie MatrixM.for zwierający procedury: czytania macierzy o nazwie CzytMat pisania macierzy o nazwie PiszMat mnoŝenia macierzy o nazwie MnozMat czytania wektora o nazwie CzytWek pisania wektora o nazwie PiszWek mnoŝenia macierzy przez wektor o nazwie MatWek. Napisać program o nazwie TestMa.fort który posługując się procedurami z MatrixM wykona następujące czynności: - wczytanie macierzy A z pliku a.dat - zapisanie tej macierzy do pliku wyn.dat - wczytanie macierzy B z pliku b.dat - dopisanie tej macierzy do pliku wyn.dat - sprawdzenie czy macierze są zgodne względem mnoŝenia, - jeśli tak, wykonać mnoŝenie AxB do C a wynik dopisać do pliku wyn.dat - jeśli nie, wypisać komunikat Macierze niezgodne względem mnoŝenia. - wczytanie wektora X z pliku x.dat - sprawdzenie czy macierz A i wektor są zgodne względem mnoŝenia, - jeśli tak, wykonać mnoŝenie AxX do W a wynik dopisać do pliku wyn.dat - jeśli nie, wypisać komunikat Macierz i wektor niezgodne względem mnoŝenia. Uwaga: Pliki a.dat, b.dat i x.dat naleŝy wyedytować oddzielnie. 7

E. Rozwiązywanie układu równań liniowych. Zamieszczony na odwrocie podprogram GAUSSJ rozwiązuje układ równań liniowych Ax=b, gdzie A jest macierzą współczynników b macierzą wyrazów wolnych. Na wejściu: A macierz współczynników, n stopień macierzy (aktualny) b wektor wyrazów wolnych Na wyjściu: w A znajduje się macierz odwrotna do niej (A -1 ) w b poszukiwane rozwiązanie (czyli wektor x). Przykładowe dane (tworzymy pliki o innych nazwach jak dla przypadku A): Plik aa.dat Plik bb.dat 3 3 3 1 1 8 13 10 1 3 3 1 Napisać program, który: - wczyta macierz A z pliku aa.dat, - zapisze tę macierz do pliku gwyn.dat, - wczyta wektor b z pliku bb.dat, - dopisze ten wektor do pliku gwyn.dat, - wywoła podprogram GAUSSJ, - dopisze wektor x (rozwiązanie) do pliku gwyn.dat, - wykona mnoŝenie macierzy A przez wektor x do b, (test poprawności rozwiązania) - zapisze wektor wynikowy do pliku gwyn.dat, 8

c Linear equation solution by Gauss-Jordan elimination. Where: a(1:n,1:n) is an input c matrix storred in an array of physical dimensions np by np; b(1:n) is an input vector c containing the right-hand side values. c On output: a(1:n,1:n) is replaced by its matrix inverse, and b(1:n) c is replaced by the solution vector x. SUBROUTINE gaussj(a,n,np,b ) INTEGER n,np,nmax a(1:np,1:np),b(1:np) PARAMETER (NMAX=50) INTEGER i,icol,irow,j,k,l,ll,indxc(nmax),indxr(nmax),ipiv(nmax) big,dum,pivinv do 11 j=1,n ipiv(j)=0 11 continue do i=1,n big=0. do 13 j=1,n if(ipiv(j).ne.1)then do 1 k=1,n if (ipiv(k).eq.0) then if (abs(a(j,k)).ge.big)then big=abs(a(j,k)) irow=j icol=k endif else if (ipiv(k).gt.1) then pause ' singular matrix in gaussj' Stop endif 1 continue endif 13 continue ipiv(icol)=ipiv(icol)+1 if (irow.ne.icol) then do 14 l=1,n dum=a(irow,l) a(irow,l)=a(icol,l) a(icol,l)=dum 14 continue dum=b(irow) b(irow)=b(icol) b(icol)=dum endif indxr(i)=irow indxc(i)=icol if (a(icol,icol).eq.0.) then pause ' singular matrix in gaussj' Stop endif pivinv=1./a(icol,icol) a(icol,icol)=1. do 16 l=1,n a(icol,l)=a(icol,l)*pivinv 16 continue b(icol)=b(icol)*pivinv do 1 ll=1,n if(ll.ne.icol)then dum=a(ll,icol) a(ll,icol)=0. do 18 l=1,n a(ll,l)=a(ll,l)-a(icol,l)*dum 18 continue b(ll)=b(ll)-b(icol)*dum endif 1 continue continue do 4 l=n,1,-1 if(indxr(l).ne.indxc(l))then do 3 k=1,n dum=a(k,indxr(l)) a(k,indxr(l))=a(k,indxc(l)) a(k,indxc(l))=dum 3 continue 9

endif 4 continue return END C (C) Copr. 1986-9 Numerical Recipes Software +@&):. 30