Czytanie listy zmiennych według ich nazw: dyrektywa NAMELIST W części deklaracyjnej: NAMELIST /nazwa/ zmienna_1,zmienna_2,…,zmienna_n Czytanie: READ(wejście,nazwa_listy)

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Podstawowe polecenia systemu mgr inż. Edward Surlas
Katarzyna Szafrańska kl. II ti
Wstęp do strumieni danych
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Programowanie obiektowe PO PO - LAB 6 Wojciech Pieprzyca.
Wzorce.
Programowanie w języku Visual Basic
PASCAL (3) dr Anna Kwiatkowska.
typy całkowite (całkowitoliczbowe)
Zapis danych.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Systemy plików FAT12, FAT16, FAT32, NTFS.
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Inżynieria oprogramowania Lecture XXX JavaTM – część IV: IO
Kurs Pascala – spis treści
Tablice.
Czytanie numerów puktów i ich współrzędnych z mapy.
Procedury systemowe w systemie DOS
Podstawowe polecenia systemu DOS
Dynamiczne struktury danych 1
Programowanie w C Wykład 3
SO – LAB3 Wojciech Pieprzyca
Język ANSI C Operacje we/wy
Wykład 2 struktura programu elementy języka typy zmienne
Wyrażenia Wyrażenie w Fortranie jest poprawną syntaktycznie kombinacją zmiennych, stałych, operatorów i funkcji. Wyrażenia są jednozdaniowymi przepisami.
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
1 Podstawy informatyki H. P. Janecki- 2006_ Systemy Operacyjne W6.
KOMPUTEROWE WSPOMAGANIE PRAC BADAWCZYCH FORTRAN 90/95 – c.d. Adam FIC INSTYTUT TECHNIKI CIEPLEJ.
KOMPUTEROWE WSPOMAGANIE PRAC BADAWCZYCH FORTRAN - wprowadzenie Adam FIC INSTYTUT TECHNIKI CIEPLEJ.
Pliki. Pliki Pliki jako pamięć nieulotna Pliki jako pamięć nieulotna Nazwy, atrybuty i prawa dostępu Nazwy, atrybuty i prawa dostępu atrybuty atrybuty.
Programowanie w języku Fortran 95
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Podstawy programowania
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Zbiór do posortowania mieści się w pamięci
Podstawy programowania
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Definicja pliku tekstowego Operacje wykonywane na plikach tekstowych
Linux - polecenia.
PL/SQL Zajęcia nr II PL/SQL(2) M. Rakowski - WSISiZ.
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Pamięć komputerowa S t r u k t u r a p a m i ę c i.
Podstawy informatyki 2013/2014
Programowanie baz danych
MICROSOFT Access TWORZENIE MAKR
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
PL/SQL – dalsza wędrówka
Systemy operacyjne (wiosna 2014)
Podstawy programowania II Wykład 3: Obsługa plików w stdio.h.
System plików.
Zmienne i typy danych w C#
Microsoft Disk Operating System
Powtórzenie wyk ł adu 10 Fizyczna organizacja danych w bazie danych. Indeksy.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Temat 4 Systemy plików [Przedmiot: Systemy operacyjne | Opracował: mgr Marek Kwiatkowski | ZS Mogilno – 2015]
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Piotr Kawałek , Mateusz Śliwowski
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Microsoft Disk Operating System
Zapis prezentacji:

Czytanie listy zmiennych według ich nazw: dyrektywa NAMELIST W części deklaracyjnej: NAMELIST /nazwa/ zmienna_1,zmienna_2,…,zmienna_n Czytanie: READ(wejście,nazwa_listy) Zmienne na liście mogą być zmiennymi prostymi lub tablicami. W pliku wejściowym piszemy: &nazwa_listy zmienna_1=wartość_1,…, zmienna_n=wartość_n &end Dla zmiennych tablicowych można podać albo leksykograficznie elementy tablicy albo wybrane elementy, np. A(1,1)=1.0,A(1,5)=4.0 Zmienna nie zaspecyfikowana na liście w pliku wejściowym przyjmuje wartość 0.

