Zaawansowane metody programowania. Elementy struktury kodu - dyrektywy - biblioteki i moduły zewnętrzne - kompilacja kodu



Podobne dokumenty
Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

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

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

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

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

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

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

Zasady Programowania Strukturalnego

Wstęp do programowania

Język programowania PASCAL

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

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};

Informatyka 1. Przetwarzanie tekstów

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Laboratorium Programowania Kart Elektronicznych

Pascal - wprowadzenie

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

Laboratorium Programowania Kart Elektronicznych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

TEI. Dr Wojciech Palubicki

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

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Podstawy programowania w języku C

Obiektowe bazy danych

Programowanie strukturalne język C - wprowadzenie

Wykresy i interfejsy użytkownika

Python. Wprowadzenie. Jolanta Bachan

Wstęp do programowania

Technologie Informacyjne

Składowane procedury i funkcje

Funkcje i instrukcje języka JavaScript

Programowanie w Turbo Pascal

Elementy języków programowania

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

PLIKI TEKSTOWE F C E 30 0D 0A 42 6F 72 6C 61 6E 64 1A T U R B O _ P A S C A L _ 7. 0

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

Wyszukiwanie największej spośród czterech liczb. Przykładowe rozwiązanie

1 Przygotował: mgr inż. Maciej Lasota

Technologie cyfrowe semestr letni 2018/2019

Microsoft IT Academy kurs programowania

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Języki Programowania. Elementy języków programowania. Wojciech Sobieski

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

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

PERL zarządzanie złożonością. Pavel Pachkouski

Podstawy informatyki

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

Języki skryptowe w programie Plans

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

Wstęp do programowania

PODSTAWY BAZ DANYCH 13. PL/SQL

Bash - wprowadzenie. Bash - wprowadzenie 1/39

ROZDZIAŁ I. Czym i jak to zrobić, czyli narzędzia i metody.

Palindromy. Przykładowe rozwiązanie

Technologie cyfrowe semestr letni 2018/2019

System operacyjny Linux

Język Python. Język Python 1/35

1 Podstawy c++ w pigułce.

2.8. Algorytmy, schematy, programy

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie - wykład 4

Lekcja 6: Pascal. Procedura i funkcja

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Informatyka I. Wyk lad I. Wprowadzenie. Robert Muszyński Instytut Cybernetyki Technicznej Politechnika Wroc lawska

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Algorytmika i Programowanie VBA 1 - podstawy

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

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

Umieszczanie kodu. kod skryptu

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

Wstęp do Programowania, laboratorium 02

Informatyka i komputerowe wspomaganie prac inżynierskich

Procedury i funkcje składowane

ForPascal Interpreter języka Pascal

Here comes the sun. Wyk lad niesystematyczny. Marcin Makowski. 24 października Zak lad Chemii Teoretycznej UJ

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

Technologie Informacyjne Mechatronika 2012/2013 Błędy obliczeń. Python.

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Wprowadzenie do programowania w VBA

Programowanie RAD Delphi

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

System operacyjny Linux

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Wykład 1

Materiały do laboratorium MS ACCESS BASIC

Procedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym

Wstęp do Informatyki i Programowania

Podstawy Programowania. Wykład 1

Podstawy programowania C. dr. Krystyna Łapin

Ilość cyfr liczby naturalnej

Język ludzki kod maszynowy

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!

Przeliczanie na zapis stałoprzecinkowy

Podstawy Programowania semestr drugi. Wykład czternasty

Transkrypt:

Zaawansowane metody programowania Dr Zbigniew Kozioł - wykład Mgr Mariusz Woźny - laboratorium Wykład II Elementy struktury kodu - dyrektywy - biblioteki i moduły zewnętrzne - kompilacja kodu - pętle FOR - WHILE - IF - LABEL i GOTO - Funkcje i Procedury

