Questions et devoirs. Écriture du code du programme à l'aide des restrictions d'utilisation de l'instruction de procédures

Dans le paragraphe précédent, nous nous sommes familiarisés avec la structure d'un programme en Pascal, avons appris à décrire des données et avons examiné l'opérateur d'affectation. C'est suffisant pour écrire un programme de conversion de données. Mais le résultat de ces transformations ne nous sera pas visible.

Pour sortir les données de la RAM vers l'écran du moniteur, utilisez l'opérateur de sortie d'écriture :

Ici, entre parenthèses, une liste de sortie est placée - une liste d'expressions dont les valeurs sont imprimées. Il peut s'agir d'expressions numériques, symboliques et logiques, comprenant des variables et des constantes.

Un ensemble arbitraire de caractères entourés d’apostrophes est considéré comme une constante de chaîne. Une constante chaîne peut contenir n’importe quel caractère tapé sur le clavier.

Exemple. L'instruction write ("s=" , s) est exécutée comme ceci :

  1. Les symboles entourés d'apostrophes sont affichés à l'écran : s=
  2. La valeur de la variable stockée dans une cellule RAM nommée s est affichée à l'écran.

Si la valeur de la variable s est 15 et qu'elle est de type entier, alors l'écran affichera : s=15.

Si la valeur de la variable s est 15, mais qu'elle est de type réel, alors apparaîtra à l'écran : s=l.5E+01.

Lorsque l'instruction de sortie est exécutée, tous les éléments de la liste de sortie sont imprimés immédiatement les uns après les autres. Ainsi, grâce à l'opérateur d'écriture (1, 20, 300), la séquence de nombres 120300 sera affichée à l'écran, qui sera perçue par nous comme le nombre 120300, et non comme trois constantes numériques distinctes. Vous pouvez rendre les données de sortie plus accessibles à la perception de différentes manières :

Format de sortie est un entier indiqué après les deux points qui détermine le nombre de positions sur l'écran que la valeur affichée doit occuper. S'il y a moins de chiffres dans un numéro que les positions qui lui sont réservées sur l'écran, alors les positions libres sont complétées par des espaces à gauche du numéro. Si le nombre spécifié dans le format de sortie après les deux points est inférieur à ce qui est nécessaire, il sera automatiquement augmenté jusqu'au minimum requis.

Pour générer un nombre réel au format virgule fixe, deux paramètres sont spécifiés dans la liste de sortie pour chaque expression :

  1. le nombre total de postes attribués pour le numéro ;
  2. le nombre de positions dans la partie fractionnaire du nombre.

Lorsqu'une nouvelle instruction d'écriture est exécutée, la sortie continue sur la même ligne. Pour passer à une nouvelle ligne, utilisez l'opérateur writeln. Il n'y a pas d'autres différences entre les instructions write et writeln.

4.2.2. Premier programme en langage Pascal

À l'aide des opérateurs évoqués ci-dessus, nous créerons un programme qui calcule la circonférence et l'aire d'un cercle d'un rayon de 5,4 cm.

La donnée initiale de ce problème est le rayon : r - 5,4 cm. Le résultat du programme devrait être les valeurs C - la circonférence et S - l'aire du cercle. C, S et r sont des quantités de type réel.

Les données initiales et les résultats sont liés par des relations connues du cours de mathématiques : C = 2πr, S = πr +. Un programme qui implémente des calculs à l'aide de ces formules ressemblera à :

Ce programme est correct et résout le problème. Lorsque vous l'exécuterez, vous obtiendrez le résultat suivant :

Néanmoins, le programme que nous avons compilé présente un inconvénient important : il trouve la circonférence et l'aire d'un cercle pour une seule valeur de rayon (5,4 cm).

Afin de calculer la circonférence et l'aire d'un cercle pour une valeur de rayon différente, vous devrez apporter des modifications directement au texte du programme, à savoir modifier l'opérateur d'affectation. Apporter des modifications à un programme existant n'est pour le moins pas toujours pratique (par exemple, lorsque le programme est volumineux et qu'il existe de nombreux opérateurs d'affectation). Ci-dessous, vous découvrirez un opérateur qui vous permet de saisir les données initiales pendant l'exécution du programme, sans modifier le texte du programme.

