20. Pascal i łączenie podprogramów Pascala z programem napisanym w C



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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

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

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

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Wstęp do programowania

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

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

1 Podstawy c++ w pigułce.

Programowanie RAD Delphi

Język programowania PASCAL

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

1 Podstawy c++ w pigułce.

Microsoft IT Academy kurs programowania

Wprowadzenie do języka Java

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawy programowania skrót z wykładów:

Pascal - wprowadzenie

Wstęp do programowania. Różne różności

Programowanie strukturalne i obiektowe

Zasady Programowania Strukturalnego

Algorytmy i struktury danych. wykład 1

KOTLIN. Język programowania dla Androida

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Programowanie obiektowe

Informatyka 1. Przetwarzanie tekstów

Podstawy Programowania C++

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Język ludzki kod maszynowy

Programowanie w Turbo Pascal

Podstawy programowania w języku C

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Podstawy programowania

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

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie strukturalne język C - wprowadzenie

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

Wstęp do programowania, część II

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Algorytmika i Programowanie VBA 1 - podstawy

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

2 Przygotował: mgr inż. Maciej Lasota

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Tworzenie aplikacji w języku Java

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

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Język C - podstawowe informacje

DYNAMICZNE PRZYDZIELANIE PAMIECI

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Wprowadzenie do programowania w języku C

Algorytmy i struktury danych

Wskaźniki. Programowanie Proceduralne 1

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Jerzy Nawrocki, Wprowadzenie do informatyki

Struktura pliku projektu Console Application

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Informatyka 1. Dokumentacja programu, moduły programowe, typy tablicowe

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

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

Programowanie komputerowe. Zajęcia 4

Podstawy programowania

Jerzy Nawrocki, Wprowadzenie do informatyki

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998.

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Podstawowe części projektu w Javie

Lekcja 6: Pascal. Procedura i funkcja

Programowanie Obiektowe i C++

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Podstawy programowania komputerów

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

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

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

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

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

ROZDZIAŁ 2. Operatory

( wykł. dr Marek Piasecki )

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

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