Rekord – elementarna porcja informacji jaka może być przesyłana pomiędzy pamięcią operacyjną a urządzeniem zewnętrznym (klawiaturą, ekranem, drukarką, dyskiem, taśmą magnetyczną). Rekordy specjalne: EOF (End Of File; znacznik końca pliku). Typy rekordów: rekordy zredagowane; mogą być zapisane na każdym nośniku; ostatni znak jest znakiem końca linii (EOL; End Of Line); rekordy niezredagowane; nie mogą być czytane z klawiatury ani zapisane na ekran i drukarkę. Dostęp do rekordów: sekwencyjny (pliki na wszystkich nośnikach); bezpośredni (tylko pliki dyskowe). Obsługa wejścia/wyjścia (I/O) w FORTRANie

Plik danych – uporządkowany zbiór rekordów danych jednakowego typu posiadający jednoznaczny identyfikator (np. nazwę w UNIXie). Podział plików pod względem rodzaju komunikacji z pamięcią: Pliki zewnętrzne (ogromna większość): pliki umieszczone na nośnikach zewnętrznych (dyskach, CD-ROMach, taśmach magnetycznych). W FORTRANie odwołujemy się do nich poprzez liczbę całkowitą lub *. Pliki wewnętrzne: zmienne typu CHARACTER; w FORTRANie odwołujemy się do nich poprzez nazwę zmiennej. W dawniejszych wersjach FORTRANu pliki wewnętrzne obsługiwały instrukcje ENCODE (pisanie) i DECODE (czytanie); począwszy od FORTRANu77 zwykłe instrukcje READ i WRITE.

Przykład użycia zmiennej jako pliku wewnętrznego w celu konwersji liczby na łancuch tekstowy. CHARACTER*4 LICZ ITER=111 WRITE(LICZ,(I4.4)) ITER Po wykonaniu tej operacji w zmiennej LICZ zostanie zapamiętany łańcuch 0111

Typy i atrybuty plików w FORTRANie Rodzaj pliku i atrybut formy zapisu Metoda dostępu i atrybut organizacji pliku Sekwencyjna SEQUENTIAL Bezpośrednia DIRECT Plik formatowany FORMATTED Plikiem jest sekwencja rekordów zredagowanych, z których każdy jest ciągiem znaków ASCII i jest zakończony znacznikiem końca pliku. Dozwolone są rekordy o różnych długościach. Wszystkie rekordy muszą być tej samej długości. Plik nieformatowany UNFORMTTED Plikiem jest sekwencja rekordów niezredagowanych, z których każdy jest ciągiem wartości w zapisie odpowiadającym wewnętrznej postaci dwójkowej. Każdy rekord zawiera informację o swoim początku i końcu. Rekordy są uzupełniane do stałej długości odpowiednią liczbą bajtów. Plik dwójkowy BINARY Plikiem jest ciąg bajtów bez wewnętrznej organizacji. Plik zawiera porcje o stałej długości jednak bez ograniczenia co do liczby przesyłanych bajtów. Pozycje odczytywanych danych w pliku muszą być ściśle zgodne z ich pozycjami w momencie zapisu.

Instrukcje wejścia/wyjścia w FORTRANie BACKSPACE Cofnięcie pliku sekwencyjnego o 1 rekord. CLOSE Zamknięcie i odłączenie pliku. ENDFILE Zapis rekordu końca zbioru. INQUIRE Badanie stanu i właściwości urządzenia lub pliku. LOCKING Kontrola dostępu do danych zawartych w zbiorach bezpośredniego dostępu (w warunkach jednoczesnego dostępu z wielu programów). OPEN Przyłączenie do urządzenia i otwarcie pliku. PRINT Wyprowadzenie danych na standardowe urządzenie wyjścia (ekran). READ Wprowadzenie danych ze standardowego urządzenia wejścia (klawiatura) lub z pliku. REWIND Przewinięcie pliku do początku. WRITE Zapis danych do pliku.

Podstawowe argumenty instrukcji wejścia/wyjścia Postaci argumentówInstrukcje I/OWartości argumentów i uwagi wzorzec_redagowania FORMAT PRINT READ WRITE Lista deskryptorów do redagowania plików formatowanych. lista_I/O PRINT READ WRITE Lista danych do wprowadzenia/wyprowadzenia ACCESS=dostęp INQUIRE OPEN Metoda dostępu: SEQUENTIAL albo DIRECT. END=etykietaREAD Etykieta do której należy skoczyć po napotkaniu znacznika końca pliku. ERR=etykieta Wszystkie oprócz PRINT Etykieta do której należy skoczyć po wystąpieniu błędu.

