Asserting number of a specific keyword used in Matlab Grader
    2 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hi, 
i am currently setting up an assessment in MATLAB Grader. Is there a way to check if a keyword is used only once?
My students are supposed to write a function using exactly one 'for' loop.
 Is that possible?
0 Commenti
Risposte (1)
  Uday Pradhan
    
 il 5 Ago 2020
        
      Modificato: Uday Pradhan
    
 il 5 Ago 2020
  
      You can use "textscan" function to read formatted data from text file or string.
The below code helps you in finding the number of times "for" keyword appears in the function named "myfunction.m" submitted by students:
file = fopen('myFunction.m','r'); 
st = textscan(file,'%s'); 
fclose(file); 
str = st{:}; 
assert(numel(find(strcmp(str,'for'))) <= 1,'Use only one for loop')
This can be kept as a pre - test which will generate a warning if there are multiple "for" keywords in the answer. You may keep a template for the function so that the function name is not tampered with. Hope this helps.
1 Commento
  Cris LaPierre
    
      
 il 5 Ago 2020
				
      Modificato: Cris LaPierre
    
      
 il 5 Ago 2020
  
			Just be careful. This approach is context-unaware. and does not distinguish between comments and code.
Also, pre-tests don't generate warnings. They are correct or incorrect, just like other assessment tests. You can run pre-tests without submitting. However, unless there is a limited number of submissions, there is no advantage to using pre-tests over regular assessment tests.
Community
Più risposte nel Distance Learning Community
Vedere anche
Categorie
				Scopri di più su Automated Driving Toolbox in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!