Podstawy bioinformatyki 2017/18

Podobne dokumenty
Język Python: operacje i obliczenia na danych typów prostych. Wyprowadzanie wyników.

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Programowanie w języku Python. Grażyna Koba

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

1 Podstawy c++ w pigułce.

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Zmienne, stałe i operatory

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

Podstawy bioinformatyki 2017/18

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Python wstęp do programowania dla użytkowników WCSS

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

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

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

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

1. Wypisywanie danych

Tablice (jedno i wielowymiarowe), łańcuchy znaków

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Podstawy i języki programowania

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

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

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

MATERIAŁY DO ZAJĘĆ II

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Cw.12 JAVAScript w dokumentach HTML

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Podstawy JavaScript ćwiczenia

Algorytmy i struktury danych

Systemy liczbowe używane w technice komputerowej

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Python. Skąd taka nazwa? Kurs systemu UNIX 1

C++ wprowadzanie zmiennych

Oczywiście plik musi mieć rozszerzenie *.php

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

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

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

Ćwiczenie 1. Matlab podstawy (1) Matlab firmy MathWorks to uniwersalny pakiet do obliczeń naukowych i inżynierskich, analiz układów statycznych

Podstawy bioinformatyki 2017/18

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

JAVAScript w dokumentach HTML (1)

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

1.1. Pozycyjne systemy liczbowe

Wstęp do programowania

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

1 Podstawy c++ w pigułce.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Warsztaty dla nauczycieli

Java EE produkcja oprogramowania

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

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Wstęp do programowania. Wykład 1

Metoda znak-moduł (ZM)

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Powtórka algorytmów. Wprowadzenie do języka Java.

Metody numeryczne Laboratorium 2

Algorytmika i Programowanie VBA 1 - podstawy

Języki programowania zasady ich tworzenia

Python dla początkujących. Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring

2 Przygotował: mgr inż. Maciej Lasota

Podstawy programowania. Python wykład 6

Laboratorium Wykorzystanie kalkulatora Windows do obliczania adresów sieciowych

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

Systemy zapisu liczb.

Język ludzki kod maszynowy

2. Łańcuchy tekstowe w PHP

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

Wyrażenia arytmetyczne

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Podstawy programowania w C++

Znaki w tym systemie odpowiadają następującym liczbom: I=1, V=5, X=10, L=50, C=100, D=500, M=1000

1. Wprowadzanie danych z klawiatury funkcja scanf

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Przeciążanie operatorów

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Python wstęp. Michał Bereta

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

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

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

Podstawy programowania w Pythonie

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Mikrokontroler ATmega32. Język symboliczny

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Transkrypt:

1 Wstęp JEZYK PROGRAMOWANIA PYTHON: OPERACJE NA DANYCH TYPÓW PROSTYCH, WYPROWADZANIE WYNIKÓW E. Dyguda-Kazimierowicz Źródła Pythona są bezpłatne (proszę korzystać z wersji 2.X, np. Python 2.7), poszczególne dystrybucje zawierają interpreter, standardowe moduły, pliki pomocnicze wymagane do uruchamiania programów oraz dokumentację: http://www.python.org/download Windows wersja binarna (Windows Installer, nie zawiera źródeł): http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi Linux Python często standardowo zawarty w danej dystrybucji, możliwość ściągnięcia źródeł (w języku C, wymagany kompilator) lub prekompilowanych wersji binarnych 1.1 Uruchamianie i koniec pracy: Windows menu Start/.../Python (command line) lub IDLE (Python GUI) (Integrated Development Environment - interpreter Pythona opakowany w interfejs graficzny, dodatkowe funkcje: automatyczne wcięcia, debugger, itd.); koniec pracy: Ctrl+Z, Enter Linux polecenie python; koniec pracy: Ctrl+D 1.2 Edycja kodu źródłowego Darmowe edytory dla Windows i Linux OS: edytor tekstowy vi/vim z pluginem umożliwiającym podświetlanie składni: http://www.vim.org edytor tekstowy z graficznym interfejsem SciTE: http://www.scintilla.org/scite.html 1

