Wstęp do programowania



Podobne dokumenty
Wstęp do programowania

Wstęp do programowania

Programowanie i projektowanie obiektowe

Wstęp do programowania

Programowanie i projektowanie obiektowe

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

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

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Zapis algorytmów: schematy blokowe i pseudokod 1

Warsztaty dla nauczycieli

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja;

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

Wstęp do programowania

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

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

Instrukcje sterujące. Programowanie Proceduralne 1

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

LibreOffice Calc VBA

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Kurs rozszerzony języka Python

do instrukcja while (wyrażenie);

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

Algorytmy i struktury danych

Programowanie - wykład 4

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

Warunki logiczne instrukcja if

Wstęp do Programowania Lista 1

Wstęp do programowania

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Algorytm. a programowanie -

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

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

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

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

Programowanie, algorytmy i struktury danych

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

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Podstawy Programowania C++

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

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

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

6. Pętle while. Przykłady

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

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

Wstęp do Informatyki

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Języki programowania zasady ich tworzenia

1 Podstawy c++ w pigułce.

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

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

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Cw.12 JAVAScript w dokumentach HTML

System operacyjny Linux

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

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

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

System operacyjny Linux

Środowisko programisty

Matlab Składnia + podstawy programowania

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

Programowanie obiektowe i C++ dla matematyków

Programowanie w języku Python. Grażyna Koba

Liczby losowe i pętla while w języku Python

Programowanie - instrukcje sterujące

Analiza algorytmów zadania podstawowe

Podstawy programowania w Pythonie

ECDL Podstawy programowania Sylabus - wersja 1.0

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Podstawy programowania w języku C

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!

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

2.8. Algorytmy, schematy, programy

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Wykresy i interfejsy użytkownika

Wstęp do programowania

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

4. Funkcje. Przykłady

Wprowadzenie do Scilab: podstawy języka Scilab

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Język C, instrukcje sterujące (laboratorium)

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Podstawy programowania

1 Podstawy c++ w pigułce.

Kontrola przebiegu programu

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Technologie cyfrowe semestr letni 2018/2019

1 Wprowadzenie do algorytmiki

Laboratorium kryptograficzne dla licealistów 6

Pętla for. Wynik działania programu:

Wstęp do programowania

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Transkrypt:

Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 1 / 34

Przypomnienie Programowanie imperatywne Program składa się z instrukcji, które są wykonywane po kolei. Instrukcje mogą zmieniać stan programu. Stan programu Sprzętowo: zawartość pamięci i rejestrów procesora. Matematycznie: Wartościowanie zmiennych. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 2 / 34

Podstawowe konstrukcje Komentarze """ This i s a multi l i n e comment. I t may occupy more than one l i n e. """ # This i s an end of l i n e comment P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 3 / 34

Podstawowe konstrukcje c.d. Zmienne i przypisania i = 5 Uwaga = oznacza przypisanie == jest operatorem porównania P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 4 / 34

Operatory arytmetyczne Operatory porównania == = < < <= > > >=!= Operatory arytmetyczne + + - * / // dzielenie całkowitoliczbowe % mod ** potęgowanie P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 5 / 34

Przykład Podnoszenie do kwadratu x = 5 y = x x Wypisywanie wartości p r i n t y P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 6 / 34

Instrukcje sterujące Instrukcje sterujące służą do zmiany kolejności wykonywania instrukcji w programie. Bez nich każda instrukcja zostałaby wykonana dokładnie raz, w kolejności występowania w kodzie źródłowym. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 7 / 34

Instrukcje warunkowe Instrukcja warunkowa i f i ==3: dosomething ( ) i f i ==3: dosomething ( ) e l s e : dosomethingelse ( ) i f i ==3: dosomething ( ) e l i f i ==2: dosomethingelse ( ) e l s e : d o S o m e t h i n g D i f f e r e n t ( ) P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 8 / 34

i f i ==3: x=2 y=4 e l s e : z=5 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 9 / 34 Dygresja o wcięciach W Pythonie nie ma nawiasów klamrowych {, } jak w C lub Javie, ani słów kluczowych begin, end. O granicach bloków kodu decydują wcięcia. To są różne programy i f i ==3: x=2 y=3 i f i ==3: x=2 y=3 A ten program jest niepoprawny

Pętle while while i <5: dosomething ( ) while i <5: dosomething ( ) e l s e : dosomethingelse ( ) P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 10 / 34

Pętle c.d. for f o r i in l i s t : dosomething ( i ) for f o r i in l i s t : dosomething ( i ) e l s e : dosomethingelse ( ) P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 11 / 34

W Pythonie nie ma tradycyjnej pętli for Java, C f o r ( i = 0 ; i < 1 0 ; i ++) { dosomething ( i ) ; } Pascal f o r i :=0 to 9 do begin dosomething ( i ) ; end P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 12 / 34

Ale jest funkcja range range (3)==[0,1,2] Python f o r i in range [ 9 ] : dosomething ( i ) P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 13 / 34

pass Instrukcja pusta i f a==2: pass P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 14 / 34

break Opuszcza aktualnie wykonywaną pętlę. while True : isdone=dosomething ( ) i f isdone : break P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 15 / 34

continue Przechodzi do następnej iteracji pętli. while i <10: s k i p=check ( i ) i f s k i p : continue dosomething ( ) P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 16 / 34

Tablice? Short answer Nie ma tablic. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 17 / 34

Tablice? Short answer Nie ma tablic. Są listy. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 17 / 34

Listy Składnia [ el1, el2, el3,... ] Przykład a = [ spam, eggs, 100, 1234] a [ 2 ] = a [ 3 ] 233 Elementy są numerowane od 0. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 18 / 34

