Wstęp do programowania

Podobne dokumenty
Wstęp do programowania

Wstęp do programowania

Programowanie i projektowanie obiektowe

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

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

WHILE (wyrażenie) instrukcja;

Wstęp do programowania

Wstęp do programowania

Algorytmy i struktury danych

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

Programowanie i projektowanie obiektowe

Warsztaty dla nauczycieli

Programowanie, algorytmy i struktury danych

Języki programowania zasady ich tworzenia

WHILE (wyrażenie) instrukcja;

Instrukcje sterujące. Programowanie Proceduralne 1

Programowanie w języku Python. Grażyna Koba

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

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

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

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

Programowanie - wykład 4

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

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

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

1 Podstawy c++ w pigułce.

Warunki logiczne instrukcja if

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

Zapis algorytmów: schematy blokowe i pseudokod 1

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

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

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

Algorytm. a programowanie -

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

Podstawy programowania w języku C

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

Wstęp do programowania

1 Podstawy c++ w pigułce.

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

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

Cw.12 JAVAScript w dokumentach HTML

2 Przygotował: mgr inż. Maciej Lasota

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

Kurs rozszerzony języka Python

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

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

LibreOffice Calc VBA

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

2.8. Algorytmy, schematy, programy

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

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

Podstawy Programowania C++

1 Wprowadzenie do algorytmiki

Pętla for. Wynik działania programu:

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

Wykresy i interfejsy użytkownika

Wstęp do Programowania Lista 1

System operacyjny Linux

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

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!

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

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

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

Wstęp do Informatyki

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Języki i paradygmaty programowania

Proste programy w C++ zadania

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Języki i metody programowania

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

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

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

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

Wstęp do programowania

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Właściwości i metody obiektu Comment Właściwości

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

Języki skryptowe w programie Plans

Programowanie obiektowe

Podstawy i języki programowania

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

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

do instrukcja while (wyrażenie);

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

Wstęp do programowania

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

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

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

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Transkrypt:

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

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ń 2014 2 / 38

Podstawowe konstrukcje - komentarze Język naturalny Niech droga będzie wyrażona wzorem: Język Python s = at2 2 """ Obliczamy droge w ruchu j e d n o s t a j n i e p r z y s p i e s z o n y m. """ s = a t t / 2 # Zamiast potegowania s t o s u j e m y mnozenie P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 3 / 38

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ń 2014 4 / 38

Podstawowe konstrukcje - zmienne Język naturalny Obiekt porusza się ruchem jednostajnie przyspieszonym z przyspieszeniem: a = 3 m s 2 Niech v 0 będzie prędkością początkową: v 0 = 0 m s Niech v 1 będzie prędkością osiągniętą po czasie t: t = 5s v 1 = v 0 + at = 15 m s P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 5 / 38

Podstawowe konstrukcje - zmienne Python a = 3 # p r z y s p i e s z e n i e v0 = 0 # p r e d k o s c poczatkowa t = 5 # c z a s v1 = v0 + a t # p r e d k o s c po c z a s i e t Uwaga Znak równości w języku matematyki występuje w dwóch kontekstach: definicjach i równaniach. Tym znaczeniom w Pythonie odpowiadają operatory: = przypisanie (definicja) == porównanie P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 6 / 38

Operatory arytmetyczne Operatory porównania Python matematyka == = < < <= > > >=!= Operatory arytmetyczne Python matematyka + + - * / // dzielenie całkowitoliczbow % reszta z dzielenia ** potęgowanie P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 7 / 38

Przykłady Podnoszenie do kwadratu x = 5 y = x x Zwiększenie wartości o 1 i = i + 1 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 8 / 38

Elementy składowe języka programowania Literały Napisy oznaczające konkretne wartości np. liczby, ciągi znaków, wartości logiczne: 5, 3.14, "Ala", True Identyfikatory Nazwy zmiennych, funkcji i innych zdefiniowanych przez programistę bytów: v0, a, i Instrukcje Słowa i inne konstrukcje, których składnia i semantyka określone są w definicji języka programowania. Np. instrukcja przypisania (=). Program składa się z ciągu instrukcji. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 9 / 38

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ń 2014 10 / 38

Instrukcje warunkowe Język naturalny x = { x x < 0 x w p.p. Python i f x < 0 : modx = x e l s e : modx = x P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 11 / 38

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ń 2014 12 / 38

Dygresja o blokach i wcięciach Blok Ciąg instrukcji, które mają zostać po sobie wykonane. Blok można traktować jako pojedynczą instrukcję. 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 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 13 / 38

Dygresja o blokach i wcięciach - c.d. A ten program jest niepoprawny i f i ==3: x=2 y=4 e l s e : z=5 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 14 / 38

Pętle - while Język naturalny Aby znaleźć pierwszy element ciągu sum kolejnych liczb naturalnych, który jest większy od 20, można dodawać do siebie kolejne liczby naturalne, dopóki suma nie przekroczy 20. while suma = 0 i = 1 while suma < 2 0 : suma = suma + i i = i + 1 # W tym momencie sum j e s t p i e r w s z a suma k o l e j n y c h # l i c z b n a t u r a l n y c h, k t o r a j e s t w i e k s z a od 2 0. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 15 / 38

while warunek : dosomething ( ) while warunek : dosomething ( ) e l s e : dosomethingelse ( ) P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 16 / 38

Pętle - for Język naturalny s n = n i 2 = i=1 i {1,2,...,n} i 2 Python s = 0 f o r i in range ( 1, n +1): s = s + i i P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 17 / 38

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ń 2014 18 / 38

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ń 2014 19 / 38

Ale jest funkcja range range (3)==[0,1,2] range ( n)==[0, 1, 2,..., n 1 ] range ( i, j )==[ i, i + 1,..., j 1 ] Python f o r i in range [ 9 ] : dosomething ( i ) P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 20 / 38

pass Instrukcja pusta i f a==2: pass P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 21 / 38

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

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ń 2014 23 / 38

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ń 2014 24 / 38

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ń 2014 25 / 38

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ń 2014 26 / 38

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ń 2014 27 / 38

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ń 2014 28 / 38

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ń 2014 29 / 38

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ń 2014 30 / 38

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ń 2014 31 / 38

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ń 2014 32 / 38

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ń 2014 33 / 38

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ń 2014 34 / 38

Zadanie 2 Zaimplementuj algorytm Euklidesa. P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 35 / 38

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ń 2014 36 / 38

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ń 2014 36 / 38

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ń 2014 37 / 38

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ń 2014 37 / 38

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