WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA ALGORYTM. Język programowania PROGRAM. instrukcja-dla. instrukcja-przypisania.



Podobne dokumenty
Architektura komputerów

Języki programowania zasady ich tworzenia

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Język programowania PASCAL

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wstęp do Informatyki i Programowania

Programowanie komputerów

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

Wstęp do programowania

Podstawy Informatyki Języki programowania

O (o)programowaniu. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Algorytmy od problemu do wyniku

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Zapisywanie algorytmów w języku programowania

Paradygmaty programowania

Technologie informacyjne - wykład 12 -

Podstawy programowania w języku C

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

Programowanie w języku C++ Grażyna Koba

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

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Języki i metodyka programowania

ForPascal Interpreter języka Pascal

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Języki programowania Język programowania Język maszynowy Kod maszynowy

Programowanie w języku Python. Grażyna Koba

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Java EE produkcja oprogramowania

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Podstawy Informatyki Języki programowania c.d.

Podstawy programowania

2.8. Algorytmy, schematy, programy

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

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

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Języki programowania Bardzo krótka historia Przykłady

Metody Kompilacji Wykład 1 Wstęp

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

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

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

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Wstęp do Informatyki dla bioinformatyków

Algorytm. a programowanie -

Fortran 90/95 wykład 1

1 Podstawy c++ w pigułce.

Historia Kompilatory Podstawy składni Zastosowanie. Język Fortran. Bartosz Radliński. Poznań, 2015