4.2.3. La saisie au clavier

Pour saisir des valeurs de variables dans la RAM, utilisez l'opérateur de saisie de lecture :

Lorsque l'instruction de lecture est exécutée, l'ordinateur passe en mode d'attente de données : l'utilisateur doit saisir les données à partir du clavier et appuyer sur la touche Entrée. Plusieurs valeurs pour les variables de type numérique peuvent être saisies séparées par des espaces ou des virgules. Lors de la saisie de variables de type caractère, les espaces et les virgules sont traités comme des caractères et ne peuvent donc pas être saisis.

La première valeur de variable saisie par l'utilisateur est placée dans l'emplacement mémoire dont le nom se trouve en premier dans la liste d'entrée, etc. Par conséquent, les types de valeurs d'entrée (flux d'entrée) doivent correspondre aux types de variables spécifiés dans la variable rubrique descriptif.

Exemple. Laisser

var i, j : entier ; x : réel ; a:char;

Attribuons les variables i, j, x et les valeurs 1, 0, 2,5 et "A". Pour ce faire, nous utiliserons l'opérateur read (i, j, x, a) et organiserons le flux d'entrée de l'une des manières suivantes :

Ici, nous avons non seulement utilisé divers délimiteurs (espace, virgule), mais avons également représenté le flux d'entrée sous la forme d'une, deux et quatre lignes.

Vous pouvez également utiliser l'opérateur readln pour saisir des données à partir du clavier, qui diffère de l'opérateur read uniquement en ce sens qu'après son exécution, le curseur se déplace vers une nouvelle ligne.

Améliorons le programme n_1 en y organisant la saisie des données à l'aide de l'opérateur de lecture. Et pour que l'utilisateur sache à quoi est destiné le programme et comprenne exactement quelle action l'ordinateur attend de lui, nous afficherons les messages texte correspondants à l'aide de l'opérateur writeln :

Le résultat du programme amélioré :

Notre programme peut désormais calculer la circonférence et l'aire d'un cercle pour n'importe quelle valeur de r. En d’autres termes, cela ne résout pas un seul problème, mais toute une classe de problèmes. De plus, le programme organise de manière claire et pratique la saisie des données initiales et la sortie des résultats obtenus. Cela garantit une interface utilisateur conviviale.

Le plus important

Pour saisir des valeurs de variables dans la RAM, les opérateurs d'entrée read et readln sont utilisés.

Pour sortir les données de la RAM vers l'écran du moniteur, les opérateurs de sortie write et writeln sont utilisés.

La saisie des données initiales et la production des résultats doivent être organisées de manière claire et pratique ; cela garantit une interface utilisateur conviviale.

Questions et tâches

  1. Écrivez une instruction qui vous permet de saisir la valeur de la variable summa pendant l'exécution du programme.
  2. Les variables entières i, y, k doivent recevoir respectivement les valeurs 10, 20 et 30. Notez l'instruction d'entrée correspondant au flux d'entrée :
      a) 20 10 30
      b) 30 20 10
      c) 10 30 20
  3. Décrivez les variables nécessaires pour calculer l'aire d'un triangle en fonction de ses trois côtés et rédigez une instruction qui fournit les données d'entrée requises.
  4. Quel est le résultat de l’exécution de l’instruction ?
      a) écrire (a)
      b) écrire (1 a ")
      c) écrire (1 a=1, a)
  5. De quel type est la variable f si, après avoir exécuté l'instruction write (f), le numéro suivant était affiché à l'écran ?
      une) 125
      b) 1,25E+2
  6. Comment afficher un nombre réel au format virgule fixe ?
  7. Notez les opérateurs permettant de saisir deux nombres et de les afficher dans l'ordre inverse.
  8. Voici un fragment du programme :

    lire un); lire(b); c:=a+b; écrire(a, b); écrire (c)

    Simplifiez-le en réduisant le nombre d'instructions d'entrée et de sortie.

  9. Voici un fragment du programme :

    une :=10 ; b:=a+l : a:=b-a; écrire (a, b)

    Quels chiffres seront affichés sur l’écran de l’ordinateur ?

  10. Écrivez un programme qui calcule l'aire et le périmètre d'un rectangle en fonction de ses deux côtés.

