Légèrement modifié cahier des charges d'un programme CS1Le directeur d'un point de vente de restauration rapide a besoin d'un programme pour aider les ventes de piste. La sortie ne sert que des hamburgers avec des frites, un repas burger coûts de 5,95 $. Les internautes mai ordonner toute nombre de repas burger. Le programme est d'aider à calculer les prix des ordres, et est également de tenir des registres du total des commandes et la plus importante commande unique. Le programme est d'utiliser un menu simple boucle style sélectionner avec les options:
(1) Commander (2) Imprimer totaux à ce jour (3) Quitter L'option de commande doit conduire à une invite pour le nombre de repas requis. Toutes les données d'entrée non valide (valeur <= 0) doivent être mis au rebut, le programme est de susciter à nouveau l'utilisateur avec les options. Données d'entrée valides doivent donner lieu à des mises à jour des ventes totales et, le cas échéant, mise à jour du dossier de la plus grosse commande. Le programme devrait aussi répondre avec un numéro de commande et le coût de la commande. L'option totaux devraient imprimer le détail des ventes totales et le plus grand ordre. L'option Quitter termine le programme. Une sélection d'option non valide est indiqué, puis le programme répète l'invite pour d'entrée. (Le cahier des charges initial comportait un imprimé indiquant exactement le format requis pour les intrants et les extrants.) De toute évidence, le programme Perl exige une boucle tout en contenant un if ... elsif ... else ». #! / share / bin / perl-w $ Coût = 5.95; orderNum $ = 0; $ maxorder = 0; $ totalsales = 0; while (1) (print 'Bienvenue à CS1 Burgers 1. Rendre une ordonnance 2. Imprimer les totaux 3. Quitter Entrez votre choix: '; $ order = print "Montant total: \ $ $ totalsales \ n"; print "Le nombre maximum de plats commandés en un". "seule commande: $ plats maxorder \ n";) elsif ($ order == 3) (last;) else ( print "Ce fut un mauvais choix. ... try again";)) print "Bye! \ n"; (Pouvez-vous me rappelle à l'époque où quelque chose comme c'était là une mission difficile qui vous a fallu une semaine?) Caractéristiques de noter dans le code sont: A 'Forever' boucle while; résilié par la dernière instruction d'option de sélection 3. L'utilisation amulti définition de chaîne de ligne de simplifier la déclaration de la chaîne d'invite. L'utilisation de Cette cession a été effectivement à partir d'un niveau supérieur-sujet, mais elle exige aussi que le plus fondamental des structures de programmation. Le programme consiste à lire les données concernant les fichiers et répertoires, obtenus à partir de la commande unix ls-l. D'entrée doit être lu depuis stdin (soit pipe de ls-l ou redirection à partir d'un fichier produit par ls-l). Exemple de données d'entrée sont les suivants: -rx - x - x 1 root bin 20796 6 janvier 2000 acctcom-rx - x - x 37 root bin 5256 6 janvier 2000 adb lrwxrwxrwx 1 root root 29 30 novembre 2000 cachefspack -> .. / lib / fs / cachefs / cachefspack drwxr-xr-x 2 root bin 512 Jun 10 15:08 sparcv7 Le programme est de traiter les lignes relatives à de simples fichiers et des répertoires; entrées de répertoires spéciaux, tels que les liens, doivent être ignorées. Le programme est de générer une ligne de sortie pour chaque ligne d'entrée transformés. Cette ligne de sortie est de réécrire les permissions sur les fichiers sous la forme du code octal utilisé pour les permissions Unix, c'est pour indiquer si la ligne se rapporte à un fichier ou un répertoire, et d'imprimer le nom de l'entrée. Lorsque toutes les lignes d'entrée ont été traitées, le programme est d'imprimer, chiffres du nombre de fichiers et de répertoires, puis résilier. La sortie pour les données ci-dessus devraient être: 511 acctom dossier public 511 adb fichier 755 Répertoire sparcv7 La première version d'une solution pour cette mission est à nouveau basé sur une boucle while dans laquelle tout le traitement est effectué. La boucle lit une ligne depuis stdin, et se termine quand une ligne vide est reçu (fin de l'état du fichier). Le traitement dépend des caractères spécifiques qui sont entrés; fonction substr standard de Perl est utilisé pour sélectionner les caractères de la ligne d'entrée. #! / share / bin / perl-w $ files = 0; $ directories = 0; while ($ str = print "$ (code) \ t $ (type) \ t $ (name) \ n";) print "$ files fichiers et répertoires $ répertoires \ n"; while ($ str = for ($ i = 1; $ i <10; $ i + +) ($ code *= 2; if ( "-" NE substr ($ str, $ i, 1)) ($ code + +;)) $ pos = rindex ( name $ str, ""); $ = substr ($ str, $ pos +1); printf "% o% s", $ code, "\ t $ (type) \ t $ (name) \ n";) Dans l'instruction printf, le premier argument '% o% s »est la chaîne de format, ce qui indique la sortie d'une valeur numérique en octal, suivie par une ficelle. Les autres arguments sont le code, et une chaîne avec le type (fichier ou répertoire) et le nom de l'entité. Bien sûr, il ya une autre façon de le faire. Depuis une chaîne de format est un doublement cité chaîne Perl, il peut interpoler les valeurs. La variante suivante serait aussi bon: printf "% o \ t $ (type) \ t $ (name) \ n", $ code; un article présenté par Ronald Smith Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite. Important: Cet article «Légèrement modifié cahier des charges d'un programme CS1" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
|
|||||
| Online: 214 users browsing the articles directory |
|
|