wstęp (podstawowe pojęcia związane z programowaniem, przegląd języków programowania, sieci działań, ogólne zasady programowania zorientowanego

Programowanie i techniki algorytmiczne

Języki programowania deklaratywnego

Podstawy Programowania C++

Programowanie w Turbo Pascal

Algorytm. Krótka historia algorytmów

Języki i paradygmaty programowania. I. Wprowadzenie

Zapis algorytmów: schematy blokowe i pseudokod 1

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Definicje. Algorytm to:

Gramatyki atrybutywne

Zadanie analizy leksykalnej

Podstawy Programowania Algorytmy i programowanie

Jerzy Nawrocki, Wprowadzenie do informatyki

Język ludzki kod maszynowy

Języki programowania deklaratywnego

Algorytmy zapisywane w pseudojęzyku programowania. Klasa 2 Lekcja 6

Języki i paradygmaty programowania

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Podstawy programowania. Wprowadzenie

Pascal - wprowadzenie

Podstawy programowania wykład

ECDL Podstawy programowania Sylabus - wersja 1.0

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Programowanie w języku C++ Podstawowe paradygmaty programowania

Algorytmika i pseudoprogramowanie

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

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

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

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy programowania

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

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

ZAAWANSOWANE JĘZYKI PROGRAMOWANIA

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

1 Wprowadzenie do algorytmiki

Elementy języków programowania

KARTA KURSU. Wstęp do programowania

Transkrypt:

Języki programowania ALGORYTM Język programowania PROGRAM symbole słowa kluczowe składnia semantyka Składnia typowego języka zawiera: warianty kilku struktur sterujących sposoby definiowania rozmaitych struktur danych wzorce podstawowych instrukcji Algorytm sumowania liczb od 1 do N w hipotetycznym języku JP: definiuj N, X, Y liczby całkowite wczytaj N; X := 0; dla Y od 1 do N wykonaj X := X + Y koniec; wypisz X. Słowa kluczowe: definiuj, wczytaj, dla itd. Instrukcje: przypisania - X := 0 iteracji - dla... wykonaj... koniec Definiowanie składni języka w notacji BNF (Backus-Naur Form): ( oznacza lub ) <instrukcja> : <instrukcja-dla> <instrukcja-przypisania>... <instrukcja-dla> : dla <nagłówek-dla> wykonaj <instrukcja> koniec <nagłówek-dla> : <zmienna> od <wartość> do <wartość> <wartość> : <zmienna> <liczba>... Diagramy składniowe: instrukcja instrukcja-dla instrukcja-przypisania instrukcja-dla dla nagłówek-dla wykonaj instrukcja koniec nagłówek-dla zmienna od wartość z krokiem do wartość wartość wartość zmienna cyfra zmienna litera cyfra litera Definiowanie struktur danych: i odwołanie do elementu tablicy: definiuj TA tablica [1..50,8..107] w niej liczby całkowite TA[wartość,wartość] Składnia języka programowania określa: jak opisywać struktury sterujące jak opisywać struktury danych jak tworzyć poprawne ciągi symboli dla nazywania zmiennych i struktur danych jak stosować interpunkcję (np. spacje, średniki, kropki, nawiasy) WSTĘP DO INFORMATYKI (3) J.Sikorski Strona 1 / 6

Semantyka określa znaczenie poprawnych składniowo wyrażeń Przykład problemów semantycznych - zmienne procedurowe: jeśli składnia dopuszcza zmienne, których wartościami są nazwy procedur, to procedura Proc(V) może być wywoływana z różnymi wartościami parametru np. Proc(Rand) lub Proc(Quick). Jaki wynik uzyskamy gdy wywołamy Proc(Proc) dla:? procedura Proc(V): 1. wywołaj V(V), umieszczając wynik działania w zmiennej X; 2. jeśli X = 1, wróć i podaj wynik 0; w przeciwnym razie wróć i podaj wynik 1 Kompilatory i interpretatory koncepcja algorytmu algorytm programowanie program w języku wysokiego poziomu kompilacja program w języku adresów symbolicznych kod maszynowy Język wysokiego poziomu dla Y od 1 do N wykonaj (treść iteracji) koniec wykonanie na komputerze Asembler LDS 0,Y (załaduj 0 pod adres Y) PĘTLA POR N,Y (porównaj wart. pod adr.) SKR DALEJ (jeśli równe, to skocz) DDS 1,Y (dodaj 1 do wart. pod adr. Y) (tłumaczenie treści iteracji) SKO PĘTLA (skocz z powrotem) DALEJ... Kompilacja - przekładanie całego programu napisanego w języku wysokiego poziomu na program w języku niższego poziomu Interpretacja - przekładanie kolejno instrukcji języka wysokiego poziomu na instrukcje poziomu maszynowego Uruchomienie programu PROCESOR Urządzenia wejściowe Pamięci zewnętrzne Urządzenia wyjściowe 1. krok PROCESOR 2. krok PROCESOR Pamięć zewnętrzna Urz. wejściowe Pamięć zewnętrzna Dane WSTĘP DO INFORMATYKI (3) J.Sikorski Strona 2 / 6

3. krok PROCESOR 4. krok PROCESOR Dane Wyniki Urz. wyjściowe Dane Wyniki WIEŻA BABEL JĘZYKÓW PROGRAMOWANIA BASIC (Beginner's All-Purpose Symbolic Instruction Code) najprostszy język wyższego poziomu - łatwy do opanowania język ogólnego przeznaczenia opracowany w połowie lat 60 przez Johna Kemeny ego i Thomasa Kurtza z Dartmouth College, N.H. stał się popularny na początku lat 80 wraz z rozwojem komputerów osobistych początkowo interpretowany, a obecnie raczej kompilowany FORTRAN (Formula Translation) język przeznaczony do obliczeń inżynierskich i naukowych opracowany w 1957 r. przez Johna Backusa z IBM wielokrotnie modyfikowany wciąż popularny w zastosowaniach numerycznych wersja opracowana w 1990 r. - FORTRAN 90 została wyposażona w wiele dodatkowych elementów rozszerzających zakres zastosowań sterowanie: skok goto, instrukcja warunkowa i ograniczona iteracja (brak rekurencji) Przykład programu: integer I, MX, MN, A(100) real RS read (A(I),I = 1,100) MX = A(1) MN = A(1) do 10 I = 2, 100 if (A(I).gt.MX) MX = A(I) if (A(I).lt.MN) MN = A(I) 10 continue RS = (MN + MX)/2 write RS end COBOL (Common Business-Oriented Language) najpopularniejszy język w środowisku biznesu (banki, firmy ubezpieczeniowe, duże przedsiębiorstwa) firmy współpracujące z Departamentem Obrony USA powołały w 1959 r. CODASYL (Conference on Data Systems Languages), która opracowała język mający zapewnić łatwość przenoszenia programów na różne platformy sprzętowe i posiadający łatwe do zrozumienia instrukcje - podobne do zdań w języku angielskim od momentu powstania był wielokrotnie modyfikowany zawiera mechanizmy definiowania struktury pliku z danymi (sekcja data division) sterowanie: skok goto, instrukcja warunkowa i perform - ograniczona iteracja i wywołanie podprogramu WSTĘP DO INFORMATYKI (3) J.Sikorski Strona 3 / 6

Przykładowa struktura pliku opisującego szkołę wyższą PLIK-SZKOLNY STUDENT WYDZIAŁ 1000 2 NAZWISKO-STUDENTA A(15) PRZEDMIOT 30 NR-ALBUMU NAZWA-WYDZIAŁU 999999 A(10) PRZEDMIOT 50 NAZWA-PRZEDMIOTU OCENA AAAA999 99 NAZWA-PRZEDMIOTU PROWADZĄCY AAAA999 A(10) Przykładowa definicja pliku opisującego szkołę wyższą data division 01 PLIK-SZKOLNY 02 STUDENT occurs 1000 times 03 NAZWISKO-STUDENTA pic A(15) 03 PRZEDMIOT occurs 30 times 04 NAZWA-PRZEDMIOTU pic AAAA999 04 OCENA pic 99 03 NR-ALBUMU pic 99999 02 WYDZIAŁ occurs 2 times 03 NAZWA-WYDZIAŁU pic A(10) 03 PRZEDMIOT occurs 50 times 04 NAZWA-PRZEDMIOTU pic AAAA999 04 PROWADZĄCY pic A(10) PL/I złożony język zaproponowany przez SHARE - stowarzyszenie użytkowników komputerów IBM, w 1963 r. pierwszy podręcznik wydał IBM w 1965 r. ANSI (The American National Standards Institute) i inne organizacje kilkakrotnie modyfikowały język język przeznaczony zarówno do obliczeń naukowo-inżynierskich jak i do zastosowań w biznesie (łączy cechy FORTRANu, COBOLu i ALGOLu) - pozwala na przetwarzanie najrozmaitszych struktur danych i posiada wiele typów operacji arytmetycznych i innych Pascal opracowany przez Niklausa Wirtha z Federal Institute of Technology w Zurichu w końcu lat 60. w zamierzeniu miał służyć celom edukacyjnym w systematycznej nauce programowania oraz pozwalać na budowę szybkich i niezawodnych kompilatorów pierwszy kompilator opracowany przez Wirtha w 1974 r. był za darmo rozpowszechniany w środowiskach uniwersyteckich wywarł duży wpływ na inne później powstające języki programowania, np. na język Ada reguły syntaktyczne języka są zwarte i czytelne co pozwala łatwiej go opanować w porównaniu z innymi językami wyższego poziomu można w nim przejrzyście opisywać nawet złożone algorytmy i struktury danych programy są łatwe do zrozumienia i łatwo wykrywa się w nich błędy oferuje możliwości definiowania nowych struktur danych (wskaźniki) Przykładowe definicje nowych typów zmiennych type kolor = (niebieski, czerwony, purpurowy, brązowy, biały); type paleta = set of kolor; type dzień = 1..365 Przykładowy program wypełniający listę type komórka = record zawartość : integer; następna : dowiązanie end; type dowiązanie = komórka; var POCZĄTEK, X : dowiązanie; WSTĘP DO INFORMATYKI (3) J.Sikorski Strona 4 / 6

begin new(początek); X := POCZĄTEK; while not eof do begin read(x.zawartość); if not eof then begin new(x.następna); X := X.następna end end; X.następna := nil end. POCZĄTEK Pole zawartość Pole następna Lista: 21-5 74 33 8 C został opracowany przez Dennisa Ritchie z AT&T Bell Laboratories w 1972 r. choć jest językiem wyższego poziomu to zawiera jednak wiele instrukcji charakterystycznych dla języków niższych poziomów (bezpośrednie operacje na adresach i bitach) pozwala tworzyć programy łatwe do przenoszenia na różne platformy sprzętowe sytem operacyjny UNIX został prawie całkowicie napisany w C staje się coraz bardziej popularny zarówno na mikrokomputerach jak i na większych maszynach Snobol (String Oriented Symbolic Language) powstał we wczesnych latach 60 jako narzędzie do symbolicznego manipulowania tekstami eksploatuje pojęcie wzorca definiowanego przez programistę język dostarcza wiele operatorów działających na wzorcach i umożliwia budowanie wzorców złożonych sterowanie: głównie warunkowa instrukcja skoku typowa instrukcja składa się z tekstu (lub nazwy zmiennej tekstowej), poszukiwanego wzorca i etykiety wskazującej następne instrukcje do wykonania w razie sukcesu lub porażki dopasowywania wzorca LISP (List Processor) został opracowany na przełomie lat 50 i 60 przez grupę z Massachusetts Institute of Technology kierowaną przez Johna McCarthy ego (z wykorzystaniem formalizmu matematycznego zwanego rachunkiem lambda) opracowano kilka wersji języka (ta z 1984 r. jest de facto standardem) oparty jest na listach, jako podstawowych strukturach danych, i na rekurencji, jako podstawowej strukturze sterującej łatwości manipulowania listami obiektów o różnej naturze stanowi o jego unikalności wymaga dużych obszarów pamięci i jest zwykle interpretowany sprawdza się najlepiej w obliczeniach symbolicznych (rozgrywanie gier, przetwarzanie języka naturalnego, uczenie się, podejmowanie decyzji i wnioskowanie logiczne) Przykład: lista lispowa i odpowiadające jej drzewo (((a, c), f, g),((e),d),((b, h),j,((k, l, m)))) (nil) f g d j a c e b h Prolog (ming in Logic) k l m WSTĘP DO INFORMATYKI (3) J.Sikorski Strona 5 / 6

zaprojektowany w 1970 opiera się na klauzulach stwierdzających, że pewne fakty logicznie wynikają ze zbioru innych faktów (fakt oznacza zwykle, że pewne elementy pozostają w jakimś wzajemnym związku) rekurencja jest zasadniczą częścią języka program składa się ze zbioru znanych faktów, zbioru klauzul i dyrektywy, która poleca sprawdzenie prawdziwości pewnego faktu centralną strukturą danych są drzewa wykonanie programu polega na próbie dopasowania zmiennych i wyrażeń we fragmentach klauzul do ich odpowiedników w faktach - proces uzgadniania nadaje się podobnie jak Lisp do obliczeń symbolicznych i uznaje się go za odpowiedni do zastosowań z dziedziny sztucznej inteligencji Przykłady stosowania klauzul: klauzula ZJADA(koty,myszy) określa związek pomiędzy elementami klauzula ZJADA(X,Y) : ZJADA(X,Z), ZJADA(Z,Y) podaje związek logiczny pomiędzy trzema klauzulami dyrektywa? ZJADA(X,żaby) może służyć do uzyskania odpowiedzi czy słonie jedzą żaby APL (A ming Language) język pierwotnie opisany w książce Kennetha Iversona z IBM A ming Language wydanej w 1962 r. w 1968 r. IBM przedstawiło pierwszą wersją kompilatora APL/360 początkowo używany wyłącznie do obliczeń naukowo-inżynierskich, ale od czasu opracowania wersji APLSV (APL Shared Variable) w 1973 r. znalazł także zastosowanie w programach dla biznesu instrukcje mają wyjątkowo prostą notację a zestaw operacji jest bardzo rozległy operatory można stosować zarówno do zmiennych liczbowych jak i do wielowymiarowych tablic, które są podstawowymi strukturami danych Przykłady działania operatorów 5 7 1 3 6 9 2 4 1 + 1 1 2 3 1 0 2 2 4 6 8 3 6 7 9 4 6 5 5 7 1 3 6 9 2 4 1 < 1 1 2 3 1 0 2 8 4 0 0 1 0 0 0 0 1 1 5 7 1 +/ 3 6 9 2 4 1 38 3 2 ρι 6 1 2 3 4 5 6 Ada opracowanie języka zainicjował Departament Obrony USA w 1975 r. w celu uzyskania języka ogólnego przeznaczenia umożliwiającego łatwe przenoszenie programów pierwsza wersja powstała w 1979 r. i została nazwana imieniem księżnej Lovelace - asystenki Charlesa Babbage a. język podobny do Pascala, ale wyposażony w wiele dodatkowych cech pozwalających pisać strukturalne programy o olbrzymich rozmiarach ze względu na swoje bogactwo nie jest zbyt wygodny dla przeciętnego użytkownika i z tego powodu nie stał się popularny poza zastosowaniami militarnymi w USA Badania nad językami programowania podstawy matematyczne interpretacji i kompilacji definiowanie semantyki metodą operacyjną lub denotacyjną tworzenie języków zapytań i manipulowania danymi opracowywanie środowisk programowania wizualne języki programowania - rysowanie programów równoważność języków rozbudowa struktur sterujących zwiększanie elastyczności - możliwości definiowania własnych struktur WSTĘP DO INFORMATYKI (3) J.Sikorski Strona 6 / 6