"Imprimante pour imprimer des cartes plastiques" - La possibilité de placer deux fois plus d'informations sur une carte plastique. Prix. Imprimante pour imprimer des cartes plastiques. ZÈBRE P110i/P120i. Revue de la gamme de modèles. Imprimantes couleur économiques pour l'impression de cartes plastiques. Hautes performances Large gamme de dispositifs d'encodage en option.

«Périphériques PC» - Périphériques. Imprimantes. Enregistrer. Caméras digitales. Hiérarchie des outils de connexion. Adaptateurs vidéo. Classification des PU. Bus universel en série. CD-R. Options de sélection. Flash intégré. Pionniers. Nature. Modem. Borne vidéo. Scanners. Périphériques PC. Classification des formes de souris.

"Moyens de saisie et de sortie d'informations" - Scanner. Traceur. CRT. Imprimantes. Clavier. Appareils photo et appareils photo numériques. Les fonctions. Périphérique d'entrée universel. Dispositifs d'entrée et de sortie d'informations. Tablette graphique. Souris.

"Périphériques de sortie d'informations" - Appareil informatique. Plus la résolution du moniteur est élevée, plus la qualité de l'image est élevée. Inconvénients des imprimantes à jet d'encre : Consommation d'encre élevée ; Coût de remplissage élevé. Les moniteurs à écran plat à cristaux liquides (LCD) sont compacts et sans émissions. Dispositifs de sortie d'informations. Le moniteur est un périphérique universel de sortie d'informations.

"Imprimantes" - Locales. Thermobloc, poêle, unité de fusion - une unité dans laquelle le toner est cuit en papier. Laser. Matrice (en forme d'aiguille). Au fil du temps, ils perdent leurs propriétés et doivent être régulièrement remplacés par un spécialiste. Jet. Réseau. Modifié par l'utilisateur. Caractéristiques de l'imprimante. Révélateur, support, révélateur - les plus petites particules métalliques qui transfèrent le toner au rouleau photo.

"Sous-système d'E/S" - Point d'arrêt. Les tables. Placement continu. Attribut. Autorisations de fichiers. Liste chaînée d'index. Données. Organisation physique. Accès direct à la mémoire. Fichier séquentiel indexé. Montage. Interruption des E/S pilotées. Autorisations d'accès au répertoire. Organisation de travaux parallèles.

Il y a un total de 27 présentations dans le sujet

Sortie de données
Sortie des données de la RAM vers l'écran du moniteur :
écrire
(<выражение 1> ,< выражение 2> , ...,< выражение N>)
liste de sortie
Expressions - symboliques, numériques, logiques,
y compris les variables et les constantes
Exemple:
écrire("s=", s).
Pour s=15, l'écran affichera : s=15.
Les informations entre guillemets s'affichent à l'écran
sans changements

Options d'organisation de sortie
Option
organisation du retrait
Pas de séparateurs
Opérateur d'inférence
écrire (1, 20, 300).
Résultat
120300
Ajouter des délimiteurs write (1, ',' , 20,
– des virgules
’, ’, 300)
1, 20, 300
Ajouter des délimiteurs écrire (1, ‘ ‘, 2, ‘ ‘, 3)
- les espaces
1 20 300

Format de sortie
Le format de sortie vous permet de définir le nombre de positions
sur l’écran occupé par la valeur affichée.
écrire(s:x:y)
x - le nombre total de postes attribués pour le numéro ;
y - le nombre de positions dans la partie fractionnaire du nombre.
Opérateur d'inférence
Résultat de l'exécution
opérateur
écrire('s=', s:2:0);
s=15
écrire('s=', s:3:1);
s=15,0
écrire('s=', s:5:1);
s=
écrire
15.0
- sortie d'une nouvelle ligne !

Premier programme
programme n_1 ;
const pi = 3,14 ;
var r, c, s : réel ;
commencer
r: = 5,4 ;
c:=2*pi*r;
Résultat du programme :
s:=pi*r*r;
writeln("c="", c:6:4);
écrire("s=", s:6:4)
TurboPascal
Version 7.0
fin.
c = 33,9120
s =91,5624

La saisie au clavier
Saisie des valeurs des variables dans la RAM :
lire
(<имя переменной1>, …, <имя переменной N>)
liste d'entrée
Exécution de l'instruction read :
1) l'ordinateur passe en mode veille de données :
2) l'utilisateur saisit les données au clavier :
plusieurs valeurs de variables
des types numériques peuvent être saisis
séparé par un espace ou une virgule ;
lors de la saisie de variables de caractères
Les espaces et les virgules ne peuvent pas être utilisés ;
3) l'utilisateur appuie sur la touche Entrée.