Języki programowania - assambler (MOVE, POP; elementarne operacje na bajtach i rejestrach procesora; dla człowieka niemal nieczytelny) - C/C++ - C# - Fortran - Java (Sun Microsystems) - PHP (Pretty Home Page, http://www.php.net) - Perl (wspaniały do obróbki tekstów i danych w formacie ASCII) http://www.perl.com - Pascal / Free Pascal http://www.freepascal.org - Basic / Free Basic http://www.freebasic.org - Python http://www.python.org - JavaScript - SQL - bash (Linux i inne systemy uniksowe, do pracy z terminala i dla skryptów systemowych)

Structura kodu programu

Struktura programu (Pascal) PROGRAM dyfuzja; Na począ tku nazwa Nagłówek programu: Deklaracje bibliotek, stałych, zmiennych, ich typów Deklaracje funkcji i procedur BEGIN program główny END. END z kropk ą oznacza koniec programu

Nagłówek programu

Nagłówek programu (Pascal) PROGRAM dyfuzja; { Podlączamy zewnętrzne biblioteki:} uses crt, dos, keyboard, math, sysutils; { Definiujemy stałe, zmienne i ich typy: } CONST maxstep=10000; kappa=1.5; maxxsteps = 1000; maxtsteps = 100; VAR xs, ts: Integer; { Definiujemy nowy typ: } TYPE data=array[0..maxxsteps,0..maxtsteps] of Double; Var f: data;

Nagłówek programu (Perl) #!/usr/bin/perl pierwsza linijka kodu # Znak # jest znakiem komentarza. Jest BARDZO dobrym zwyczajem # dodawanie w kodzie komentarzy! # use like this: #./derivative.pl < profile_0.200_0005000.dat # Deklarujemy używanie zewnętrznego modułu (biblioteki): use Math::Derivative qw(derivative1 Derivative2); # @dydx=derivative1(\@x,\@y); # @d2ydx2=derivative2(\@x,\@y); # @d2ydx2=derivative2(\@x,\@y,$yp0,$ypn); # Deklarujemy zmienne @x i @y jako tablice (znak @) my (@x, @y); # Deklaracja my ma specjalne znaczenie w Perl. # Oznacza zakres istnienia danej zmiennej, blok w którym # jest widziana, scope po angielsku. my (@row);

Nagłówek programu (Python) #!/usr/bin/env python # * coding: utf 8 * pierwsza linijka kodu from pylab import * import numpy # Python jest bardzo liberalny gdy chodzi o deklaracj typów: ę a=0.5; kappa = 1.0;

Nagłówek programu (Free Basic) '***************************************************** ' ' Hard Locker, Transport Measurment Program, ' (c) J. Wróbel 2012, 2013, 2014 ' '***************************************************** #Include ".\inc\dislin.bi" #Include "GL\gl.bi" #Include "crt\stdio.bi" #Include "fbmath.bi" #INCLUDE "linux gpib.bi" ' ' variables and subroutines ' #Include ".\src\globalvars iv.inc" #Include ".\src\setupwidgets.inc" #Include ".\src\filesubs.inc"

Definicje funkcji i procedur

Definicja funkcji (Pascal) FUNCTION PWR(x,p: real): Double; var ab: Double; BEGIN ab :=x; IF(x <0) THEN ab := x; IF ab<=1e 12 THEN BEGIN Pwr:=0; wynik zwracany przez funkcję exit; END ELSE BEGIN pwr := x*exp((p 1)*ln(ab)); wynik zwracany przez funkcję END; END;

Definicja Procedury (Pascal) { W Pascalu, procedury defniuje si ę tak samo jak i funkcje. Procedura nie zwraca wyniku operacji.} Procedure SaveData(x,p: real); var ab: Double; BEGIN END;

Definicja funkcji (Python) # W Python struktura programu jest określona poprzez # formatowanie kodu: ilo ść znaków TAB lub spacji na początku # każdej linii. Na początku denerwujące, ale szybko można # przywykn ąć, za ś kod jest łatwy do odczytania def pwr(x,p): ab=abs(x); Power=0; # Pętla if...else if (ab<0.000000000001): power=0; else: power= x *pow(ab,p 1); return power;

