Portál AbcLinuxu, 26. dubna 2024 16:04


Dotaz: Programování v bashi,

25.2.2009 19:46 František Štolba
Programování v bashi,
Přečteno: 783×
Odpovědět | Admin

Dobrý den,

chtěl bych Vás všechny poprosit o pomoc. Dostal jsem následující zadání:

V jazyce příkazového interpretu ’shell’ (Bourne-Again SHell) napište program sort.sh,
realizuje jednuduchý program pro třídění textových souborů (viz man sort). Nezapomeňte
na ošetření chybného formátu vstupních dat.

Bohužel je to mimo mé síly a už nevím na koho bych se obrátil. Vážne bych si cenil, kdyby jste mi jakkoliv pomohli. Jsem už docela zoufalý.

Děkuji za každou radu.

František Štolba

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.2.2009 20:23 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Programování v bashi,
Odpovědět | | Sbalit | Link | Blokovat | Admin
1.) Nikdo vám tu nebude dělat domácí úkoly.

2.) Nikde nepíšeš jaké vstupní údaje máš - jaký formát atd....co jsi udělal atd...

3.) Když sem dáš výsledek co jsi napsal tak ti poradíme co máš špatně.
25.2.2009 21:50 František Štolba
Rozbalit Rozbalit vše Re: Programování v bashi,

ok, napravím to.

25.2.2009 23:03 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: Programování v bashi,
Odpovědět | | Sbalit | Link | Blokovat | Admin

sort.sh:

#!/bin/bash
sort $*

Zadání to IMHO zcela vyhovuje... ;-)

Každý má právo na můj názor!
26.2.2009 12:55 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Programování v bashi,
Ovšem toto mu asi učitel omlátí o hlavu a dá za 5 :-) taky mě to napadlo jako první, ale neodvažoval jsem to tu napsat aby se toho nechytl.
26.2.2009 12:59 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Programování v bashi,

No za 5 nevím, přijde mi to jako správné řešení. Proč psát něco, co je dávno hotové, otestované, navíc v céčku? V praxi bys použil přesně takové řešení, škola by si neměla vymýšlet blbosti.

26.2.2009 13:44 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Programování v bashi,
V praxi by nevymyslely takovou blbost psát jeden příkaz do skriptu.
Amarok avatar 26.2.2009 14:27 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Programování v bashi,
To prece neni ani reseni podle zadanych pozadavku. Chybi "ošetření chybného formátu vstupních dat".
GNUniverse - May the source be with you...
26.2.2009 15:33 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Programování v bashi,

A sort nemá potřebné kontroly implementované?

Amarok avatar 26.2.2009 17:30 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Programování v bashi,
To samozrejme ma. Je tedy spis otazka, jestli ten ucitel vubec vi, o cem mluvi. Z toho zadani ukolu je zrejme, ze chce po zakovi implementovat vlastni kontrolu vstupnich dat.
GNUniverse - May the source be with you...
26.2.2009 15:04 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Programování v bashi,
Účelem je aby tazatel zvládnul programování v bash, nikoliv aby naprokramoval sort v bash. To je jen pomůcka k tomu jak se zdokonalit v bashi, nikoliv cíl. Pokud by tazatel bash uměl, tak samozřejmě v něm nemusí psát žádné kraviny. Pakliže ho neumí, tak musí pár buď kravin nebo užitečných věcí (to je jedno) napsat, aby se to naučil.
26.2.2009 15:32 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Programování v bashi,

Jistě, leč to je právě problém školství, že se žáci učí často na krávovinách. Kdyby zadání bylo smysluplné, i žáci by je možná raději a ochotněji řešili. Proč by si ale učitel neusnadnil život, že..

26.2.2009 21:12 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Programování v bashi,
Pro žáka který bash neovládá je takový sort sakra velká a hlavně smysluplná challenge :), takže problém školství je možná v tom, že ne všem to ti lidé vysvětlí. Těm, kterým vysvětlí, že když dnes zvládnou sort, tak v budoucnu zvládnou cokoliv co po nich kdo bude chtít v praxi a bude "doopravdy potřebné", tak pro ty má smysl implementovat i krávoviny. Protože ono i když třeba zadáte implementovat nějaký příklad z praxe, tak se najde jiný remcal co řekne že ten výsledek stejně nebude mít praktické využití (rozumějte -- je to sice příklad z praxe ale nikdo ten soft vlastně nepotřebuje, navíc od studenta začátečníka, že). Takže remcalové se najdou vždycky. Ale je potřeba jim to vysvětlit, aby měli šanci se odremcovatět. Nejpádnější argument je třeba ten, že i v praxi, pokud nebudou zcela svobodnými vývojáři z pohádek, kteří si programují jen to co chtějí, tak i v praxi budou nemalou část své pracovní doby trávit nezajímavými a nepraktickými kravinami, jen aby uspokojili zadavatele/zaměstnavatele/kohokoliv. Programování něčeho smysluplného, je-li to navíc užitečné a ještě ke všemu se to v praxi osvědčí a bude to i někdo používat, to je taková třešínka na dortu a souhlasím s vámi že potěší ;)
5.3.2009 09:44 František Štolba
Rozbalit Rozbalit vše Re: Programování v bashi,
Odpovědět | | Sbalit | Link | Blokovat | Admin

Nakonec sem to dal dohromady hlavně díky kamarádovy. A pana učitele bych se chtěl zastat. Je to jeden z těch lepších učitelů.

Kdyby to někoho zajímalo tak sem to vytvořil takto:

#!/bin/bash

if test $# -ne 1
then
    echo "Zadejte prosim cestu k souboru!"
    exit
fi

# Overeni existence souboru
if test -f $1
then
 soubor=$1
else
 echo "Soubot neexistuje!!!"
 exit 0
fi


# Nactemem radky ze souboru do pole
i=0
pole=[]
while read radka; do
 pole[$i]=$radka
 i=$(expr $i + 1)
done <$soubor

#######
prohodit()
{
    local pomocna=${pole[$1]}
    pole[$1]=${pole[$2]}
    pole[$2]=$pomocna               
    return
}
#######


#Pocet prvku v poli, pocet kroku cyklu
pocet_prvku=${#pole[@]}
echo "Pocet radku: $pocet_prvku"
let "pocet_kroku = $pocet_prvku - 1"

while [ "$pocet_kroku" -gt 0 ]
do

  index=0
 
    while [ "$index" -lt "$pocet_kroku" ]
    do
          if [ ${pole[$index]} \> ${pole[`expr $index + 1`]} ]
      then
        prohodit $index `expr $index + 1`
      fi 
          let "index += 1"
     done                         
let "pocet_kroku  -= 1"
done 

# Vypsani serazeneho pole
i=0
while [ "$i" -lt "$pocet_prvku" ]
do
 echo ${pole[$i]}
 let "i += 1"
done

exit 0

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.