La saisie au clavier
!
Les types de valeurs d'entrée doivent correspondre
types de variables spécifiés dans la section description
variables.
var i, j : entier ; x : réel ; a : char ;
lire(i, j, x, a);
options d'organisation du flux d'entrée :
1 0 2,5 A 1,0 1
2.5, UN 0
2.5
UN
Une fois l'instruction readln exécutée, le curseur se déplace vers
nouvelle ligne.

Programme amélioré
programme n_1 ;
const pi = 3,14 ;
var r, c, s : réel ;
commencer
writeln("Calculer la circonférence et l'aire d'un cercle");
write("Entrez r>>");
readln(r);
c:=2*pi*r;
Résultat du programme :
s:=pi*r*r;
writeln("c="", c:6:4);
Pascal Version 7.0
writeln("s=", s:6:4) Turbo
Calculer la circonférence et l'aire d'un cercle
Entrez r >> 8,5
fin.
c =53,3800
s =226,8650

Le plus important
Pour saisir des valeurs de variables dans la RAM
Les opérateurs d'entrée read et readln sont utilisés.
Pour afficher les données de la RAM sur l'écran
Le moniteur utilise les opérateurs de sortie write et writeln.
La saisie des données initiales et la sortie des résultats doivent
être organisé de manière claire et pratique ; cela garantit
convivialité de l'interface utilisateur.

Questions et tâches
1) Étant donné un fragment de programme :
une :=10 ; b:=a+1 : a:=b–a ; écrire (a, b)
Quels chiffres seront affichés sur l’écran de l’ordinateur ?
2) Décrire les variables nécessaires au calcul
l'aire d'un triangle le long de ses trois côtés, et
rédiger une déclaration fournissant une contribution
données initiales nécessaires.
3) Quel est le résultat de l’exécution de l’instruction ?
a) écrire (a)
b) écrire("a")
c) écrire("a=", a)
4) Les variables entières i, j, k doivent être attribuées
respectivement, les valeurs sont 10, 20 et 30.
Notez l'instruction d'entrée correspondant à l'entrée
flux:
a) 20 10 30
b) 30 20 10
c) 10,30,20

Le premier opérande - "expression1" - peut être n'importe quelle expression dont le résultat est une valeur de type bool . Si le résultat est vrai , alors l'opérateur spécifié par le deuxième opérande, c'est-à-dire "expression2", est exécuté.

Si le premier opérande est égal à FAUX , puis le troisième opérande est exécuté - "expression3". Les deuxième et troisième opérandes, c'est-à-dire "expression2" et "expression3", doivent renvoyer des valeurs du même type et ne doivent pas être de type void . Le résultat de l'exécution d'une instruction conditionnelle est le résultat de « expression2 » ou le résultat de « expression3 », selon le résultat de « expression1 ».

Restrictions d'utilisation des opérateurs

L'opérateur basé sur la valeur de « expression1 » doit renvoyer l'une des deux valeurs suivantes : « expression2 » ou « expression3 ». Il existe un certain nombre de restrictions sur ces expressions :

  1. Vous ne pouvez pas mélanger un type défini par l'utilisateur avec un type simple ou une énumération. Il est acceptable d'utiliser NULL pour un pointeur.
  2. Si les types de valeur sont simples, alors le type de l'opérateur sera le type maximum (voir Coercition de type).
  3. Si l'une des valeurs est de type énumération et la seconde est de type numérique, alors l'énumération est remplacée par int et la deuxième règle s'applique.
  4. Si les deux valeurs sont des valeurs d'énumération, alors leurs types doivent être les mêmes et le type de l'opérateur sera une énumération.

