2021. március 30., kedd

Konkrét algoritmusokra példa

      

A folyamatábra nem más, mint algoritmusok grafikus megjelenítése. Az egyes elemi lépéseket alakzatok segítségével jelenítjük meg, majd ezeket nyilakkal kötjük össze, amelyek meghatározzák az egyes tevékenységek végrehatásának sorrendjét. A különböző jellegű tevékenységekhez különböző alakzatok tartoznak.

Start- és Vége szimbólumStart- és Vége szimbólum: Ezek az ellipszis alakzatok határozzák meg azt, hogy hol kell elkezdenünk az algoritmus végrehajtását, illetve azt, hogy mikor értük el a lépéssorozat végét. A Start szimbólumból maximum egy lehet egy folyamatábrában. Csak egyetlen kifelé irányuló nyíl indulhat ki belőle és befelé irányuló nyíl nem kapcsolódhat hozzá. A Vége szimbólumból több is szerepelhet egy folyamatábrában, mindig elegendő pontosan egy végjel. Egy vagy több nyíl is mutathat irányába, viszont nem indulhat ki belőle egy sem. 

Elemi lépésElemi tevékenység: Egy téglalap alakzatban szereplő egyszerű és egyértelmű lépés, amely nem igényel további magyarázatot. Az alábbi ábrán szereplő tevékenység például egy értékadás, ami azt jelenti, hogy az X nevű mennyiség (más néven változó) értéke legyen innentől kezdve 1. Egy vagy több bemenő nyíl és pontosan egy kimenő nyíl tartozhat hozzá.

Input- és Output szimbólumInput- és Output szimbólum: A legtöbb algoritmusnak szüksége van valamiféle bemeneti adatra. Ezt általában a felhasználó a végrehajtás során fogja csak megadni és ezt az értéket fogja az algoritmus felhasználni (hasonlóképpen, mint az általánosítást bemutató példában). A kapott érték mindig eltárolásra kerül az alakzatban megadott nevű mennyiségben. Máskor az algoritmus egy eredményt szolgáltat, közölni szeretne valamit a felhasználóval. A kimenet lehet például egy mennyiség értéke (mint a lenti példában), másrészt lehet egy egyszerű szöveg, mint például a „Szia!” üzenet. A szövegkonstansok mindig macskakörömben szerepelnek, így tudjuk őket megkülönböztetni a mennyiségnevektől. Ezekből a szimbólumokból csak egy nyíl mutathat kifelé.

Feltétel szimbólumFeltétel szimbólum: A folyamatábrák legösszetettebb szerkezetű és működésű eleme. Egy csúcsára állított rombuszban egy állítás szerepelhet. Az állítás egy logikai kifejezés, amely vagy igaz, vagy hamis kell kegyen. Miután kiértékeltük ezt a feltételt, azaz meghatároztuk az igazságtartalmát két lehetőség közül választhatunk. Ha a feltétel igaz, akkor amentén a nyíl mentén kell folytatnunk a végrehajtást, amely felé az igaz (esetleg az igen) szó van írva. Ha az állításról kiderül, hogy hamis, akkor a hamis (esetleg a nem) címkével ellátott nyíl mentén kell tovább haladnunk. Tehát a rombuszból mindig két felcímkézett nyíl mutat kifelé az oldalán.

Beágyazás szimbólum: Előfordul, hogy egy folyamatábrában alkalmaznunk kell egy alapvetően több lépésből álló utasítássorozatot. Ha azt már korábban definiáltuk, leírtuk, de most nem szeretnénk ezt újra megtenni, akkor használhatjuk a dupla oldalú téglalap alakzatot a beágyazás szimbólumaként. Ezzel valósíthatjuk meg a korábban tárgyalt egyik algoritmus módosítási módszert. Az alábbi ábrán azt láthatjuk, hogy ki szeretnénk számolni az x mennyiség N. hatványát, ami alapvetően egy számos lépést tartalmazó tevékenység, de itt most csak hivatkozunk erre a korábban valószínűleg már leírt algoritmusra, mint egyfajta új elemi lépésre. A beágyazás szimbólumhoz kapcsolódó nyilakról ugyanazt mondhatjuk el, mint az elemi tevékenység esetén. Beágyazás szimbólumBizonyos elemek esetén tehát előfordulhat, hogy több mint egy befelé mutató nyíl kapcsolódik hozzájuk. Ilyen esetben használhatjuk azt a jelölést, amikor az alakzat felé tartó nyilak egy pontban találkoznak és innen már csak egyetlen nyíl halad tovább az adott alakzat felé. (Később számos példát látunk majd rá.)



Próbáljátok kideríteni a folyamatábrából milyen feladatot ír le.






2021. március 24., szerda

Algoritmustervezés





http://szit.hu/doku.php?id=oktatas:programozas:programozasi_tetelek:mondatszeru_leiras
https://pythonidomar.wordpress.com/2016/11/14/eldontes/
https://www.geeksforgeeks.org/enumerate-in-python/
https://informatika.gtportal.eu/letoltes/Egyszeru_algoritmusok.pdf

2021. március 19., péntek

Secret map


Vezérlési szerkezetek algoritmusa





















Vezérlési szerkezetek Pythonban

Skip
Létezik üres utasítás, ennek formája:

pass

Általában akkor használják, mikor explicit kiírnak egy végrehajtási ágat, hogy az olvasó lássa, gondoltak az esetre, de nem kell abban az ágban semmit sem csinálni.

Értékadás
Mivel Pythonban minden objektum, az értékadás utasítás referenciákat rendel változókhoz.  A 2.1-es verzióban gyenge referenciák. A dokumentum készítésekor még csak egy proposal és kísérleti implementáció létezett, megtekinthető itt. A szabályai bonyolultak, majd az utasításoknál részletezem. De pl. ez legális, és helyes eredményt ad:

 
a,b = b,a  # megcseréli a-t és b-t
Egyéb példák értékadásra:

c = []; d = [] # c és d két különböző üres lista
c = d = []     # c és d ugyanazt az objektumot jelöli
Konstansok nincsenek, bár léteznek ún. immutable objektumok, melyeknek az értékét nem lehet megváltoztatni. (pl. az integerek)

Az objektumok felszabadításáról az automatikus szemétgyűjtő algoritmus gondoskodik, bár ennek minősége implementációtól függ. A Javahoz hasonlóan Pythonban is kezdeményezhető szemétgyűjtési ciklus a gc modul használatával. A 2.0-as verzióban a garbage collector már ciklikus referenciákat is kezel.