1.3 Język Python 1 WSTEP 1.3 Język Python Python to skryptowy język programowania obiektowego: 1. interpretowany interpreter Pythona uruchamia kod zaraz po jego wpisaniu bądź załadowaniu, brak etapów kompilacji i konsolidacji (występuje tzw. kompilacja bajtowa: program źródłowy tłumaczony jest na pośrednią postać kodu bajtowego, uruchamianego następnie przez interpreter) 2. obiektowy zawiera klasy, wyjątki, egzemplarze, metody, automatyczne zarządzanie pamięcią, dziedziczenie i przeciążanie (obiektowość jest opcjonalna, z Pythona można korzystać jak z języka proceduralnego) 3. powszechnie dostępny i darmowy 4. dynamicznie rozwijany i wspierany 5. przenośny napisany w przenośnym języku ANSI C (możliwość kompilacji i uruchamiania niezależnie od platformy systemowej, rdzeń Pythona działa wszędzie tak samo, ewentualne różnice dotyczą rozszerzeń specyficznych dla systemu; standardowy interfejs graficzny do Tk, Tkinter, działa w X Window, MS-Windows i MacOS) 6. zgodny z innymi językami prosta integracja z komponentami napisanymi w innych językach, np. w C (dzięki zastosowaniu API: Advanced Programmer Interface) 7. wydajny i prosty szereg wbudowanych typów i narzędzi, wiele dodatkowych narzędzi bibliotecznych, automatyczne zarządzanie pamięcią połączone z uproszczoną składnią i budową 8. szerokie możliwości i zastosowania od narzędzi umożliwiających administrowanie systemem, poprzez skrypty internetowe (bezpłatny serwer WWW Zope) i bazy danych, do programowania numerycznego, przetwarzania obrazów, sztucznej inteligencji... 9. przykładowe zastosowania w chemii napisane w języku Python programy pymol i bkchem 1.4 Podstawowe pojęcia: 1. elementy składowe języka programowania nazwy zmiennych, słowa kluczowe, operatory, literały i ograniczniki 2. obiekty egzemplarze dowolnego typu danych, przechowują dane, tworzone przez wyrażenia 3. wyrażenia (tworzą obiekty) i instrukcje (wykonywalne wiersze kodu działające na obiekty i uruchamiające polecenia) zbudowane są z elementów składowych (wymienionych w punkcie 1.) 2

2 NAZYWANIE I TWORZENIE ZMIENNYCH 4. moduł sekwencja instrukcji zapisana w pliku 5. program kolekcja modułów 2 Nazywanie i tworzenie zmiennych identyfikator zmiennej ciąg liter, cyfr i znaków podkreślenia (_) o dowolnej długości, zaczynający się od litery lub znaku podkreślenia, nie może być słowem kluczowym (np. and, for, def), wielkość liter jest rozróżniana tworzenie zmiennych poprzez przypisanie danej nazwie jej wartości za pomocą instrukcji przypisania (możliwe przypisanie wielokrotne); wypisanie zmiennej np. przez podanie jej nazwy # oznacza w poniższych przykładach początek komentarza, czyli tekstu ignorowanego przez interpereter >>> x = 2 >>> x 2 >>> X = Y = Z = -3.14 #ta sama wartosc wielu zmiennych >>> X -3.1400000000000001 >>> imie = "Ala" >>> imie Ala >>> a, b, c = 0.123, -100, hmmm #przypisanie wielokrotne >>> c hmmm >>> lit_1, lit_2, lit_3 = "UFO" >>> lit_2 F >>> lit_1, lit_2 = lit_2, lit_1 #zamiana wartosci zmiennych >>> lit_2 U 3

2 NAZYWANIE I TWORZENIE ZMIENNYCH zmienne przechowują odwołania do obiektów (odpowiednik wskaźników w C), tej samej zmiennej można przypisywać kolejno różne typy danych (nowe przypisanie usuwa bieżącą wartość zmiennej, do usunięcia samej zmiennej służy instrukcja del nie trzeba tego robić samodzielnie, gdyż Python automatycznie usuwa nieużywane obiekty): >>> y = 2e-3 >>> y 0.002 >>> y = "a teraz napis" >>> y a teraz napis >>> dir() #zwraca liste aktualnie zdefiniowanych nazw [ X, Y, Z, builtins, doc, name, a, b, c, imie, lit_1, lit_2, lit_3, x, y ] >>> del Y, c, lit_2 #usuwa kolejne zmienne >>> dir() [ X, Z, builtins, doc, name, a, b, imie, lit_1, lit_3, x, y ] przypisanie zmiennej wartości już istniejącego obiektu nie tworzy jego kopii, powiela tylko odwołanie do tego obiektu (obie zmienne wskazują ten sam obszar w pamięci) jednak przypisanie zmiennej A (patrz przykład poniżej) innej wartości, nie zmienia B (B zachowuje swoją wartość i położenie w pamięci, natomiast dla A tworzony jest nowy obiekt): >>> A = pi >>> B = A >>> A, B ( pi, pi ) >>> A = sigma >>> A, B ( sigma, pi ) 4