Limitations pour les types personnalisés (classes ou structures) :

  1. les types doivent être les mêmes ou l’un doit hériter de l’autre.
  2. si les types ne sont pas les mêmes (héritage), alors l'enfant est implicitement converti en parent, c'est-à-dire que le type de l'opérateur sera le type du parent.
  3. Vous ne pouvez pas mélanger objet et pointeur : les deux expressions sont des objets ou des pointeurs. Il est acceptable d'utiliser NULL pour un pointeur.

Note

Soyez prudent lorsque vous utilisez un opérateur conditionnel comme argument d'une fonction surchargée, car le type du résultat de l'opérateur conditionnel est déterminé au moment de la compilation du programme. Et ce type est défini comme le type le plus grand des types « expression2 » et « expression3 ».

Exemple:

void func(double d) ( Print ("double argument : " ,d); )
void func(string s) ( Print ("argument de chaîne : " ,s); )

bool Expression1 = vrai ;
doubleExpression2=M_PI ;
chaîne Expression3= "3.1415926" ;

annuler OnStart()
{
fonction(Expression2);
fonction(Expression3);

func(Expression1?Expression2:Expression3);
func(!Expression1?Expression2:Expression3);// obtient un avertissement du compilateur concernant la conversion explicite en type chaîne
}

// Résultat:
// double argument : 3.141592653589793

//argument de chaîne : 3.141592653589793
//argument de chaîne : 3.1415926

Le code du programme est présenté sur la Fig. 4.3-9.

Option Strict On Option Explicit On Imports System.Math Public Class Form1 "Fonction pour saisir les coordonnées d'un point dans une TextBox Function vvod(ByVal T As TextBox) As Single Return CSng(Val(T.Text)) End Function "Procédure pour afficher le résultat dans un TextBox Sub vivod (ByVal Z As Single, ByVal T As TextBox) T.Text = CStr(Z) End Sub "Fonction pour calculer la longueur d'un segment à partir des coordonnées de deux points Fonction publique Longueur du segment (ByVal x1 As Single, _ ByVal y1 As Single, ByVal x2 As Single, _ ByVal y2 As Single) As Single Return CSng(Sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2)) End Function "Procédure de calculer le périmètre et l'aire d'un triangle Sub PS(ByVal x1 As Single, ByVal y1 As Single, _ ByVal x2 As Single, ByVal y2 As Single, _ ByVal x3 As Single, ByVal y3 As Single, _ ByRef P As Single , ByRef S As Single) Dim A, B, C, Pp As Single A = Longueur du segment (x1 , y1, x2, y2)"Appel de la fonction de calcul de la longueur du négatif. B = Longueur du segment (x2, y2, x3, y3) C = Longueur du segment (x3, y3, x1, y1) P = (A + B + C) : Pp = P / 2 S = CSng(Sqrt(Pp * (Pp - A) * (Pp - B) * (Pp - C))) End Sub "Procédure de traitement de l'événement de clic sur le bouton Button1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim x1 comme simple, x2 comme simple, x3 comme simple Dim y1 comme simple, y2 comme simple, y3 comme simple Dim par comme simple, Plo comme simple x1 = vvod(TextBox1) : x2 = vvod(TextBox2) : x3 = vvod(TextBox3 ) y1 = vvod(TextBox6) : y2 = vvod(TextBox7) : y3 = vvod(TextBox8) PS(x1, y1, x2, y2, x3, y3, Per, Plo) vivod(Plo, TextBox4) : vivod(Plo, TextBox5) End Sub Private Sub Button2_Click (ByVal expéditeur As System.Object, _ ByVal e As System.EventArgs) Poignées Button2.Click End End Sub End Class

Exécuter l'application et obtenir des résultats

Le résultat est présenté sur la Fig. 4.3-10.

Preuve de l'exactitude du résultat

UNE=
= 2,82843 B =
= 2

C = = 2 P = A + B + C = 6,828427 ; Рр = Р/2 = 3,414213 S= = 2


Questions de sécurité sur le sujet

«La structure des programmes, modules et procédures VB.