Postaci argumentówInstrukcje I/OWartości argumentów i uwagi FILE=plik INQUIRE OPEN Nazwa pliku. [FMT=]spec_formatu PRINT READ WRITE * (format swobodny) lub specyfikacja formatu. FORM=forma INQUIRE OPEN Rodzaj pliku: FORMATTED (sformatowany; standard dla sekwencyjnych), UNFORMATTED (standard dla bezp. dostępu) lub BINARY. IOSTAT=test Wszystkie oprócz PRINT test jest zmienną całkowitej, której przypisywana jest wartość wynikająca z poprawnego lub błędnego zakończenia operacji.

Postaci argumentówInstrukcje I/OWartości argumentów i uwagi REC=rekord LOCKING READ WRITE Numer rekordu do zapisu, odczytu lub zamknięcia w pliku bezpośredniego dostępu. RECL=długość_rekordu INQUIRE OPEN Długość rekordu (w bajtach) w pliku o bezpośrednim dostępie. STATUS=stan CLOSE OPEN Stan pliku, w OPEN: OLD, NEW, SCRATCH lub UNKNOWN (standard); w CLOSE: KEEP lub DELETE. [UNIT=]jedn_log Wszystkie oprócz PRINT Jednostka logiczna uczestnicząca w danej operacji I/O; jest to wyrażenie całkowite lub * (standardowe urządzenie wejścia/wyjścia); argument jest obowiązkowy.

Identyfikatory logiczne (uchwyty) plików: zmienna_tekstowa: tzw. plik wewnętrzny; *: klawiatura (czytanie) lub ekran (pisanie); 0: STDERR (ekran) standardowe urządzenie na które są wyprowadzane komunikaty o błędach; 5: STDIN (klawiatura) standardowe urządzenie wejścia; 6: STDOUT (ekran lub drukarka) standardowe urządzenie wyjścia; 1-4, 7 i wyżej: plik o danym numerze urządzenia; zwykle oznacza plik dyskowy. Pod numery 0, 5 i 6 można również podłączać pliki zewnętrzne; wtedy te urządzenia tracą swoje standardowe znaczenia.

Otwieranie plików Operacja otwierania przypisuje konkretny plik urządzeniu logicznemu. Standardowe urządzenia wejścia/wyjścia jest zawsze przypisywane identyfikatorowi *; tutaj nie wolno wykonywać instrukcji OPEN. Domyślnie numery (uchwyty) 0, 5 i 6 są przypisywane odpowiednim urządzeniom standardowym. Pozostałe numery (uchwyty) są domyślnie przypisywane plikom o nazwach o ogólnej postaci fort.n gdzie n jest numerem logicznym, a plikom jest przypisywany status UNKNOWN. Takie nazwy pojawią się po wykonaniu przez program pierwszej operacji na danym pliku różnej od instrukcji OPEN.

Przykład: wykonanie instrukcji: WRITE(1,*) Ala ma kota jako pierwszej operacji na pliku o numerze 1 spowoduje pojawienie się pliku o nazwie fort.1 z takim tekstem. Wykonanie instrukcji: WRITE(6,*) Ala ma kota Spowoduje wyprowadzenie tego tekstu na ekran.

Instrukcja OPEN otwierania pliku i przypisywania mu numeru logicznego (uchwytu) OPEN(nr_pliku[,FILE=nazwa_pliku][,FORM=forma][, ACCESS=acc][,ERR=etykieta]) Nazwy nie wolno nadawać plikom o statusie SCRATCH Przykład: OPEN(1,FILE=ala.txt,form=FORMATTED) WRITE(1,*) Ala ma kota Zostanie utworzony plik ala.txt zawierający podany tekst.

Uwaga! Otwarcie pliku ze statusem UNKNOWN powoduje, że pierwsza instrukcja WRITE niszczy poprzednią zawartość pliku. Jeżeli chcemy zachować poprzednią zawartość musimy zadeklarować ACCESS=APPEND. Jest to rozszerzenie standardu FORTRANu 77 i dlatego przypisuje się ją różnym zmiennym I/O w zależności od implementacji; np. POSITION=APPEND na SGI. Przykład: Niech plik alaias zawiera linę Ala i As Wykonanie sekwencji: OPEN(1,FILE=alaias.txt,status=UNKNOWN,ACCESS=APPEND) WRITE(1,*) Ala ma kota Spowoduje dodanie do pliku linii z podanym tekstem. W przeciwnym razie istniejąca zawartość zostałaby zastąpiona przez nową.