3 PROSTE TYPY WBUDOWANE LICZBOWY I NAPISOWY 3 Proste typy wbudowane liczbowy i napisowy Typ tworzonego obiektu określający dozwolone dla niego wartości i wykonywane na nim operacje, jest dynamicznie rozpoznawany po sposobie jego zapisu. Tym samym nie trzeba deklarować zmiennych ani rezerwować dla nich miejsca w pamięci. Python udostępnia szereg uniwersalnych i wydajnych typów wbudowanych, dostarczając jednocześnie specyficznych dla nich metod i funkcji. 3.1 Liczby W Pythonie dostępne są cztery typy liczbowe (uszeregowane według rosnącej złożoności): liczby całkowite (odpowiednik typu long w języku C) łańcuchy cyfr pozbawione kropki dziesiętnej (poprzedzone opcjonalnym znakiem +/-), maksymalna dokładność taka, z jaką dany kompilator C traktuje liczby long (przynajmniej 4 bajty), liczby w zapisie ósemkowym i szesnastkowym mają na początku odpowiednio zero lub 0X ( 0x ) Przykłady: 0, -333, 012, 0x20, 0X7f liczby całkowite długie zapisywane jak wyżej z dodatkową literą L ( l ) na końcu, mają nieograniczoną długość Przykłady: 12345678999l, -4294967296L, 0L liczby zmiennoprzecinkowe (odpowiednik typu double w języku C) liczby rzeczywiste zapisywane z kropką dziesiętną lub w notacji naukowej: litera E ( e ) oddziela wykładnik potęgi 10 Przykłady: 0.1, -333.333, 2., 2e3, 0.567E-13 Błąd zaokrąglenia (patrz przykład poniżej) wynika z wewnętrznego reprezentowania przez Pythona liczb dziesiętnych za pomocą systemu dwójkowego ułamki dziesiętne zwykle można tylko przybliżyć przez reprezentację dwójkową, Python zaokrągla wynik przybliżenia do 17 cyfr znaczących: >>> 0.1 0.10000000000000001 liczby zespolone postaci x + yj, gdzie x, y, J to odpowiednio liczby zmiennoprzecinkowe reprezentujące część urojoną i rzeczywistą oraz liczba urojona (pierwiastek kwadratowy z liczby -1) Przykłady: 2J, 2-3j, 4.123+0.123J 5

3.2 Operatory arytmetyczne 3 PROSTE TYPY WBUDOWANE LICZBOWY I NAPISOWY 3.2 Operatory arytmetyczne Operatory umożliwiają budowanie wyrażeń, których obliczona wartość wyświetlana jest podczas interakcyjnej pracy z interpreterem ( kalkulator ). Obiekty, na które działają operatory, to operandy. Jeżeli w wyrażeniu występują operandy o różnych typach liczbowych, następuje automatyczna konwersja wszystkich operandów do najbardziej złożonego typu. operatory jednostronne operacje na pojedynczych operandach: operator negacji, - i identyczności, + (odpowiednio: zmiana znaku operandu bądź pozostawienie go bez zmian) operatory dwustronne +, -, *, /, % i **, z czego dwa ostatnie to dzielenie z reszta (operator modulo; zwraca resztę z dzielenia) i operator potęgowania ( x**y jest równoważne funkcji pow(x,y) i oznacza x y ) Operator dzielenia / w odniesieniu do liczb całkowitych zaokrągla wynik do liczby całkowitej. Prawidłowy wynik uzyskuje się, jeśli przynajmniej jedna z liczb w wyrażeniu jest typu zmiennoprzecinkowego. >>> 1/2 0 >>> -1/2-1 >>>1.0/2, 1/float(2) (0.5, 0.5) >>> 10 % 3, 17 % 7 (1, 3) >>> 2 ** 4 16 >>> 16 ** (0.25) 2.0 >>> 2.0 ** (-4), 1.0/16 (0.0625, 0.0625) Reguły pierwszeństwa operatorów określają kolejność działań przy obliczaniu wartości złożonych wyrażeń arytmetycznych najwyżej w tej hierarchii leży operator potęgowania ( wiąże najmocniej), następnie operatory jednostronne, operatory mnożenia, dzielenia i dzielenia z resztą (te trzy mają jednakowy priorytet) oraz dodawania i odejmowania (także taki sam priorytet). Operatory łączone są od lewej do prawej (z wyjątkiem potęgowania). Określoną kolejność wykonywania działań wymusić można przez użycie nawiasów i pogrupowanie podwyrażeń. 6