Outils de programmation pour les algorithmes de structure linéaire"

1. Qu'est-ce qu'un modèle mathématique ?

2. Quelles sont les principales étapes de la résolution de problèmes sur un ordinateur ?

3. Quelles étapes de résolution de problèmes informatiques sont effectuées sans la participation d'un ordinateur ?

4. Qu'appelle-t-on un modèle mathématique d'un objet ou d'un phénomène ?

5. Quelles sont les étapes séquentielles du processus de développement du programme ?

6. Qu'est-ce qu'un algorithme ?

7. Quelles propriétés de base un algorithme doit-il avoir ?

8. Quelles sont les manières de décrire les algorithmes ?

9. Quels symboles graphiques sont généralement représentés dans les diagrammes algorithmiques ?

10. Comment fonctionne l'interprète ?

11. Comment fonctionne le compilateur ?

12. Quel algorithme est dit linéaire ?

13. Quel algorithme est appelé cyclique ?

14. Quel algorithme est appelé branchement ?

15. Quelle est la différence entre transmettre les résultats de fonctions et de procédures ?

16. L’obtention d’un résultat plausible prouve-t-elle que le programme est correct ?

17. Quelles erreurs peuvent rester non détectées si vous ne vérifiez pas (visualisez, faites défiler) le programme ?

18. En quoi tester un programme est-il différent de le déboguer ?

19. Est-il possible de prouver l’exactitude d’un programme à l’aide de tests ?

20. A quelle étape du programme les résultats des tests de référence sont-ils calculés ?

21. Énumérez les principales étapes du processus de test.

22. Quelle est la différence entre les erreurs de syntaxe et les erreurs sémantiques ?

23. Qu'indique l'absence de messages d'erreur de syntaxe sur la machine ?

24. Quels types d’erreurs le traducteur n’est-il pas en mesure de détecter ?

25. Quel est le programme ?

26. A quelle étape ont lieu la recherche et l'élimination des erreurs dans le programme ?

27. Qu'est-ce qu'un système de programmation ?

28. Quelle est la procédure?

29. Quels sont les avantages d’un programme comportant des procédures ?

30. Quels outils de programmation procédurale sont disponibles en VB ?

31. Comment les données sont-elles échangées entre les procédures de programme individuelles ?

32. Quels sont les paramètres réels et formels ?

33. Comment passer en paramètre : une constante, une variable, une expression ?

34. Comment les variables globales sont-elles utilisées ?

35. Comment les variables locales sont-elles utilisées ?

36. Que sont les paramètres formels ?

37. Quels sont les paramètres réels ?

38. Que se passe-t-il lorsqu'une procédure est appelée ?

39. Comment passer des paramètres à une procédure ?

40. Quels paramètres sont transmis par valeur ?

41. Quels paramètres sont transmis à l'adresse ?

42. Que sont les outils de programmation procédurale ?

43. Quel est le résultat de l’exécution d’une fonction ?

44. Comment les variables individuelles doivent-elles être déclarées afin qu'elles soient locales au sein d'une fonction ?

45. Quelle instruction est utilisée pour quitter une fonction plus tôt ?

46. Qu'est-ce qui est contrôlé lors de l'appel de fonctions et de procédures ?

47. Comment déclarer les paramètres formels afin de transmettre un paramètre variable par valeur ?

48. Comment déclarer les paramètres formels afin de transmettre un paramètre variable à une adresse ?

49. Comment une procédure fonctionnelle est-elle appelée depuis le programme appelant ?

50. Quel pourrait être le résultat de la procédure ?

51. Quelle instruction est utilisée pour sortir prématurément d’une procédure ?

52. Où peut-on trouver les descriptions des fonctions et des procédures ?

53. Où sera disponible une variable déclarée via l'opérateur Public ?

54. Où peut-on situer l’opérateur privé ?

55. Qu'est-ce qu'un commentaire et les règles pour le rédiger ?

56. Quelles sont les valeurs des variables au début du programme ?

57. Pourquoi les procédures et les fonctions sont-elles décrites (définies) ?

58. Comment s’appellent les procédures ?

59. Comment s’appellent les fonctions ?


Informations connexes.


gastrogourou 2017