Szekvencia
Az utasításokat nem kell `;'-vel zárni, de a nyelv megengedi a használatukat. Az értékadás nem kifejezés, hanem utasítás.

Elágazás
Az elágazás szintaxisa:

if <kif> : <suite>
(elif < kif > : < suite >)*
[else : < suite >]
ahol a < suite >:

pontosvesszőkkel elválasztott utasítások (egy logikai sorban)
új beljebbkezdésben szereplő utasítások (ameddig a beljebbkezdés tart)
Nincsen többszörös elágazás.

Ciklus (for, while)
While:

while <kif> : <suite>
[else : <suite>]
A while a hagyományos elöltesztelős ciklus. Az else-ága akkor fut le, ha a ciklusfeltétel nem teljesül (tehát a ciklus elhagyása után mindig, kivéve ha break utasítással hagyjuk el a ciklust).

Kiugrási lehetőségek a ciklusból:

break - rögtön a ciklus utáni utasításra kerül a vezérlés
continue - a ciklusfeltétel tesztelésére ugrik a vezérlés
Nincs GOTO utasítás!

Nincs lehetőség egyszerre több ciklusból való kiugrásra.

For:

for <target_list> in <kif_list> : <suite>
[else : <suite>]
A <kif_list> kiértékelésekor egy sorozatot kell kapni. Ennek minden elemét hozzárendeli a <target_list>-hez és végrehajtja a <suite> részt. Ha a sorozat kiürült, akkor lefut az esetleges else ág.

Ha a for ciklust a hagyományos értelemben szeretnénk használni, akkor jön jól a range() függvény:

>>>range(10)
[0,1,2,3,4,5,6,7,8,9]
>>>range(5,10)
[5,6,7,8,9]
>>>range(0,10,3)
[0,3,6,9]
>>>range(-1,-10,-3)
[-1,-4,-7]
A magon belül módosíthatjuk a sorozatot, de ez csúnya hibákhoz vezethez, ugyanis egy számláló mutatja a következő feldolgozandó elemet, és egy beszúrás vagy törlés ebből a listából megkavarhatja a folyamatot. Megoldás: ideiglenes másolat készítése (pl. slice használata)

for x in a[:]:
    if x < 0 : a.remove(x)
A 2.0-es verzióban bevezették egy lista alapján  egy másik lista kiszámítására  a [ for in ] jelölést. Pl.:

print [i**2 for i in range(4)]        # [0, 1, 4, 9]
A 2.4-es Pythonban új beépített függvény a reversed(seq), ami egy sorozatot vár, és visszaad egy iterátort, ami a sorozat elemein megy végig fordított sorrendben. pl:


>>> for i in reversed(xrange(1,4)):
...    print i
... 
3
2
1
A reversed() jó, mert könnyebben olvasható, gyorsabb és lényegesen kevesebb memóriát használ, mint például range(1,4)[::-1] .

Figyelem! A reversed() függvény csak sorozatot kaphat bemeneti paraméterként. Ha iterátort szeretnénk megfordítani, akkor azt előbb a list() -tel listává kell konvertálni.



>>> input = open('/etc/passwd', 'r')
>>> for line in reversed(list(input)):
...   print line
... 
root:*:0:0:System Administrator:/var/root:/bin/tcsh
  ...

Egyszerű utasítások
Itt csak felsorolom őket, és az érdekesebbekről írok néhány szót:
assert, értékadás, pass, del, print, return, raise, break, continue, import, future, global, exec.

A legfontosabb talán az értékadás.

assignment_stmt: (target_list "=")+ expression_list 
target_list:     target ("," target)* [","] 
target:          identifier | "(" target_list ")" |
"[" target_list "]" 
               | attributeref | subscription | slicing 
Kollegám leírását szeretném bővíteni az értékadáson kívüli utasítások egy részével. Az évek alatt a Python szép fejlődést mutatott be. Most a 2.6 szabvány szerinti egyszerű utasítások egy részét mutatnám be nektek.

Az assert utasítás:
Az assert utasítás talán a legalkalmasabb arra, hogy hibát keressünk a programunkban.


assert_stmt ::= “assert” expression [”,” expression]

Az assert utasítás a következő programrészletnek felel meg:


if __debug__:

    if not expression: raise AssertionErrorm

Ha két paramétere van az assert utasításnak, akkor a következő módon működik:

if __debug__:

    if not expression1: raise AssertionError, expression2

Ezekben a programmegfeleltetésekben a __debug__ és az AssertionError beépített változók, amiket így is neveztek el. Az előző implementációkban a beépített __debug__ változó True értéke normál esetben, azonban ha fordításkor bekapcsoljuk az optimalizációs kapcsolót, akkor a beépített változó értéke False.(Parancssorban a -O kapcsoló) A jelenlegi kód generátor nem generál kódot az assert utasítás hatására, ha a fordítási időben optimalizálunk.

Megjegyezem, felesleges a forráskódba beleírni hibaüzenetet, mert ki lesz írva a veremtartalom részeként.

A __debug__ váltózónak értéket adni hiba. Az interpreter indulásakor a beépített változónak meghatározza az értékét, és hozzá is rendeli azt.

A pass utasítás:
A pass utasítás szintaktikája:


pass_stmt ::= “pass”
A pass utasítás egy null operáció, amikor kiértékelődik, semmi sem történik. Vagyis az üres utasításnak felel meg. Ez akkor hasznos, amikor az utasítás szintaktikailag elvárt, ott az utasítás számunkra felesleges.
Erre egy példa:


def f(arg): 

    pass       # egy függvény, ami nem csinál semmit (még)

class C: 

    pass       # egy osztály, aminek nincsenek metódusai (még)
A del utasítás:
Az utasítás szintaktikája a következő:


del_stmt ::= “del” target_list
A törlést az értékadáshoz nagyon hasonlóan, rekurzívan definiált utasítás. Ahelyett, hogy teljes részletességgel kifejteném az utasítást, inkább néhány tippet adok a használatára.
A törlésre szánt elemek listáját balról jobbra haladva rekurzív módon törli. Egy név törlésekor eltávolítja a névhez tartozó kötéseket a helyi vagy globális névtérből, attól függően, hogy a név előfordul-e global utasítással a jelenlegi kód blokkban vagy nem. Ha a név nincs semmihez sem kötve, akkor a NameError kivétel váltódik ki.

Egy név törlése a helyi névtérből hibás, ha az egy blokk szabad változójaként fordul elő.

Attribútum referencia, indexelések, vagy egy részlista törlése az elsődleges objektum műveleteivel eléggé bonyolult. Egy részlista törlése általában megfelel annak, hogy típushelyesen létrehoz helyette egy üres részt.

A print utasítás:
A print utasítás szintaktikája:


print_stmt ::= “print” ([expression (“,” expression)* [”,”]]

               |“>>” expression [(“,” expression)+ [”,”]])
A print kiértékel minden magkapott kifejezést, és az eredményül kapott objektumot a standard kimenetre írja ki.
Ha az objektum nem string akkor először a string-é konvertálás szabályait felhasználva az objektumot string-é konvertálja. Az eredményül kapott, vagy az eredeti string-et ezután írja ki. A szóközt minden objektum elé kiírja, kivéve ha a szóköz a sor elejére pozícionált.
Ez akkor történik, ha:
    1.    nincs karakter még a standard kimenetre írva
    2.    az utolsó kiírt karakter a ’\n’ vagy
    3.    az utolsó standard kimenetre történt kiírás nem a print utasítás miatt történt. (Néhány művelet üres string-eket ír ki a standard kimenetre.)
Megjegyzés: a fájl objektumként működő objektumok, de nem beépített fájl objektumok gyakran nem teljesen helyesen szimulálják a fájl objektumok viselkedésének ezt az aspektusát, tehát a legjobb ezeket az objektumokat nem használni. A ’\n’ karakter mindig a kiírás végére kerül kivéve akkor, ha a print utasítás vesszőre végződött. Ha az utasítás csak a print kulcsszót tartalmazza, vagyis ha nincs a print utasításnak paramétere, akkor csak a ’\n’ karaktert írja ki.
A standard kimenet egy fájl objektumként van definiálva, amit stdout-ra kereszteltek el, és beépítettek a sys modulba. Ha az objektum nem létezik, vagy ha az objektumnak nincs write() metódusa akkor a RuntimeError kivétel váltódik ki.

A print utasításnak van egy kiterjesztett változata. Ezt a formát néha úgy azonosítják, mint „print chevron”. Ebben a formában a >> utáni első kifejezés egy olyan ”fájl-szerű” objektumnak értékelődik ki, aminek van write() metódusa. Ezzel a kiterjesztett formával a többi kifejezést, az első paraméterben megadott fájl objektumba írhatjuk ki. Ha az első kifejezés None, akkor a kimenteti fájl objektum a sys.stdout lesz.

A return utasítás

return_stmt ::= “return” [expression_list]
A return utasítás talán az egyetlen olyan szintaktikai elem, amely függvények definíciójában mindig megtalálható, de osztálydefiníció utasítása nem lehet.

Ha egy kifejezés lista a paramétere, akkor az kiértékelődik, egyéb esetben None-t a helyettesítési érték.

A return utasítás hatása az, hogy a hívott függvényt elhagyja és egy kifejezés lista vagy a None érték lesz a függvény visszatérési értéke. Amikor a return utasítás a try blokkból az irányítást egy finally-ágnak adja át, akkor a finally-ág először lefut, és utána lép ki a függvényből.

Egy generátor függvényben a return utasítás nem kaphat kifejezés listát. Ebben a környezetben a paraméter nélküli return utasítás jelzi azt, hogy a generátor befejezte működését, ami kiváltja a StopIteration kivételt.

A yield utasítás:

yield_stmt ::= yield_expression
A yield utasítást csak akkor használjuk, amikor egy generátor függvényt definiálunk. Az uatsítást csak a függvény törzsében használjuk. A yield utasítás használata egy függvény definiálásánál elegendő ahhoz, hogy egy normál függvényből egy generátor függvényt készítsünk.

Amikor a generátor függvényt meghívjuk, akkor visszatér egy iterátorral, amit generátor iterátornak, vagy másképp generátornak nevezünk. A generátor next() hívásának hatására a függvény törzse híváskor hajtódik végre, és addig ismétlődik, amíg egy kivételt nem vált ki.

A yield utasítás végrehajtásakor, a generátor állapota fagyott lesz, és a kifejezés lista értékével tér vissza next() hívójához. A fagyott állapot azt jelenti, hogy az összes jelenlegi állapotot megtartja, beleértve a helyi változók jelenlegi értékeit, a mutatók helyeit, és a belső értékek vermét: elég információt ment el ahhoz, hogy következő next() híváskor ezeket elővegye, és a függvény pontosan lefuthasson, mintha a yield utasítás egy másik külső hívás lenne.

A Python 2.5-ös verziója óta a yield utasítás használata megengedett egy try-finally blokk try részében. Ha a generátor nem folytatódik, mielőtt befejeződne a try- blokk (úgy, hogy egy üres referencia az eredménye, vagy a szemétgyűjtögető összeszedi), a generátor iterátor close() metódusa fog meghívódni, beleértve minden még működésben lévő finally-ág lefutását.

Megjegyzés: A 2.2-es Pythonban a yield utasítás csak akkor volt megengedett, ha a generátor jellemző megengedett volt. A __future__ import utasítás használata engedélyezte ezt:


from __future__ import generators
A raise utasítás:

raise_stmt ::= “raise” [expression [”,” expression [”,” expression]]]
Ha nincs kifejezés a raise utasítás után, akkor a raise kiváltja jelenlegi lefutás alatti legutolsó aktív kivételt. Ha nem volt aktív kivétel, akkor a TypeError kivétel dobódik el, ami azt mutatja, hogy hiba történt (ha IDLE alatt futtatod, akkor a Queue.Empty kivétel váltódik ki).

Egyébként a raise kiértékelve a kifejezéseket három objektumot kap. Ha hiányzik a három kifejezés valamelyike akkor annak a helyére a kiértékelés során a None kerül. Az első két objektum a kivétel típusát és értékét határozza meg.

Ha az első objektum egy példány, akkor a kivétel típusa példány osztálya, és a példány lesz az érték, és a második objektum értéke None.

Ha az első objektum egy osztály, akkor az osztály válik a kivétel típusává. A második objektum általában a kivétel értékét határozza meg. Ha ez az osztály egy példánya, akkor példány válik a kivétel értékévé. Ha a második objektum egy pár vagy n-es, akkor úgy használjuk, mintha az osztály konstruktorának argumentum listája lenne. Ha a második objektum egy None érték, akkor egy üres argumentum listát használ, és minden más objektumot úgy kezel, mintha a konstruktor egy-egy argumentuma lenne. Vagyis készít egy példányt, amit a kivétel értékeként használ.

Ha a harmadik objektum is megtalálható, és nem None akkor egy traceback objektumnak kell lennie (ami a verem tartalmát reprezentáló objektum), és ez fogja leírni azt a helyet ahol a kivétel kiváltódott. Ha van harmadik objektum és nem traceback objektum, vagy nem None, akkor TypeError kivétel váltódik ki. A három kifejezéses formájú raise akkor hasznos, ha újra ki akarjuk váltani egy kivételt tisztán az except blokkban. De inkább ilyen esetben a kifejezés nélküli raise-t kellene alkalmazni.

A break utasítás:

break_stmt ::= “break”
A break utasítást szintaktikailag csak a for és while ciklusokban fordulhat elő, de nem lehet egy függvény vagy osztály definíciójában cikluson belüli utasítás. Befejezi a legközelebbi lezárható ciklust, elugrik az else blokkba, ha a ciklusnak van ilyen blokkja.

Ha a for ciklus break-kel fejeződik be, akkor a ciklusváltozó megtartja a befejezéskori értékét. Amikor a break átadja a vezérlést a try blokkon kívülre, és a try rendelkezik finally-ággal akkor a finally lefut, és csak utána adja át a vezérlést.

A continue utasítás

continue_stmt ::= “continue”
A continue utasítás szintaktikailag csak a for és while ciklusokban fordulhat elő, de nem lehet függvény vagy osztály definíciójában vagy finally-ág ciklusán belül. Az utasítást folytatja a következő ciklusmag lefutással a legközelebbi lezáratlan ciklust.

Amikor a continue átadja a vezérlést a try blokkon kívülre, és a try rendelkezik finally-ággal akkor a finally-ág lefut, mielőtt a következő ciklus lefutás következne.

Az import utasítás

import_stmt ::= “import” module [”as” name] ( “,” module [”as” name] )*

               | “from” relative_module “import” identifier [”as” name] 
( “,” identifier [”as” name] )*

               | “from” relative_module “import” “(” identifier [”as” name] 
( “,” identifier [”as” name] )* [”,”] “)”

               | “from” module “import” “*”

module ::= (identifier “.”)* identifier 

relative_module ::= “.”* module
 
                    | “.”+ name ::= identifier


Az import utasítást két lépésben hajtja végre a fordító:

     1.    megkeresi a modult és inicializálja, ha szükséges
     2.    definiálja a nevét vagy neveit a helyi névtérnek (abban a környezetében, ahol az import utasítás található)
Az első formában (ahol nincs from) ezeket a lépéseket ismételjük minden azonosítóra a listában. Abban a formában ahol van from is ott végrehajtjuk az 1. lépést egyszer és a 2. lépést ismételjük.

Ebben a környezetben inicializálni a beépített vagy külső modulokat azt jelenti, hogy meghívunk, egy inicializáló függvényt, ami inicializálja a modulokat; a Python kód modulinicializálása azt jelenti, hogy végrehajtjuk a modul törzsét. A rendszer kezel egy modulokat tartalmazó táblázatot, ami már inicializálva van, vagy inicializálják és a modulok neveivel indexelnek. Ez a tábla sys.modules-ként érhető el. Amikor a modul nevét megtalálja a táblában az 1. lépést tudtuk le. Ha nem, akkor kezdődik a modul definíció keresése. Amikor a modult megtalálta, futtatja a modult. A modul keresésének és futtatásának folyamata implementáció és platformfüggő. Általában beépített modulokat keresi meg a megkapott név alapján, és csak ezután keresi meg a helyének a listáját, amit a sys.path-ként kapunk meg. Ha megvannak a beépített modulok, akkor a beépített inicializáló kód fut le, és ezzel az 1. lépést be is fejeztük. Ha nincs meg a fájl, amit importálni szeretnénk akkor az ImportError kivétel váltódik ki. Ha a fájlt megtaláljuk, elemeztük, kapunk egy futatható kód blokkot. Ha szintaktikai hiba van a benne, akkor a SyntaxError kivételt dobja el. Egyéb esetben, ha üres modulé a kapott név, akkor készít és beszúr egy bejegyzést a modultáblába, és ezután a kódblokk futtatható a modul környezetében. Ha kivétel történik a végrehajtás alatt, akkor az 1. lépés befejeződik.

Amikor az 1. lépés befejeződött kivételek kiváltása nélkül, akkor kezdődhet el a 2. lépés.

Az első import utasítás formában a modul neve a modul objektumait hozzáköti a helyi névtérhez, és utána következik a következő azonosító, ha van. Ha a modul nevet követi az as kulcsszó, akkor a kulcsszó utáni kifejezés lesz a modul neve, amit az adott helyen használni fog helyette. A from-ot tartalmazó forma nem köti a modulok nevét: végigmegy az azonosítók listáján összehasonlítja mindegyiket a modulban találhatókkal, és a neveket összeköti azokkal az objektumokkal, amik a helyi névtérben megtalálhatóak. Ahogy az import első formájában láttuk, az importot egy alternatív lokális névvel helyettesíthetjük, amit nevezhetünk „helyi név”-nek is. Ha az azonosító nem található meg akkor az ImportError kivétel váltódik ki. Ha az azonosítók listája helyett egy *-ot írunk, akkor az összes a modulban található publikusan definiált név össze lesz kapcsolva a helyi névtér import utasításával. A modulban definiált publikus neveket meghatározathatjuk úgy, hogy megkeressük az összes olyan változót amely __all__ névre hallgat a modul névterében. Ha definiált, akkor string-ek egy szekvenciájának kell lennie, amit a definiáltnak vagy importáltnak nevez a modul. Minden esetben elvárt azoktól a nevektől, amik az __all__-t megkapták, hogy publikusak és létezőek legyenek. Ha az __all__ nem definiált, akkor a publikus nevek halmaza tartalmazni fogja az összes nevet, ami a modul névterében megtalálható és nem ’_’ karakterrel kezdődnek. Az __all__-nak tartalmaznia kellene az egész publikus API-t. Kerülendő az, hogy véletlenül olyan elemeket exportáljunk, ami nem része az API-nak (például az olyan library modulokat, amelyek már importálva és használva vannak egy modulon belül).

A from modul import * forma csak a modul hatáskörén belül fordulhat elő. Ha import *-ot használunk egy függvényen belül, és a függvény tartalmaz, vagy a függvény egy tartalmazó blokk szabad változókkal, akkor a fordító SyntaxError kivételt fogja eldobni. Hierarchikus modul nevek: amikor a modul nevek egy vagy több pontot tartalmaznak, akkor a modul keresési módja az előzőektől eltérően zajlik. Az azonosítók sorozatát az utolsó pont felé haladva csomagként kezeli, és az utolsó azonosítót fogja keresni a csomagon belül. A csomagok általában alkönyvtárak a sys.path könyvtáron belül, aminek egy fájlja az __init__.py. A beépített függvény, amit __import__()-tal láttak el azért, hogy támogassák azokat az olyan applikációkat, amelyek eldöntik, hogy mely modulokat kell dinamikusan futtatni. Lásd Built-in Functions a Python Library referenciában részletesebben.

A future utasítás
A future utasítás egy fordítási direktíva, amellyel egy különös modult össze lehet állítani miközben szintaxist vagy szemantikát használ, ami elérhető lesz a Python egy következő értelmezésében. A future utasítás azt segíti elő, hogy enyhítse az Python következő verzióiban bemutatásra kerülő nyelvi ellentmondásokat. Ez megengedi, hogy modulként használják, az új szolgáltatásokat, mielőtt a szolgáltatás értelmezése alapvető szolgáltatássá nem válik.


future_statement ::= “from” “__future__” “import” feature [”as” name] 
(“,” feature [”as” name])* 

                     | “from” “__future__” “import” “(” feature [”as” name] 
(“,” feature [”as” name])* [”,”] “)”

feature ::= identifier

name ::= identifier


A future utasításnak a modul elején kell megjelennie. Csak a következő sorok lehetnek az utasítás előtt:

    •    a modul dokumentációs kommentje (ha van ilyen),
    •    megjegyzések,
    •    üres sorok, és
    •    másik future utasítás.

A következő jellemzőket ismeri fel a Python 2.5 változata szerint: abszolút import, osztás, generátor, nested_scopes és a with utasítás. A generátor és nested_scopes a 2.3-as Python verzióban redundánsak, mert azokat mindig lehetővé teszik.

A future utasítást fordítási időben ismeri fel, és a fordító is különlegesen kezeli: az alap kódösszeállítást változásait gyakran különböző generált kódokkal implementálja. Lehet olyan eset is, hogy egy új szolgáltatás tartalmaz egy új, az előzőekkel nem egyező szintaktikai elemet (például egy új foglalt szó). Ebben az esetben a fordítónak a modult másképp kell értelmeznie. Ilyen döntéseket nem hagyhatja a fordító a futási időre.

Bármely adott értelmezés esetén a fordító tudja, hogy melyik szolgáltatás neve volt definiálva. Ha a future utasítás olyan szolgáltatást tartalmaz, ami nem volt ismert számára akkor fordítási időben keletkezett hibát fog kiváltani.

A közvetlen futási idejű szemantika akárcsak bármilyen import utasításnál: van egy általános __future __ modul, amit később fejtettek ki, és ha ezt szokásos módon importálják, akkor a future utasítás lesz végrehajtva.

Az érdekes futási idő szemantika egy speciális szolgáltatástól függ, amit a future utasítás engedélyez.

Megjegyzem, hogy nincs semmi különleges az utasításban:

 import __future__ [as name]
Az előző nem egy future utasítás; ez egy szokásos import utasítás, különleges szemantikai vagy szintaktikai megszorítások nélkül.

Egy exec utasítás vagy a beépített compile() és execfile() hívások fordítják a kódot, ami egy olyan M modulé, amelyben megtalálható a future utasítás, alapértelmezésben használni fogja az új szintaktikát vagy szemantikát, amit összekapcsol a future utasítással. Ezzel tudja a compile() opcionális argumentumait kezelni a fordító a Python 2.2-es verziója óta.

A future utasítást egy parancssori fordítónak begépelve, életbe lép a többi interpreter session is.

Ha az interpretert –i kapcsolóval kezded, akkor végrehajtásra továbbadja a kapott script nevet, és ha a szkript tartalmaz future utasítást az lesz érvényben az interaktív session indulásakor a szkript végrehajtása után.

2021. március 17., szerda

TOP SECRET



The time-altering machine created by Sid Hurwich could be one of the world’s greatest inventions, but its whereabouts are shrouded in mystery, perhaps deliberately. A very strange case involving time travel and power to change timelines was reported in 1977s. The case caused a sensation worldwide. Had Sid Hurwich the creator of the time-altering machine really found a way to alter historical events? Born in 1918, Sid Hurwich was a Jewish appliance repairman living in Toronto Canada who used to experiment with various kinds of technology. As a child, Sid showed great interest in collecting random junk and assembling the pieces into working machines. Later as an adult, he became famous as the man who could fix anything that was broken. In 1934, Sid earned the distinction of being the first private appliance repairman in all of Canada. He was such a skilled technician that the local power company succeeded in taking him out of the army so he could develop the infrastructure of the public electrical utility. Sid Hurwich earned enough money to set up two successful companies of his own. He was still young when he got a heart attack, only 36 and he retired. The remarkable time-altering machine that could “freeze time” Hurwich continued to experiment with various tech-devices until one day he finally invented a remarkable device that could freeze or rather change the flow of time. This machine also had the ability to send out beams of influence to manipulate objects in distant locations. In 1969, a wave of bank robberies swept through Toronto and local authorities had troubles catching the thieves. Hurwich contacted the police and offered his help saying it was possible to “freeze time” to find out what transpired. As it so often happens with new brilliant inventions, the time-altering machine was later used by the military, or so it was reported. According to an article that appeared 1977, in a British publication called Foreign Report, Sid Hurwich’s time-altering machine ended up in Israel where it was used by the military. “The device sends out electronic rays to alter the natural composition of electronic fields and centres of gravity of weapons, instrument dials and mechanical devices …What happened to Sid Hurwich and his time-altering machine? Whether the time machine is still in possession of the Israeli military or not has been widely debated. Does the Israeli military still have the Hurwich device, and are they still using it on ‘special occasions’ or in dire situations of military crisis? Time Travel: A Journey To The Fourth Dimension Two Astonishing Cases Of Men Who Say They Traveled Through Time Three Fascinating Old Time Travel Cases – These People Say They Saw The Future & Past “Skeptics say that if they really had a device that could provide a kind of shield from bombs and missiles, freeze weapons, and even slow or halt time, the Israeli military would be invincible and would not have suffered as many casualties as it has in its decades-long struggles with its antagonists in the Mideast. Others counter, however, by saying that the Hurwich device may be a two-edged sword. If it can ‘freeze’ the weapons of the enemy, it would also freeze the weapons of those employing the device. Thus, the device can perhaps only be used in a limited way – enough to knock out radar detection and other enemy electronics, for example – but not to induce the full-blown time-freeze effect for the benefit of the user,” Although many people have written and speculated about the time-altering device of Sid Hurwich over the years, there has never been a follow-up story since it appeared in the Vancouver paper back in 1977. What happened to Sid Hurwich is also unclear. By now he has passed on, but it is interesting to note that researchers have not been able to find his obituary or any information about him. It is as if he vanished into thin air. Many scientists have experimented with time-altering technology. When he talked to the police he said: “It’s not really a new invention. It’s designed on principles that are already well known. I just thought of it one day. When I heard about the bank robberies, I knew this could work.”

2021. március 15., hétfő

What is celebrated in hungary



On the morning of March 15, 1848, revolutionaries marched around the city of Pest, reading Sándor Petőfi's Nemzeti dal and the 12 points to the crowd, which swelled to thousands. Declaring an end to all forms of censorship in the Austrian Empire, they visited the printing presses of Landerer and Heckenast and printed Petőfi's poem together with the demands.A mass demonstration was held in front of the newly built National Museum, after which the group left for the Buda Chancellery (the Govemor-General's Office) on the other bank of the Danube. The bloodless mass demonstrations in Pest and Buda forced the Imperial governor to accept all 12 of their demands. That day started the Hungarian Revolution of 1848/49, which was beaten down by the Austrian and Russian armies, and ended on October 4, 1849. Two days later the Austrian Empire executed the 13 Martyrs of Arad (Hungarian rebel generals). 

What the Hungarian nation wants.

Let there be peace, liberty, and concord.

We demand the freedom of the press, the abolition of censorship.
Independent Hungarian government in Buda-Pest. (All ministries and the government must be elected by the parliament)
Annual national assembly in Pest. (by democratic parliamentary elections, the abolition of the old feudal parliament which based on the feudal estates)
Civil and religious equality before the law. (Universal equality before the law: The abolition of separate laws for the common people and nobility, the abolition of the legal privileges of nobility. Absolute religious liberty, the abolition of the (Catholic) State Religion)
National army.
Universal and equal taxation (abolition of the tax exemption of the aristocracy)
The abolition of socage. (abolition of Feudalism and abolition of the serfdom of peasantry and their bondservices)
Juries and courts based on an equal legal representation.(The common people can be elected as juries at the legal courts, all people can be officials even on the highest levels of the public administration and judicature, if they have the prescribed education)
A national bank.
The army must take an oath on the Constitution, send our soldiers home and take foreign soldiers away.
Setting free the political prisoners.
Union [with Transylvania].
Equality, liberty, brotherhood!

2021. március 13., szombat

Régi cikk

1897-10-10 / 41. szám Nyírvidék
Ezen földvár Demecser községtől az északi iránytól kissé nyugat felé öt és fél kilométer távolságban fekszik, egy oly északról dél felé vonuló mintegy 1000 lépés hosszú és 100 lépés széles, természetes homok magaslatnak közepe táján, mely a Tisza szabályozás előtt a Rétségnek nevezett — Kisvárdától Berczelig terjedő — sok négy szög kilométernyi, csaknem állandóan vízzel borított, mocsaras nádas ártérnek, pelikánok és más vízi madarak millióinak tenyészhelyét képező vadonnak, állandó szigetét képezte. A térképen Várhegy neve van.

A nép azonban Tündérvárnak Leányvárnak nevezi.  Mint minden feltűnőbb helyhez, így ehhez is hagyomány, vagy monda fűződik. Nemes Imre községi jegyző Úr beszélte nekem, hogy egy Szilágyi nevű kéki gazdaembernek, sok év előtt igen magas korban elhalt atyja, fiatal korában, Debrecenben járván, ott egy világtalan 100 év körüli hegedősnek meséit hallgatta, ki ezekkel kereste kenyerét, és midőn megtudta, hogy hallgatói között rétközi ember is van, elkeseredve panaszolta, hogy megvakulásának története a demecseri Leányvárával van össze függésben. Ugyan is a 17-ik századnak végén a török világban mint ifjú, egy urnák szolgálatában állott, kinek a Kacsavár volt tanyája, mely a pátrohai határban néhány kilométer távolságra fekszik a demecseri vártól, és szintén egyik szigetét képezte a rengeteg rétközi mocsaraknak, és a mely kőt vár csak csolnakon közlekedhetett egymással. A Kacsavárnak ura a törökök által szorongatva kénytelen volt feleségével, szép leányával és kincseivel az erősebb demecseri Lányok várába menekülni. Az öreg hegedős volt a csolnakos, s mikor már közel voltak a demecseri menedékhez, az űr mindkét szeme világától megfosztotta, és a vizbe dobván, életét is elakarta emészteni, nehogy az ő, és kincseinek hollétét elárulhassa. Valahogy azonban megmenekült, és mint hegedős tengette hosszú életét.

Mi ebben a mese vagy igazság? egyikünk sem tudhatja. Annyi azonban bizonyos, hogy hozzá förtelmesebb helyet mint ezen terjedelmes ingoványban épült várat vidékünkön találni alig lehetett volna. A vár kerülék alakú; öt—hat méter magasra emelkedik ki a szigetnek legmagasabb pontjából. Tetejének közepetája kincskeresők által kissé homorúvá van vájva. Fensíkjának hossza délről északnak 40 nagy lépés és 26 lépésnyi széles. ^— Nyugati oldala egészen meredek, a keleti kissé lejtős. — Északi- és déli végét sáncz árok szegélyezi. Az ezekből kikerült földtömegnek egy része kifelé hányatott. Az északi félkörben futó-árok kevésbbé van elmosódva, mint a déli. A keleti oldalon egy 2 méter magas, és másfél méter széles párkány vonul végig.

A várnak fensíkján sok tégla töredékeket találni, bizonyságául annak, hogy itt hajdan épület emelkedett, csakhogy ezen magaslat sokkal régibb időből származik, mint amikor már téglákat használtak, mert itt nem csak számos őskori durva cserépedény töredékeket, de határozottan bronzkorszakra valló fekete, —kivül fényesre csiszolt, —díszített edénydarabokat ig találtam. A vár körül is hasonló tárgyak vannak a felületen szétszórva. Olyan kicsi hogy csak néhány család találhatott menedéket.



2021. március 11., csütörtök

Az oszcilloszkóp kezelőszervei




Ezt is kell kalibrálni beállítani a mérés előtt.
 

 Tanultuk a multimétert amivel megmértük a feszültség mértékét, az oszciloszkóp megmutatja a hozzá tartozó frekvenciát hullámtartomány értékét. A váltakozó áramú mennyiségek középértékei
















Miért kell nekünk az oszciloszkóp? 
Elektromos jelek mérésére és működésére szolgáló szabályozó készülékeket kell használni, amelyek lehetővé teszik a jel által végzett mérés vezérlését.
Ha van egy panelunk amin digitális eszközök vannak felforrasztva és összekapcsolva, ott valamilyen nemeneti és kimeneti jel keletkezik, ezen jelek mérése, ellenőrzése kalibrálása céljából használjuk az oszciloszkópot.
Mi az oszcilloszkóp?
Az oszcilloszkóp olyan eszköz, amelyet fizikai kísérletek során meghatároznak egy elektronikus mérést, emiatt különböző szakterületek szakemberei használják, akiknek szakterülete az elektronika.

Ez a mérőeszköz egy képernyőből áll, amelyben az elektromos jeleket egy speciális grafikon mutatja, amelynek függőleges és vízszintes tengelye jelzi az amplitúdót és az időt.

Az optimális működés érdekében kiegészíthető egy funkciógenerátorral, amely felelős az oszcilloszkópon a grafikon megjelenítésének paramétereinek beállításáért, hasonlóképpen a multiméterrel meghatározzák a mérendő feszültséget egy adott amplitúdóértékkel, ill. fordítva, ezért az elektronika szakterület hallgatói megtanulják ennek a hangszernek az alkalmazásait.

Az ezen a tanulmányi területen bemutatott egyik nagyon gyakori kérdés a következőkből áll: mi az oszcilloszkóp és hogyan működik; Amint azt korábban kifejtettük, elektromos jelek mérésére és működésére szolgáló szabályozó készülékeket kell használni, amelyek lehetővé teszik a jel által végzett mérés vezérlését.

Hogyan működik egy oszcilloszkóp?

Az oszcillátorra alkalmazott megfelelő beállítás lehetővé teszi ennek a berendezésnek a különböző funkcióit, ehhez rendelkezik az oszcillátor első szabályozójával, amely az "X" tengely vezérléséért felel, amely a grafikus ábrázolás vízszintes tengelyéből áll. jelenik meg a képernyőn, így az elektromos jel meghatározása előtti megfelelő idő meghatározása.

A második szabályozó számára lehetséges az «Y» tengely vezérlése, amely abból a függőleges tengelyből áll, amelyben az oszcilloszkópba belépő feszültség képviselteti magát, és jelgé alakítja, amelyet a képernyőn egy grafikon mutat; ily módon különböző egységekben, például Voltban, millivoltban adhatja meg az értékeket.

Végül, van egy harmadik szabályozó, amelynek célja az összes jel szinkronizálása, amelyek bejutnak az oszcilloszkópba, hogy referenciaként választhassuk ki, hogy a berendezéssel végrehajtott többi mérés elemzésével kezdjük; Hasonlóképpen, a képernyőn megjelenő táblázatok megkönnyítik az elektromos jel megfelelő értékének meghatározását, hatékonyabb eredmények elérése érdekében.

Bemeneti kimeneti jelek ellenőrzése kapcsolási rajz alapján is történhet.





















Analóg oszcilloszkóp
Az analóg oszcilloszkóp egy olyan mérőműszerből áll, amelyet sok évvel ezelőtt használtak, a technológia fejlődésével lehetőség nyílt más olyan eszközök kifejlesztésére is, amelyek optimális eredményt nyújtanak, azonban ezeket a műszereket továbbra is analóg módon használják, alapfunkciójuk miatt és Az a képességük, hogy fizikai kísérlet során alapértékeket szerezzenek, hasonlóak digitális társaikhoz, így az elektromos jel csúcsértékei hatékonyan elérhetők.

Emiatt kétségei lehetnek a következőkben:hogyan működik egy analóg oszcilloszkópMivel ez egy megszűnt műszer, ezek vízszintes függőleges alakító lemezekkel rendelkeznek, amelyek felelősek az áramkör által generált és katódcsővel elmozdított jel elküldéséért, így az elektromos jel pontos mérése elérhető.

Működése idején azonban vannak bizonyos korlátai, mivel csak olyan jeleket tudnak mérni, amelyek időszakosak a mérési nyom megállapításához; Ha a jelmozgás nagyon gyors, akkor fényerő figyelhető meg, de ha nagyon lassú, akkor a nyom nem jön létre, ami problémákat okoz a mérésekben.

Digitális oszcillátor
A digitális oszcilloszkóp esetében az az előnye, hogy az egyes elvégzett méréseket PC-re továbbítja, így az adatok könnyebben tárolhatók, mivel a jeleket analóg-digitális átalakítóval alakítja át, amelyben a eredményeket láthatóbb módon és jobb minőségben.

Az analóg oszcilloszkóp teljesítményének megértésével képet kaphat hogyan működik a digitális oszcilloszkóp, mivel az eljárást ilyen típusú műszerekkel is alkalmazzák, a jellemzői közötti különbség tükröződik az elvégezhető műveletek számában és az eredmények elérésének sebességében, emiatt ez az egyik eszköz, amely leginkább Fizikai és elektronikai laboratóriumokban használják.

Az egyik használható opció az automatikus mérés, amelyben meghatározza a grafikon értékeit a jel által megállapított maximális és minimális értékek mindegyikében; Rendelkezik olyan tranziensek rögzítésével is, ahol megtekintheti a mérendő jel által végrehajtott átmeneteket, és minimális hibaintervallummal érheti el az eredményeket.

Ha érdekesnek találta ezt a bejegyzést, felkérjük, olvassa el cikkünket A projektornak nincs kép, írja be a fent említett linket, hogy megoldást találjon azokra a kellemetlenségekre, amelyeket ez az eszköz konferencia előtt vagy közben okoz.

Egy 15.000 Ft-os analóg eszköz.












Gépjármű oszcilloszkóp

Az autóipari oszcilloszkóp egy másik mérési eszköz, de szabványosítva, hogy az autóipari diagnózis pontosabban kivitelezhető legyen, ugyanúgy, mint az analóg és a digitális típus felelős az elektromos jelek méréséért, hogy azokat egy speciális feszültséggrafikon ábrázolja. az idő és az amplitúdó függvénye, amely rendelkezik, de egyik értéke nem határozható meg egy hagyományos multiméterben.

Általában az autóipari műhelyekben lehet látni hogyan működik egy autóipari oszcilloszkópMivel ebben a létesítményben használják a járműben keletkező elektromos feszültségek jeleinek mérésére, lehetséges az előállított áram értékeinek az idő függvényében történő megszerzése is; Jelenleg sok vállalat használja ezt az eszközt a járművek használatának ellenőrzése érdekében.

Hogyan lehet megtalálni a mester kardot a The Legend of Zelda: Breath of the Wild-ban
A jelek hullámformában jelennek meg, amely az autó által gyakorolt ​​sebességtől függően változik, mivel különféle alkatrészeket és érzékelőket kell figyelembe venni, ez a műszer felelős paraméterek létrehozásáért, hogy ezeket az értékeket egy grafikonon jelenítsék meg, amely részletezi a különböző előforduló körülményeket. megtalálja.
Az oszcilloszkóp az elektronikai méréstechnika leggyakrabban használt, legsokoldalúbb készüléke. Közvetlenül feszültség–idő függvényt vagy fázishelyzetet jelenít meg a képernyőjén. Ez a megjelenítő képesség az, ami lényegesen több információ megszerzését teszi lehetővé, mint amennyi például multiméterrel lehetséges.

Tranzisztorok mérése




Oszcilloszkóppal az alábbi mennyiségek mérhetők közvetlen vagy közvetett módon:

egyenfeszültség,
váltakozó feszültség,
egyenáram,
váltakozó áram,
idő, időkülönbség,
fázis, fáziskülönbség,
frekvencia.
Oszcilloszkópos vizsgálattal észrevehető a jelalak torzulása, mérhető a jel egyen- és váltóáramú komponense, gerjedés, felharmonikusok jelenléte látható. Többcsatornás készülékkel lehetséges több, általában kettő vagy négy időfüggvény egyidejű vizsgálata és összehasonlítása.
A következőkben a Hameg HM 203 típusú készülék általunk használandó kezelőszerveit ismertetjük (8. ábra), de a leírás értelemszerűen alkalmazható más típusú készülékre is.

A készülék kétcsatornás, legfeljebb 20 MHz frekvenciájú, legalább 5 mV amplitúdójú jelek vizsgálatára alkalmas. A képernyő \setbox0\hbox{$10\times 8$}% \message{//depth:\the\dp0//}% \box0% -as négyzethálóra van felosztva, ami a jelek kiértékelését segíti. A négyzet oldala, az "osztás", az adott irányú tengely egysége.

A kezelőszervek funkciója:

1. A CH I és CH II csatornákra adott jel képének függőleges mozgatását végző forgató gombok.

2. A készülék ki/bekapcsoló nyomógombja.

3. Az elektronnyaláb intenzitását, ezáltal a jel fényességét beállító forgató gomb.

4. Az elektronnyaláb, ezáltal a kép élességét állító forgató gomb.

5. Ezzel a gombbal lehet kiválasztani, hogy emelkedő vagy csökkenő jelnél induljon-e a szinkronizáló.

6. Ez a forgató gomb a fűrészjelet szinkronizálja a bejövő jelhez és ezzel állítható be hogy a bejövő jel mekkora értékénél induljon a fűrészjel generátor. Ezzel lehet "álló" képet beállítani a képernyőn.

7-8. A triggerelés (az indító jel képző) további beállításai

9. A kép vízszintes mozgatását végző forgató gomb.

10. Az időtengely 10-szeres nyújtása.

11. A fűrészjel generátor periódusidejét állító fokozat kapcsoló. Ha ez például a 2 ms állásban van, akkor a vízszintes tengely (idő!) egy osztása 2 ms, a tengely teljes hossza 20 ms.

12. A fűrészjel generátor periódusidejét folytonosan változtató forgató gomb. CAL állásban ki van kapcsolva, ettől különböző állásában a vízszintes tengelyen nem olvasható le hiteles időadat.

13-14. Külső trigger jel használata.

15. A gomb benyomott állásában a fűrészjel generátor lekapcsolódik a vízszintes erősítőről és a CH II bemenetre adott jel vezérli a vízszintes eltérítést.

16. A CH 2 csatorna invertálása

17. A GND gomb benyomásával a bemenetre 0 potenciál kapcsolódik, ekkor a megfelelő 1. gombbal lehet a CH II képét pozícionálni.

18. Az AC\DC nyomógomb benyomott állásánál a jel egyen és váltakozó komponense is, kiengedett állásában csak a váltakozó komponense látható a képernyőn.

19. A második csatorna (channel II, CH II) vagy a vízszintes bemenet csatlakozója.

20. A két csatorna összege jelenik meg.

21. A nyomógomb benyomásával a két csatorna jele egy időben látható a képernyőn.

22. Mint a 17, a CH I-re vonatkoztatva.

23. Mint a 18, a CH I-re vonatkoztatva.

24. Az első csatorna (CH I) csatlakozója.

24. A CH I erősítőjét állító fokozat kapcsoló. Ha például a 0,5 V-os állásban van, akkor a függőleges tengely egy osztása 0,5 V, a tengely teljes hossza 4 V.

25. CH I vagy CH II csatorna kiválasztása

26. A függőleges erősítést folytonosan állító forgató gomb. CAL állásában ki van kapcsolva, ettől eltérő állásában a leolvasott feszültség értéke nem hiteles.

27-28. Kalibráció és tesztelés
-----------------------------------
Laborszintű, mindig pontos, valós effektív értékek mérésére alkalmas, multifunkciós digitális multiméter és oszcilloszkóp egy készülékben. Rendkívül széles körben alkalmazható, univerzális mérőeszköz mellyel szinte bármilyen elektromos mértékegység megmérhető, ellenőrizhető. A mért értékek, hullámformák jól látható grafikus LCD kijelzőn jeleníthetők meg.

- 128 x 128 képpontos, grafikus LCD.
- 1 csatornás, digitális, tároló oszcilloszkóp.
- Fehér LED háttérvilágítás, három szintű fényerővel.
- Kijelző mérete: 62mm × 62mm.
- Oszcilloszkóp sávszélessége: DC-20MHz (50mV/div - 10V/div).
- Bemeneti impedancia: 10MOhm.
- Alacsony telepfeszültség kijelzése.
- Utolsó 100 mért adat tárolása a memóriában.
- Automatikus kikapcsolás 5-60 perc tétlenséget követően (állítható, kikapcsolható).
- VAC, VDC, AAC, ADC ellenállás, kapacitás, frekvencia
- Időalap: 0.20us/div - 20s/div.
- Időalap pontossága: +/-0.01% + 0.1div.
- Vertikális felbontás: 8 bit.
- Érzékenység: 50mV/div - 200V/div.
- Pontosság: +/-5% + 0.1div.
- Automatikus nulla hivatkozás DC és dB mérésnél.
- Trigger szint: +/-12div (lépésenként 0.1div).
- Trigger pozíció állítás: +/-6div (lépésenként 0.1div).
- Kurzor mérési funkciói: dV, dt, 1/dt (frekvencia).
- Automatikus mérési pontosság: +/-5% + 0.1div.
- Maximális valósidejű felbontás: 100Msps.
- Csatlakozók: DC/AC/GND.
- Felosztás: +/-4.8div vertikális, +/-12.8div horizontális.
- Automatikus mérési funkciók: Vp-p, Vavg, RMS, dBm.
- Rekord hosszúság: 12.8div.
- Nonlinearitás: +/-1bit.
- 12-16 órás működés akkumulátorról.
- Töltési idő: "3 óra.
- Tápellátás: beépített LiPo akkumulátorról vagy AC tápegységről.
- Működési magasság: 0-2000m.
- Tárolási hőmérséklet: -10°C-60°C.
- Működési hőmérséklet: 0°C-50°C.
- Működési páratartalom: maximum 75%.
- Súlya: 325g (tok és egyéb kiegészítők nélkül).
- Méretei: 86mm × 186mm × 32mm.
- Tápegység: 110V-250V bemenet, 7.5V/500mA kimenet.
- CE minősítés.

https://regi.tankonyvtar.hu/hu/tartalom/tamop412A/2011-0042_mereselmelet/ch13s02.html
https://regi.tankonyvtar.hu/hu/tartalom/tamop425/2011_0001_531_programirany/ch05.html
http://centroszet.hu/tananyag/elektro_new/6.2_kozepertekek.pdf