1 Wskaźniki i listy jednokierunkowe

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawy programowania w języku C++

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Transkrypt:

Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie w ośrodkach akademickich, oraz ze względu na potrzebę połączenia podprogramów napisanych w języku podane jest w tym rozdziale porównanie podstawowych własności obu języków. W celu poznania pełniejszych możliwości języka należy skorzystać z podręczników np. [1-3]. 20.1. Porównanie języków I Identyfikatory Identyfikatory w i u są takie same, za wyjątkiem: - nazwa w może rozpoczynać się również od znaku podkreślenia. - w u w przeciwieństwie do kompilator nie rozróżnia małych liter od dużych. Komentarz (* dowolny tekst *) /* dowolny tekst */ Typy danych INTEGER BOOLEAN HAR REAL int long int short int int char float double W u istnieją dane logiczne (boolowskie), które przyjmują wartość false lub true. W języku nie występuje typ boolowski. W wyrażeniach logicznych wyrażeniu o wartości całkowitej 0 odpowiada wartość logiczna false, natomiast wartości całkowitej różnej od zera odpowiada wartość logiczna true. Deklaracje zmiennych VAR i: INTEGER; c, d: HAR; x,y: REAL; int i; char c, d; float x,y; W u blok deklaracji zmiennych powinien rozpocząć się od słowa VAR. Różnice w zapisie operatorów arytmetycznych DIV / MOD %

Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20-2 Różnice występują przy oznaczeniu operatorów arytmetycznych dzielenia całkowitoliczbowego i dzielenia modulo. Różnice w zapisie operatorów logicznych = <> AND OR NOT ==!= &&! Instrukcja podstawiania i:= 2; c:= 'a'; x:= x + 2*x; i= 2; c= 'a'; x= x + 2*x; Instrukcja złożona instrukcja1... instrukcjan END i:= 2; c:= 'a'; x:= x + 2*x; END... instrukcja1 instrukcjan i= 2; c= 'a'; x= x + 2*x; Instrukcja sterująca if IF _boolowskie THEN IF _boolowskie THEN 1 ELSE 2 IF a>b THEN c:= a; IF a>b THEN max:= a ELSE max:= b if( ) ; if( ) 1 else 2 if( a>b ) c=a; if( a>b) max= a; else max= b; W języku nie występują zmienne logiczne. Wyrażenie w języku uznawane jest za prawdziwe, jeżeli wartość tego wyrażenia jest różna od zera, w przeciwnym razie takie traktowane jest jako fałszywe.

Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20-3 Instrukcja sterująca for FOR indeks:=start TO stop DO FOR i:= 1 TO 4 DO x:= x/2; for(wyr_pocz;wyr_konca;wyr_kroku) for( i= 1; i<=4; i++) x= x/2; Instrukcja i++ oznacza w języku podstawienie i= i+1; Instrukcja sterująca przełączająca (switch, case) ASE OF k1, k2,..., kk: 1;... m1, m2,..., mm: N; ASE ch OF '1': y:= sin(x); '2','3': y:= sqrt(x); '4','5','6':y: = cos(x); switch( ) case k1: case k2:... case KK: wyrazenie1;... case m1: case m2: case mm: N; default: D; switch(ch) case '1': y= sin(x); case '2': case '3': y= sqrt(x); case '4': case '5': case '6': y= cos(x); W języku instrukcja switch-case może zawierać pozycję default, której jest wykonywane, jeżeli żaden z wcześniejszych warunków nie został wykonany.

Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20-4 Instrukcja sterująca while WHILE _boolowskie DO WHILE x>max DO x:= x-dx while( 1 ) 2; while( x>xmax) x= x-dx; Instrukcja sterująca powtarzania (repeat lub do) REPEAT do UNTIL while( warunek) warunek REPEAT x:= x-dx; UNTIL x>xmax do x= x-dx; while( x>xmax) Definicja funkcji FUNTION max(a, b:integer):integer IF a>b THEN max:= a; ELSE max:= b; int max( a, b) int a, b; if( a>b 0 return(a); else return(b); Definicja procedur PROEDURE oblicz; void oblicz( void ) VAR x: INTEGER; int x; x:= x+7; x= x+7; W języku podprogramy przedstawiane są za pomocą funkcji. Jeżeli funkcja nie zwraca wartości, to podaje się, że funkcja jest typu void. Program główny PROGRAM LIZ; VAR i, j: INTEGER; i= 7; j= i+34; END. main int i, j; i= 7; j= i+34; W języku program główny nosi zawsze nazwę main.

Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20-5 Tablice VAR tab: ARRAY[0..wymiar-1] OF typ; VAR wekt: ARRAY[0..9] OF INTEGER; VAR x: ARRAY[0..8,0..8] OF INTEGER; x[2,1]:= x[1,2]; typ tab[wymiar]; int wekt[10]; int x[9][9]; x[2][1]= x[1][2]; W języku pierwszy element tablicy posiada zerowe indeksy, każda tablica rozpoczyna się z elementem o indeksie równym 0 (lub indeksach równych zero w przypadku tablic wielowymiarowych). Definicja zmiennych wskaźnikowych VAR id = ^INTEGER; int *id; VAR wsk= ^INTEGER; Wartość wskaźnika pustego NIL int *wsk; NULL Przydzielenie i zwolnienie pamięci na stercie VAR ptr: ^typ; typ *ptr; NEW(ptr); ptr= (typ*)malloc(sizeof(typ)); DISPOSE(p); free(ptr); VAR int_ptr: INTEGER; NEW(int_ptr); DISPOSE(int_ptr); Zmienne rekordowe VAR r: REORD składniki; int *int_ptr; int_ptr= (int *)malloc( sizeof(int) ); free( int_ptr); struct składniki; r; TYPE prac: REORD nazwisko: array [0..19] OF HAR; wiek: INTEGER; struct char nazwisko[20]; int wiek; prac;

Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20-6 Typy rekordowe TYPE typ = REORD składniki; TYPE student= REORD nazwisko: array [0..19] OF HAR; wiek: INTEGER; ocena: INTEGER; VAR st1, st2: STUDENT; VAR lista: ARRAY[0..99] OF STUDENT; struct typ składniki; ; struct student char nazwisko[20]; int wiek; int ocena; ; struct student st1, st2; struct student lista[100]; Typ wyliczeniowy TYPE kolor= typedef enum (niebieski, bialy, zielony); niebieski, bialy, zielony kolor; 20.2. Wykorzystanie podprogramów języka w programie napisanym w języku Język stwarza możliwość łączenia z innymi językami poprzez łączenie modułów skompilowanych o rozszerzeniu OBJ. Wiele języków ma możliwość kompilacji modułów do tej postaci, co stwarza możliwość łatwego połączenia. Modułem głównym może tu być program w lub moduł w innym języku. Turbo nie posiada możliwości kompilowania programu do postaci OBJ, a jedynie do postaci TPU lub oczywiście EXE. Nie jest więc możliwe bezpośrednie łączenie modułów skompilowanych języka i. Wywołanie podprogramów języka z poziomu języka W celu dołączenia do programu w u fragmentu napisanego w języku, należy ten fragment skompilować do postaci OBJ, a następnie dołączyć do programu napisanego w języku poprzez użycie dyrektywy: $L nazwa_programu.obj która spowoduje dołączenie skompilowanego modułu z. Jeżeli z programu ma być wywołana funkcja napisana w, to muszą być dodatkowo spełnione następujące warunki: 1. w programie napisanym w Turbo u deklarujemy funkcję jako external, np.: function GetMode: Word; external; procedure SetMode(Mode: Word); external; 2. w programie w deklarujemy tą funkcję z modyfikatorem _pascal. Zastosowanie modyfikatora spowoduje zmianę nazwy przez kompilator tej funkcji na duże litery. Nazwa ta nie zostanie poprzedzona znakiem '_'. Przekazywanie danych na stos dokonane zostanie w konwencji a.

Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20-7 Przykłady deklaracji: char _pascal far GetMode( void ); void _pascal far SetMode( int Mode ); Funkcje napisane i dołączane do modułu TPU muszą być zadeklarowane jako far lub near w zależności od tego, czy są eksportowane czy nie. Wywołanie podprogramów języka z poziomu języka Załóżmy, że podprogramy języka znajdują się w segmentach skompilowanych lub bibliotecznych skompilowanych. Wtedy, aby można było skorzystać z tych funkcji w programie napisanym w języku, muszą być spełnione następujące warunki: 1. W module źródłowym języka należy zadeklarować podprogramy języka jako funkcje zewnętrzne (extern) z modyfikatorem _pascal. Spowoduje to zmianę dokonaną przez kompilator nazwy funkcji na duże litery, nazwa ta nie będzie poprzedzona znakiem '_'. Stosowane będzie przekazywanie danych do odłożenia na stos w konwencji a. Przykład deklaracji funkcji w programie źródłowym języka : external int _pascal far Funkcja( int a ); W zależności od tego, czy wywołana funkcja a jest funkcją eksportowaną z modułu TPU, czy nie (lub znajduje się w module głównym), musi być zadeklarowana odpowiednio jako far lub near. 2. Przyłączana funkcja musi być zadeklarowana w u na poziomie globalnym. Przykład 20.1. Poniżej podano przykład programu stosującego metodę szybkiego sortowania. Należy zwrócić uwagę na możliwość zagnieżdżania funkcji. Funkcja zagnieżdżona ma zakres lokalny wewnątrz funkcji. program QSort; uses rt; const Max = 10; type List = array[1..max] of Integer; var Data: List; I: Integer; procedure QuickSort(var A: List; Lo, Hi: Integer); procedure Sort(l, r: Integer); var i, j, x, y: integer; begin i := l; j := r; x := a[(l+r) DIV 2]; repeat while a[i] < x do i := i + 1; while x < a[j] do j := j - 1; if i <= j then begin y := a[i]; a[i] := a[j]; a[j] := y; i := i + 1; j := j - 1; end; until i > j;

Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20-8 if l < j then Sort(l, j); if i < r then Sort(i, r); end; begin QuickSort; Sort(Lo,Hi); end; begin QSort - Sortowanie tablic Write('Generowanie tablicy do posortowania...'); Randomize; for i := 1 to Max do Data[i] := Random(30000); Writeln; Write('Sortowanie tablicy...'); QuickSort(Data, 1, Max); Writeln; for i := 1 to 1000 do Write(Data[i]:8); end. Literatura: [1] Andrzej Marciniak: Turbo. Warszawa, PWN 1994 [2] Mueldner T., Steele P. W.: as a Second Language. For Native Speakers of. Addison Wesley Publ. ompany, 1990 [3] Wajs W.: Programowanie w Turbo u. Skrypt AGH 1298, Kraków 1991 Ćwiczenia: 1. Należy napisać odpowiednik programu z przykładu 20.1, ale w języku. Następnie należy rozważyć, co należy zrobić, by procedura sortowania napisana w jednym języku programowania była wykorzystywana w drugim języku.