Definicja Funkcji lub Procedury (Perl) # W perl nie istnieje różnica między funkcj ą a procedur ą. # # Acz te ż... perl to bardzo zwariowany i magiczny język. sub xf { # znak początku bloku (funkcji) my $t = shift; # pierwszy parametr funkcji my $kappa = shift; # drugi parametr funkcji my $Xf = 0.897*($t/100000.0) ** (1/($kappa+2)); return $Xf; # warto ść jak ą zwraca funkcja } # znak końca bloku (funkcji) # W perl nie istnieje różnica między funkcj ą a procedur ą. # W perl możemy te ż zrezygnowa ć z ładnego formatowania. Np. Kod powyżej można zapisa ć w jednej linii: sub xf{my $t=shift;my $kappa=shift;my $Xf=0.897*($t/100000.0) **(1/($kappa+2));return $Xf;}

Pętla FOR (Pascal) FOR ts:=0 to maxtsteps DO BEGIN FOR xs:=0 to maxxsteps DO BEGIN f[xs,ts]:=0; END; END; Dwie pętle FOR, jedna w drugiej.

Pętla FOR (Perl) my $size = $#x; for(my $e=0; $e<$size; $e++) { $xren[$e] = $Xf * $x[$e]; }

Pętle IF ELSE

Pętla IF (Perl) if ($i<=10000) { $deltaj = $NewJ[20000 $i]; } if ($deltaj >0 && $i<=10000) {; print $NewX[$i], "\t", $NewJ[$i], "\t", $deltaj, "\n"; } else { print $NewX[$i], "\t", $NewJ[$i], "\t", 0, "\n"; }

Pętla IF (Free Basic) If idemon=1 Then MeasType = "Demo" End If If hand_(ii)=0 Then dwgmsg(dv_name(ii)+" not present on bus!") Else swgtxt (id_ltxt(ii,2), Str$(hand_(ii))) dv_flag(ii) = 1 mmm=1 End If

Pętla IF (Free Pascal) IF (step=19) OR (step=49) THEN SaveBeta((step+1)*maxTsteps);

Pętla WHILE (Perl) while(my $line = <>) { $line =~ s/\n//; $line =~ s/\r//g; while($line=~ s/^ //){} @row = split /\s+/,$line; } push @x, @row[0]; push @y, @row[1];

Pętla WHILE (PHP) $i = 0; while ($i <= 10) { echo $i++; /* the printed value would be $i before the increment (post increment) */ } # Jaki będzie rezultat zapuszczenia # następującego skryptu na serwerze? $i=7; while(1) { $a= PI*$i; print $a; $a = $a+1; }

Kompilacja

Kompilacja (Pascal) zbych@orion:~/dyfuzja$ fpc dyfuzja.pas Free Pascal Compiler version 2.6.4 [2014/03/03] for x86_64 Copyright (c) 1993 2014 by Florian Klaempfl and others Target OS: Linux for x86 64 Compiling dyfuzja.pas Linking dyfuzja /usr/bin/ld: warning: link.res contains output sections; did you forget T? 116 lines compiled, 0.7 sec

Kompilacja (C/C++) W przypadku dobrze przygotowanego kodu na Linuksie kompilacja jest trywialnie prosta:./configure make make install Komenda make może czasem wykonywa ć si ę przez długi czas...

Kompilacja: warto dokumentować./configure prefix=/www/apache make make install /www/apache/bin/apachectl start apr util./configure with apr=/usr/local/apr./configure prefix=/www/apache enable module=so withapr=/usr/local/apr make sudo make install PHP:./configure with apxs2=/www/apache/bin/apxs l/usr/local/apr make sudo make install cp php.ini development /usr/local/lib/php.ini

A co, gdy są problemy? Praktycznie zawsze są... zbych@orion:~/hard Locker Matrix$ fbc Hard Locker Matrix.bas ld: cannot find llibgpib 1. Google! 2. TLUG 3. Szuka ć odpowiedniej frazy w dokumentacji

Dalej: - operacje wejścia/wyjścia - grep, przekierowywanie danych, perl i bash, gnuplot - STD INPUT, STD OUTPUT, STD ERROR - (pipe)