CHARACTER*16 nazwa 10PRINT (A),Podaj nazwe pliku z danymi READ(*,(A)) nazwa OPEN(3,FILE=nazwa,STATUS=OLD,ERR=10) READ(3,*) X Przykład wykorzystania parametru ERR w instrukcji OPEN Ponieważ STATUS=OLD, poprawne zakończenie instrukcji OPEN wymaga aby plik już istniał. Dlatego program będzie dotąd pytał o nazwę pliku aż podamy nazwę pliku istniejącego.

Zamykanie pliku CLOSE(nr_pliku [,STATUS=stat],[ERR=etykieta]) Przykład: CLOSE(1) Zamyka plik o numerze 1. CLOSE(1,STATUS=DELETE) Zamyka i usuwa plik o numerze 1. Pliki są zawsze domyślnie zamykane po poprawnym zakończeniu programu nawet jak nie wykonamy instrukcji CLOSE.

Przykład programowej obsługi błędów mogących się pojawić przy czytaniu danych poprzez użycie zmiennych ERR i END: READ(1,*,END=10,ERR=20) X GOTO PRINT *,"Koniec danych" STOP 20 PRINT *,"Blad w danych" STOP 30 CONTINUE W przypadku poprawnego przeczytania zmiennej X program przechodzi dalej; zatrzymuje się z odpowiednim komunikatem jeżeli wystąpił błąd przy czytaniu lub koniec danych.

Przykład czytania i pisania nieformatowanego. DOUBLE PRECISION A(100,100) …… C Zapisujemy zawartość macierzy A do pliku o przechowalnia.dat; macierz jest C zapisywana kolumnami i kazda kolumna stanowi 1 rekord. OPEN(1,FILE=przechowalnia.dat,STATUS=NEW, &FORM=UNFORMATTED,ACCESS=SEQUENTIAL) WRITE(1) (A(1,I),I=1,100) CLOSE(1) C Tablica A moze byc teraz wykorzystywana do innych celow a jej dotychczasowa C zawartosc jest przechowywana w pliku dyskowym. …… C Teraz chcemy zaladowac zapisana zawartosc macierzy A znowu na dysk. C Nalezy zwrocic uwage, ze dlugosc rekordow w instrukcji czytania musi byc taka C sama jak w instrukcji pisania, ktora zapisalismy tablice A do pliku, OPEN(1,FILE=przechowalnia.dat,STATUS=OLD, &FORM=UNFORMATTED,ACCESS=SEQUENTIAL) READ(1) (A(1,I),I=1,100) CLOSE(1,STATUS=DELETE) C Plik przechowalnia.dat zostal juz wykorzystany i wykasowany z dysku.

Przykład wykorzystania plików bezpośredniego dostępu. Przypuśćmy, że w pliku katalog znajdują się podstawowe dane o związkach chemicznych (nazwa, wzór sumaryczny) o kolejnych numerach katalogowych (numer katalogowy odpowiada numerowi linii) i plik jest na tyle duży, że nie można go wczytać do pamięci. Chcemy uzyskać informacje o związku o i-tym numerze katalogowym. Program Przykład pierwszych linii pliku

Instrukcja INQUIRE INQUIRE(ACCESS=acc,BLANK=blnk,DIRECT=dir, EXIST=ex,FORM=forma,IOSTAT=ios,FILE=nazwa, NAMED=nam,NEXTREC=numer,NUMBER=nr_pliku, OPENED=op, RECL=długość,SEQUENTIAL=seq, UNFORMATTED=unf, ERR=etykieta) dir, form, seq, unf: YES, NO albo UNKNOWN blnk: NULL albo ZERO ex, nam, op:.TRUE. albo.FALSE. ios, numer, nr_pliku, długość: INTEGER nazwa: CHARACTER

Przykład: Sprawdzanie istnienia pliku o danej nazwie. CHARACTER*16 nazwa LOGICAL EX READ(*,(A)) NAZWA INQUIRE(FILE=nazwa,EXIST=ex) IF (EX) THEN PRINT *,Plik,nazwa, istnieje ELSE PRINT *,Plik,nazwa, nie istnieje ENDIF