3.3 Napisy 3 PROSTE TYPY WBUDOWANE LICZBOWY I NAPISOWY Każdemu operatorowi dwustronnemu odpowiada operator przypisania przyrostowego, np. +=, *=, **=. Wyrażenie x += y oznacza x = x + y (i analogicznie dla pozostałych). >>> x, y = 7.123, 3 >>> x += 10 >>> x 17.123000000000001 >>> x += y + 1 >>> x 21.123000000000001 Do przekształcania typów liczb służą funkcje: int(), long(), float(), complex(). Przekształcenie liczby zmiennoprzecinkowej do całkowitej jest jednoznaczne z utratą informacji o jej części ułamkowej: >>> int(x), long(x), complex(x) (21, 21L, (21.123000000000001+0j)) 3.3 Napisy Napisy to sekwencje znaków o dowolnej długości ograniczone cudzysłowem ("), apostrofami ( ) lub potrójnym cudzysłowem/apostrofami: ("""), ( ). Ten ostatni sposób pozwala wprowadzać bloki tekstu zajmujące więcej niż jedną linię. We wszystkich przypadkach znacznik końcowy musi być tego samego rodzaju, co początkowy. Między znaki cudzysłowu wstawiać można apostrofy i odwrotnie, natomiast w potrójnych cudzysłowach wystąpić mogą jedne i drugie. >>> napis1 = Lancuchy mozna zapisac tak >>> napis1 Lancuchy mozna zapisac tak >>> napis2 = "albo tak" >>> napis2 albo tak >>> napis3 = """ewentualnie... jeszcze inaczej""" >>> napis3 ewentualnie\njeszcze inaczej 7

3.4 Operacje na napisach 3 PROSTE TYPY WBUDOWANE LICZBOWY I NAPISOWY W ostatnim z powyższych przykładów, w trakcie wprowadzania łańcucha pojawia sie wielokropek (...) interpreter oczekuje tutaj na wpisanie kolejnej linii naszego napisu, którego koniec sygnalizuje potrójny cudzysłów zamykający. W wyświetlonym napisie napis3 miejsce końca linii wyznacza sekwencja z modyfikatorem, \n będąca tutaj znakiem nowego wiersza. Sekwencje z modyfikatorem (lewym ukośnikiem) to sposób podawania znaków nie mających odpowiednika na klawiaturze (np. t to znak tabulacji poziomej, \f przejście do nowej strony, \a dzwonek) lub innych o specjalnym znaczeniu (np. \\, \, \ wstawia odpowiednio: pojedynczy ukośnik, cudzysłów, apostrof). Wpisanie nazwy dowolnej zmiennej (lub całego wyrażenia) powoduje wyświetlenie jej wartości tylko w trybie interaktywnym interpretera. Aby uzyskać podobny efekt w programie, należy użyć instrukcji print. Instrukcja print pobiera podane jej wyrażenia, oblicza ich wartości, przekształca wynik na sformatowany łańcuch wyjściowy, który następnie wypisuje na standardowe wyjście (ekran). Kolejne wypisywane łańcuchy (czyli oddzielone przecinkami argumenty instrukcji print) oddzielane są spacjami, na końcu dodawany jest znak nowego wiersza. Sekwencje z modyfikatorem są interpretowane: >>> print napis3 ewentualnie jeszcze inaczej >>> x, y, tekst1, tekst2 = 3, 4, "Ala ma", czarnych kotow >>> print tekst1, x + y, tekst2 Ala ma 7 czarnych kotow W Pythonie nie występuje typ znakowy (pojedynczy znak to łańcuch jednopozycyjny). 3.4 Operacje na napisach Niektóre operatory omówione wcześniej jako arytmetyczne ( +, *, +=, *= ) znajdują też zastosowanie do łańcuchów (łączenie i powielanie stałych napisowych). Działanie tych samych operatorów zależy od typu ich operandów (przeciażanie operatorów): >>> x + y #sumowanie liczb 7 >>> tekst1 + " kota" #laczenie napisow Ala ma kota >>> tekst1 += jeszcze psa #przypisanie przyrostowe napisow >>> tekst1 Ala ma jeszcze psa 8

3.4 Operacje na napisach 3 PROSTE TYPY WBUDOWANE LICZBOWY I NAPISOWY >>>3 * "miau " #powtarzanie napisow miau miau miau >>> tekst2 *= 4 #powielenie przyrostowe napisow >>> tekst2 kotowkotowkotowkotow Do sprawdzenia długości łańcucha służy funkcja len() (sekwencje z modyfikatorem traktowane są jako pojedyncze znaki): >>> len(tekst2) 20 >>> len("1\n2") 3 >>> len( ) 0 Łańcuchy reprezentujące poprawne literały liczbowe mogą być przekształcone na odpowiednie typy liczbowe za pomocą wymienionych wcześniej funkcji (np. float()). Odwrotną operację (konwersję na typ napisowy) przeprowadza funkcja str(). W zbliżony sposób działa także umieszczenie obiektu, który chcemy przekształcić, w odwrotnych apostrofach, (w porównaniu z funkcją str() liczby zmiennoprzecinkowe zachowywane są tutaj z większą dokładnością): >>> float( 3e2 ) 300.0 >>> Z = 2.22-0.99j >>> str(z) (2.22-0.99j) >>> Z (2.2200000000000002-0.98999999999999999j) Sprawdzenie typu obiektów umożliwia funkcja type(): >>> type(z) #typ obiektu: liczba zespolona <type complex > >>> type( Z ) #typ obiektu: napis <type str > 9