Wycinki (ang. slices) Ujemne indeksy a[-1] oznacza ostatni element listy a[-i] oznacza i-ty element od końca (miły fakt i N N i) Wycinki a[i:j] oznacza listę zawierającą elementy od i-tego do j 1-szego włącznie i i j mogą być ujemne. Można je również pominąć. Wycinki z krokiem a[i:j:k] j.w. ale co k-ty element P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 19 / 34

Funkcje Funkcje w matematyce f : D W D dziedzina W zbiór wartości Funkcja może być wieloargumentowa f : D 1 D 2 D n W P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 20 / 34

Funkcje c.d. Funkcje w Pythonie def f ( arg1, arg2,..., argn ) : compute compute... compute return r e s u l t Programowanie imperatywne! Obliczenia w funkcji mogą zależeć i zmieniać stan programu. Zatem funkcja wywołana wielokrotnie dla tych samych argumentów może dawać różne wyniki. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 21 / 34

Funkcje c.d. Przykład n=0 def f ( ) : global n=n+1 return n n p r i n t f ( ) p r i n t f ( ) Python domyślnie traktuje wszystkie zmienne występujące w funkcji jako lokalne, aby uniknąć takich sytuacji. Słowo kluczowe global powoduje odwołanie do zmiennej n występującej na zewnątrz funkcji. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 22 / 34

Funkcje c.d. Użyteczny przykład def f i b ( n ) : # r e t u r n the nth F i b o n a c c i number a, b = 0, 1 i = 1 while a < n : a, b = b, a+b i = i + 1 return b P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 23 / 34

Interpreter Pythona Praca interaktywna pawel@tok ~> python Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> 2+2 4 >>> i=3 >>> print i 3 >>> a=range(5) >>> a [0, 1, 2, 3, 4] >>> i=0 >>> while i<5:... print i... i=i+1... 0 1 2 3 4 >>> P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 24 / 34

Interpreter Pythona Skrypt wykonywalny #!/usr/bin/python print "Hello, World!" Dobrze jest pamiętać o chmod a+x... W trybie interaktywnym >>> execfile("hello.py") Hello, World! >>> P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 25 / 34

Zadanie 1 Napisz programik, który: 1 Wczytuje dwie liczby i oblicza ich średnią arytmetyczną. 2 Wczytuje liczbę i sprawdza, czy jest dodatnia - algorytm powinien zwrócić odpowiedź TAK albo NIE. 3 Wczytuje dwie liczby i wyznacza najmniejszą z nich. 4 Wczytuje trzy liczby i wyznacza największą z nich. 5 Wczytuje dwie liczby a, n (n N) i oblicza a n. 6 Wczytuje dwie liczby a, n (n Z) i oblicza a n. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 26 / 34

Wczytywanie >>> a=input("podaj liczbe:") Podaj liczbe:1 >>> a 1 >>> (a,b)=input("podaj dwie liczby:") Podaj dwie liczby:2,3 >>> a 2 >>> b 3 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 27 / 34

Algorytm Euklidesa Pomysł a jeśli b = 0 NWD(a, b) = NWD(b, a) jeśli b > a NWD(a b, b) jeśli a b > 0 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 28 / 34

Naiwna implementacja Pseudokod NWD(a, b) zakładamy, że a > b i a + b > 0 1 while b > 0 2 do a a b 3 if b > a 4 then swap(a, b) 5 return a Niska wydajność Dla a = 10 10 i b = 1 trzeba wykonać 10 10 odejmowań. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 29 / 34

Poprawna implementacja Pseudokod NWD(a, b) zakładamy, że a > b i a + b > 0 1 while b > 0 2 do a a mod b 3 swap(a, b) 4 return a P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 30 / 34

Zadanie 2 Zaimplementuj algorytm Euklidesa. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 31 / 34

Zadanie 3 Stwórz listę długości 10 zawierającą: 1 Kolejne liczby naturalne. 2 Kolejne liczby nieparzyste. 3 Kolejne sumy częściowe szeregu liczb naturalnych. 4 Kolejne liczby Fibonacciego. 5 Losowe wartości ze zbioru {0, 1}. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 32 / 34

Zadanie 3 Stwórz listę długości 10 zawierającą: 1 Kolejne liczby naturalne. 2 Kolejne liczby nieparzyste. 3 Kolejne sumy częściowe szeregu liczb naturalnych. 4 Kolejne liczby Fibonacciego. 5 Losowe wartości ze zbioru {0, 1}. Generator liczb pseudolosowych >> import random >>> random.randint(0,1) 0 >>> random.randint(0,1) 1 >>> random.randint(0,1) 0 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 32 / 34

Zadanie 4 Flaga polska Zadanie Lista a wypełniona zerami i jedynkami reprezentuje ciąg n urn w których znajdują się żetony białe (0) i czerwone (1). Podać algorytm, który zamieniając żetony miejscami doprowadzi do sytuacji, w której wszystkie żetony białe znajdują się na lewo od czerwonych. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 33 / 34

Zadanie 4 Flaga polska Zadanie Lista a wypełniona zerami i jedynkami reprezentuje ciąg n urn w których znajdują się żetony białe (0) i czerwone (1). Podać algorytm, który zamieniając żetony miejscami doprowadzi do sytuacji, w której wszystkie żetony białe znajdują się na lewo od czerwonych. Wskazówka Należy przesuwać się indeksem c od początku tablicy, zaś indeksem b od końca. Intencją jest utrzymywanie następującego niezmmiennika: wszystkie elementy tablicy o indeksach mniejszych od c są czerwone, zaś wiekszych od b są białe. Indeksy c i b będą się do siebie zbliżać i ostatecznie gdy c będzie równe b, to tablica będzie uporządkowana. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 33 / 34

Strona wykładu http://bioexploratorium.pl/wiki/wstęp_do_programowania 2013z P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 34 / 34