Giter VIP home page Giter VIP logo

uvod-do-prg's Introduction

Úvod do programování

Zdrojové kódy a poznámky ke cvičení z Úvodu do programování.

Stránky přednášky.

Věci probírané na jednotlivých cvičeních najdete na samostatné stránce. Cvičení probíhá rámcově podle kurzu Nauč se Python!.

Cvičení probíhá v jazyku Python 3. Možná jste se setkali, například na Programování pro GIS, s Pythonem 2, pak pozor, jazyky jsou podobné, ale ne stejné, například print v Pythonu 3 se vždy volá se závorkami.

Programové vybavení

Na cvičení budeme programovat v Pythonu 3 v prostředí PyCharm, stáhněte si zdarma dostupnou Community Edition. Můžete samozřejmě použít i jiná prostředí, pokud jsou vám bližší.

Pro základní pochopení struktury programů si můžete vyzkoušet například Google Blockly.

Základy syntaxe

  • příkazy oddělené koncem řádku
  • proměnné
    • vznikají prvním přiřazením pomocí =
  • blok kódu
    • seznam příkazů vykonávaných za nějaké situace (podmínka, cyklus)
    • oddělený odsazením
      • 4 mezery nebo tabulátor
      • musí být konzistentní v celém zdrojovém kódu
  • porovnání vs. přiřazení
    • = je přiřazení, výsledkem je hodnota přiřazeného výrazu
    • == je porovnání, výsledek je pravda, pokud se levá strana rovná pravé, nepravda jinak
    • porovnáváme pouze proměnné stejných typů, porovnání čísla a řetězce je vždy nepravda
  • podmínka
if <vyraz>:
  <blok>
  • pokud je <vyraz> splněn, pak se vykoná <blok>

Typy

  • str - řetězec znaků
    • 'text'
    • "text"
    • """text""" - může obsahovat konce řádků
  • int - celé číslo
  • float - desetinné číslo, odpovídá double z jiných jazyků
  • typ proměnné zjistíte zavoláním type(promenna)
  • převody mezi typy:
    • str(promenna) - cokoli -> string
    • int(promenna) - řetězec -> int
    • float(promenna) - řetězec -> float

Moduly a funkce v nich

  • v modulech jsou obsažené další rozšiřující funkce
  • můžeme buď importovat modul a pak funkce z něj používat jako modul.funkce
import math
odmocnina_z_peti = math.sqrt(5)
  • nebo můžeme importovat z modulu konkrétní funkci a pak ji používat přímo
from math import sqrt
odmocnina_z_peti = sqrt(5)

Vstup a výstup

  • výpis na obrazovku

    • print(obsah)
      • obsah může být libovolného typu
  • čtení z konzole

    • input(prompt)
      • vypíše parametr prompt, vrací načtený řádek (bez konce řádku) jako str

Formátování řetězců

  • "{} je rovno priblizne {:.2f}".format("π",math.pi)
  • v řetězci na místo, kam chceme vložit proměnnou, napíšeme {}
  • za řetězec přidáme .format() a do závorek napíšeme proměnné v tom pořadí, v jakém je chceme dosadit do řetězce
  • pro formátování desetinných čísel (a jiné formátování) můžeme použít modifikátory uvnitř složených závorek
    • nejčastěji {:.2f}
      • za desetinnou tečkou budou 2 platné číslice
      • číslo se vypíše jako float
  • lze formátovat libovolný řetězec, ne jen v printu

Aritmetika

  • používáme se standardní matematické operátory
  • ** je umocnění
  • mnoho užitečných funkcí najdete v modulu math

JSON a GeoJSON

  • formát pro ukládání dat
  • původně vznikl v rámci JavaScriptu
  • specifikace JSONu
  • datové typy podobné typům v Pythonu
    • true, false, null
    • čísla
    • řetězce
    • array (seznam)
    • object (slovník)
  • GeoJSON je způsob ukládání geodat pomocí JSONu
  • specifikace GeoJSONu
  • data v GeoJSONu lze snadno vložit na web pomocí knihovny Leaflet

Rekurze

  • způsob, jak převést řešení problému na řešení menších podproblémů
  • funkce řešící nějaký problém vyřeší jeho část a zavolá sama sebe na nějaký(é) jednodušší podproblém(y)
  • je potřeba definovat koncovou podmínku, kdy už vyřešíme celý zbytek problému, aby se funkce nevolala donekonečna

Předávání vstupu programům

  • program obvykle potřebuje nějaká vstupní data, se kterými pak dále počítá
  • existují různé způsoby, jak tato data programu předat:
    • interaktivně (pomocí input)
      • vhodné, pokud s programem pracuje přímo uživatel
    • možnost opakovat zadání při chybném vstupu
    • nevhodné pro automatické spouštění
    • čtení z pevně zadaného souboru
      • jednoduché na implementaci
    • vhodné pro automatické spouštění
    • pokud máme více vstupních souborů, musíme je mezi jednotlivými spuštěními přejmenovávat, což je náchylné na chyby
    • předání argumentů na příkazové řádce
      • vhodné pro automatické spouštění
    • umožňuje snadno parametrizovat běh programu i při automatickém spouštění
    • náročnější na implementaci

Práce s argumenty příkazové řádky

  • je potřeba importovat modul sys
  • sys.argv obsahuje seznam všech argumentů
    • sys.argv[0] je jméno programu, pomocí kterého byl spuštěn
    • od sys.argv[1] začínají jednotlivé argumenty, v tom pořadí v jakém byly zadány
  • soubory se zadávají obvykle svým jménem
  • parametry ovlivňující běh programu obvykle jako -<pismeno> [hodnota]
    • pismeno je písmeno určující, který parametr chceme nastavit
    • hodnota (volitelná) je hodnota, na kterou chceme parametr nastavit
  • pro příjemnější práci s argumenty se hodí modul click

Užitečné moduly

uvod-do-prg's People

Contributors

xtompok avatar

Stargazers

Oliver avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.