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



Podobne dokumenty
Podstawy bioinformatyki 2017/18

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

Programowanie w języku Python. Grażyna Koba

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

Zmienne, stałe i operatory

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

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

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

1 Podstawy c++ w pigułce.

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

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

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

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

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

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

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

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

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

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

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

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

Podstawy bioinformatyki 2017/18

MATERIAŁY DO ZAJĘĆ II

C++ wprowadzanie zmiennych

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Podstawy i języki programowania

1. Wypisywanie danych

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

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

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

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

1.1. Pozycyjne systemy liczbowe

Algorytmy i struktury danych

Systemy liczbowe używane w technice komputerowej

Metoda znak-moduł (ZM)

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

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

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

Zaawansowany kurs języka Python

Podstawy programowania w Pythonie

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

Algorytmika i Programowanie VBA 1 - podstawy

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

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Wstęp do programowania

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

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

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

Podstawy JavaScript ćwiczenia

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

JAVAScript w dokumentach HTML (1)

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

INFORMATYKA Studia Niestacjonarne Elektrotechnika

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

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

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

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

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

Język ludzki kod maszynowy

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

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

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

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

Oczywiście plik musi mieć rozszerzenie *.php

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

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

Języki programowania zasady ich tworzenia

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Python wstęp. Michał Bereta

Metody numeryczne Laboratorium 2

Wstęp do informatyki- wykład 2

Wstęp do programowania. Wykład 1

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

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

Wyrażenia arytmetyczne

1. Wprowadzanie danych z klawiatury funkcja scanf

Algorytm. a programowanie -

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Java EE produkcja oprogramowania

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

Podstawy bioinformatyki 2017/18

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

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

1 Podstawy c++ w pigułce.

Warsztaty dla nauczycieli

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

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

2 Przygotował: mgr inż. Maciej Lasota

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Wstęp do informatyki. Python 1

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Systemy zapisu liczb.

Transkrypt:

Informatyka II, II tydzień 1 Język Python: operacje i obliczenia na danych typów prostych. Wyprowadzanie wyników. Wstęp: Źródła Pythona są bezpłatne (proponuję wersję 2.4.4, ewentualnie ActivePython 2.4.3.11), poszczególne dystrybucje zawierają interpreter, standardowe moduły, pliki pomocnicze wymagane do uruchamiania programów oraz dokumentację: http://www.python.org/download/ http://www.activestate.com/products/activepython/ Windows binarka (Windows Installer, nie zawiera źródeł) 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. 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+C Linux polecenie python lub idle; koniec pracy: Ctrl+D. Edycja kodu źródłowego (dostępne wersje pod Windows i Linux): edytor tekstowy vi/vim z pluginem umożliwiającym podświetlanie składni: http://www.vim.org/ edytory tekstowe z GUI: NEdit i SciTE (w obu możliwość podświetlania składni): http://www.nedit.org/ http://scintilla.sourceforge.net/scite.html Język Python 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

2 mgr inż. Edyta Dyguda 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... 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 są 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 (1)) 4. moduł sekwencja instrukcji zapisana w pliku 5. program kolekcja modułów Zmienne w języku Python: Nazywanie i tworzenie zmiennych (zmienna obszar pamięci przechowujący dane): 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

Informatyka II, II tydzień 3 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 zmienne przechowują odwołania do obiektów (odpowiednik wskaźników w C), próba użycia niezdefiniowanej zmiennej kończy się błędem, 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

4 mgr inż. Edyta Dyguda ( sigma, pi ) Proste typy wbudowane liczbowy i napisowy: Typ tworzonego obiektu (czyli struktury danych), określający dozwolone dla niego wartości i wykonywane na nim operacje, jest dynamicznie rozpoznawany po sposobie jego zapisu (nie trzeba deklarować zmiennych, rezerwować dla nich miejsca w pamięci, itd.). Python udostępnia szereg uniwersalnych i wydajnych typów wbudowanych, dostarczając jednocześnie specyficznych dla nich metod i funkcji, działających według zoptymalizowanych algorytmów. 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 niż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 "-1"). Przykłady: 2J, 2-3j, 4.123+0.123J Operatory arytmetyczne 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)

Informatyka II, II tydzień 5 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 najbliższej liczby całkowitej (w kierunku liczb ujemnych). 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ń. 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żą następujące 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))

6 mgr inż. Edyta Dyguda Napisy sekwencje znaków o dowolnej długości ograniczone cudzysłowem ("), apostrofami ( ) lub potrójnym cudzysłowem/apostrofami: ("""), ( ). Ten ostatni sposób zapisu pozwala wprowadzać bloki tekstu zajmujące więcej niż jedną linię. We wszystkich przypadkach cudzysłów końcowy musi być tego samego rodzaju co początkowy: >>> napis1 = Lancuchy mozna zapisac tak >>> napis1 Lancuchy mozna zapisac tak >>> napis2 = "albo tak" >>> napis2 albo tak >>> napis3 = """ewentualnie... jeszcze inaczej""" >>> napis3 ewentualnie\njeszcze inaczej 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). Między znaki cudzysłowu wstawiać można apostrofy i odwrotnie, natomiast w potrójnych cudzysłowach wystąpić mogą jedne i drugie (także jednocześnie). W Pythonie nie występuje typ znakowy (pojedynczy znak to łańcuch jednopozycyjny). 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 łańcuchy drukowane są bez przecinków, na końcu dodawany jest znak nowego wiersza, interpretowane są również sekwencje z modyfikatorem: >>> 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

Informatyka II, II tydzień 7 Proste operacje na napisach łączenie i powtarzanie. Operatory zdefiniowane wcześniej jako arytmetyczne ("+", "*", "+=", "*=") znajdują też zastosowanie do łańcuchów (dodawanie 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 >>>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 >