In the next set of quizzes,
I am going to be showing you how variables are actually used.
All the programs that you are about to do in part 2, will compile.
Which means that the computer can understand the code that's been written
for them, and we'll be able to create an app.
Now, while the programs will be able to run on the phone,
there's a chance that they might not do what the intended goal was.
This is something known as a logical error.
A logical error means that there's something wrong with the logic which you
used to write the code.
Let's look at a short program and
an example scenario and I'll walk you through how you solve one of these.
Okay, so here's an example.
Each of these programs will have a goal, which will be written out here.
The program itself will be in the green box.
Okay, so the goal of this program is to calculate something called sleep debt.
Now, how much sleep you need varies a little bit by age, but on average,
people need about eight hours of sleep a night.
So what this program is trying to do is calculate the sleep debt in one week.
The user of the program will go ahead and estimate how much they sleep on
an average weekday, and how much they sleep on an average weekend day.
For this example, we're assuming the user sleeps five hours on a weekday and
nine hours on a weekend.
The code for this task is here in the green box.
And the first thing that you're trying to do is read through this code and
decide whether or not the goal was accomplished.
Then what you're also going to do is go through each of the statements that
happened in the code and decide what was actually displayed to the screen.
Assume that these method calls here, the things that look like display and
have parentheses and
something in between them, will display content to the screen.
Now, some of these problems will have multiple pieces of content that they
need to display, so you might see display1, display2, display3.
Okay, so if you're still watching this video,
you're probably wondering how to solve one of these problems.
This isn't the first time you're interacting with multiple variables,
the values of which might change a few times during the problem.
So let me do the first one with you before I set you loose.
Now I'm going to use a technique called hand simulation and what this technique
involves is trying to figure out what the computer is doing, but
without just sticking it to the computer.
For us really it's just an organized way to keep track of what's going on with
the variables.
Okay, now you're going to go line by line so let me start this with you.
In the first line here I see a declaration of a variable, so
I'm going to go ahead and write the variable name which is weekday.
It's also initialized to a value which is 5,
so under weekday I'm going to put the value 5.
This is representing that the variable weekday currently stores 5.
Okay, so that was the first line, I'm going to move to the next line.
We have a variable called weekend, so I'm going to write that out,
and the value of that variable is 9.
Okay, so that's looking good so
I'm going to move on to the next line which is a declaration and
instantiation of the variable optimalHours, so I'll do the same thing.
Okay, so I'm not going to write the value 7*8.
I'm actually going to calculate that out because that's
what gets stored in optimalHours.
So, with a little bit of mental math, 7 times 8 is 56.
Okay, we have another declaration here.
We make a variable called actualHours, so I'll write that out.
Well, it's equal to the value of weekday, and
this is the current value of weekday.
It's not some past value of weekday or future value of weekday.
Now, we're keeping track of what the current value of weekday is over here.
And so I could just look here and see that it's 5.
So I should really think about this as the number 5.
So it's saying int actualHours is equal to 5, so
I'm going to go ahead and write that there.
OK we'll move on to the next line.
So now we're changing actual hours again to be equal to the current value
of actualHours plus weekend times 2.
So I can look over here, the current value of actualHours is 5 and
the current value of weekend is 9.
And now I have this little equation here.
So, I do the multiplication before the addition, so,
9 times 2 is 18 and then I add 5.
And with a little bit more mental math, 18 plus 5 is 23.
Okay, so this all equals 23.
And what I have to do is cross out the old value of actual hours, and
write in the new value of actual hours.
Okay, so that's done.
Let's move on to the next line.
We have n solution, so that's a variable declaration.
And it's being set equal to something, but
I'm going to write out the word solution first.
And solution is equal to optimal hours minus actual hours.
So let's go over here, optimal hours is 56 and actual hours is 23.
Now it's okay to use your calculator,
I happen to do that earlier and I know that 56 minus 23 is 33.
Okay, and then we move on to the next and
final line which says display solution.
So, we can look over here to see what the value of solution is, which is 33.
So it is going to display the number 33.
So that is how I, or you, or
anyone, could figure out what this program just did.
But the real question is, did it do the right thing?
Is there a logical error somewhere in here or
is somebody who sleeps five hours on a weekday and nine hours on a weekend
night going to have thirty three hours of sleep debt at the end of the week.
And I want to know what you think.
All right, quick side note, now you've created this practice set 2 app, so
I'm just going to show you how you could also put the code into the practice
set 2 app if you wanted to test it out.
I really recommend hand simulating first,
because it's going to give your brain a better grasp about what's going on.
But it's also go to be able to put the code into Android Studio and
play around with it a bit.
So my suggestion is that you copy and paste the code for the problem,
which will be provided in the instructor notes, into the onCreate method.
That's the first method you'll see in your main activity class here.
Okay, just to be very clear, here's what your onCreate looks like
before it's modified and then you can paste over the code, like I've done.
Okay, the other thing you're going to need to copy and paste over,
which will make this line of code work, is down here.
It is this code, and I've also included this in the instructor notes.
The one final thing that you'll need to do is go to your XML, and
make sure your that your text view has an Id/display_text_view,
and this should exactly match what's shown here.
Ok, as long as those two things match when you run this
code, you'll get the value printed out to the screen.
It's a little bit hard to see but it says 33 right there.
Okay, and with all of that, then I'll try to hand simulate and
some help with getting it up and running on your phone.
Go ahead and try to figure out is this program doing what it's supposed to do.
في المجموعة التالية من الاختبارات
سأريكم كيف يتم استخدام المتحولات في الواقع
وجميع البرامج التي ستقوم بها في الجزء 2، ستترجم
مما يعني أن الكومبيوتر يمكن أن يفهم الكود المكتوب
بالنسبة لهم، سنكون قادرين على انشاء تطبيق
الآن، في حين أن البرامج سوف يكون قادراً على التنفيذ على الهاتف
هناك إحتمال أنه قد لا يقوم بالهدف المقصود منه
وهذا ما يعرف باسم الخطأ المنطقي
يعني الخطأ المنطقي أن هناك شيء خاطئ في المنطق الذي
استخدمته لكتابة الكود
لنلقي نظرة على البرنامج القصير
وسيناريو المثال وسوف أشرح لكم كيفية حل أحد هذه الأخطاء
حسناً، إليكم هذا المثال
كل من هذه البرامج سيكون لها هدف والتي سوف تكون مكتوبة هنا
البرنامج بنفسه سيكون في الصندوق الأخضر
حسناً، ليكن لدينا الهدف في البرنامج وهو لحساب ما يسمى "sleep debt"
الآن، ما تحتاج إليه من النوم مختلف قليلاً عن طريق العمر، ولكن في المتوسط
يحتاج الناس حوالي ثمان ساعات من النوم ليلاً
لذا فإن ما يحاول البرنامج القيام به هو حساب "sleep debt" في أسبوع واحد
سيقوم مستخدم البرنامج بالتقدم ويقدر كم ينام
بشكل وسطي في أيام الأسبوع وكم ينام بشكل وسطي في يوم نهاية الأسبوع
على سبيل المثال، لنفترض أن المستخدم ينام خمس ساعات في أيام الأسبوع
وتسع ساعات في عطلة نهاية الأسبوع
إن الكود هنا في المربع الأخضر
وأول شيء ستحاول القيام به هو قراءة هذا الكود
وتقرير ما إذا كان يحقق هذا الهدف
و ستقوم بهذا من خلال جميع التعليمات
المكتوبة في الكود وستقرر ما سيتم عرضه فعلاً على الشاشة
لنفترض أن هذه الطريقة تستدعى هنا والأشياء التي تبدو مثل العرض
لدينا قوسين
وشيء بينهما، سيتم عرض المحتوى على الشاشة
الآن، بعض هذه المشاكل لها أجزاء متعددة من المحتوى الذي
ستحتاج إلى عرضها، لذلك قد ترى display1، display2، display3
حسناً، لذلك ستشاهد هذا الفيديو
ربما كنت اتساءل كيف نحل واحدة من هذه المشاكل
هذه ليست المرة الأولى التي تتفاعل بها مع متحولات متعددة
و القيم التي تغيرت عدة مرات خلال المشكلة
لذلك دعني أقوم بأول واحد معك قبل أن أدعك وشأنك
سأستخدم تقنية تسمى المحاكاة المكتوبة وما هذه التقنية
تتضمن محاولة تحديد ما يقوم به الكمبيوتر، ولكن
دون مجرد الالتصاق بجهاز الكمبيوتر
بالنسبة لنا حقاً إنها مجرد وسيلة منظمة لتتبع ما يحدث مع
المتحولات
حسناً، الآن ستنطلق سطراً سطراً لذا دعني أن أن أبدأ معك
في السطر الأول هنا أرى التصريح عن متحول، لذلك
لذا سأمضي قدماً واكتب اسم المتحول weekday
تمت تهيئته أيضاً بالقيمة 5
وذلك في ظل أيام الأسبوع سأضع قيمة 5
هذا يمثل أن أيام الأسبوع متحول يخزن حاليا 5
حسناً، كان هذا السطر الأول وسأنتقل إلى السطر التالي
لدينا متحول يسمى weekend لذلك أنا أريد أن أكتبه
وقيمة هذا المتحول 9
حسناً، هذا يبدو جيداً حتى الآن
سأقوم بالانتقال إلى السطر التالي وهو التصريح
وتجسيد للمتحول optimalHours ولذا سأفعل الشيء نفسه
حسناً، لن أكتب قيمة 8*7
سأقوم بحسابها ذهنياً لأن هذا هو
ما يخزن في optimalHours
لذلك، مع القليل من الرياضيات الذهنية 7 ضرب 8 يساوي 56
حسناً، لدينا تصريح آخر هنا
قمنا بإنشاء متحول يسمى actualHours لذلك سأكتب ذلك
حسناً، انها مساوية لقيمة يوم الأسبوع
هذه هي القيمة الحالية لـ weekday
إنها ليست قيم سابقة من weekday أو قيم مستقبلية لقيمة weekday
سنتتبع القيمة الحالية weekday هنا
لذلك دعنا نلقي نظرة ونرى أن قيمتها 5
لذلك أعتقد أنني يجب أن أفكر أكثر بالرقم 5
هكذا يقول أن معرف الصحيح actualHours يساوي 5، لذا
سأمضي قدما وأكتب ذلك هناك
حسناً، سوف ننتقل إلى السطر التالي
نحن نغير actualHours مجدداً إلى القيمة الحالية
من actualHours بالإضاافة إلى ضرب 2 قبل weekend
لذلك يمكن أن ننظر أكثر هنا فإن القيمة الحالية لـ actualHours هي 5
والقيمة الحالية لـ weekend وهي 9
لدي هنا هذه المعادلة الصغيرة
قمت بعملية الضرب قبل الجمع
9 ضرب2 يساوي 18 ثم أضيف 5
وباستخدام القليل من الرياضيات الذهنية 18 زائد 5 يساوي 23
حسنا، لذلك كل هذا يساوي 23
ويجب شطب القيمة القديمة من actualHours
الكتابة القيمة الجديدة من actualHours
حسناً، تم ذلك
دعنا ننتقل إلى السطر التالي
لدينا n حل، لذلك هذا هو تعريف المتحول
ويجري تعيين أنها تساوي شيئا، ولكن
سأقوم بكتابة كلمة الحل أولاً
وهذا الحل مساوي لـ optimalHours ناقص actualHours
لذلك دعونا ننتقل إلى هنا optimalHours هي 56 و actualHours هو 23
الآن استخدم آلتك الحاسبة
يمكن القيام بذلك في وقت سابق وأنا أعرف أن 56 ناقص 23 يساوي 33
حسناً ثم ننتقل الى المرحلة التالية
والسطر الأخير الذي يقول عرض الشاشة
لذلك، يمكننا أن ننظر إلى هنا لنرى ما هي قيمة الحل وهو 33
لذلك يتم الانتقال إلى عرض الرقم 33
لذلك هذا هو كيف لي، أو لك، أو
أي شخص، معرفة ماذا فعل البرنامج
ولكن السؤال الحقيقي هو هل نفذ الشيء الصحيح؟
هناك خطأ منطقي في مكان ما هنا
أو إن شخص ينام خمس ساعات في أيام الأسبوع وتسع ساعات في ليلة عطلة نهاية الأسبوع
ستكون لديه ثلاثة وثلاثين ساعة من"sleep debt" في نهاية الأسبوع
وأريد أن أعرف ما هو رأيك
حسناً، ملاحظة جانبية سريعة، الآن قمت بإنشاء هذا التمرين "set 2 app" لذلك
سأريكم كيف يمكن أيضاً وضع الكود في التمرين
إذا أردت اختبار "set 2 app"
أوصى حقاً بالمحاكاة اليدوية أولاً
لأنها ستعطي ذهنك فهماً أفضل حول ما يجري
لكنه يجب أن يكون قادراً على وضع الكود في "Android Studio"
وقم باللعب بها قليلاً
لذلك اقتراحي هو أن تقوم بنسخ ولصق الكود لهذه المسألة
التي ستكون مكتوبة في دليل المعلم وفي نمط onCreate
هذه هي الطريقة الأول التي ستراها في صفك MainActivity
حسناً، لكي تكون مفهومة تماماً وهنا كيف تبدو الطريقة onCreate
قبل تعديلها ومن ثم يمكنك لصق الكود، كما فعلت أنا
حسناً، والشيء الآخر الذي ستحتاجه هو النسخ واللصق فوقه
الأمر الذي سيجعل هذا السطر من الكود يعمل، إنه هنا في الأسفل
هذا هو الكود ولقد ضمنته أيضاً في دليل المعلم
أمر أخير عليك القيام به هو الذهاب إلى XML الخاص بك
تأكد من أن TextView الخاص بك لديه id/display_text_view
ويجب أن يطابق تماماً ما هو موضح هنا
حسناً، طالما يتطابق هذين الأمرين عند تنفيذ هذا
الكود، ستتم إظهار قيمته على الشاشة
من الصعب قليلا أن نراه لكنه يقول 33 الآن
حسناً، وفي خضم كل ذلك سأحاول محاكاته يدوياً
والحصول على بعض المساعدة في تشغيله وتنفيذه على هاتفك
امضي قدماً وحاول معرفة هذا البرنامج هل يفعل ما يفترض القيام به
A continuación, vamos a ver cómo se usan en realidad las variables.
Todos los programas que harás en esta segunda parte van a compilarse,
que quiere decir que el ordenador entenderá el código que le has escrito
y nosotros podremos crear una app.
Aunque los programas se puedan ejecutar en el teléfono,
es posible que no hagan lo que se supone que debían hacer.
A esto se le conoce como errores lógicos.
En un error lógico hay algo mal con la lógica usada para crear un código.
Veamos ahora un programa corto y un ejemplo
y veremos cómo solucionar estos errores.
Este es el ejemplo.
Cada uno de los programas tendrá un objetivo, que aparecerá arriba.
El programa en sí aparecerá en el recuadro verde.
El objetivo de este programa es calcular algo que se llama "la deuda de sueño".
La cantidad de sueño que se necesita depende de la edad,
pero de media, la gente necesita unas ocho horas de sueño por noche.
Este programa calcula la cantidad de deuda de sueño en una semana.
El usuario debe estimar cuánto duerme de media en un día de semana
y cuánto duerme de media en un día en fin de semana.
Aquí suponemos que el usuario duerme cinco horas en un día de semana
y nueve horas en un día de fin de semana.
El código de esta tarea está en el recuadro verde.
Lo primero que tienes que hacer es leer este código
y decidir si se cumple o no con el objetivo.
También debes repasar cada una de las instrucciones del código
y decidir qué es lo que se ve en realidad en la pantalla.
Supongamos que este método se enuncia así,
que las partes donde pone display y que tienen paréntesis y algo en medio
mostrarán el contenido en la pantalla.
Algunos problemas tendrán varios elementos que se deben ver,
así que por eso verás display 1, display 2, display 3...
Si sigues viendo el vídeo, te preguntarás cómo resolver los problemas.
Es la primera vez que interactúas con muchas variables,
con unos valores que pueden cambiar a lo largo del problema.
Voy a hacer el primero contigo para que no te pierdas.
Voy a usar una técnica llamada "simulación manual",
y lo que hace esta técnica es averiguar qué hace el ordenador
pero sin ceñirse solo al ordenador.
Para nosotros es una forma muy organizada de seguir las variables.
Vamos a ir línea por línea, yo lo haré contigo.
En la primera línea veo la declaración de una variable,
voy a escribir el nombre de la variable, que es weekday.
Está iniciada con un valor, que es de cinco,
así que debajo de weekday voy a poner el valor cinco.
Esto representa que la variable weekday tiene un valor de cinco.
Eso era de la primera línea, vamos con la siguiente.
Tenemos una variable que se llama weekend, la voy a escribir.
Y el valor de esa variable es nueve.
Por ahora vamos bien, vamos con la siguiente línea,
que es la declaración y la creación de una instancia
de la variable optimalHours, así que voy a hacer lo mismo.
No voy a escribir el valor 7*8, sino que lo voy a calcular,
porque ese es el valor real de optimalHours.
Hacemos unos cálculos matemáticos,
y 7x8 es igual a 56.
Aquí tenemos otra declaración,
tenemos una variable que se llama actualHours,
lo voy a escribir.
Es lo mismo que el valor de weekday,
es el valor actual de weekday, no el valor pasado o futuro de weekday.
Y sabemos cuál es el valor actual de weekday, lo tenemos aquí,
así que podríamos suponer que es cinco.
Yo voy a asumir que es cinco.
Entonces, int actualHours es igual a cinco,
así que lo voy a escribir también.
Vamos con la siguiente línea.
Vamos a volver a cambiar actualHours
para que sea igual al valor actual de actualHours
más weekend*2.
Aquí pone que el valor actual de actualHours es cinco.
Y el valor actual de weekend es nueve.
Y aquí tenemos una ecuación.
Voy a multiplicar antes de sumar, así que 9x2 es 18
y luego sumo 5.
Y si hacemos cálculos, 18+5 es 23.
Todo esto es igual a 23.
Lo que tengo que hacer es tachar el valor antiguo de actualHours
y escribir el valor nuevo de actualHours.
Muy bien, vamos con la siguiente línea.
Tenemos int solution, que es una variable de declaración,
que es igual a algo, pero antes escribo la palabra solution.
Y solution es igual a optimalHours menos actualHours.
Si venimos aquí, optimalHours es 56,
y actualHours es 23.
No pasa nada si usas calculadora,
yo la he usado antes, y sé que 56-23 es 33.
Bien, nos vamos a la última línea, que dice display (solution).
Así que podemos venir aquí y ver el valor de solution, que es 33,
por lo que mostrará este número, el 33.
Así es como yo, tú o cualquiera puede averiguar qué hace este programa.
Pero la pregunta es: ¿ha hecho lo que debía hacer?
¿Hay algún error lógico?
¿O alguien que duerme cinco horas al día entre semana y nueve el fin de semana
tendrá una deuda de sueño de 33 horas al final de la semana?
Quiero saber qué piensas.
Un apunte rápido: has creado esta app, PracticeSet2.
Vamos a ver cómo puedes meter el código en la app de PracticeSet2,
por si quieres probarlo.
Aconsejo que primero hagas una simulación manual,
para que tu cerebro entienda mejor qué está pasando.
Pero también está bien meter el código en Android Studio y jugar un poco con él.
Te sugiero que copies y pegues el código
para solucionar el problema, lo verás en las notas del profesor,
en el método onCreate,
que es el primer método en MainActivity.
Para que quede muy claro,
así es como vemos onCreate antes de modificarlo,
y ahora podemos pegar el código, tal y como he hecho antes.
La otra cosa que tendrás que copiar y pegar,
que hará que esta línea de código funcione, está...
aquí abajo.
Es este código.
Esto también lo he puesto en las notas del profesor.
Una última cosa que tendrás que hacer
es ir a tu XML
y asegurarte de que en TextView está este ID:
display_text_view.
Y esto debería coincidir exactamente
con lo que aparece aquí.
Si estos dos elementos coinciden cuando ejecutes el código,
verás el valor en la pantalla.
Es un poco difícil de ver, pero se ve un 33.
Y con todo esto, vamos a hacer una simulación manual
y con un poco de ayuda intentar que funcione en el teléfono.
Ahora intenta averiguar si el programa hace lo que debería hacer.
Dans l'ensemble de quizz suivant,
je vais montrer comment les variables sont en fait utilisיes.
Tous les programmes que vous aller faire dans la Partie 2, vont compiler.
ce qui signifie que l'ordinateur peut comprendre le code qui a יtי יcrit
et nous serons en mesure de crיer une app.
Alors que les programmes pourront ךtre lancיs depuis un tיlיphone,
il y a une chance qu'ils ne fassent pas ce qu'יtait le but visי.
C'est quelque chose qu'on appelle erreur logique.
L'erreur logique signifie qu'une chose est erronיe dans la logique
utilisיe pour יcrire le code.
Regardons un programme court
et un scיnario d'exemple et je vais vous guider pour rיsoudre l'un eux.
Ok, voici donc un exemple.
Chacun de ces programmes aura un objectif, qui sera יcrit ici
Le programme en lui-mךme sera dans la boite verte.
Le but de ce programme est de calculer une chose appelיe le dיficit de sommeil.
La quantitי de sommeil nיcessaire varie un peu fonction de l'גge, mais en moyenne
les gens ont besoin d'environ huit heures de sommeil par nuit.
Le but de ce programme, est de calculer le dיficit de sommeil en une semaine.
L'utilisateur de ce programme va estimer son nombre d'heures de sommeil
pour un jour de semaine ordinaire, et pour un jour de week-end.
Pour cet exemple, disons que l'utilisateur dort cinq heures un jour de semaine
et neuf heures pendant le week-end.
Le code pour cette tגche est ici dans la boite verte.
Et la premiטre chose que vous allez essayer de faire, c'est lire ce code, et
dיcider si oui ou non l'objectif a יtי accompli.
Puis ce que vous allez faire, c'est regarder chacun des יnoncיs
qui ont eu lieu dans le code, et dיcider ce qui s'est vraiment affichי א l'יcran.
Disons qu'on utilise ces mיthodes ici, ce qui qui ressemble א de l'affichage et
a des parenthטses et
quelque chose entre, affichera du contenu א l'יcran.
Certains de ces problטmes auront de multiples יlיments de contenus qu'ils
auront א afficher, vous pourriez donc voir display1, display2, display3.
Ok, donc si vous regardez toujours cette vidיo,
vous vous demandez probablement comment rיsoudre ces problטmes.
Ce n'est pas la premiטre fois que vous interagissez avec des variables multiples,
dont les valeurs pourraient changer quelques fois pendant le problטme.
Donc, laissez-moi faire le premier avec vous avant que vous laisse faire.
Je vais utiliser une technique appelיe hand simulation, et ce qu'elle fait
c'est essayer de comprendre ce que l'ordinateur fait,
sans passer uniquement par l'ordinateur.
Pour nous, c'est une maniטre organisיe de garder la trace de qu'il se passe
avec les variables.
Vous allez le faire ligne aprטs ligne alors laissez-moi commencer avec vous.
Dans la premiטre ligne ici je vois la dיclaration d'une variable, donc
Je vais commencer et יcrire le nom de la variable qui est weekday.
Elle est יgalement initialisיe א une valeur qui est 5,
donc sous weekday je vais mettre la valeur 5.
Cela reprיsente que la variable weekday enregistre actuellement 5.
Donc c'יtait la premiטre ligne, je passe maintenant א la deuxiטme ligne.
On a une variable appelיe weekend, donc je vais יcrire חa,
et la valeur de cette variable est 9.
Ok, donc חa a l'air bon, donc,
je vais passer א la ligne suivante qui est une dיclaration et
l'initialisation de la variable optimalHours, je vais donc faire pareil.
Ok, je ne vais pas יcrire la valeur 7*8.
Je vais en fait calculer חa car c'est
ce qui va s'enregistrer dans optimalHours
Donc avec un peu de calcul mental, 7 fois 8 יgal 56.
Ok, on a une autre dיclaration ici.
On a fait une variable appelיe actualHours, je vais donc יcrire חa.
Bien, c'est יgal א la valeur de weekday, et
c'est la valeur actuelle de weekday.
Ce n'est pas une valeur passיe de weekday ou une valeur future de weekday
et on garde la trace de ce qu'est la valeur actuelle de weekday ici.
Et donc je pourrai juste regarder ici et voir 5.
Je devrai donc rיellement envisager cela comme le chiffre 5.
Donc חa dit que actualHours est יgal א 5, donc
Je vais poursuivre et יcrire cela ici.
OK passons א la ligne suivante.
On change א nouveau actualHours pour יgaler la valeur actuelle
de actualHours plus le weekend fois 2.
Donc je peux voir ici, la valeur actuelle de actualHours est 5 et
la valeur actuelle de weekend est 9.
Et maintenant j'ai cette petite יquation ici.
Donc je fais la multiplication avant l'addition, donc
9 fois 2 font 18 et ensuite j'ajoute 5.
Et avec encore un peu de calcul mental, 18 plus 5 font 23.
Ok, dont le total fait 23.
Et ce que je dois faire, c'est rayer l'ancienne valeur d'actualHours, et
יcrire la nouvelle valeur d'actualHours.
Ok, donc c'est fait.
Passons א la ligne suivante.
On a eu une solution, donc c'est une dיclaration de variable.
Et חa a יtי dיfini comme יgal א quelque chose, mais
je vais יcrire le mot solution en premier.
Et la solution est יgale א optimalHours moins actualHours.
Donc allons-y, optimalHours est א 56 et actualHours א 23.
ְ prיsent vous pouvez utiliser une calculette.
Je l'ai fait plus tפt et je sais que 56 moins 23 font 33.
Ok, passons א la suite et
la ligne finale qui affiche la solution.
Donc, nous pouvons regarder ici et trouver la valeur de solution, qui est 33.
Donc חa va afficher le chiffre 33.
C'est donc ainsi que je, ou vous, ou
tout personne pourrait comprendre ce que ce programme vient de faire.
Mais la vraie question est, a-t-il fait la bonne chose?
Y-a-t-il une erreur de logique quelque part, ou
quelqu'un qui dort cinq heures en semaine et neuf heures le weekend
aura-t-il trentre-trois heures de dיficit de sommeil א la fin de la semaine ?
Et je veux savoir ce que vous en pensez.
Petite note א part, vous avez donc crיי cet ensemble pratique pour app, donc
je vais juste vous montrer comment vous pourriez mettre le code en pratique
pour l'app si vous vouliez la tester.
Je recommande fortement la simulation en premier
parce que חa permettra א votre cerveau de mieux saisir ce qu'il se passe.
Mais il faut aussi que cela permette de mettre le code dans Android Studio et
de jouer un peu avec.
Donc ma suggestion c'est de faire un copier coller du code pour le problטme,
fourni dans les notes d'instruction, dans la mיthode onCreate.
C'est la 1טre mיthode que vous verrez dans votre classe d'activitי principale.
Ok, juste pour ךtre vraiment clair, voici ce א quoi votre onCreate ressemble
avant d'ךtre modifiי, et vous pouvez coller le code, comme je l'ai fait.
Ok, l'autre chose que vous allez devoir copier et coller
qui fera fonctionner cette ligne de code, est juste ici.
C'est ce code, et je l'ai aussi ajoutי dans les notes de l'instructeur.
La derniטre chose que vous aurez א faire c'est d'aller dans votre XML, et
de vous assurer que votre textview ait un Id/display_text_view,
et cela devrait exactement correspondre א ce qui est montrי ici.
Tant que ces deux choses correspondent lorsque vous lancez ce
code, vous obtiendrez la valeur affichיe א l'יcran.
C'est un peu difficile א voir mais il y a יcrit 33 juste lא.
Ok, et avec tout חa, je vais ensuite essayer de simuler א la main
un peu d'aide et de le faire fonctionner sur votre tיlיphone.
Essayer de voir si ce programme fait effectivement ce qu'il doit faire.
Pada kuis berikutnya,
saya akan menunjukkan cara menggunakan variabel yang sebenarnya.
Semua program yang akan kau kerjakan di bagian dua, akan digabungkan.
Itu artinya komputer dapat memahami kode yang telah ditulis pada komputer
dan kita dapat membuat aplikasi.
Sementara program tersebut dapat dijalankan pada ponsel,
ada kalanya program tidak dapat berjalan seperti yang dikehendaki.
Inilah yang disebut dengan kesalahan logis.
Kesalahan logis menunjukkan ada yang salah
dengan logika yang digunakan dalam menulis kode.
Mari kita periksa satu program pendek dan skenario contoh
dan saya akan memandumu dalam menyelesaikan masalah ini.
Oke, ini contohnya.
Setiap program ini memiliki tujuan, yang akan ditulis di sini.
Program itu sendiri ada di dalam kotak hijau.
Oke, tujuan program ini adalah untuk menghitung yang kita sebut utang tidur.
Tidur yang kauperlukan sedikit banyak dipengaruhi oleh usia,
tapi rata-rata orang dewasa membutuhkan sekitar 8 jam di malam hari.
Apa yang ingin dicoba dalam program ini adalah hitung utang tidur dalam 1 minggu.
Pengguna program akan memulai dan mengira-ngira berapa jam mereka tidur
pada rata-rata hari kerja, dan berapa jam pada akhir pekan.
Pada contoh ini, anggaplah seorang pengguna tidur lima jam pada hari kerja
dan sembilan jam pada akhir pekan.
Kode untuk tugas ini ada di kotak hijau.
Hal pertama yang harus kaulakukan adalah membaca seluruh kode dan
memutuskan apakah tujuan tercapai atau tidak.
Kau juga perlu memeriksa setiap pernyataan yang ditemukan pada kode
dan memastikan apa yang sebenarnya ditampilkan pada layar.
Anggaplah metode yang disampaikan di sini,
sesuatu seperti layar dan memiliki tanda kurung
dan ada sesuatu di antaranya, akan menampilkan konten ke layar.
Beberapa masalah ini memiliki beberapa potong konten yang akan ditampilkan,
jadi kau akan melihat layar1, layar2, layar3.
Oke, jika masih menonton video ini,
kau mungkin bertanya-tanya tentang cara menyelesaikan masalah ini.
Ini bukan kali pertama kau berinteraksi dengan beberapa variabel,
yang nilainya dapat berubah beberapa kali selama masalah masih ada.
Saya akan selesaikan masalah pertama sebelum biarkan kau mencobanya.
Saya akan memakai teknik yang disebut simulasi tangan dan mengapa teknik ini
dilibatkan adalah untuk coba memahami apa yang akan diproses komputer,
tanpa terpaku pada komputer.
Bagi kami, ini cara yang terorganisasi
untuk terus mengetahui apa yang terjadi pada variabel.
Kita akan membahasnya baris demi baris,
saya akan membahasnya denganmu.
Pada baris pertama di sini, ada pernyataan variabel,
jadi saya akan menulis nama variabel tersebut, yaitu weekday.
Pernyataan ini juga diinisialisasi dengan angka, yaitu 5,
sehingga di bawah weekday, saya akan menulis nilai 5.
Nilai ini menerangkan bahwa variabel weekday saat ini menyimpan angka lima.
Oke, jadi itu baris pertama, saya lanjutkan ke baris berikutnya.
Kita punya variabel weekend, jadi saya juga akan menulisnya,
dan nilai untuk variabelnya adalah sembilan.
Oke, kelihatannya bagus,
saya lanjutkan ke baris berikutnya yang berupa pernyataan dan
inisiasi variabel optimalHours, jadi saya akan menuliskannya juga.
Oke, di sini saya tidak akan menuliskan nilai 7*8.
Saya sebenarnya akan menghitungnya
itulah yang akan tertulis di optimalHours.
Jadi, dengan secuil ingatan matematika, 7 dikali 8 sama dengan 56.
Oke, kita punya pernyataan lain di sini.
Kita buat variabel actualHours, jadi saya akan menulisnya juga.
Nilainya sama dengan nilai weekday,
dan menjadi nilai weekday saat ini.
Ini bukan nilai weekday yang lalu atau nilai weekday yang akan datang.
Sekarang, kita sudah mengetahui nilai weekday saat ini di sini.
Jadi, bisa saya lihat di sini ada nilai lima.
Maka, saya benar-benar berpikir bahwa nilai ini sebagai angka lima.
Dikatakan di sini actualHours sama dengan lima,
sehingga saya akan melanjutkan dan menuliskannya di sana.
Oke, sekarang kita pindah ke baris berikutnya.
Jadi sekarang kita mengubah actualHours sekali lagi
menjadi sama dengan nilai
actualHours saat ini ditambah weekend dikali dua.
Bisa saya lihat di sini, nilai actualHours saat ini adalah lima
dan nilai weekend saat ini sembilan.
Maka kita punya sedikit persamaan di sini.
Jadi, saya menghitung perkalian sebelum penjumlahan,
maka sembilan dikali dua sama dengan 18, kemudian ditambah lima.
Dengan sedikit ingatan matematika lagi, 18 ditambah lima sama dengan 23.
Oke, jadi hasil perhitungan sama dengan 23.
Lalu, saya perlu mencoret nilai actualHours yang lama,
dan menulis nilai actualHours yang baru.
Oke, selesai. Baris berikutnya.
Kita punya soluisnya jadi itulah pernyataan variabel.
Pernyataan ini dibuat sama dengan sesuatu,
tapi saya menulis kata solusi terlebih dahulu.
Solusi sama dengan optimalHours dikurangi actualHours.
Lihat ke sini, optimalHours 56 dan actualHours 23.
Tidak masalah jika menggunakan kalkulator,
saya sudah menghitungnya tadi dan saya tahu 56 dikurangi 23 sama dengan 33.
Oke, pindah ke baris berikutnya dan yang terakhir, yaitu layar solusi.
Bisa kita lihat di sini bahwa nilai solusinya adalah 33.
Maka nilai yang ditunjukkan nanti adalah angka 33.
Oleh karena itu, saya, atau dirimu, atau siapa pun,
dapat mengetahui apa yang baru saja dijalankan program ini.
Tapi pertanyaan sebenarnya adalah, apakah beroperasi dengan benar?
Adakah kesalahan logis di suatu tempat di sini,
atau apa seseorang yang tidur 5 jam pada hari aktif dan 9 jam di akhir pekan,
akan memiliki 33 jam utang tidur pada akhir minggu.
Saya mau apa yang kaupikirkan.
Oke, catatan pendek. Kau sudah mengerjakan paket latihan ke aplikasi,
saya hanya ingin menunjukkan bahwa kau bisa memasukkan kode
ke dalam latihan jika kau ingin mencobanya.
Saya sarankan simulasi tangan terlebih dahulu,
karena cara ini membuatmu lebih mudah untuk mengerti.
Tapi bisa juga memasukkan kode ini ke Android Studio dan sedikit mainkannya.
Jadi, saran saya adalah salin dan tempel kode untuk masalah ini,
yang akan disediakan di catatan instruktur ke metode onCreate.
Itulah metode pertama yang akan kau lihat di kelas MainActivity hari ini.
Oke, agar lebih jelas, akan seperti inilah onCreate nanti sebelum kode diubah
kemudian kau dapat menempelkan kodenya seperti yang sudah saya lakukan.
Oke, kode lain yang perlu kau salin dan tempel,
yang akan menghasilkan baris kerja kode, ada di bawah di sini.
Inilah kode itu, dan saya juga telah menyertakannya di catatan instruktur.
Terakhir yang perlu kaulakukan adalah membuka XML,
dan pastikan tampilan teks memuat Id/display_text_view,
dan bagian ini semestinya sama persis dengan yang terlihat di sini.
Oke, selama kode dan tampilan teks cocok saat menjalankan kode ini,
kau akan dapat nilai seperti yang tertulis di layar.
Memang sedikit sulit melihatnya, tapi ada angka 33 di sana.
Oke, sudah semuanya, sekarang saya akan mencoba simulasi tangan
dan membantu menjalankannya di ponselmu.
Lanjutkan, coba pahami apakah program ini dapat beroperasi sesuai harapan.
これからの一連のクイズで
変数の使い方をお見せします
パート 2 で行うプログラムは 全てコンパイルになるでしょう
つまり パソコンが書かれているコードを 理解することができ―
アプリを作成できるということです
プログラムがスマホで 実行出来ようになるまでの間は―
予定された目標を 達成しない事があるかもしれません
それはいわゆる「ロジカルエラー」です
ロジカルエラーとは コードを作るに使われたロジックに
何か間違いがあることを意味します
短いプログラムとシナリオの例を見て―
そのうちの 1 つを 一緒に解決していきましょう
ここに 1 つの例があります
それぞれのプログラムに目標があり ここに書きだされています
そのプログラム自体は この緑の枠内にあります
このプログラムの目標は 「睡眠不足」というものを計算することです
必要となる睡眠量は年齢によって 若干変わりますが
平均では一晩に 8 時間の睡眠が必要です
ですので このプログラムは 1 週間分の 睡眠不足を計算しようというものです
プログラムのユーザーは 平日と週末の平均睡眠時間の―
概算をすることになっています
この場合 ユーザーの睡眠は 平日 5 時間で 週末 9 時間だと―
仮定しています
このタスクのコードは この緑枠の中です
まず最初にすることは このコードを解読して―
目標が達成できたか否かを 見極めることです
コード内のステートメントを 1 つずつやってみて―
実際にスクリーン上に表示される 状態を見極めます
ここで呼び出されるメソッドには
displayと括弧内の要素があり
スクリーン上にこれを表示すると 予想されます
これらの問題では 複数の表示があり
display1, display2, display3等が 見られるでしょう
このビデオを見続けていると
問題の 1 つくらい 解決方法を 知りたいと思うでしょう
複数の変数の情報交換するのは これが最初ではありません
変数はこの問題に取り組んでいる間 何度か値が変わるかもしれません
では 取り組んでもらう前に 最初の問題を一緒に解いてみましょう
今回は「ハンドシミュレーション」 という技術を使っていきます
この技術はパソコンからいったん離れて―
パソコンが実行しているモノを 把握する試みです
これは変数がどうなるかを追跡するのに―
本当に効率的な方法なのです
では 一行ずつ行きます ここからいきますよ
一行目は変数の宣言ですので
変数の名前を書き入れます 「weekday （平日） 」ですね
この初期の値は 5 ですので
「 weekday 」の下に値の「 5 」を入れます
これは「平日の値が現在 5 である」 と言うことを表しています
一行目は終わりました 次の行へ移ります
「weekend （週末） 」という変数が ありますので 書きだします
その変数の値は 9 です
良さそうですね
次の行に行きます これは変数 「 optimalHours （理想的睡眠時間）」の―
宣言と具現化ですので 同じことをやります
よし でも値を「 7*8 」とはしません
実際に計算して値を出します
なぜなら それがoptimalHours の中に 保存されるからです
では 暗算で 7 × 8 ＝56
いいですね もう 1 つ ここに宣言があります
「 actualHours （実際の睡眠時間）」 という変数を作りますので 書きだします
これは weekday の値と同じです
ちなみに 現在の weekday の値です
過去や未来の weekday の値ではありません
現在の weekday の値を追跡しているのは こちらにありますね
これを確認すると 5 です
なので これは数字の 5 となるはずです
「 int actualHours = 5 」となるので―
こっちにそう書いていきます
OK 次の行です
再び actualHours を変更します
現在の actualHours の値 + weekend の値 × 2
こちらを見ると 現在の actualHours の値は 5
現在の weekend の値は 9 となっています
そして ここに小さな方程式があります
掛け算を足し算の前にするので
9 × 2 = 18 そこに 5 を足します
暗算すると 18 + 5 = 23
この答えは 23 ですね
そうしたら actualHours の 古い値を消していく必要があります
そして 新しい値を書きます
よし 終わりました
次の行へ行きます
「 int solution （ 整数の解答）」とあるので これは変数の宣言ですね
そして これは何かと 等しくなっているのですが
言葉の solution を先に書きます
solution = optimalHours - actualHours ですので
optimalHours は 56 で actualHours は 23 です
さあ 電卓を使ってもいいです
簡単ですね 56 - 23 = 33
OK そして 次の行
最後の行は「 display(solution)」 表示（解答）です
solution は 33 ですね
ですから「 33 」と表示されることになります
さて これが
プログラムの実行をすることを 見つける方法です
しかし 正しいことをしたか？ という疑問が実際のところありますね
ロジカルエラーが このどこかにあるんじゃないか？
「誰かが平日に 5 時間寝て 週末は9時間寝ると
その週の終わりには 33 時間の 睡眠不足になる？」
どう思いますか？ 知りたいですね
では やってみましょう 今 この実践セット2 のアプリを作りました
これを試すために このコードをこの実践セット 2 に
入力する方法もお見せします
まずは ハンドシミュレーションを することをお勧めします
なぜならどうなるかを よりよく把握することができるからです
でも このコードを AndroidStudio に入れて―
試してみることも有益です
お勧めは インストラクターノートにある 問題のあるコードを―
コピー & ペーストして onCreate メソッドに入れることです
これが MainActivity クラスの 最初にあるメソッドです
見ていてください ここに変更前の onCreate があります
そこへ この様に コードを貼り付けました
次にコピー & ペーストが必要なのは
このコードが機能するに必要な物で 下の方に行って このコードです
この部分を入れてコピーします
最後に必要なのは XMLに行って―
TextView に「 id/display_text_view 」 があるかを確認します
これが完全にこの部分に 一致しているかを確認してください
この 2 つが一致している限り このコードを実行すれば―
スクリーン上に値が表示されます
見えにくいですが こちらに「 33 」とあります
いいですね これで終わりです
ハンドシミュレーションを行い 作り方と実行の仕方も一緒にやりました
では引き続きプログラムの実行事項を 理解していきましょう
다음 퀴즈에서는,
저는 변수가 실제로 어떻게 작용하는지 보여드리고자 합니다.
모든 프로그램은 파트 2에서 사용된 것을 사용합니다.
컴퓨터는 작성된 코드를 이해한다는 것이며
그리고 우리는 앱을 제작할 수 있습니다.
이제, 프로그램은 휴대전화에서 사용할 수 있으며,
아마도 목표를 설정하는데 기회를 잘못 설정할 때가 있습니다.
이는 논리적 오류라고 알려져 있습니다.
논리적 오류는 논리에 오류가 있으며
개발자가 작성한 오류를 살펴봐야 합니다.
짧은 프로그램을 확인하고
예시안을 확인하고 이 문제 중 한가지를 어떻게 해결하는지 알려드리겠습니다.
좋습니다, 여기 예시가 있습니다.
이 프로그램들은 이미 작성된 목표가 있습니다.
프로그램은 녹색 칸에 있습니다.
좋습니다, 이 프로그램의 목표는 수면 빚으로 계산되어집니다.
이제, 나이별로 얼마나 많은 잠을 자는지
사람은 기본적으로 8시간을 수면을 취해야합니다.
이제 프로그램은 수면 빚을 한주에 계산하는 것입니다.
프로그램 사용자는 더 나아가 그들이 얼마나 수면을 취해야하는지
주별로 평균을 예상하고 얼마나 평일에 수면을 취하는지 평균을 구합니다.
이 예시에서, 우리는 사용자들이 평일에는 5시간을 자며
주말에는 9시간을 자는 것을 알 수 있습니다.
이 작업의 코드는 녹색 박스에 있습니다.
그리고 첫번째 당신이 시도해야하는것은 코드를 전체적으로 읽고
목표가 성공할지 안할지 결정하는 것입니다.
그리고 우리가 각 구문에서 할 수 있는 것은
코드를 작용하고 어떤 것이 실제로 화면에 보여지는지 결정하는 것입니다.
이방법을 가정하여 화면에 보이고
괄호를 표시하고
사이에 보이고자 하는 사항을 입력합니다.
이제, 몇가지 문제가 항목에서 여러 부분에서 발생할 것입니다.
이는 보여주는데, 화면 1, 화면 2, 화면 3에 보여질 것입니다.
만약 비디오를 보는데,
당신이 아마도 이 문제를 어떻게 해결해야하는지 궁금해 할지도 모릅니다.
이는 다양한 변수를 다루는데 첫번째가 아닙니다.
위의 값은 몇가지 변수를 이용하여 문제를 해결할 수 있습니다.
첫번째 변수를 당신이 잃기전에 시도해보겠습니다.
이제, 저는 방법 중 하나인 손 시뮬레이터를 사용하겠습니다. 이 방법은
어떤 컴퓨터가 사용되는지 알아내고,
컴퓨터에 연결하는 장치를 이용할 필요가 없습니다.
저희에게는 어떤일이 일어나는지 지속적으로 추적할 수 있게
돕는 변수이죠.
이제, 당신은 한줄씩 같이 살펴볼텐데요.
첫번째 줄에서 저는 변수를 확인할 수 있습니다
저는 앞서나가 변수의 이름을 평일이라고 입력하겠습니다.
이는 또한 값이 5로 설정되며,
평일과 같이 저는 값 5로 입력하겠습니다.
이는 평일이 주 5일이라는 변수를 표현합니다.
좋습니다, 그렇다면 첫줄에서 저는 다음 줄로 이동하겠습니다.
저희는 평일이라는 변수를 확인했으며 이제 적어나가겠습니다,
그리고 변수의 값은 9입니다.
좋습니다, 보기 좋네요 그리고
저는 다음 줄로 넘어가 발견 및
변수의 예시화인 optimalHours, 즉 같은 것을 할 것입니다.
좋습니다, 이제 7*8이라는 값을 적지 않을 것입니다.
저는 실제로 이것을 계산할 것입니다 왜냐하면
이는 optimalHours에 저장되는 사항이기 때문입니다.
그리고 암산으로 7곱하기 8은 56입니다.
좋습니다, 다른 발견사항이 있습니다.
저희는 actualHours라고 불리는 변수를 만듭니다. 적겠습니다.
이제 이 값은 평일의 값과 동등하며
이는 평일의 현재 값입니다.
이는 과거의 평일 값이 아니며 미래의 값이 아닙니다.
이제 우리는 어떤 현재 값이 있는지 확인해보겠습니다.
그리고 어떤 값을 확인하고 이것이 5인지 보겠습니다.
그리고 저는 숫자 5라고 생각하고 있습니다.
그리고 이는 actualHours에서 5이며, 그래서
저는 앞서나가 이곳에 적겠습니다.
다음 칸으로 이동할까요
그리고 이제 우리는 실제 시간을 현재 값과 같게 변경합니다.
actualHours 더하기 주말 곱하기 2.
이제 여기를 보시면, 현재 actualHours의 값은 5 이고
현재 주말의 값은 9입니다.
그리고 지금 저희는 작은 계산이 있습니다.
그래서, 저는 곱셈을 하여 더하기를 시작하는데요,
9 곱하기 2 i는 18 그리고 5를 더합니다.
그리고 암산을 하자면 18 더하기 5는 23입니다.
이 값은 23입니다.
그리고 어떤 값을 지우고 오래된 시간을 지우면
새로운 실제 시간을 적습니다.
좋습니다. 거의 완료되었습니다.
다음 줄로 이동하죠.
우리는 n 해결을 했으며, 변수 확인을 해야합니다.
그리고 이는 무엇과 일치하지만
저는 적어서 해결책을 먼저 적겠습니다.
그리고 해결은 표준 시간 빼기 현재 시간입니다.
그래서 여기서 해보면, 표준 시간은 56 그리고 현재 시간은 23입니다.
이제 계산기를 사용하셔도 됩니다.
이는 이전에도 계산했는데요 저는 56 빼기 23이 33이라는 것을 알고 있습니다.
좋습니다. 다음으로 이동하면,
해결책을 보여주는 마지막 단계입니다.
그래서, 저희는 여기를 보고 어떤 값이 해결책인지 알 수 있습니다. 33입니다.
그래서 33이 표시되어집니다.
그래서 어떻게 저 혹은 당신 혹은
어느 누구나 프로그램 값을 찾을 수 있는 것입니다.
하지만 이 실제 문제들은 제대로 이행되어진 것일까요?
이는 논리적인 문제가 어딘가에 존재하거나
누군가가 평일에 5시간을 자고 주말에 9시간을 자는데
33시간이라는 수면 빚이 한주마다 생기는 것일까요?
그리고 당신이 생각하는 것을 알고자 합니다.
좋습니다, 빠르게 당신은 연습 세트 2 앱을 만들고
어떻게 코드를 연습에 삽입하는지 보여드리겠습니다.
세트 2 앱은 당신이 시험해 보기를 원한다면 진행하세요.
저는 시뮬레이팅을 해보는 것을 강력히 추천하며,
이는 당신의 뇌가 더 많은 활동을 할 수 있게 돕습니다.
하지만 이는 안드로이드 스튜디오에 코드를 입력하고
조금 쉬다 갈 수 있게 해줍니다.
그래서 제 제안은 당신이 복사하고 문제에 코드를 붙여넣기 하면,
이는onCreate 방법에 사용되어지는 것입니다.
당신이 주요 활동에서 볼 수 있는 이것이 저의 첫번째 방법입니다.
좋습니다, 완벽하게 정리하기 위해, 여기 당신의 onCreate 모습이
있습니다. 당신이 코드를 붙여넣기 할 수 있습니다.
좋습니다, 한가지 더, 당신은 복사하고 붙여넣기를,
이 코드 작업에 있어서 아래에 시행합니다.
이 코드에서, 그리고 저는 강의안을 포함하였습니다.
이 최종 목표는 당신이 당신의 XML에 해야하는 사항을 포함하고
당신의 텍스트를 Id/display_text_view로 설정하고,
이는 정확하게 이곳과 일치하여야 합니다.
이 두가지 사항이 일치하면 당신이 이것을 실행할 때,
코드는, 당신이 화면에 보여주고자 하는 값을 가지고 있습니다.
이는 보기 어렵지만 33이라고 적혀있습니다.
좋습니다, 이 모든 값으로 저는 핸드 시뮬레이트와
다른 정보를 시험했으며 당신의 휴대전화로 시험해보았습니다.
이제 나아가서 이 프로그램이 제대로 작동하는지 한번 시도해보세요.
No próximo grupo de testes
vou mostrar para você como variáveis são usadas.
Todos os programas que você está prestes a fazer na parte 2 serão compilados.
O que significa que o computador pode entender o código escrito
para ele, e seremos capazes de criar um aplicativo.
Ao passo que os programas poderão rodar no telefone,
há uma chance de que eles não façam aquilo que pretendíamos.
Isto é algo conhecido como erro lógico.
Um erro lógico significa que há algo errado com a lógica que você
usou para escrever o código.
Vejamos um programa curto e
um cenário exemplo e eu vou guiá-lo na solução de um destes erros.
Aqui está um exemplo.
Cada um destes programas tem um objetivo, que será escrito aqui.
O programa em si estará dentro da caixa verde.
O objetivo deste programa é calcular algo chamado Débito de Sono.
O tempo de sono necessário varia um pouco com a idade, mas na média
pessoas precisam cerca de 8 horas de sono por noite.
Portanto o que este programa tenta fazer é calcular o débito de sono numa semana.
O usuário do programa vai estimar o quanto ele dorme num dia de semana
normal e o quanto ele dorme num dia de fim de semana normal.
Para este exemplo, presumimos que o usuário dorme 5 horas em dias de semana
e 9 horas no fim de semana.
O código para esta tarefa está na caixa verde.
E a primeira coisa que você vai tentar fazer é ler o código e
decidir se o objetivo foi alcançado ou não.
Daí o que você também vai fazer é passar por cada declaração que
ocorreu no código e decidir o que foi exibido de fato na tela.
Presuma que estas chamadas de método aqui, coisas que se parecem com display e
têm parênteses e
algo entre eles, exibirão conteúdo na tela.
Alguns destes problemas terão muitas partes de conteúdos que precisam
exibir, portanto você pode ver display1, display2, display3.
Se você ainda estiver vendo este vídeo,
você está provavelmente imaginando como resolver algum destes problemas.
Esta não é a primeira vez que você interage com múltiplas variáveis,
cujos valores podem mudar algumas vezes durante o problema.
Então deixe-me fazer o primeiro com você antes de liberá-lo
Agora vou usar uma técnica chamada simulação manual e o que esta técnica
envolve é tentar descobrir o que o computador está fazendo, mas
sem ficar preso ao computador.
Para nós é apenas uma maneira organizada de acompanhar o que se passa com
as variáveis.
Agora você vai linha por linha. Deixe-me começar com você.
Na primeira linha eu vejo a declaração de uma variável, assim
vou escrever o nome da variável, que é weekday [dia de semana].
Ela também é inicializada com um valor, que é 5,
portanto abaixo de weekday colocarei o valor 5.
Isto representa que a variável weekday agora armazena 5.
Esta foi a primeira linha. Vou para a próxima linha.
Há variável chamada weekend [fim de semana], então escreverei isso,
e o valor da variável é 9.
Parece bom, portanto
vou para a próxima linha, que é uma declaração e
instanciação da variável optimalHours [horas ótimas], então farei o mesmo.
Não escreverei o valor 7*8.
Calcularei isso pois é isso
que fica armazenado em optimalHours
Assim, com um pouco de matemática mental, 7 vezes 8 é igual a 56.
Certo. Temos outra declaração aqui.
Criamos uma variável chamada actualHours [horas de fato], portanto escrevemos isso.
Bem, é igual ao valor de weekday, e
este é o valor atual de weekday.
Não é algum valor passado ou futuro de weekday.
Estamos acompanhando qual o valor atual de weekday aqui.
Portanto posso apenas olhar aqui e ver que é 5.
Portanto devo pensar sobre isso como sendo o número 5.
Ele está dizendo int actualHours é igual a 5.
Vou escrever isso aqui.
Certo. Vamos para a próxima linha.
Então agora mudamos actualHours de novo para ser igual ao valor atual de
actualHours mais weekend vezes 2.
Posso olhar aqui. O valor atual de actualHours é 5 e
o valor atual de weekend é 9.
E agora eu tenho esta pequena equação aqui.
Eu faço a multiplicação antes da adição, portanto
9 vezes 2 é 18, e então eu somo 5.
E com um pouco mais de matemática mental, 18 mais 5 é 23.
Então isso é igual a 23.
E o que tenho que fazer é cortar o valor antigo de actualHours e
escrever o novo valor de actualHours.
Certo. Está feito.
Vamos para a próxima linha.
Temos int solution, portanto esta é uma declaração de variável.
E ela está sendo igual a algo, mas
escreverei a palavra solution [solução] antes.
E solution é igual a optimalHours menos actualHours.
Vamos para cá. optimalHours é 56, e actualHours é 23.
Tudo bem usar a calculadora.
Eu fiz isso antes e sei que 56 menos 23 é 33.
Então seguimos para a próxima e
última linha, que diz display (solution).
Podemos olhar aqui para ver qual o valor de solution, que é 33.
Portanto ele exibirá o número 33.
É assim que eu, ou você, ou
qualquer pessoa pode descobrir o que este programa acabou de fazer.
Mas a questão real é: ele fez a coisa certa?
Há um erro lógico em algum lugar aqui ou
alguém que dorme 5h por noite em dias de semana e 9h nos finais de semana
terá um débito de sono de 33h ao final de uma semana?
Quero saber o que você acha.
Só um aparte, agora que você criou este aplicativo do Conjunto de Prática 2,
eu só vou mostrar como você poderia também colocar o código dentro do
Conjunto de Prática 2 se você quisesse testá-lo.
Recomendo muito testar manualmente primeiro
pois isso dará ao seu cérebro uma noção melhor do que está acontecendo.
Mas também é bom poder por o código no Android Studio e
brincar um pouco com ele.
Sugiro que você copie e cole o código do problema,
que será fornecido nas notas do instrutor, dentro do método onCreate.
Este é o primeiro método que você verá aqui no seu MainActivity class.
Só para ficar bem claro, é assim que seu onCreate se parece
antes de ser modificado, e então você pode colar o código, como eu fiz.
A outra coisa que você precisará copiar e colar,
que fará esta linha de código funcionar, está aqui embaixo.
É este código, e eu também o incluí nas notas do instrutor.
A última coisa que você precisará fazer é ir ao seu XML, e
certificar-se de que seu TextView tenha um id display_text_view,
que deve ser exatamente como o que é mostrado aqui.
Contanto que estas duas coisas estejam certas quando você rodar este
código, você terá o valor exibido na tela.
É um pouco difícil de ver, mas diz 33 aqui.
E com tudo isso, o conhecimento que teve ao simular manualmente e
alguma ajuda para fazer funcionar no seu telefone,
siga em frente e tente descobrir: este programa está fazendo o que deveria?
В следующем наборе тестов, —
Я покажу тебе, как в действительности используются переменные.
Все программы, которые ты будешь писать в части 2, будут компилироваться.
Это означает, что компьютер может понять написанный для него код, —
а мы можем создать приложение.
Ок, хотя программы и могут запускаться на телефоне, —
есть риск, что они, возможно, делают не то, что требуется по условию задачи.
В таком случае говорят, что в программе есть логическая ошибка.
Логическая ошибка означает, что в логике, в соответствии с которой ты писал код, —
есть ошибка.
Давай посмотрим на небольшую программу —
и на пример сценария и я покажу тебе, как нужно решить одну из таких проблем.
Вот этот пример.
У каждой программы будет своя цель, которая записывается здесь.
Сама программа находится в зеленом блоке.
Итак, цель этой программы – посчитать что-то, что называется «дефицит сна».
Сколько нужно времени для сна, немного зависит от возраста, но в среднем, —
людям надо около восьми часов ночного сна.
Что эта программа пытается сделать – это посчитать дефицит сна за одну неделю.
Пользователи программы могут указать, сколько они спят в среднем —
в будние дни и сколько – на выходных.
Для примера, мы предположим, что пользо- ватель спит по пять часов в будний день —
и по девять часов - на выходных.
Код для этого задания находится здесь, в зеленом блоке.
Первое, что тебе надо сделать – прочитать код и —
понять, достигает ли он цели.
Затем надо проанализировать каждое выражение, —
которое есть в коде, и понять, что на самом деле будет выведено на экран.
Допустим, этот метод вызывается здесь, такие выражения со словом display, с —
круглыми скобками и —
чем-либо в скобках, выводят содержимое скобок на экран.
В некоторых задачах будет по нескольку кусочков контента для —
вывода на экран, тогда ты, возможно, увидишь display1, display2, display3.
Ок, если ты ещё смотришь это видео, —
ты, наверное, думаешь, как же решить одну из этих задач.
Ты уже не первый раз имеешь дело с несколькими переменными, —
значения которых могут меняться по несколько раз в тексте программы.
Давай я сделаю первую задачу с тобой, а уже потом ты будешь делать их сам.
Я буду использовать прием, называемый ручным моделированием, и суть его —
состоит в том, чтобы попытаться понять, что делает компьютер, но —
не в том смысле, чтобы неотрывно следить за компьютером. 42 00:02:03,090 --> 00:02:06,230 Нам нужно просто проследить за тем, что происходит с —
переменными.
Ок, теперь надо пройти строку за строкой, давай я начну вместе с тобой.
В первой строке здесь, я вижу, объявляется переменная, поэтому —
я запишу имя переменной, weekday.
Она также инициализируется значением 5, —
поэтому под weekday я записываю 5.
Это показывает, что сейчас в переменной weekday лежит 5.
Ок, это была первая строка, переходим к следующей.
Тут у нас переменная weekend, я записываю её, —
и значение этой переменной – 9.
Выглядит неплохо, —
я перехожу к следующей строке, которая является объявлением и —
инстанциированием переменной optimalHours, здесь я сделаю то же самое.
Но я не буду записывать значение 7*8.
Я вычислю результат этого выражения, потому что именно результат —
записывается в переменную optimalHours.
Вычислим немного в уме, 7 умножить на 8 – будет 56.
Здесь у нас ещё одно объявление.
Мы создаем переменную actualHours, записываю её тоже.
Так, она равна значению weekday, —
текущему значению переменной weekday.
Это не какое-то прошлое значение weekday или будущее.
А следим мы за текущим значением weekday здесь.
И я могу просто посмотреть и увидеть, что это - 5.
Поэтому я могу просто считать, что это число 5.
И, фактически, тут сказано int actualHours равно 5, поэтому —
я записываю это значение здесь.
Переходим к следующей строке.
Мы присваиваем actualHours новое значение, равное текущему значению —
actualHours плюс weekend умноженное на 2.
Текущее значение actualHours я могу посмотреть здесь – это 5, а —
текущее значение weekend – 9.
Получаем небольшое выражение.
Умножение я делаю перед сложением, —
9 умножить на 2 – это 18, и плюс 5.
И ещё немного расчетов в уме, 18 плюс 5 – это 23.
В итоге получаем 23.
Что мне сейчас нужно сделать – это зачеркнуть старое значение actualHours и
записать её новое значение.
Ок, сделано.
Переходим к следующей строке.
Мы видим int solution, это объявление переменной.
И ей присваивается какое-то значение, но —
сначала я записываю слово solution.
А равно оно разнице optimalHours и actualHours.
Идем сюда, optimalHours равно 56, а actualHours – 23, —
Можешь воспользоваться калькулятором, —
А я посчитаю быстрее тебя, я знаю, что 56 минус 23 – это 33.
Ок, идем дальше и —
в последней строке видим display(solution).
Смотрим сюда и видим, что значение solution – 33.
Значит, на экран будет выведено число 33.
Значит, вот так я, или ты, или —
кто угодно может понять, что эта программа только что сделала.
Но вопрос в другом, сделала ли она все так, как надо?
Нет ли логической ошибки где-нибудь здесь или —
может ли быть такое, что если человек спит по пять часов в будние дни и по девять —
часов по выходным, то он получит тридцать три часа дефицита сна к концу недели.
И я хочу знать, что ты думаешь об этом.
Ок, небольшое отступление, сейчас ты добавил это упражнение в приложение и —
я хочу показать тебе, как ещё ты мог бы добавить код из упражнения —
в приложение, если бы захотел протестировать его.
Я настоятельно рекомендую сначала выполнять ручное моделирование, —
потому что оно дает тебе лучшее понимание того, что происходит.
Хорошо также уметь открыть код в Андроид Студия и —
позапускать его немного.
Поэтому я предлагаю копировать код из задания, —
который дается в заметках инструктора, и вставлять в метод onCreate.
Это первый метод, который ты будешь видеть в классе MainActivity здесь.
Давай ещё раз для ясности, вот так твой метод onCreate выглядит —
до изменений, и в него ты можешь вставить код, как это сделала я.
Ок, что ещё тебе надо будет скопировать и вставить,
без чего эта строка кода не будет работать – находится здесь.
Вот этот код, и я также добавила его в заметки инструктора.
И последнее, что тебе нужно будет сделать – это перейти в файл XML и —
убедиться, что в твоей текстовой вьюшке есть Id/display_text_view, —
и это должно в точности совпадать с тем, что показано здесь.
Ок, если эти два места совпадают, когда ты запускаешь этот —
код, ты получишь значение, напечатанное на экране.
Немного трудно увидеть, но сейчас это 33.
Ок, прослушав материал этого урока: о том, как делать ручное моделирование и —
как доводить программу до рабочего состояния на телефоне.
Можешь теперь выяснить, делает ли эта программа то, что требуется.
Aşağıdaki birkaç sorguda,
sizlere değişkenlerin aslında nasıl kullandığını göstermiş olacağım.
Yapmanız gereken tüm programlar ikinci bölümde derlenecektir.
Bilgisayarın kendisi için yazılan kodu anlayabildiği anlamına
gelmektedir ve bir uygulama oluşturacağız.
Şimdi, programlar telefonda çalışırken,
istenilen amacı yapmama olasılığı vardır.
Bu bir mantık hatası olarak bilinmektedir.
Mantık hatası, kodu yazmak için kullandığınızda mantıkla ilgili
bir sorun var demektedir.
Haydı, kısa programa ve senaryoya bakalım ve bunları
nasıl çözeceğinizin üzerinden geçeceğim.
Tamam, işte size bir örnek.
Bu programların herbiri burada yazıya dökülecek bir amaca sahip olacaktır.
Programın kendisi yeşil kutuda olacaktır.
Tamam, bu programın amacı uyku hesabı denilen şeyi hesaplamak.
Şimdi, yaşa göre ne kadar uykuya ihtiyaç duymanız değişmektedir, ancak ortalama
bir gece için insanlar sekiz saatlik bir uykuya gereksinim duyarlar.
Şimdi bu programın yapmak istediği şey, bir haftalık uykuyu hesaplamak.
Programı kullanan kişi devam edecek ve ortalama bir hafta içinde
ve hafta sonunda ne kadar uyuduğunu hesaplayacaktır.
Bu örnekte, kullanıcının hafta içinde beş saat ve hafta sonunda
dokuz saat uyuduğunu varsayacağız.
Bu görevin kodu burada yeşil kutuda.
Ve yapmaya çalıştığınız ilk şey bu kodu iyice okumak ve hedefin başarılıp
başarılamadığına karar vermektir.
Daha sonra, kodda oluşan her ifadeye göz atmaya çalışacaksınız ve
ekranda aslında neyin gösterildiğine karar vereceksiniz.
Farzedin bu metot burada çağrılıyor, bunlar ekrana benziyor ve
paranteze sahipler ve
bunların arasında içeriği ekranda gösterecekler.
Şimdi bu problemlerin bazıları göstermeleri gereken çoklu içerik parçalarına
sahip olacaklar, siz display1, display2, display3 olarak görebilirsiniz.
Eğer hala bu videoyu izliyorsanız,
muhtemelen bu problemlerin bir tanesinin nasıl çözüleceğini merak ediyorsunuzdur.
İlk defa çoklu değişkenlerle etkileşim içesinde değilsiniz, problem
esnasında değerler birkaç kez değişebilir.
Sizi serbest bırakmadan önce, izin verin bir tanesini birlikte yapalım.
Şimdi el simülasyonu denilen bir tekniği kullanacağım ve bu teknik
bilgisayarın ne yaptığını hesaplamaya çalışacak ancak
tabi ki bunu bilgisayara koymadan.
Bizim için gerçekten değişkenlerle ilgili neler olup bittiğine takip
etmemiz gereken bir organize yöntemdir.
Tamam, şimdi satır satır gideceksiniz, izin verin birlikte başlayalım.
İlk satırda burada değişkenin tanımını görüyorum öyleyse
hafta içi olan değişkenin ismiyle başlayacağım ve yazacağım.
Aynı zamanda 5 numaralı değer ile başlatıldı,
öyleyse hafta içi günlerinin altına 5 değerini gireceğim.
Bu halihazır 5'de kaydedilen hafta içi değişkenliğini temsil etmektedir.
Tamam, bu ilk satır içindi, ikinci satıra geçeceğim.
Hafta sonu denilen değişkenimiz var, şimdi bunu yazacağım
ve bu değişkenin değeri 9.
Tamam, bu iyi görünüyor
optimalHours değişkenin tanımı ve örneklemesi olan
bir sonraki satıra geçiyorum ve aynı şeyi yapacağım.
Tamam, değeri 7*8 olarak yazacağım.
Bunu aslında dışarıda hesaplayacağım, çünkü bu
optimalHours'da kaydedildi.
Öyleyse, ufak bir mental matematikle 7 kere 8 eşittir 56.
Tamam, şimdi farklı bir tanımımız var.
actualHours denilen bir değişken yapıyoruz, şimdi bunu yazacağım.
Bu hafta içi değerlerine eşit ve hafta içi
günlerinin mevcut değeridir.
Bu geçmiş bazı hafta içi değer veya gelecek hafta içi değer değildir.
Şimdi, mevcut hafta içi değerin burada bitmiş olduğuna dikkat ediyoruz.
Ve sadece buraya bakıyorum ve 5 olduğunu görüyorum.
Öyleyse, bunu gerçekten 5 numara olarak düşünmem gerekiyor.
Öyleyse actualHours sayı 5'dir ve
başlayacağım ve onu buraya yazacağım.
Tamam, bir sonraki satıra geçelim.
O zaman actual hours'u tekrar mevcut actualHours değere artı hafta sonunu
2'ye eşitlemek için değiştiriyoruz.
O zaman bu yana bakabilirim, mevcut actualHours değeri 5'dir ve mevcut
hafta sonu değeri 9'dur.
Ve şu an bu denkleme sahibim.
O zaman eklemeden önce bu çarpma işlemini yapıyorum,
9 kere 2 eşittir 18 ve 5 ekliyorum.
Ve biraz daha mental matematikle 18 artı 5 eşittir 23.
Tamam, bunların hepsi eşittir 23.
Ve yapmam gereken şey, eski actual hours veriyi listeden kaldırmak ve
yeni actual hours değerini yazmaktır.
Tamam, işte bitti.
Haydi, bir sonraki satıra geçelim.
Çözümümüz var, bu bir değişken tanımıdır.
Bu birşeye eşitleniyor ancak
öncelikle çözüm kelimesini yazacağım.
Ve çözüm eşittir optimal hours eksi actual hours.
Haydi birlikte inceleyelim, optimal hous 56 ve actual hours 23.
Şimdi, hesap makinanızı kullanabilirsiniz,
Bunu daha önce yapabilirdim ve biliyorum 56 eksi 23 eşittir 33.
Tamam, şimdi ekran çözümü (display solution)
denilen son satıra geçiyoruz.
Öyleyse çözüm değeri 33 olan şeyi görmek için buraya göz atabiliriz
O zaman 33 numaralı sayıyı gösterecek.
İşte bu programın yaptığı da, benim veya
sizin ya da başkasının yaptığı gibi.
Ancak önemli olan, doğru şeyi yaptı mı?
Burada manktıksal bir hata var mı veya hafta içi birisi 5 saat ve hafta sonu
9 saat mi uyuyor, haftanın sonunda uyku borcu
otuz üç saat olacak.
Ne düşündüğünüzü bilmek istiyorum.
Pekala hızlı bir ilave not, siz bu 2 app uygulama metini oluşturdunuz.
Eğer test etmek isteseydiniz, 2 app uygulama ayarı içerisine
kodu nasıl koyabileceğınizi sizlere göstereceğim.
Gerçekten ilk önce el simülasyonunu tavsiye ediyorum,
çünkü neler olduğuyla ilgili beyninize bu daha iyi bir kavram sağlamaktadır.
Ancak aynı zamanda kodu Android Studio ve play'in biraz
içerisine koyabilmektir.
O zaman size önerim onCreate metodu içerisinde eğitici notlarda
sağlanan problemin kodunu kopyalayı yapıştırmaktır.
Bu, buradaki esas aktivite sınıfınızda göreceğiniz ilk metot.
Tamam, açık olmak gerekirse değiştirilmeden önce işte sizin onCreate'nunuz
buna benziyor ve sonra benim yaptığım gibi kodun üzerine yapıştırabilirsiniz.
Tamam, diğer bir şey aşağıda bu kod çalışması satırı yapılacak yere
kopyalayıp yapıştırmanız gerekecek.
İşte o, bu kod ve aynı zamanda ben bunu eğitim notlarına dahil ettim.
Son olarak XML'inize gitmeniz ve metin görünümünüzün Id/display_text_view
olarak göründüğünü kontrol etmeniz gerekecek ve
bunun burada gösterilenle tam olarak eşleşmesi gerek.
Pekala, bu kodu çalıştırdığıızda bu iki şey eşleştiği müddetçe ekranda
bilgisayar çıktısı değeri alacaksınız.
Bunu görmek biraz zor ancak orada 33 olduğu söyleniyor.
Tamam ve bunların hepsiyle biraz yardım alıp telefonunuzda
çalıştırarak el simülasyonu yapmaya çalışacağım.
Devam edin ve bu programın yapmanız gerekeni yapıp yapmadığını düşünün.
Trong loạt bài kiểm tra tiếp theo,
Tôi sẽ chỉ cho các bạn cách các biến được sử dụng.
Tất cả các chương trình mà bạn sẽ làm trong phần 2, sẽ biên dịch.
Điều đó có nghĩa là máy tính có thể hiểu đoạn mã được viết ra
cho chúng, và chúng ta sẽ có thể tạo ra một ứng dụng.
Bây giờ, khi các chương trình có thể chạy trên điện thoại,
có khả năng rằng chúng có thể không thực hiện được mục tiêu dự định.
Điều này được gọi là lỗi logic.
Lỗi logic nghĩa là có cái gì đó sai logic mà bạn
thường viết mã.
Hãy xem một chương trình ngắn và
kịch bản ví dụ và tôi sẽ hướng dẫn bạn cách giải quyết một trong những lỗi này.
Đây là ví dụ.
Mỗi chương trình này sẽ có một mục tiêu, mà sẽ được viết ra ở đây.
Bản thân chương trình sẽ được đóng khung màu xanh.
Được rồi, mục tiêu của chương trình này là tính toán cái gọi là tình trạng thiếu ngủ.
Bạn cần ngủ bao nhiêu thay đổi chút ít tùy theo độ tuổi, nhưng trung bình,
con người cần ngủ khoảng tám tiếng mỗi đêm.
Cái mà chương trình này cố gắng làm là tính toán sự thiếu ngủ trong một tuần.
Người dùng của chương trình sẽ tiến tới và ước tính họ ngủ trung bình bao nhiêu
vào ngày thường trong tuần, và ngủ trung bình bao nhiêu vào ngày cuối tuần.
Ở ví dụ này, chúng ta giả sử người dùng ngủ năm giờ vào ngày thường
và chín giờ vào ngày cuối tuần.
Đoạn mã cho nhiệm vụ này là ở đây trong khung màu xanh lá cây.
Điều đầu tiên mà bạn sẽ thử làm là đọc qua đoạn mã này và
quyết định xem mục tiêu đã được hoàn thành hay chưa.
Sau đó, bạn cũng sẽ đi qua từng dòng lệnh
diễn ra trong đoạn mã và quyết định cái gì thực sự hiển thị trên màn hình.
Giả sử rằng phương thức này gọi ra đây những thứ trông giống như hiển thị và
có dấu ngoặc đơn và
thứ gì đó ở giữa chúng, sẽ hiển thị nội dung lên màn hình.
Bây giờ, một vài trong số vấn đề này sẽ có nhiều phần nội dung mà chúng
cần hiển thị, nên bạn có thể thấy display1, display2, display3.
Được rồi, nếu bạn vẫn đang theo dõi video này,
có lẽ bạn đang tự hỏi làm thế nào để giải quyết một trong các vấn đề này.
Đây không phải là lần đầu tiên bạn tương tác với nhiều biến,
các giá trị có thể thay đổi một vài lần trong vấn đề.
Để tôi thực hiện cái đầu tiên cùng bạn trước khi tôi để bạn thoải mái.
Bây giờ tôi sẽ sử dụng kỹ thuật gọi là mô phỏng tay và kỹ thuật này
liên quan đến việc cố gắng tìm hiểu máy tính đang làm gì,
mà không gắn nó với máy tính.
Với chúng ta, nó là một cách có tổ chức để theo dõi những gì đang xảy ra với
các biến.
Được rồi, giờ bạn sẽ đi từng dòng một để tôi bắt đầu dòng này với bạn.
Trong dòng đầu tiên ở đây tôi thấy khai báo của một biến, vì vậy
Tôi sẽ tiếp tục và viết tên biến là ngày trong tuần.
Nó cũng được khởi tạo đến một giá trị là 5,
vậy ở ngày trong tuần, tôi sẽ đặt giá trị 5.
Nó thể hiện rằng biến ngày trong tuần hiện lưu trữ 5.
Được rồi, đó là dòng đầu tiên, Tôi sẽ di chuyển đến dòng kế tiếp.
Ta có một biến gọi là ngày cuối tuần, vì vậy tôi sẽ viết ra,
và giá trị của biến đó là 9.
Nó trông ổn rồi, nên
tôi sẽ chuyển sang dòng tiếp theo là một khai báo và
thuyết minh của biến optimalHours, nên tôi sẽ làm tương tự.
Được rồi, Tôi sẽ không viết các giá trị 7*8.
Thực ra, tôi sẽ tính toán nó ra, bởi vì nó là
cái được lưu trữ trong optimalHours.
Bằng cách tính nhẩm, 7 lần 8 là 56.
Rồi, chúng ta có một khai báo khác ở đây.
Ta tạo ra một biến gọi là actualHours, vậy tôi sẽ viết nó ra.
Nó bằng giá trị của ngày trong tuần, và
là giá trị hiện tại của ngày trong tuần.
Đó không phải giá trị quá khứ hay giá trị tương lai của ngày trong tuần.
Giờ ta đang theo dõi giá trị hiện tại của ngày trong tuần kết thúc ở đây là gì.
Vì vậy, tôi có thể tìm ở đây và thấy rằng nó là 5.
Tôi thực sự nên nghĩ nó là con số 5.
Nó nói rằng int actualHours bằng 5, nên
Tôi sẽ tiếp tục và viết nó ở đó.
Chúng ta sẽ chuyển đến dòng kế tiếp.
Bây giờ chúng ta lại thay đổi giờ thực tế để bằng với giá trị hiện tại
của actualHours cộng cuối tuần nhân 2.
Tôi có thể xem đến đây, giá trị hiện tại của actualHours là 5 và
giá trị hiện tại của cuối tuần là 9.
Bây giờ tôi có phương trình nhỏ này ở đây.
Tôi làm phép nhân trước phép cộng sau,
9 lần 2 là 18 và sau đó cộng thêm 5.
Và tính nhẩm một chút, 18 cộng 5 là 23.
Nó bằng 23.
Và tôi cần phải gạch đi giá trị cũ của số giờ thực tế, và
điền vào giá trị mới của giờ thực tế.
Xong rồi.
Tiếp tục chuyển đến dòng kế tiếp.
Chúng ta có n giải pháp, vậy đó là một khai báo biến.
Nó được thiết lập bằng một cái gì đó,
nhưng trước hết, tôi sẽ viết ra các giải pháp từ.
Và giải pháp bằng số giờ tối ưu trừ đi giờ thực tế.
Hãy chuyển qua đây, số giờ tối ưu là 56 và giờ thực tế là 23.
Giờ bạn có thể sử dụng máy tính,
Tôi đã làm việc đó trước rồi và Tôi biết 56 trừ 23 bằng 33.
Được rồi, hãy đi tiếp đến dòng tiếp theo và
dòng cuối cho biết giải pháp hiển thị.
Chúng ta có thể nhìn qua đây để xem giá trị của giải pháp là gì, đó là 33.
Vậy nó sẽ hiển thị số 33.
Đó là cách mà tôi, hoặc bạn, hoặc
bất cứ ai, có thể tìm ra chương trình này vừa thực hiện điều gì.
Nhưng câu hỏi thực sự là, nó đã làm điều đúng?
Có một lỗi logic ở đâu đó ngay đây hoặc
liệu ai đó ngủ 5 giờ đêm ngày trong tuần và chín giờ vào đêm ngày cuối tuần
sẽ có ba mươi ba giờ thiếu ngủ khi hết tuần.
Và tôi muốn biết bạn nghĩ gì.
Như một phụ chú nhanh, giờ bạn đã tạo ra bộ 2 ứng dụng thực hành này, nên
Tôi chỉ sẽ cho bạn thấy làm thế nào bạn có thể đưa đoạn mã này vào bộ
hai ứng dụng thực hành nếu bạn muốn thử.
Tôi thực sự khuyên nên mô phỏng tay trước,
bởi vì nó sẽ cho phép não của bạn nắm bắt tốt hơn về những gì đang xảy ra.
Nhưng nó cũng có thể đưa mã vào Android Studio và
thử nó một chút.
Gợi ý của tôi là bạn sao chép và dán đoạn mã về vấn đề,
vốn sẽ được cung cấp trong ghi chép hướng dẫn, vào phương thức onCreate.
Đó là phương thức đầu tiên bạn thấy ở lớp hoạt động chính của bạn ở đây.
Để rõ hơn, onCreate của bạn trông sẽ thế này
trước khi nó được sửa đổi và sau đó bạn có thể dán lên đoạn mã, như tôi đã làm.
Thứ khác mà bạn sẽ cần phải sao chép và dán,
thứ sẽ làm dòng mã này hoạt động, là ở dưới đây.
Nó là mã này, và tôi cũng đã đưa nó vào trong ghi chép hướng dẫn.
Một thứ cuối cùng mà bạn cần làm là đi đến XML của mình, và
đảm bảo rằng dạng xem văn bản của mình có Id/display_text_view,
và nó cần khớp chính xác với những gì đang thể hiện ở đây.
Miễn là hai thứ đó khớp nhau khi bạn chạy
đoạn mã này, bạn sẽ thấy giá trị được in ra trên màn hình.
Nó khá khó nhìn nhưng nó cho biết 33 ở ngay đó.
Và với tất cả điều đó, tôi sẽ thử mô phỏng tay và
một số có tác dụng và chạy trên điện thoại của bạn.
Mạnh dạn và thử tìm hiểu xem chương trình này có đang hoạt động như mong muốn.
在接下来的一组测验中
我要给你展示变量是如何使用的
你在第二部分做的所有程序都将会编译
这意味着计算机能够理解写下的代码
我们能够创建一个应用
当程序能在手机上运行时
它可能不会按照预期目标运行
这是一个逻辑错误
逻辑错误意味着有你编写代码时的
的逻辑有一些错误
我们来看这个小程序
和一个示例场景 我将引导你如何去解决它们
好 这里是一个例子
每个程序都有一个目标 将它们写在这
程序本身在这个绿色的框里
所以 这个程序的目标是计算所谓的睡眠欠债
你需要的睡眠时间在不同的年龄会不同 但是一般情况下
人们每晚大约需要8小时的睡眠
这个程序试图计算一周的睡眠欠债
程序用户将继续估计他们平均一周睡多长时间
以及平均每天睡多长时间
对于这个例子 我们假设用户平日里睡5个小时
在周末睡9个小时
在这个绿色的框里是这个任务的代码
你要做的第一件事是阅读这个代码
并决定目标是否已经实现
然后 你要做的是浏览代码里的每个语句
决定在屏幕上显示什么
假设这些方法在这里调用 看起来像 display
括号
和它们之间的代码 将显示在屏幕上
现在 其中的一些问题将会有他们想要展示的多个内容块
所以你可能看到 display1 display2 display3
如果你仍然在看这个视频
你可能想知道如何解决这些问题
这不是第一次处理多个变量
它的值可能在问题里多次改变
所以在你毫无头绪之前 我来展示第一个
现在我要使用一个叫做手工模拟的技术
这种技术涉及的是试图理清计算机正在做的
不需要非在计算机上运行
对于我们来说 它只是一个组织方式来用一个变量
跟踪我们正在做的事
现在 逐行阅读代码 我们一起开始
第一行 我看到了一个变量的声明
所以 继续并写下变量名 weekday
初始化为5
所以在 weekday 下边写下值5
这代表着变量 weekday 当前储存为5
好了 这是第一行 我移动到下一行
有一个名为 weekend 的变量写下它
变量值为9
好了 看起来很好
移动到下一行变量 optimalHours 的声明和初始化
所以我会做同样的事情
我不打算写下值7*8
实际上 我会计算出来
因为那是储存在 optimalHours 里的
用心算 为56
这里 我们有了另一个声明
我们有了一个叫 actualHours 的变量 所以写出来
它等于 weekday 的值
这是 weekday 的当前值
它不是 weekday 的过去值或将来值
现在 我们跟踪 weekday 的当前值到这里
我只能看这里 它的值为5
我真的应该想想这个 5
继续 在这里写下5
移动到下一行
所以现在再次改变 actualHours 的值 让它等于
当前的 actualHours 的值加 2倍的 weekend 的值
看这里 当前的 actualHours 的值为5
当前的 weekend 的值为9
现在这有一个等式
做加法之前先做乘法
9*2=18 然后再加5
18加5是23
所以 现在 actualHours 的值为23
我必须要做的是划掉 actualHours 之前的值
写下 actualHours 的新值
所以就这样做了
移动到下一行
有一个 solution 那是一个变量声明
它被设置等于一些东西 但是
首先我先写下这个单词 solution
solution 等于 optimalHours 减 actualHours
我们看这边 optimalHours 的值为56 actualHours 的值为23
现在使用计算器是没有关系的
我之前正好这样做了 我知道56减去23是33
移动到下一行
最后一行是 display(solution)
所以看这边可以知道 solution 的值为33
它将显示数字33
所以 那是我或你或任何人
都可以计算出这个程序的结果
但是真正的问题是 它是否做了对的事
在这里会不会有逻辑错误
或是否有平日睡5个小时和周末睡9个小时的人
在一周的最后可能有33个小时的睡眠时间差
我想要知道你的想法
好吧 快速滑动笔记 现在你已经创建这个 Practice Set 2 应用
所以我只是要告诉你怎样把代码放到 Practice Set 2 应用里
如果你想要测试一下这段代码
我建议首先是手动模拟
它将给你正在做的事的一个更好的理解
但是它也可以把代码加入到 Android Studio 里
测试一下它
所以我的建议是你复制粘贴问题的代码到 onCreate 方法里
代码将在讲师注释里提供
那是你在这里 MainActivity 里看到的第一个方法
好了 只是要很清楚 这里是你 onCreate 方法修改之前的样子
然后你可以粘贴代码 就像我所做的一样
好了 你需要做的另一件事是复制粘贴代码
它将使下面的这一行代码有效
这段代码 我也会把它加入到讲师注释里
你要做的最后一件事是到你的 XML 文件
确保你的文本视图的 ID 为 Id/display_text_view
这应该完全匹配在这里所显示的
只要这两点匹配了 当你运行这段代码时
你会得到屏幕上的输出结果
这可能有一点不清楚 但是它显示的是33
所有的这一切 然后我会试着去手动模拟
并未获得一些帮助让它能在手机上运行
继续 试着确认这个程序是否和预期一样
在下面的小測驗中
我將演示變數實際上是如何使用的
在第2部分你將要編寫的程式將會被編譯
這意味著計算可以理解所編寫的代碼
我們將能夠創建一個應用程式
現在 程式將能夠在電話上運行
它們也可能不會按照預期運行
例如出現邏輯錯誤等
邏輯錯誤意味著你用于編寫代碼的邏輯
出現錯誤
讓我們來看一個小程式
這是一個示例性場景 我將告訴你如何解決這些問題
這里有一個示例
這些程式的每個程式將有一個全域 將會寫在這里
程式本身將位于綠色方塊中
這個程式的目標是計算睡眠不足時間
睡眠時間根據年齡有所變更 但是平均來說
人類平均一晚睡八個小時
因此這個程式嘗試計算一周的睡眠不足時間
此程式的用戶將進行操作并估算他們工作日平均每天
睡眠多少個小時 以及周末平均睡眠多少個小時
對於這個例子 我們假設用戶工作日睡眠五個小時
周末睡眠九個小時
代碼位于綠色方塊中
你要做的第一件事情是讀完這段代碼
并確定目標是否已經完成
然后你要做的事情就是檢查代碼中的每一條聲明
決定屏幕上的實際顯示內容
假設這些方法在這里調用屏幕上顯示的內容
而且有括號
它們之間的代碼將在屏幕上顯示內容
現在有一些問題 它們需要顯示多個內容塊
因此你可以看到display1, display2, display3
如果你仍然在看這個視訊
你可能在想如何解決這些問題
這并不是你第一次使用多個變數
這些變數的值可能會變更多次
我們先做重要的事情
現在我要使用一項名為手動模擬的技術
這項技術模擬計算機的運行
而不需要真實地在計算機上運行代碼
對我們來說 這是一個有條不紊的方法
可以跟蹤變數的變更情況
現在你需要逐行識讀 我們從這里開始
在第一行 我看到一個變數宣告
我寫入變量名 也就是weekday
把它的初始值設定為5
在weekday變數下方 我輸入值5
這代表weekday變數當前存放的值是5
這是第一行 現在我轉到下一行
另一個變數的名稱是weekend 我在這里寫出
這個變數的值是9
好了 看上去還不錯
我要轉到下一行 這是一個宣告
是optimalHours變數的實例化 我將做同樣的事情
我不會寫入值 7*8.
我準備計算出這個值
因為optimalHours變數將會存放這個值
我們來做一個小算數 7乘8等于56
我們在這里進行另一個宣告
我們設定一個名為actualHours的變數 我在這里寫出
它等于weekday的值
這是weekday的當前值
它不是weekday的以往值或weekday的未來值
現在 我們跟蹤weekday的當前值在這里顯示為多少
因此我可以在這里看到 它顯示為5
因此我應該認為它是數字5
因此actualHours等于5
現在我將繼續 并寫在那里
我們轉入下一行
現在我把實際小時數再次變更為
actualHours的當前值加上weekend乘2
在這里我可以看到 actualHours的當前值是5
weekend是9
在這里算式已經設定好了
在做加法之前先做乘法
9乘2等于18 然后再加5
做個小算術 18加5等于23
因此結果是23
現在我要做的是取消舊的實際小時數
寫入新的實際小時數值
好了 完成了
轉到下一行
我們一個n求解 因此這是一個變數宣告
它將等于一個值
但是我想先寫出求解字樣
求解值等于optimalhours減去實際小時數
讓我們轉到這里 optimalhours是56 actualhours是23.
現在可以使用計算器了
前面我們算過 56減23等于33
好了 然后我們轉入下一行
這是最后一行 顯示求解得數
在這里我們可以看到求解值 也就是33
將會顯示數值33
這樣 我 你
或任何人都可以知道程式剛才做了什么
但是真正的問題是 它是否做得正確
這里的某個位置是否有邏輯錯誤
或者 一個人在工作日睡五個小時
在周末睡九個小時 是否在一周結束是會產生三十三個小時的睡眠不足
我想知道你是怎么想的
好了現在你已經創建了一個練習組2應用程式
我要告訴你怎樣在這個練習組2應用程式中放入代碼
如果你要測試它的結果
我建議首先進行手動模擬
因為它會讓你更好理解程式是如何運行的
而且 你能夠把代碼放入Android Studio
并執行代碼
因此我的建議是 你複製指導說明中的代碼
并貼入onCreate方法
這是你在主活動類別中看到的第一個方法
請看清 這是修改之前的onCreate方法的內容
然后你可以在這里貼上代碼 就像我做的這樣
你要做的另外一件事情是在這里復制并貼上
這將會讓這行代碼正常執行
就是這段代碼 我已經把它放入指導說明中
最后一件要做的事情是檢視XML
保證你的文字檢視圖是Id/display_text_view,
這應該與這里顯示的內容完全一致
在執行代碼時 只要這兩項匹配
值就會列印在屏幕上
這有一點不好看到 因為在這里它顯示為33
完成所有這些工作后 我嘗試手動模擬
并想辦法讓它在你的電話上運行
我們繼續進行 看這個程式是否按照期望的那樣執行